- Необхідні матеріали
- Датчик звуку працює
- Вимірювання звукової частоти на осцилографі
- Схема електричного сповіщувача Arduino
- Вимірювання частоти за допомогою Arduino
- Програмування вашого Arduino для виявлення свистка
- Сповіщувач Arduino працює
У дитинстві мене зачарував іграшковий музичний автомобіль, який спрацьовує, коли ти плескаєш у долоні, а потім, коли я виріс, я замислювався, чи не можемо ми використовувати те саме для перемикання вогнів та вентиляторів у нашому домі. Було б круто просто увімкнути мої вентилятори та світло, просто плескаючи в долоні, замість того, щоб йти своїм ледачим до дошки перемикачів. Але часто це може призвести до несправності, оскільки ця схема реагуватиме на будь-який гучний шум у навколишньому середовищі, наприклад, на гучний радіоприймач або на газонокосарку мого сусіда. Хоча побудова перемикача плескань - це теж цікавий проект.
Це було тоді, коли я натрапив на цей метод виявлення свистків, при якому схема виявляє свист. Свисток, на відміну від інших звуків, матиме рівномірну частоту протягом певної тривалості, а отже, його можна буде відрізнити від мови чи музики. Отже, у цьому підручнику ми дізнаємося, як розпізнати звук свистка, пов’язуючи датчик звуку з Arduino, і коли виявляється свисток, ми будемо перемикати лампу змінного струму через реле. По дорозі ми також дізнаємося, як звукові сигнали приймаються мікрофоном і як вимірювати частоту за допомогою Arduino. Звучить цікаво правильно, тому давайте почнемо з проектом домашньої автоматизації на базі Arduino.
Необхідні матеріали
- Arduino UNO
- Модуль датчика звуку
- Модуль реле
- Лампа змінного струму
- Підключення проводів
- Макет
Датчик звуку працює
Перш ніж заглибитися в апаратне підключення та код цього Проекту автоматизації житла, давайте подивимось на датчик звуку. Датчик звуку, який використовується в цьому модулі, показаний нижче. Принцип роботи більшості звукових датчиків, доступних на ринку, подібний до цього, хоча зовнішній вигляд може дещо змінитися.
Як ми знаємо, примітивним компонентом датчика звуку є мікрофон. Мікрофон - це тип перетворювача, який перетворює звукові хвилі (акустичну енергію) в електричну. В основному діафрагма всередині мікрофона вібрує до звукових хвиль в атмосфері, які виробляють електричний сигнал на його вихідному штифті. Але ці сигнали будуть мати дуже низьку величину (мВ) і, отже, не можуть бути оброблені безпосередньо мікроконтролером, таким як Arduino. Також за замовчуванням звукові сигнали є аналоговими за своєю природою, отже, на виході з мікрофона буде синусоїда зі змінною частотою, але мікроконтролери є цифровими пристроями, а отже, краще працюють із квадратною хвилею.
Для посилення цих низькосигнальних синусоїд і перетворення їх у квадратні хвилі модуль використовує вбудований модуль порівняння LM393, як показано вище. Аудіовихід низької напруги з мікрофона подається на один штифт компаратора через підсилювальний транзистор, тоді як опорний рівень напруги встановлюється на іншому штифті за допомогою схеми дільника напруги з потенціометром. Коли вихідна звукова напруга з мікрофона перевищує задану напругу, компаратор стає високим при 5 В (робоча напруга), інакше компаратор залишається низьким при 0 В. Таким чином синусоїдальна хвиля з низьким сигналом може бути перетворена в квадратну хвилю високої напруги (5 В). Знімок осцилографа нижче показує те саме, де жовта хвиля є низькосигнальною синусоїдою, а синя на - вихідною квадратною хвилею. чутливістю можна керувати, змінюючи потенціометр на модулі.
Вимірювання звукової частоти на осцилографі
Цей модуль звукового датчика перетворює звукові хвилі в атмосфері в квадратні хвилі, частота яких буде дорівнює частоті звукових хвиль. Отже, вимірюючи частоту квадратної хвилі, ми можемо знайти частоту звукових сигналів в атмосфері. Щоб переконатися, що все працює так, як передбачається, я підключив датчик звуку до мого прицілу, щоб перевірити його вихідний сигнал, як показано на відео нижче.
Я ввімкнув режим вимірювання на своєму діапазоні для вимірювання частоти та використовував додаток Android (Frequency Sound Generator) з Play Store для генерації звукових сигналів відомої частоти. Як ви можете бачити у наведеному вище GID, пристрій зміг виміряти звукові сигнали з досить пристойною точністю, значення частоти, що відображається в області, дуже близьке до тієї, що відображається на моєму телефоні. Тепер, коли ми знаємо, що модуль працює, можна продовжувати взаємодію звукового датчика з Arduino.
Схема електричного сповіщувача Arduino
Повна електрична схема схеми перемикача детектора свистків Arduino за допомогою датчика звуку наведена нижче. Схема була намальована за допомогою програмного забезпечення Fritzing.
Звуковий датчик і модуль реле живляться від 5-контактного виводу Arduino. Вихідний вивід датчика звуку підключений до цифрового виводу 8 Arduino, це через властивість таймера цього виводу, і ми докладніше про це поговоримо в розділі програмування. Модуль реле спрацьовує за допомогою штифта 13, який також підключений до вбудованого світлодіода на платі UNO.
На стороні живлення змінного струму нульовий провід безпосередньо підключений до загального (C) штифта релейного модуля, тоді як фаза підключена до нормально відкритого (NO) штифта реле через навантаження змінного струму (лампочка). Таким чином, коли спрацьовує реле, штифт NO буде з'єднаний з штифтом C і, таким чином, лампочка буде світитися. В іншому випадку шлунок залишатиметься вимкненим. Після встановлення з'єднань моє обладнання виглядало приблизно так.
Попередження: робота з ланцюгом змінного струму може стати небезпечною, будьте обережні при роботі з дротами під напругою та уникайте коротких замикань. Вимикач або нагляд дорослих рекомендується людям, які не мають досвіду роботи з електронікою. Вас попередили !!
Вимірювання частоти за допомогою Arduino
Подібно до нашого обсягу зчитування частоти вхідних квадратних хвиль, ми повинні запрограмувати Arduino для обчислення частоти. Ми вже дізналися, як це зробити, у нашому посібнику з використання лічильника частот, використовуючи імпульс у функції. Але в цьому підручнику ми будемо використовувати бібліотеку Freqmeasure для вимірювання частоти для отримання точних результатів. Ця бібліотека використовує внутрішнє переривання таймера на виводі 8, щоб виміряти, як довго імпульс залишається увімкненим. Після вимірювання часу ми можемо розрахувати частоту за формулами F = 1 / T. Однак, оскільки ми використовуємо бібліотеку безпосередньо, нам не потрібно потрапляти в деталі реєстру та математику того, як вимірюється частота. Бібліотеку можна завантажити за посиланням нижче:
- Бібліотека вимірювання частоти від pjrc
За наведеним вище посиланням буде завантажено zip-файл, а потім ви можете додати цей zip-файл до своєї IDE Arduino, пройшовши шлях Ескіз -> Включити бібліотеку -> Додати бібліотеку.ZIP.
Примітка: Використання бібліотеки вимкнефункціональність analogWrite на контактах 9 та 10 на UNO, оскільки таймер буде зайнятий цією бібліотекою. Також ці штирі будуть змінюватися, якщо використовуватимуться інші дошки.
Програмування вашого Arduino для виявлення свистка
Повна програма з демонстрацією відео можна знайти в нижній частині цієї сторінки. У цьому заголовку я поясню програму, розбиваючи її на невеликі фрагменти.
Як завжди, ми починаємо програму з включення необхідних бібліотек та оголошення необхідних змінних. Переконайтеся, що ви вже додали бібліотеку FreqMeasure.h, як це пояснювалося вище. Стан змінної представляє стан світлодіода, а змінні частота та безперервність використовуються для виведення виміряної частоти та її безперервності відповідно.
#включати
Усередині функції налаштування порожнечі ми запускаємо послідовний монітор зі швидкістю передачі 9600 бод для налагодження. Потім за допомогою функції FreqMeasure.begin () ініціалізуйте штифт 8 для вимірювання частоти. Ми також заявляємо, що виводиться штифт 13 (LED_BUILTIN).
void setup () { Serial.begin (9600); FreqMeasure.begin (); // Вимірювання на виводі 8 за замовчуванням pinMode (LED_BUILTIN, OUTPUT); }
Всередині нескінченного циклу ми продовжуємо слухати на виводі 8, використовуючи функцію FreqMeasure.available (). Якщо є вхідний сигнал, ми вимірюємо частоту за допомогою FreqMeasure.read (). Щоб уникнути помилок через шум, ми вимірюємо 100 зразків і беремо середнє значення. Код, щоб зробити те ж саме, показано нижче.
if (FreqMeasure.available ()) { // в середньому кілька читань разом сума = сума + FreqMeasure.read (); кол = кол + 1; if (count> 100) { частота = FreqMeasure.countToFrequency (сума / кількість); Serial.println (частота); сума = 0; кол = 0; } }
Ви можете використовувати функцію Serial.println () тут, щоб перевірити значення частоти для вашого свистка. У моєму випадку отримане значення становило від 1800 Гц до 2000 Гц. Частота свисту більшості людей падатиме саме в цьому діапазоні. Але навіть інші звуки, такі як музика або голос, можуть потрапляти під цю частоту, тому для їх розрізнення ми будемо стежити за безперервністю. Якщо частота триває три рази, тоді ми підтверджуємо, що це звук свистка. Отже, якщо частота знаходиться між 1800 і 2000 роками, ми збільшуємо змінну, що називається безперервністю.
якщо (частота> 1800 && частота <2000) {безперервність ++; Serial.print ("Безперервність ->"); Serial.println (безперервність); частота = 0;}
Якщо значення безперервності досягає або перевищує три, тоді ми змінюємо стан світлодіода, перемикаючи змінну, що називається стан. Якщо стан вже є істинним, ми змінюємо його на хибний і навпаки.
if (безперервність> = 3 && state == false) {state = true; безперервність = 0; Serial.println ("Світло увімкнено"); затримка (1000);} if (безперервність> = 3 && state == true) {state = false; безперервність = 0; Serial.println ("Світло вимкнено"); затримка (1000);}
Сповіщувач Arduino працює
Після того, як код та обладнання готові, ми можемо розпочати його тестування. Переконайтеся, що підключення правильні, і ввімкніть модуль. Відкрийте послідовний монітор і починайте свистіти, ви зможете помітити, як величина безперервності збільшується і, нарешті, вмикає або вимикає лампу. Зразок моментального знімка мого послідовного монітора показаний нижче.
Коли на послідовному моніторі буде сказано, що світло включено на штифті 13, високе напруження буде спрацьовано, і реле спрацює, щоб увімкнути лампу. Подібним чином лампа буде вимкнена, коли на послідовному моніторі буде сказано, що світло вимкнено . Перевіривши роботу, ви можете підключити налаштування за допомогою адаптера 12 В і розпочати керування своїм побутовим приладом змінного струму за допомогою свистка.
З повною роботою цього проекту можна ознайомитись у відеозаписі нижче. Сподіваюся, ви зрозуміли підручник і насолоджуєтесь вивченням чогось нового. Якщо у вас виникли проблеми з тим, щоб речі працювали, залиште їх у розділі коментарів або скористайтеся нашим форумом для інших технічних питань.