- Потребни материјали
- Сензор звука ради
- Мерење аудио фреквенције на осцилоскопу
- Схема круга детектора звиждука Ардуино
- Мерење фреквенције са Ардуином
- Програмирање вашег Ардуина за откривање звиждука
- Ардуино детектор звиждука ради
Као дете био сам фасциниран музичким аутомобилом који се активира када пљеснете рукама, а онда сам, одрастајући, размишљао да ли можемо да користимо исти за пребацивање светла и вентилатора у нашем дому. Било би супер кад бих само укључио Вентилаторе и светла само тапшући рукама уместо да одем свог лењег себе до прекидачке плоче. Али често би дошло до квара, јер ће овај круг реаговати на било какав гласан звук у окружењу, попут гласног радија или косилице мог комшије. Иако је прављење преклопника за пљесак такође забаван пројекат.
Тада сам наишао на ову методу откривања звиждаљки у којој ће круг детектовати звиждуке. Звиждук ће за разлику од осталих звукова имати једнолику фреквенцију за одређено време и стога се може разликовати од говора или музике. Дакле, у овом упутству научићемо како да детектујемо звук звиждука повезивањем звучног сензора са Ардуином, а када се детектује звиждук, укључићемо лампу наизменичне струје кроз релеј. Успут ћемо научити и како микрофон прима звучне сигнале и како мерити фреквенцију помоћу Ардуина. Звучи тачно занимљиво, па кренимо са Пројектом аутоматизације куће заснован на Ардуину.
Потребни материјали
- Ардуино УНО
- Модул сензора звука
- Релејни модул
- АЦ лампа
- Повезивање жица
- Бреадбоард
Сензор звука ради
Пре него што заронимо у хардверску везу и код за овај Пројекат аутоматизације куће, погледајмо сензор звука. Сензор звука који се користи у овом модулу приказан је испод. Принцип рада већине звучних сензора доступних на тржишту сличан је овом, иако би изглед могао мало да се промени.
Као што знамо, примитивна компонента сензора звука је микрофон. Микрофон је врста претварача који претвара звучне таласе (акустичну енергију) у електричну енергију. У основи мембрана унутар микрофона вибрира према звучним таласима у атмосфери који производе електрични сигнал на свом излазном пину. Али ови сигнали ће бити врло мале величине (мВ) и стога их микроконтролер попут Ардуина не може директно обрадити. Такође су подразумевано звучни сигнали аналогне природе, па ће излаз из микрофона бити синусни талас са променљивом фреквенцијом, али микроконтролери су дигитални уређаји и стога боље раде са квадратним таласом.
Да би појачао ове синусне таласе слабог сигнала и претворио их у квадратне таласе, модул користи уграђени модул за упоређивање ЛМ393, као што је приказано горе. Нисконапонски аудио излаз из микрофона напаја се на један пин упоређивача кроз транзистор појачавача, док се референтни напон подешава на други пин помоћу склопа за поделу напона који укључује потенциометар. Када излазни аудио напон из микрофона премаши унапред задати напон, компаратор постаје висок са 5В (радни напон), у супротном компаратор остаје низак на 0В. На овај начин синусни талас ниског сигнала може се претворити у квадратни талас високог напона (5В). Снимак осцилоскопа испод показује исто где је жути талас синусни талас ниског сигнала, а плави на излазном квадратном таласу. Тхеосетљивост се може контролисати променом потенциометра на модулу.
Мерење аудио фреквенције на осцилоскопу
Овај модул звучног сензора претвориће звучне таласе у атмосфери у квадратне таласе чија ће фреквенција бити једнака фреквенцији звучних таласа. Дакле, мерењем фреквенције квадратног таласа можемо пронаћи фреквенцију звучних сигнала у атмосфери. Да бих се уверио да ствари функционишу онако како се претпоставља, спојио сам звучни сензор на свој опсег како бих сондирао његов излазни сигнал, као што је приказано на видео снимку испод.
Укључио сам режим мерења на свом опсегу за мерење фреквенције и користио сам Андроид апликацију (Фреквенцијски звучни генератор) из Плаи продавнице за генерисање звучних сигнала познате фреквенције. Као што видите у горњем ГИД-у, опсег је могао да мери звучне сигнале са прилично пристојном тачношћу, вредност фреквенције приказана у опсегу је врло близу оној која се приказује на мом телефону. Сад кад знамо да модул ради, наставимо са повезивањем звучног сензора са Ардуином.
Схема круга детектора звиждука Ардуино
Комплетна шема кола за склоп прекидача детектора звиждаљки Ардуино помоћу сензора звука приказана је испод. Коло је нацртано помоћу софтвера Фритзинг.
Звучни сензор и релејни модул напајају се 5В пином Ардуина. Излазни пин звучног сензора повезан је на дигитални пин 8 Ардуина, то је због својства тајмера тог пина и о томе ћемо више разговарати у одељку за програмирање. Модул релеја покреће се пином 13 који је такође повезан са уграђеном ЛЕД диодом на УНО плочи.
На страни напајања наизменичном струјом неутрална жица је директно повезана са заједничким (Ц) пином релејног модула, док је фаза повезана са нормално отвореним (НО) пином релеја преко АЦ напајања (сијалица). На овај начин када се релеј активира НО пин ће бити повезан са Ц пином и тако ће сијалица светлити. Иначе ће блуб остати искључен. Једном када су везе успостављене, мој хардвер је изгледао отприлике овако.
Упозорење: Рад са струјним кругом може постати опасан, будите опрезни док рукујете жичаним водовима и избегавајте кратке спојеве. Прекидач или надзор одраслих препоручује се људима који немају искуства са електроником. Упозорени сте !!
Мерење фреквенције са Ардуином
Слично нашем опсегу који очитава фреквенцију долазећих квадратних таласа, и ми морамо програмирати Ардуино за израчунавање фреквенције. Већ смо научили како то да радимо у нашем водичу за бројач фреквенција користећи пулс у функцији. Али у овом упутству ћемо користити Фрекмеасуре библиотеку за мерење фреквенције како бисмо добили тачне резултате. Ова библиотека користи интерни тајмер прекид на пину 8 да мери колико дуго импулс остаје УКЉУЧЕН. Једном када се мери време, можемо израчунати фреквенцију помоћу формула Ф = 1 / Т. Међутим, с обзиром да библиотеку користимо директно, не морамо улазити у детаље регистра и математику како се мери фреквенција. Библиотеку можете преузети са доње везе:
- Библиотека мерења фреквенције пјрц
Горња веза ће преузети зип датотеку, а затим можете додати ову зип датотеку у свој Ардуино ИДЕ пратећи путању Скица -> Укључи библиотеку -> Додај.ЗИП библиотеку.
Напомена: Коришћење библиотеке ће онемогућити функцију аналогВрите на пиновима 9 и 10 на УНО, јер ће тајмер заузимати тајмер. Такође ће се ови пинови променити ако се користе друге плоче.
Програмирање вашег Ардуина за откривање звиждука
Комплетан програм са демонстрацијама Видео се може наћи на дну ове странице. У овом заглављу објаснићу програм разбијањем на мале исечке.
Као и увек започињемо програм укључивањем потребних библиотека и декларисањем потребних променљивих. Обавезно додајте библиотеку ФрекМеасуре.х како је објашњено у горњем наслову. Стање променљиве представља стање ЛЕД-а, а фреквенција и континуитет променљивих се користе за излаз измерене фреквенције, односно њеног континуитета.
#инцлуде
Унутар функције за подешавање празнине започињемо серијски монитор брзином од 9600 бауд за отклањање грешака. Затим користите функцију ФрекМеасуре.бегин () за иницијализацију пина 8 за мерење фреквенције. Такође изјављујемо да је излаз 13 (ЛЕД_БУИЛТИН).
воид сетуп () { Сериал.бегин (9600); ФрекМеасуре.бегин (); // Мере на пин 8 према подразумеваном пинМоде (ЛЕД_БУИЛТИН, ОУТПУТ); }
Унутар бесконачне петље настављамо да слушамо пин 8 помоћу функције ФрекМеасуре.аваилабле (). Ако постоји долазни сигнал, меримо фреквенцију помоћу ФрекМеасуре.реад (). Да бисмо избегли грешку због буке, меримо 100 узорака и узимали смо просек тога. Код за исто је приказан испод.
иф (ФрекМеасуре.аваилабле ()) { // у просеку неколико читања заједно сум = сум + ФрекМеасуре.реад (); цоунт = цоунт + 1; иф (цоунт> 100) { фреквенција = ФрекМеасуре.цоунтТоФрекуенци (збир / бројање); Сериал.принтлн (фреквенција); сума = 0; цоунт = 0; } }
Овде можете да користите функцију Сериал.принтлн () да бисте проверили вредност фреквенције за ваш звиждук. У мом случају примљена вредност је била од 1800Хз до 2000Хз. Учесталост звиждука већине људи ће пасти у овом одређеном опсегу. Али чак и други звукови попут музике или гласа могу пасти под ову фреквенцију, па ћемо их надгледати како бисмо их разликовали. Ако је фреквенција континуирана 3 пута, потврђујемо да је то звук звиждука. Дакле, ако је фреквенција између 1800 и 2000, повећавамо променљиву која се назива континуитет.
иф (фреквенција> 1800 && фреквенција <2000) {континуитет ++; Сериал.принт ("Континуитет ->"); Сериал.принтлн (континуитет); фреквенција = 0;}
Ако вредност континуитета достигне или пређе три, тада мењамо стање ЛЕД-а пребацивањем променљиве која се зове стање. Ако је стање већ тачно, мењамо га у лажно и обрнуто.
иф (континуитет> = 3 && стате == фалсе) {стате = труе; континуитет = 0; Сериал.принтлн („Светло укључено“); кашњење (1000);} ако (континуитет> = 3 && стање == тачно) {стање = нетачно; континуитет = 0; Сериал.принтлн („Светло искључено“); кашњење (1000);}
Ардуино детектор звиждука ради
Једном када код и хардвер буду спремни, можемо започети његово тестирање. Уверите се да су везе исправне и укључите модул. Отворите серијски монитор и почните да звиждите, можете приметити да се вредност континуитета повећава и коначно укључујете или искључујете лампу. Узорак тренутног снимка мог серијског монитора приказан је испод.
Када серијски монитор каже да је светло укључено на пину 13 постаће високо, а релеј ће се активирати да укључи лампу. Слично томе, лампица ће се искључити када серијски монитор каже да је светло искључено . Једном када тестирате рад, можете напајати поставку помоћу 12В адаптера и почети да контролишете свој кућни уређај АЦ помоћу звиждука.
Комплетан радни овог пројекта може се наћи на видео снимку чија је веза испод. Надам се да сте разумели туториал и уживали сте научити нешто ново. Ако имате било каквих проблема са постизањем резултата, оставите их у одељку за коментаре или користите наш форум за друге техничке упите.