#6 Эксперимент “Умный светильник”
Жизнь вокруг нас полна звуков. Уже достаточно давно человек научился записывать и воспроизводить звук, в каждом компьютере имеется звуковая карта, которая может снять аналоговый сигнал с подключенного к ней микрофона, оцифровать его и передать его в компьютер для последующего хранения. При наличии необходимого программного обеспечения, с помощью звуков, можно не только управлять своим собственным компьютером, но и подключёнными к нему устройствами. На этом занятии, мы тоже попробуем управлять нашим “мини-компьютером” Arduino и подключёнными к нему устройствами с помощью звука. Для этого нам понадобится специальный датчик – датчик звука, или простыми словами – микрофон.
На этом занятии, мы сделаем модель умного светильника и попробуем зажечь и погасить светодиод “по хлопку наших рук”.
Перед выполнением эксперимента прочтите:
СБОРКА УСТРОЙСТВА НА МАКЕТНОЙ ПЛАТЕ
Нам понадобятся следующие компоненты:
- Arduino Uno;
- USB-кабель для подключения к компьютеру;
- Беспаечная макетная плата;
- 1 светодиод любого цвета;
- 1 резистор, номиналом 220 Ом;
- 1 датчик звука;
- 5 соединительных проводов разных цветов.
Соберите устройство по следующей схеме:
Схема устройства на макетной плате |
Принципиальная схема устройства |
Обратите внимание: микрофон или датчик звука устроен достаточно просто – по одинаковому принципу с пьезодинамиком: внутри корпуса находится тонкая мембрана, к которой прикреплена проволочная катушка, под которой расположен магнит. При колебаниях окружающего воздуха, мембрана тоже начинает колебаться и в проволочной катушке возникает переменный ток. Этот переменный сигнал, проходя через элементы платы микрофона, выпрямляется (из переменного преобразовывается в постоянный) и усиливается. В таком виде сигнал и поступает на аналоговый пин микрофона (крайний левый пин). В то же время, на микрофоне есть подстроечный резистор, который может задавать порог чувствительности микрофона. Если внешний шум достигнет порога чувствительности, то на цифровом пине микрофона (крайний правый пин) появится высокий (HIGH) цифровой сигнал. Как раз этот сигнал нам и нужен для управления нашим светодиодом.
Для начала нам нужно настроить порог чувствительности таким образом, чтобы микрофон реагировал лишь на громкие звуки и не обращал внимания на фоновый постоянный шум.
Подключите собранную схему у Arduino, а Arduino подключите к USB-порту компьютера. На датчике звука должны зажечься один или два индикатора – тот, что справа сигнализирует о работе датчика, а тот, что слева (он может быть потушен) является индикатором шума и загорается лишь тогда, когда громкость внешнего звука достигла порога чувствительности микрофона. Над этим индикатором располагается подстроечный резистор, с помощью которого мы сейчас будет задавать значение этого самого порога. Для этого возьмите маленькую плоскую отвёртку и выполните следующие инструкции:
- Если индикатор шума потушен, аккуратно вращайте регулировочный винт подстроечного резистора по часовой стрелке до тех пор, пока индикатор не загорится. Как только индикатор загорится – отверните винт немного назад, чтобы он снова потух;
- Если индикатор шума зажжён, вращайте регулировочный винт подстроечного резистора против часовой стрелки до тех пор, пока индикатор не потухнет. Вращать винт следует очень аккуратно и как только индикатор погаснет – прекратить регулировку.
Если вы всё сделали правильно, то индикатор шума будет находится в потушенном состоянии и вспыхивать лишь при громких звуках. Попробуйте хлопнуть в ладоши рядом с датчиком звука, если индикатор шума “вспыхнет”, то настройка проведена правильно.
В момент “вспыхивания”, датчик посылает высокий (HIGH) сигнал на свой цифровой пин. Этот сигнал мы и будем принимать на 2-м пине Arduino. Таким образом мы получили как-бы аналог обычной кнопки, которая работает не по нажатию, а от громких звуков.
ПРОГРАММИРОВАНИЕ
Запустите Arduino IDE, выберите [Инструменты] ⇒ [ArduBlock].
Алгоритм нашей программы будет достаточно простым и будет похож на алгоритм, который мы применяли для работы с тактовой кнопкой. Суть алгоритма: если на 2-м пине Arduino появляется высокий (HIGH) сигнал, а светодиод подсоединённый к 9-му пину выключен, то мы “включаем” его (HIGH). Если же светодиод уже включён, то выключаем (LOW). В разделе [Порты] как раз есть блок, который может не просто включать и выключать пин, посылая на него высокий или низкий сигнал, но проверять состояние пина в данный момент и если на пин уже подан высокий сигнал (HIGH), переключать его в низкий (LOW) и наоборот, если на пине – низкий сигнал (LOW), переключать его в высокий (HIGH). Этот блок является своеобразным цифровым переключателем и называется [Переключить цифровой выход]. Используем его:
Загрузите программу в Arduino и проверьте как наш светодиод включается и выключается по хлопку. Если светодиод на хлопок никак не реагирует, это значит, что вы плохо настроили порог чувствительности датчика звука и вам следует повторить настройку. Если ваш светодиод включается и выключается, и даже просто мигает, значит вы всё сделали правильно. Тем не менее наша программа ещё не готова, так как светодиод не всегда корректно реагирует на хлопки. Он может включатся и выключаться, а может просто мигать. Всё дело в том, что звук хлопка не затихает сразу и датчик звука успевает считывать не один, а несколько цифровых сигналов и может включить и сразу выключить светодиод. Для того, чтобы избавиться от такого мигания, поставим задержку в 200 мс после команды переключения пина. Это даст звуку время затихнуть, чтобы датчик не считал сигнал дважды:
Загрузите программу в Arduino и проверьте её работоспособность. Теперь наш светодиод включается и выключается намного уверенней, а алгоритм можно считать практически готовым.
В заключении, давайте попробуем не просто включать и выключать светодиод по хлопку, но и немного по управляем его яркостью. Добавим в программу переменную [lightness], которая будет отвечать за яркость и с каждым новым хлопком будем увеличивать её значения на 64. Далее, мы будем передавать на светодиод аналоговый сигнал, значение которого будет равно значению нашей переменной [lightness]. Таким образом, после первого хлопка, светодиод получит значение 64, после второго – 128, после третьего – 192, после четвёртого – 256. Поскольку значение в 256 подать на аналоговый порт невозможно, порт “обнулится” и счёт пойдёт по второму кругу:
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
Задание 1:
Добавьте в схему устройства второй светодиод и зажигайте и гасите их по хлопку в противофазе, т.е. когда первый светодиод горит – второй должен быть потушен и наоборот, когда горит второй – первый должен погаснуть.
Задание 2*:
Уберите из схемы один светодиод и включите в неё пьезодинамик. Попробуйте сделать светозвуковую сигнализацию, которая бы начинала беспрерывно проигрывать ноты “ми” второй октавы, и мигать светодиодом при достижении порога чувствительности датчика звука.
Для того, чтобы получить сертификат, подтверждающий успешное прохождение курса – выполняйте тесты в конце занятий. | Пройти проверочный тест |