[Программирование микроконтроллеров, Разработка под Arduino, Научно-популярное, DIY или Сделай сам, Электроника для начинающих] Бесконтактный, оптический выключатель со звуковым эффектом на Arduino

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
08-Янв-2021 02:31
Извините, данный ресурс не поддреживается. :(
Всем привет!
Сегодня статья про бесконтактный выключатель с звуковым эффектом, который был сделан мной 9 лет назад, а если быть точным то в январе 2012 года.
С тех пор выключатель трудится у меня круглыми сутками на протяжении 9 лет. Что самое интересное, за все это время, он не вышел из строя и даже ни разу не подвис, а также у него никогда не было ложных срабатываний. Вообщем он хорошо себя зарекомендовал и я с уверенностью могу его Вам рекомендовать, для самостоятельной сборки.
Если Вам интересны подробности, то прошу под кат.
У меня в коридоре смонтировано 7 светильников.

И для достижения красивого визуального эффекта, я использовал последовательное включение ламп, для этого мне нужно было протянуть к плате контроллера, отдельный провод от каждой точки освещения.

Саму плату я спрятал в пространстве между гипсокартоном и потолком, благо места там больше чем достаточно.

ИК приемник и светодиод я разместил в подрозетнике. Во избежании ложных срабатываний их нужно изолировать между собой, для этого я использовал термоусадочный кембрик. Что бы подключить этот оптический датчик к плате контроллера, я использовать заложенные в стену провода.

Для того что бы дизайн выключателя не отличался от других установленных декоративных накладок в интерьере, я использовал из этой же серии телевизионную розетку, из которой выкинул все внутренности, а в отверстие вклеил круглое окошко, вырезанное из фиолетового акрила.

Все компоненты были размещены на одной плате, на которой так же установлены винтовые коннекторы для подключения проводов от светильников.

Запитал я эту плату обычным зарядным устройством от телефона.

Основой всего устройства является контроллер arduino Nano V.3, но можно так же использовать любые другие платы, с микроконтроллером Atmega328.

ИК светодиод с фототранзистором можно взять от датчика препятствий, но не обязательно их выпаивать, достаточно перерезать лишние дорожки и припаять к ним 3 провода. Если у Вас уже есть где-то ранее выпаянные эти детали, то перед использованием, лучше сначала проверить их на работоспособность. Инфракрасный светодиод нужно подключить к напряжению 5 В, через токоограничивающий резистор 120 Ом и посмотреть на него через камеру телефона, он должен светиться фиолетовым светом. Для проверки фототранзистора понадобится любой тестер с функцией прозвонки проводников. Переводим тестер в режим прозвонки, а выводы фототранзистора подключаем к щупам тестера. После чего нужно к нему в плотную поднести любой пульт от бытовой техники и нажать любую кнопку. В ответ раздастся прерывистый пищащий звук.

9 лет назад я не нашел подходящих твердотельных реле и мне пришлось их собирать самому из радио-комплектующих. Но на данный момент проще купить 8 канальный модуль твердотельных реле как на изображении, чем заниматься тратой времени на поиск этих компонентов.

Работает выключатель следующим образом
Arduino с выхода D5 постоянно выдает ШИМ сигнал с частотой примерно 977 Гц. К этому выходу через токоограничивающий резистор 82 Ом подключен светодиод, излучающий сигнал в инфракрасном диапазоне. Фототранзистор подключенный к входу D2 детектирует отраженный от руки ИК сигнал и проверяет его на достоверность и если сигнал из 20-ти или больше идущих подряд периодов соответствует частоте 977 Гц, то тогда контроллер включает по очереди все 7 светильников и начинает воспроизводить звуковой эффект через ШИМ выход D11. Все тоже самое происходит и при выключении.

Воспроизведение звуков
Для воспроизведения звуковых эффектов используется формат WAVE без сжатия, с частотой 16000 Гц и глубиной 8 бит, но при воспроизведении данного формата с использованием ШИМ, в аудио тракте наблюдается неприятный свист и шипение. По этому для для улучшения качества воспроизведения, я в коде использовал линейную интерполяцию. При которой, выборка семплов происходит на частоте 62.5 кГц и между оригинальными выборками вставляются еще 3 дополнительных семпла, рассчитанных методом линейной интерполяции. Таким образом на выходе снижается шум квантования, пропадает свист, улучшается качество звука и для воспроизведения не обязательно использовать дополнительные RC фильтры.

Вместо динамика я использовал старую, маленькую компьютерную колонку без встроенного усилителя.

Для конвертирования Wave файлов в Си код, можно воспользоваться онлайн конвертером.
Схема
На схеме серыми прямоугольниками отметил твердотельные реле, а тем кто хочет заморочиться, то может собрать схему полностью, так же как сделал я в далеком прошлом.

Компоненты для сборки
1 — Arduino Nano V.3
2 — Датчик препятствий
3 — 8-ми канальный модуль реле
4 — Резисторы 82 Ом и 1 кОм
5 — Динамик 0,5 — 3 Вт
6 — Любой N-P-N транзистор с допустимым током не менее 500 мА
Код для Arduino
Скачать все файлы одним архивом
В этот раз я решил добавить все используемые библиотеки в папку со скетчем, а в самом скетче прописал их локальное использование. Теперь надеюсь у новичков будет меньше ко мне вопросов, по поводу ошибок возникающих у них при компилировании.
В коде вынесены несколько констант, которые можно изменить перед прошивкой.
Константа power_ir — отвечает за дистанцию срабатывания выключателя, может принимать значения от минимума 20 и до максимума 200. Требуемое Вам значение можно определить экспериментальным путем.
lamp_num — определяет количество используемых Вами ламп. Минимальное число лампочек не может быть меньше 1, а максимальное не более 7. Если подправить код то можно увеличить до 15.
lamp_delay — это задержка между последовательными включениями ламп, которая выражена в миллисекундах и может начинаться от 0 и до 4 294 967 295 мс. Хотя я не думаю, что такие огромные задержки кому то понадобятся.
Видео
Для просмотра видеоролика кликните по изображению.

Извините, данный ресурс не поддреживается. :(
Заключение
В заключении хотелось бы добавить, что я очень удивлен, что микроконтроллер без WDT, за 9 лет ни разу не подвис. По этой же причине я не стал править код и добавлять в него WDT, так как Arduino со старыми bootloader не умеют работать с ним.
Спасибо, что дочитали до конца!
Если Вам понравилась моя статья — то поддержите ее лайком и подпиской.
Если у Вас есть вопросы, то можете их задать в комментариях.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie_mikrokontrollerov (Программирование микроконтроллеров), #_razrabotka_pod_arduino (Разработка под Arduino), #_nauchnopopuljarnoe (Научно-популярное), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_elektronika_dlja_nachinajuschih (Электроника для начинающих), #_svoimi_rukami (своими руками), #_duino.ru, #_sdelaj_sam (сделай сам), #_v_domashnih_uslovijah (в домашних условиях), #_arduino_proekty (ардуино проекты), #_arduino_proekty (arduino проекты), #_cyberlab, #_domashnie_samodelki (домашние самоделки), #_diy, #_arduino (ардуино), #_arduino, #_eksperimenty (эксперименты), #_umnyj (умный), #_sensornyj (сенсорный), #_beskontaktnyj (бесконтактный), #_vykljuchatel (выключатель), #_svet (свет), #_svetilnik (светильник), #_dom (дом), #_lampa (лампа), #_osveschenie (освещение), #_opticheskij (оптический), #_datchik (датчик), #_sensor (сенсор), #_interer (интерьер), #_programmirovanie_mikrokontrollerov (
Программирование микроконтроллеров
)
, #_razrabotka_pod_arduino (
Разработка под Arduino
)
, #_nauchnopopuljarnoe (
Научно-популярное
)
, #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
, #_elektronika_dlja_nachinajuschih (
Электроника для начинающих
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 16:50
Часовой пояс: UTC + 5