Спочатку я планував зробити Лазерну арфу. але поки вийшов проміжний результат - пристрій, який можна використовувати як лазерний проектор - малювати лазером різні фігури, записані в файлах формату ILDA. Я в курсі, що багато, хто береться за складання лазерного проектора, як пристрій, що управляє гальванометра (так і не зрозумів як краще перекласти російською поєднання "galvo scanner"), використовують дешеві злегка модифіковані звукові плати для комп'ютера. Я пішов іншим шляхом , так як в кінцевому рахунку мені потрібно буде повністю автономний пристрій, яке може працювати без комп'ютера.
Подивимося з чого складається мій лазерний проектор. Вартість всіх деталей склала близько 8000 руб, з яких більше половини - це 70mW лазерний модуль.
- Гальванометри і драйвери до них для відхилення променя лазера по осях X / Y
- 532нм 70mW лазерний модуль з живленням від 5В Dragon Lasers SGLM70
- Texas Instruments Stellaris Launchpad
- Саморобна плата з ЦАП AD7249BRZ
- Блок живлення
Лазерний модуль спочатку не підтримував TTL-модуляцію, тому коли мені набридло просто водити лазером в різні боки я задумався про те, щоб в потрібні моменти часу вмикати або вимикати промінь. Для цього треба було допрацьовувати лазерний модуль паяльником. На щастя, майже всі китайські лазерні модулі вельми схожі один на одного, прості, і зроблені на операційному підсилювачі LM358. Підпаявши до його ніг 3 і 4 (неінвертуючий вхід і земля відповідно) емітер і колектор першого-ліпшого біполярного транзистора 2N4401, я, таким чином, отримав можливість модулювати роботу лазера, подаючи сигнал, що управляє на базу транзистора:
Доопрацьований напилком лазерний модуль
Схема і плата для AD7249BRZ представлена нижче. Можливо уважний читач знайде в схемі помилку, тому що в ній з невідомих мені причин здається не працює частина з операційним підсилювачем, яка покликана зробити вихідний сигнал схеми балансним для більшої захисту від перешкод. Мій екземпляр замість балансного сигналу видає небалансний, але, тим не менш, все працює і так.
Сподіваюся ви не злякалися страшної картинки плати з нальотом у висновків мікросхеми, який утворився після протирання етиловим спиртом. До речі, з цієї причини рекомендують відмивати флюс ізопропіловий спирт, так як він не залишає таких розлучень. До речі, кому цікаво, що це за роз'єми такі з засувкою на платі - це роз'єми Molex (22-23-2021 розетка, 22-01-3027 вилка, 08-50-0114 контакт для вилки), замовляв їх через Digikey, так як у китайців вони стоять якось непристойно дорого.
На цьому начебто все найцікавіше про залізну частину закінчується, так що переходимо до частини софтової. Складається вона з двох частин - програми для ПК і прошивки для Stellaris Launchpad, яка реалізує USB bulk-пристрій з власним форматом пакетів по 32 біта в кожному. Формат семпли описаний наступною структурою:
Програмна частина для ПК заснована на playilda.c з пакета OpenLase. однак звідти вирізано все зайве і замість взаємодії з сервером JACK використовується libusb для відправки пакетів даних на Stellaris Launchpad.
Вихідний код програми для ПК
У функції main () за допомогою nanosleep також регулюється періодичність, з якою микроконтроллеру надсилаються нові дані.
Повністю вихідний код прошивки контролера можна подивитися на GitHub.
Плани на майбутнє
Надалі планується-таки доробити це до стану, схожого на початку була задумана лазерну арфу. Для цього достатньо одного, а не двох дзеркал, так як лазерний промінь рухається тільки уздовж однієї осі. Принцип роботи арфи полягає в тому, що контролер запалює і гасить промінь лазера в відомі йому моменти часу, створюючи лазерну «клавіатуру» в повітрі. Виконавець, перекриваючи рукою в світловідбиваючої рукавичці яскравий промінь лазера, пускає в хід фоточутливий елемент в підставі «арфи». Так як мікроконтролер знає, в який момент яку частину клавіатури він «малював», то може визначити, який із променів був перекритий. Далі справа за формуванням відповідного MIDI-повідомлення та відправлення його в комп'ютер або підключений апаратний синтезатор для формування звуку.