- Potřebné materiály
- Zvukový senzor pracuje
- Měření zvukové frekvence na osciloskopu
- Obvodové schéma detektoru píšťalky Arduino
- Měření frekvence pomocí Arduina
- Programování vašeho Arduina pro detekci Whistle
- Detektor píšťalky Arduino pracuje
Jako dítě mě fascinovalo autíčko s hračkami, které se spustí, když tleskáte rukama, a pak, když jsem vyrůstal, přemýšlel jsem, jestli můžeme použít to samé k přepínání světel a ventilátorů v našem domě. Bylo by v pohodě jen zapnout mé ventilátory a světla pouhým tleskáním rukou, místo toho, abych šel své líné já k rozvaděči. Často by však došlo k poruše, protože tento obvod bude reagovat na jakýkoli hlasitý hluk v prostředí, jako je hlasité rádio nebo sekačka na trávu mého souseda. I když je stavba přepínače tleskání také zábavný projekt.
Tehdy jsem narazil na tuto metodu detekce píšťalky, při které obvod detekuje píšťalku. Píšťalka na rozdíl od jiných zvuků bude mít po určitou dobu jednotnou frekvenci, a proto ji lze odlišit od řeči nebo hudby. V tomto tutoriálu se tedy naučíme, jak detekovat zvuk píšťalky propojením zvukového senzoru s Arduinem, a když je detekována píšťalka, přepneme AC lampu přes relé. Po cestě se také naučíme, jak jsou zvukové signály přijímány mikrofonem a jak měřit frekvenci pomocí Arduina. Zní to zajímavě, takže pojďme začít s projektem domácí automatizace založeným na Arduinu.
Potřebné materiály
- Arduino UNO
- Modul zvukového senzoru
- Reléový modul
- AC lampa
- Připojení vodičů
- Nepájivá deska
Zvukový senzor pracuje
Než se ponoříme do hardwarového připojení a kódu pro tento projekt domácí automatizace, podívejme se na zvukový senzor. Zvukový senzor použitý v tomto modulu je zobrazen níže. Princip fungování většiny zvukových senzorů dostupných na trhu je podobný tomuto, i když se vzhled může trochu změnit.
Jak víme, primitivní složkou zvukového senzoru je mikrofon. Mikrofon je typ měniče, který převádí zvukové vlny (akustickou energii) na elektrickou energii. V zásadě membrána uvnitř mikrofonu vibruje na zvukové vlny v atmosféře, které produkují elektrický signál na jeho výstupním kolíku. Ale tyto signály budou mít velmi nízkou velikost (mV), a proto je nelze zpracovat přímo mikrokontrolérem, jako je Arduino. Ve výchozím nastavení jsou zvukové signály analogické, proto bude výstup z mikrofonu sinusový s proměnnou frekvencí, ale mikrokontroléry jsou digitální zařízení, a proto fungují lépe s obdélníkovou vlnou.
K zesílení těchto sinusových vln s nízkým signálem a jejich převodu na čtvercové vlny používá modul integrovaný modul komparátoru LM393, jak je uvedeno výše. Nízkonapěťový zvukový výstup z mikrofonu je dodáván do jednoho pinu komparátoru přes tranzistor zesilovače, zatímco referenční napětí je nastaveno na druhém pinu pomocí obvodu děliče napětí zahrnujícího potenciometr. Když výstupní zvukové napětí z mikrofonu překročí přednastavené napětí, komparátor se zvýší na 5 V (provozní napětí), jinak zůstane komparátor nízký na 0 V. Tímto způsobem lze sinusovou vlnu s nízkým signálem převést na čtvercovou vlnu s vysokým napětím (5 V). Níže uvedený snímek osciloskopu ukazuje to samé, kde žlutá vlna je sinusová vlna s nízkým signálem a modrá na je výstupní obdélníková vlna. Thecitlivost lze ovládat změnou potenciometru na modulu.
Měření zvukové frekvence na osciloskopu
Tento modul zvukového senzoru převede zvukové vlny v atmosféře na čtvercové vlny, jejichž frekvence se bude rovnat frekvenci zvukových vln. Takže měřením frekvence obdélníkové vlny můžeme najít frekvenci zvukových signálů v atmosféře. Abych se ujistil, že věci fungují tak, jak mají, připojil jsem zvukový senzor k mému rozsahu a zkoušel jeho výstupní signál, jak je znázorněno na videu níže.
Zapnul jsem v mém oboru režim měření, abych změřil frekvenci a pomocí aplikace pro Android (Frequency Sound Generator) z obchodu Play generoval zvukové signály známé frekvence. Jak vidíte ve výše uvedeném GID, rozsah dokázal měřit zvukové signály s docela slušnou přesností, hodnota frekvence zobrazená v rozsahu je velmi blízká hodnotě zobrazené na mém telefonu. Nyní, když víme, že modul funguje, pojďme pokračovat v propojení zvukového senzoru s Arduinem.
Obvodové schéma detektoru píšťalky Arduino
Kompletní schéma zapojení obvodu spínače detektoru píšťalky Arduino pomocí zvukového senzoru je uvedeno níže. Obvod byl nakreslen pomocí softwaru Fritzing.
Zvukový senzor a reléový modul jsou napájeny 5V pinem Arduina. Výstupní kolík zvukového senzoru je připojen k digitálnímu kolíku 8 Arduina, je to kvůli vlastnosti časovače tohoto kolíku a více o tom pojednáme v programovací části. Reléový modul se spouští pinem 13, který je také připojen k vestavěné LED na desce UNO.
Na straně napájení střídavým proudem je neutrální vodič přímo připojen ke kolíku Common (C) modulu relé, zatímco fáze je připojena k kolíku Normally Open (NO) relé prostřednictvím zátěže AC (žárovka). Tímto způsobem, když je relé spuštěno, bude NO kolík připojen k C kolíku a žárovka tak bude svítit. Jinak blub zůstane vypnutý. Jakmile jsou připojení provedena, můj hardware vypadal nějak takto.
Varování: Práce se střídavým obvodem může být nebezpečná, při manipulaci s vodiči pod napětím buďte opatrní a vyhněte se zkratům. Osobám, které nemají zkušenosti s elektronikou, se doporučuje jistič nebo dohled dospělých. Byl jsi varován!!
Měření frekvence pomocí Arduina
Podobně jako v našem oboru čtení frekvence příchozích čtvercových vln, musíme naprogramovat Arduino pro výpočet frekvence. Už jsme se naučili, jak to udělat v našem tutoriálu Čítač kmitočtů pomocí funkce pulsu. Ale v tomto tutoriálu budeme používat knihovnu Freqmeasure k měření frekvence, abychom získali přesné výsledky. Tato knihovna používá interní přerušení časovače na kolíku 8 k měření doby, po kterou puls zůstane ZAPNUTÝ. Jakmile je čas změřen, můžeme vypočítat frekvenci pomocí vzorců F = 1 / T. Jelikož však používáme knihovnu přímo, nemusíme se dostat do podrobností registru a matematiky způsobu měření frekvence. Knihovnu lze stáhnout z níže uvedeného odkazu:
- Knihovna měření frekvence od pjrc
Výše uvedený odkaz stáhne soubor ZIP, který pak můžete přidat do svého Arduino IDE podle cesty Skica -> Zahrnout knihovnu -> Přidat knihovnu.ZIP.
Poznámka: Používání knihovny deaktivuje funkci analogWrite na pinech 9 a 10 na UNO, protože časovač bude touto knihovnou obsazen. Také tyto piny se změní, pokud budou použity jiné desky.
Programování vašeho Arduina pro detekci Whistle
Kompletní program se v ukázkovém videu lze nalézt v dolní části této stránky. V tomto záhlaví vysvětlím program rozdělením na malé úryvky.
Jako vždy začneme program zahrnutím požadovaných knihoven a deklarováním požadovaných proměnných. Ujistěte se, že jste již přidali knihovnu FreqMeasure.h, jak je vysvětleno v záhlaví výše. Stav proměnné představuje stav LED a proměnná frekvence a spojitost se používá k výstupu měřené frekvence a její spojitosti.
#zahrnout
Uvnitř funkce nastavení neplatnosti začneme sériový monitor při ladění 9600 baudů. Poté použijte funkci FreqMeasure.begin () k inicializaci pinu 8 pro měření frekvence. Rovněž deklarujeme, že je vyveden pin 13 (LED_BUILTIN).
void setup () { Serial.begin (9600); FreqMeasure.begin (); // Měří na kolíku 8 ve výchozím nastavení pinMode (LED_BUILTIN, OUTPUT); }
V nekonečné smyčce posloucháme na pinu 8 pomocí funkce FreqMeasure.available (). Pokud existuje příchozí signál, změříme frekvenci pomocí FreqMeasure.read (). Abychom se vyhnuli chybám způsobeným hlukem, změřili jsme 100 vzorků a průměrně jsme je odebrali. Níže uvedený kód je stejný.
if (FreqMeasure.available ()) { // průměrně několik čtení společně sum = suma + FreqMeasure.read (); count = count + 1; if (počet> 100) { frekvence = FreqMeasure.countToFrequency (součet / počet); Serial.println (frekvence); součet = 0; count = 0; } }
Zde můžete použít funkci Serial.println () ke kontrole hodnoty frekvence vaší píšťalky. V mém případě byla přijatá hodnota od 1 800 Hz do 2 000 Hz. Frekvence píšťalky většiny lidí v tomto konkrétním rozsahu poklesne. Ale i jiné zvuky jako hudba nebo hlas by mohly spadat pod tuto frekvenci, abychom je odlišili, budeme sledovat kontinuitu. Pokud je frekvence spojitá třikrát, potvrdíme, že jde o píšťalku. Pokud je tedy frekvence mezi 1800 a 2000, zvýšíme proměnnou nazvanou kontinuita.
if (frekvence> 1800 && frekvence <2000) {kontinuita ++; Serial.print ("Kontinuita ->"); Serial.println (kontinuita); frekvence = 0;}
Pokud hodnota spojitosti dosáhne nebo přesáhne tři, změníme stav LED přepnutím proměnné zvané stav. Pokud je stav již pravdivý, změníme jej na falešný a naopak.
if (kontinuita> = 3 && state == false) {state = true; spojitost = 0; Serial.println ("světlo zapnuto"); delay (1000);} if (kontinuita> = 3 && state == true) {state = false; spojitost = 0; Serial.println ("Světlo vypnuto"); zpoždění (1 000);}
Detektor píšťalky Arduino pracuje
Jakmile bude kód a hardware připraven, můžeme jej začít testovat. Zkontrolujte správnost připojení a zapněte modul. Otevřete sériový monitor a začněte pískat, můžete si všimnout, jak se zvyšuje hodnota kontinuity a nakonec zapíná nebo vypíná lampu. Níže je uveden ukázkový snímek mého sériového monitoru.
Když sériový monitor říká, že světlo zapnuté, kolík 13 bude vysoko a relé bude spuštěno pro zapnutí lampy. Podobně se lampa vypne, když sériový monitor říká, že světlo bylo vypnuto . Jakmile otestujete funkčnost, můžete napájení napájet pomocí 12V adaptéru a začít ovládat vaše AC domácí zařízení pomocí píšťalky.
Kompletní fungování tohoto projektu lze nalézt na videu odkazujeme níže. Doufám, že jste pochopili výukový program a bavilo vás učit se něco nového. Pokud máte problém s fungováním věcí, nechte je v sekci komentářů nebo použijte naše fórum pro další technické dotazy.