- Potrebné materiály
- Zvukový senzor pracuje
- Meranie zvukovej frekvencie na osciloskope
- Schéma zapojenia detektora píšťalky Arduino
- Meranie frekvencie pomocou Arduina
- Programovanie vášho Arduina na detekciu píšťalky
- Detektor píšťaliek Arduino pracuje
Ako dieťa ma fascinovalo autíčko s hudbou, ktoré sa spustí, keď tlieskate rukami, a potom, ako som vyrastal, som premýšľal, či môžeme to isté použiť na prepínanie svetiel a ventilátorov v našom dome. Bolo by super zapnúť mojich fanúšikov a svetlá iba tlieskaním rúk, namiesto toho, aby som šiel svoje lenivé ja k rozvádzaču. Často by však došlo k poruche, pretože tento okruh bude reagovať na akýkoľvek silný hluk v prostredí, napríklad na hlasné rádio alebo kosačku na trávu od môjho suseda. Aj keď je stavba tlieskacieho spínača tiež zábavný projekt.
Bolo to vtedy, keď som narazil na túto metódu detekcie píšťalky, pri ktorej obvod bude detekovať píšťalku. Píšťalka na rozdiel od iných zvukov bude mať po určitú dobu jednotnú frekvenciu, a preto ju možno rozlíšiť od reči alebo hudby. V tomto výučbe sa teda naučíme, ako zistiť zvuk píšťalky prepojením zvukového senzora s Arduinom, a keď sa zistí píšťalka, prepneme lampu striedavého prúdu cez relé. Po ceste sa tiež dozvieme, ako sú zvukové signály prijímané mikrofónom a ako merať frekvenciu pomocou Arduina. Znie to zaujímavo, takže poďme začať s projektom domácej automatizácie založeným na Arduine.
Potrebné materiály
- Arduino UNO
- Modul zvukového senzora
- Reléový modul
- AC lampa
- Pripojenie drôtov
- Nepál
Zvukový senzor pracuje
Predtým, ako sa ponoríme do hardvérového pripojenia a kódu pre tento projekt domácej automatizácie, pozrime sa na zvukový senzor. Zvukový senzor použitý v tomto module je zobrazený nižšie. Princíp fungovania väčšiny zvukových senzorov dostupných na trhu je podobný tomuto, hoci vzhľad sa môže trochu zmeniť.
Ako vieme, primitívnou súčasťou zvukového senzora je mikrofón. Mikrofón je typ meniča, ktorý prevádza zvukové vlny (akustická energia) na elektrickú energiu. Membrána vo vnútri mikrofónu v zásade vibruje na zvukové vlny v atmosfére, ktoré na výstupnom kolíku vytvárajú elektrický signál. Ale tieto signály budú mať veľmi nízku veľkosť (mV), a preto ich nemožno priamo spracovať mikrokontrolérom, ako je Arduino. Aj predvolené zvukové signály sú vo svojej podstate analógové, preto bude výstup z mikrofónu sínusový s variabilnou frekvenciou, ale mikrokontroléry sú digitálne zariadenia, a preto lepšie fungujú s obdĺžnikovými vlnami.
Na zosilnenie týchto sínusových vĺn s nízkym signálom a ich prevedenie na štvorcové vlny modul používa integrovaný modul komparátora LM393, ako je uvedené vyššie. Nízkonapäťový zvukový výstup z mikrofónu sa dodáva do jedného kolíka komparátora cez zosilňovačový tranzistor, zatiaľ čo referenčné napätie sa nastavuje na druhom kolíku pomocou obvodu rozdeľovača napätia s použitím potenciometra. Keď výstupné zvukové napätie z mikrofónu prekročí prednastavené napätie, komparátor sa zvýši na 5 V (prevádzkové napätie), inak komparátor zostane nízky na 0 V. Týmto spôsobom je možné previesť sinusovú vlnu s nízkym signálom na štvorcovú vlnu s vysokým napätím (5 V). Snímka osciloskopu uvedená nižšie zobrazuje to isté, keď žltá vlna je sínusová vlna s nízkym signálom a modrá je výstupná obdĺžniková vlna. Thecitlivosť sa dá regulovať zmenou potenciometra na module.
Meranie zvukovej frekvencie na osciloskope
Tento modul zvukového senzora prevádza zvukové vlny v atmosfére na štvorcové vlny, ktorých frekvencia sa bude rovnať frekvencii zvukových vĺn. Takže meraním frekvencie obdĺžnikovej vlny nájdeme frekvenciu zvukových signálov v atmosfére. Aby som sa ubezpečil, že veci fungujú tak, ako majú, pripojil som zvukový senzor k môjmu rozsahu a sondoval jeho výstupný signál, ako je znázornené na videu nižšie.
Na svojom rozsahu som zapol režim merania na meranie frekvencie a na generovanie zvukových signálov známej frekvencie som použil aplikáciu pre Android (Frequency Sound Generator) z Obchodu Play. Ako vidíte vo vyššie uvedenom GID, rozsah bol schopný merať zvukové signály s celkom slušnou presnosťou, hodnota frekvencie zobrazená v rozsahu je veľmi blízka hodnote zobrazenej na mojom telefóne. Teraz, keď vieme, že modul funguje, môžeme pokračovať v prepojení zvukového senzora s Arduinom.
Schéma zapojenia detektora píšťalky Arduino
Kompletná schéma zapojenia obvodu spínača detektora píšťaly Arduino pomocou zvukového senzora je uvedená nižšie. Obvod bol nakreslený pomocou softvéru Fritzing.
Zvukový senzor a modul relé sú napájané z 5V kolíka Arduina. Výstupný kolík zvukového senzora je pripojený k digitálnemu kolíku 8 Arduina, je to kvôli vlastnosti časovača tohto kolíka a viac o tom budeme diskutovať v programovacej časti. Reléový modul je spustený pinom 13, ktorý je tiež pripojený k zabudovanej LED na doske UNO.
Na strane napájania AC je neutrálny vodič priamo pripojený k pinu Common (C) reléového modulu, zatiaľ čo fáza je pripojená k pinu Normally Open (NO) relé cez záťaž AC (žiarovka). Týmto spôsobom, keď sa relé aktivuje, NO kolík bude spojený s C kolíkom a žiarovka tak bude svietiť. V opačnom prípade bude klub zostať vypnutý. Po vytvorení pripojení vyzeral môj hardvér asi takto.
Varovanie: Práca s obvodom striedavého prúdu môže byť nebezpečná, pri manipulácii s vodičmi pod napätím buďte opatrní a vyhnite sa skratom. Osobám, ktoré nemajú skúsenosti s elektronikou, sa odporúča vypínač alebo dohľad nad dospelými. Bol si varovaný!!
Meranie frekvencie pomocou Arduina
Podobne ako v našom rozsahu čítania frekvencie prichádzajúcich štvorcových vĺn, musíme naprogramovať Arduino na výpočet frekvencie. Ako to urobiť, sme sa už naučili v našom návode Frekvenčný čítač pomocou funkcie Pulz v. Ale v tomto tutoriále budeme používať knižnicu Freqmeasure na meranie frekvencie, aby sme dosiahli presné výsledky. Táto knižnica používa interné prerušenie časovača na kolíku 8 na meranie toho, ako dlho zostáva impulz ZAPNUTÝ. Akonáhle je čas zmeraný, môžeme vypočítať frekvenciu pomocou vzorcov F = 1 / T. Pretože však knižnicu používame priamo, nemusíme sa dostávať do podrobností registra a matematiky spôsobu merania frekvencie. Knižnicu je možné stiahnuť z nasledujúceho odkazu:
- Knižnica merania kmitočtu od pjrc
Vyššie uvedený odkaz stiahne súbor zip. Tento súbor zip potom môžete pridať do svojho IDE Arduino podľa cesty Skica -> Zahrnúť knižnicu -> Pridať knižnicu.ZIP.
Poznámka: Používanie knižnice deaktivuje funkciu analogWrite na pinoch 9 a 10 na UNO, pretože časovač bude touto knižnicou obsadený. Tieto kolíky sa tiež zmenia, ak sa použijú iné dosky.
Programovanie vášho Arduina na detekciu píšťalky
Kompletný program sa v ukážkovom videu možno nájsť v dolnej časti tejto stránky. V tejto časti vysvetlím program tak, že ho rozdelím na malé útržky.
Ako vždy začneme program zahrnutím požadovaných knižníc a vyhlásením požadovaných premenných. Uistite sa, že ste už pridali knižnicu FreqMeasure.h, ako je vysvetlené v nadpise vyššie. Stav premennej predstavuje stav LED a premenné frekvencia a kontinuita sa používajú na výstup nameranej frekvencie a jej kontinuity.
#include
Vo vnútri funkcie nastavenia neplatnosti začneme sériový monitor s ladením 9600 baudov. Potom pomocou funkcie FreqMeasure.begin () inicializujte pin 8 na meranie frekvencie. Tiež deklarujeme, že výstup 13 (LED_BUILTIN) je na výstupe.
void setup () { Serial.begin (9600); FreqMeasure.begin (); // Meria na pin 8 predvolene pinMode (LED_BUILTIN, OUTPUT); }
Vo vnútri nekonečnej slučky pokračujeme v počúvaní na kolíku 8 pomocou funkcie FreqMeasure.available (). Ak existuje prichádzajúci signál, zmeriame frekvenciu pomocou FreqMeasure.read (). Aby sme sa vyhli chybám v dôsledku šumu, namerali sme 100 vzoriek a odobrali sme z nich priemerne. Kód, ktorý urobí to isté, je uvedený nižšie.
if (FreqMeasure.available ()) { // priemer niekoľkých spoločných čítaní sum = suma + FreqMeasure.read (); počet = počet + 1; if (počet> 100) { frekvencia = FreqMeasure.countToFrequency (suma / počet); Serial.println (frekvencia); suma = 0; počet = 0; } }
Tu môžete použiť funkciu Serial.println () na kontrolu hodnoty frekvencie pre vašu píšťalku. V mojom prípade bola prijatá hodnota od 1 800 Hz do 2 000 Hz. Frekvencia píšťaliek väčšiny ľudí poklesne v tomto konkrétnom rozmedzí. Ale aj iné zvuky ako hudba alebo hlas môžu spadať pod túto frekvenciu, aby sme ich odlíšili, budeme monitorovať kontinuitu. Ak je frekvencia spojitá trikrát, potvrdíme, že ide o píšťalku. Ak je teda frekvencia medzi 1800 a 2000, zvýšime premennú zvanú kontinuita.
if (frekvencia> 1800 && frekvencia <2000) {kontinuita ++; Serial.print ("Kontinuita ->"); Serial.println (kontinuita); frekvencia = 0;}
Ak hodnota spojitosti dosiahne alebo presiahne tri, potom zmeníme stav LED prepnutím premennej nazývanej stav. Ak je stav už pravdivý, zmeníme ho na falošný a naopak.
if (kontinuita> = 3 && state == false) {state = true; kontinuita = 0; Serial.println ("svetlo zapnuté"); delay (1000);} if (kontinuita> = 3 && state == true) {state = false; kontinuita = 0; Serial.println ("Svetlo vypnuté"); oneskorenie (1 000);}
Detektor píšťaliek Arduino pracuje
Keď bude kód a hardvér pripravený, môžeme ho začať testovať. Uistite sa, že sú pripojenia správne a zapnite modul. Otvorte sériový monitor a začnite pískať. Môžete si všimnúť, že hodnota kontinuity sa zvyšuje a nakoniec zapína alebo vypína lampu. Nižšie je uvedený ukážkový moment môjho sériového monitora.
Keď sériový monitor povie, že svetlo zapnuté, kolík 13 bude vysoko a relé sa aktivuje, aby zaplo lampu. Podobne bude lampa vypnutá, keď sériový monitor zobrazí hlásenie Svetlo vypnuté . Po otestovaní fungovania môžete napájať zariadenie pomocou adaptéra 12V a pomocou píšťalky začať ovládať svoje domáce spotrebiče.
Kompletná fungovanie tohto projektu možno nájsť na videu odkazujeme nižšie. Dúfam, že ste pochopili návod a bavilo vás učiť sa niečo nové. Ak máte problém s tým, aby veci fungovali, nechajte ich v sekcii komentárov alebo použite naše fórum na ďalšie technické požiadavky.