[Программирование микроконтроллеров, Разработка под Arduino, Научно-популярное, DIY или Сделай сам, Электроника для начинающих] Бесконтактный, оптический выключатель со звуковым эффектом на Arduino
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Извините, данный ресурс не поддреживается. :(
Всем привет!
Сегодня статья про бесконтактный выключатель с звуковым эффектом, который был сделан мной 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
===========
Похожие новости:
- [Программирование микроконтроллеров, DIY или Сделай сам, Электроника для начинающих, Визуальное программирование] «Морзянка сэр» или обзор составных функциональных блоков в CannyLab 2
- [Гаджеты, DIY или Сделай сам, Здоровье] Начинаем бегать правильно: самодельный беговой метроном
- [Разработка робототехники, Разработка на Raspberry Pi, Робототехника, Электроника для начинающих] pi-top [4] — конструктор роботов для детей и взрослых на основе Raspberry Pi
- [Энергия и элементы питания, Умный дом] Wi-Fi измеритель мощности hNet
- [Научно-популярное, Космонавтика, Физика, Астрономия] Инфляционная мультивселенная
- [Научно-популярное, Биотехнологии] ДНК-детективы используют новые инструменты для раскрытия очень старых дел (перевод)
- [Исследования и прогнозы в IT, Научно-популярное, Здоровье] Исследование: иммунитет к коронавирусу может сохраняться годами
- [Восстановление данных, Apache, Big Data, Профессиональная литература] Kafka как хранилище данных: реальный пример от Twitter (перевод)
- [Научно-популярное, Космонавтика, Астрономия] НАСА рассказало, как телескоп SPHEREx будет искать признаки Большого взрыва
- [Habr] Ежегодный отчетный хабрапост — 2021
Теги для поиска: #_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-Ноя 21:40
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Извините, данный ресурс не поддреживается. :(
Всем привет! Сегодня статья про бесконтактный выключатель с звуковым эффектом, который был сделан мной 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 =========== Похожие новости:
Программирование микроконтроллеров ), #_razrabotka_pod_arduino ( Разработка под Arduino ), #_nauchnopopuljarnoe ( Научно-популярное ), #_diy_ili_sdelaj_sam ( DIY или Сделай сам ), #_elektronika_dlja_nachinajuschih ( Электроника для начинающих ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 21:40
Часовой пояс: UTC + 5