Активируйте звук переключения

Активируйте звук переключения
Активируйте звук переключения
Anonim

Сделайте свой звуковой сигнал переключения

Помнишь это немного волшебства? Мы собираемся воспроизвести это устройство: узнайте, как сделать звуковой активированный переключатель, который можно открыть и закрыть с помощью двойного хлопка. Звукозаписывающее устройство схемы представляет собой электретный микрофон. Схема предусилителя, подключенная к микрофону, преобразует входной сигнал, поступающий с микрофона, в аналоговый сигнал, а внутренний модуль АЦП LaunchPad считывает и обрабатывает его. Когда обнаружен звук двойного щелчка, реле включается или выключается по окружности релейного реле. Таким образом, можно управлять мощностью любого устройства, подключенного к реле. Например, вентилятор, как вы можете видеть в приложении.

Image
Image

Список запчастей

  • 1 x Оригинал LaunchPad
  • 1 x электретный микрофон
  • 2 x 2N3904 NPN BJT Транзистор
  • 1 х релейная катушка SPDT 12V
  • 1 x 100R 1 / 4W резистор
  • 1 x 330R 1 / 4W резистор
  • 2 x 1K 1 / 4W резистор
  • 2 x 10K 1 / 4W резистор
  • 1 x 100K 1 / 4W резистор
  • Конденсатор 2 x 100nF
  • 1 x 1N4007 диод
  • 1 x 5мм зеленый светодиод
  • 1 х 5 мм желтый светодиод
  • 1 x SPST Tact Switch
  • Провода для перемычек
  • макетировать

Цепь

Image
Image

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

Электретный микрофон подключен к шагу предусилителя, построенному вокруг транзистора Q1, который усиливает входной сигнал, поступающий от микрофона. Усиленный сигнал подается на аналоговый вход A0 на LaunchPad. Мы можем легко прочитать этот аналоговый вход и контролировать поведение сигнала во время хлопки, используя приведенный ниже код эскиза.

void setup () {Serial.begin (9600); } void loop () {int sensorValue = analogRead (A0); // распечатать прочитанное значение: Serial.println (sensorValue); }

На серийном мониторе IDE Energia мы можем получить показания и создать график в Excel. Здесь вы можете увидеть, как выглядит звуковой сигнал во время теста clap:

Image
Image

Вы можете видеть, что смещение постоянного тока аудиосигнала составляет около 260 единиц. Пики, генерируемые хлопками, могут достигать 500 единиц. Основная цель кода LaunchPad - определить эти пики и активировать реле при обнаружении двойного щелчка.

Image
Image

На самом деле, для того, чтобы добиться желаемой операции зажатия, недостаточно двойного хлопка. Важен также интервал между двумя хлопками. Процедура тайм-аута применяется в коде, и хлопок отбрасывается, если за ним не следует другой хлопок в 500 мс.

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

Когда программное обеспечение обнаруживает двойной хлопок, он переключает выход P1.1, который управляет зеленым светодиодом и реле через релейный драйвер. Зеленый светодиод указывает состояние выхода. Релейная схема на основе транзистора Q2 требуется, поскольку номинальный ток выходного штыря LaunchPad ограничен 6 мА и не способен управлять катушкой реле. Диод 1N4007 помещается между клеммами катушки, чтобы предотвратить обратную ЭДС.

Image
Image

Программное обеспечение

Программное обеспечение приложения построено в среде Energia IDE, и оно представлено ниже. Эскиз Energia включает комментарии для разъяснения каждого шага.

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


unsigned long int timestamp; int sensitivity=350; void setup() { // Set the pin modes pinMode(P1_1, OUTPUT); pinMode(P1_2, OUTPUT); pinMode(P1_3, INPUT_PULLUP); digitalWrite(P1_1, LOW); analogWrite(P1_2, 150); } void loop() { // Detect the first clap sound if (analogRead(A0) > sensitivity) { delay(100); timestamp = millis(); do { // Detect the second clap sound if (analogRead(A0) > sensitivity) { digitalWrite(P1_1, !digitalRead(P1_1)); delay(100); break; // Second clap is detected, break the while loop } } //Discard the first clap if the second clap is not received in 500ms while(millis() < (timestamp + 500)); } // If the sensitivity buton is pressed, change the sensitivity level if (!digitalRead(P1_3)) { if (sensitivity == 400) { sensitivity = 350; analogWrite(P1_2, 150); } else if (sensitivity == 350) { sensitivity = 300; analogWrite(P1_2, 250); } else if (sensitivity == 300) { sensitivity = 400; analogWrite(P1_2, 50); } delay(500); } }

Файлы Clapper

Попробуйте этот проект сами! Получить спецификацию.