- Szükséges anyagok
- Működik a hangérzékelő
- Hangfrekvencia mérése oszcilloszkópon
- Síp detektor Arduino áramkör diagram
- A frekvencia mérése az Arduino segítségével
- Az Arduino programozása a síp észlelésére
- Az Arduino sípjelző működik
Gyerekként lenyűgözött egy játékzenés autó, amely beindul, amikor tapsolsz a kezeddel, majd felnőttként arra gondoltam, vajon ugyanezt használhatjuk-e otthonunk fényeinek és rajongóinak váltására. Jó lenne csak bekapcsolni a rajongóimat és a lámpákat úgy, hogy csak tapsolok, ahelyett, hogy lusta önmagamat a kapcsolótáblához sétálnám. De gyakran meghibásodik, mivel ez az áramkör reagál a környezet bármilyen hangos zajára, például egy hangos rádióra vagy a szomszédom fűnyírójára. Bár egy tapsoló kapcsoló építése szintén szórakoztató projekt.
Akkor, amikor rábukkantam erre a sípdetektáló módszerre, amelyben az áramkör észleli a sípot. A többi hangtól eltérően a sípnak egy adott időtartamra egységes frekvenciája lesz, ezért megkülönböztethető a beszédtől vagy a zenétől. Tehát ebben az oktatóanyagban megtanuljuk, hogyan lehet felismerni a síp hangját a Hangérzékelő és az Arduino összekapcsolásával, és amikor sípot észlelünk, akkor egy váltóáramú lámpát kapcsolunk át egy relén. Útközben azt is megtudhatjuk, hogy miként fogadja a mikrofon a hangjeleket és hogyan mérheti a frekvenciát az Arduino segítségével. Érdekesen hangzik, így kezdjük az Arduino-alapú otthoni automatizálási projektet.
Szükséges anyagok
- Arduino UNO
- Hangérzékelő modul
- Relé modul
- AC lámpa
- Vezetékek csatlakoztatása
- Kenyérlemez
Működik a hangérzékelő
Mielőtt belevetnénk magunkat az otthoni automatizálási projekt hardveres kapcsolatába és kódjába, vessünk egy pillantást a hangérzékelőre. Az ebben a modulban használt hangérzékelő az alábbiakban látható. A piacon elérhető legtöbb hangérzékelő működési elve hasonló ehhez, bár a megjelenés kissé megváltozhat.
Mint tudjuk, a hangérzékelő primitív komponense a mikrofon. A mikrofon olyan típusú átalakító, amely a hanghullámokat (akusztikus energiát) elektromos energiává alakítja. Alapvetően a mikrofon belsejében lévő membrán rezeg a hanghullámokra az atmoszférában, amely elektromos jelet generál a kimeneti csapján. De ezek a jelek nagyon alacsony nagyságúak lesznek (mV), ezért nem tudják közvetlenül feldolgozni azokat a mikrokontrollereket, mint az Arduino. Alapértelmezés szerint a hangjelek analóg jellegűek, ezért a mikrofon kimenete változó frekvenciájú szinuszhullám lesz, de a mikrovezérlők digitális eszközök, és ezért jobban működnek a négyzethullámokkal.
Ezeknek az alacsony jelű szinusz hullámoknak a felerősítésére és négyzethullámokká alakítására a modul a fedélzeti LM393 Comparator modult használja, a fentiek szerint. A mikrofon alacsony feszültségű audiokimenete egy erősítő tranzisztoron keresztül az összehasonlító egyik érintkezőjéhez jut, míg a másik érintkezőre egy referenciafeszültséget állítanak be egy potenciométert tartalmazó feszültségosztó áramkör segítségével. Ha a mikrofonból származó audiokimeneti feszültség meghaladja az előre beállított feszültséget, akkor a komparátor 5 V-val (üzemi feszültség) magasra megy, ellenkező esetben a komparátor alacsony marad 0 V-on. Így az alacsony jelű szinuszhullám átalakítható nagyfeszültségű (5V) négyzethullá. Az oszcilloszkóp alábbi pillanatfelvétele ugyanazt mutatja, ahol a sárga hullám az alacsony jelű szinusz hullám, a kék pedig a kimeneti négyzet hullám. Aaz érzékenység a modul potenciométerének változtatásával szabályozható.
Hangfrekvencia mérése oszcilloszkópon
Ez a hangérzékelő modul a légkörben lévő hanghullámokat négyzetes hullámokká alakítja, akiknek a frekvenciája megegyezik a hanghullámok frekvenciájával. Tehát a négyzethullám frekvenciájának mérésével megtalálhatjuk a hangjelek frekvenciáját a légkörben. Hogy megbizonyosodjak arról, hogy a dolgok úgy működnek, ahogy feltételezik, csatlakoztattam a hangérzékelőt a hatókörömhöz, hogy megvizsgáljam a kimeneti jelét az alábbi videó szerint.
Bekapcsoltam a mérési módot a hatókörömben a frekvencia mérésére, és a Play Áruházból származó Android alkalmazást (Frequency Sound Generator) használtam ismert frekvenciájú hangjelek előállítására. Amint azt a fenti GID-ben láthatja, a hatókör képes volt mérni a hangjeleket elég tisztességes pontossággal, a hatókörben megjelenített frekvencia értéke nagyon közel van a telefonomon megjelenő értékhez. Most, hogy tudjuk, hogy a modul működik, folytathatjuk a hangérzékelő és az Arduino összekapcsolását.
Síp detektor Arduino áramkör diagram
A hangérzékelőt használó Arduino sípérzékelő kapcsoló áramkörének teljes kapcsolási rajza alább látható. Az áramkört Fritzing szoftver segítségével húztuk le.
A hangérzékelőt és a relé modult az Arduino 5 V-os tűje táplálja. A hangérzékelő kimeneti csatlakozója az Arduino 8 digitális érintkezőjéhez csatlakozik, ez annak a tűnek az időzítő tulajdonságának köszönhető, és erről többet a programozási részben fogunk tárgyalni. A relé modult a 13 érintkező váltja ki, amely szintén csatlakozik az UNO kártya beépített LED-jéhez.
A váltóáramú tápellátás oldalán a semleges vezeték közvetlenül a relé modul közös (C) tűjéhez csatlakozik, míg a fázis a váltóáramú terhelésen (villanykörte) keresztül a relé normálisan nyitott (NO) csapjához van csatlakoztatva. Így a relé kioldásakor a NO csap csatlakozik a C csaphoz, és így a villanykörte világítani fog. Egyébként a blub kikapcsolva marad. Miután a csatlakozások létrejöttek, a hardverem ilyesminek tűnt.
Figyelem: A váltakozó áramú áramkörrel végzett munka veszélyes lehet, legyen óvatos az feszültség alatt álló vezetékek kezelése közben, és kerülje a rövidzárlatot. Megszakító vagy felnőtt felügyelet ajánlott azok számára, akik nem jártasak az elektronikában. Figyelmeztetve lettél!!
A frekvencia mérése az Arduino segítségével
A bejövő négyzethullámok frekvenciájának leolvasási köréhez hasonlóan a frekvencia kiszámításához ki kell programoznunk az Arduinót. Ezt már megtanultuk a Frekvenciaszámláló oktatóanyagunkban, a pulzus funkció használatával. De ebben az oktatóanyagban a Freqmeasure könyvtár segítségével fogjuk mérni a gyakoriságot, hogy pontos eredményeket kapjunk. Ez a könyvtár a 8. érintkező belső időzítő megszakításával méri, hogy mennyi ideig marad impulzus BE. Az idő mérése után kiszámíthatjuk a frekvenciát az F = 1 / T képletek segítségével. Mivel azonban közvetlenül a könyvtárat használjuk, nem kell belemennünk a regiszter részleteibe és a frekvencia mérésének matematikájába. A könyvtár letölthető az alábbi linkről:
- Pjrc frekvenciamérési könyvtár
A fenti link egy zip fájlt tölt le, majd ezt a zip fájlt hozzáadhatja az Arduino IDE-hez a Sketch -> Könyvtár belefoglalása ->.ZIP könyvtár hozzáadása útvonal követésével.
Megjegyzés: A könyvtár használata letiltja az analóg írási funkciót az UNO 9. és 10. érintkezőjén, mivel az időzítőt ez a könyvtár foglalja el. Ezek a csapok megváltoznak, ha más táblákat használnak.
Az Arduino programozása a síp észlelésére
A teljes program bemutató videóval az oldal alján található. Ebben a fejezetben elmagyarázom a programot úgy, hogy apró részletekre bontom.
Mint mindig, a programot úgy is elindítjuk, hogy belefoglaljuk a szükséges könyvtárakat és deklaráljuk a szükséges változókat. Győződjön meg róla, hogy már hozzáadta a FreqMeasure.h könyvtárat, amint azt a fenti fejezet leírja . A változó állapot a LED állapotát jelöli, és a frekvencia és a folytonosság változókat használják a mért frekvencia, illetve annak folytonosságának kiadására.
#include
A void beállítási funkción belül elindítjuk a soros monitort 9600 baud sebességgel a hibakereséshez. Ezután használja a FreqMeasure.begin () függvényt a 8. érintkező inicializálásához a frekvencia méréséhez. Kijelentjük továbbá, hogy a 13-as tű (LED_BUILTIN) kimenet.
void setup () { Soros.kezdés (9600); FreqMeasure.begin (); // Alapértelmezésben a pinMode ( 8-as lábon mér) pinMode (LED_BUILTIN, OUTPUT); }
A végtelen hurok belsejében folyamatosan hallgatjuk a 8. tűt a FreqMeasure.available () függvény használatával . Ha van bejövő jel, akkor a FreqMeasure.read () segítségével mérjük a frekvenciát . A zaj okozta hibák elkerülése érdekében 100 mintát mérünk, és ennek átlagát vettük. Az ehhez hasonló kód az alábbiakban látható.
if (FreqMeasure.available ()) { // átlagosan több olvasmány együttesen összeg = összeg + FreqMeasure.read (); gróf = szám + 1; if (szám> 100) { gyakoriság = FreqMeasure.countToFrequency (összeg / szám); Soros.println (gyakoriság); összeg = 0; szám = 0; } }
Itt használhatja a Serial.println () függvényt, hogy ellenőrizze a síp frekvenciájának értékét. Esetemben a kapott érték 1800Hz és 2000Hz között volt. A legtöbb ember sípolásának gyakorisága ebbe a tartományba esik. De még más hangok is, például a zene vagy a hang, esetleg ebbe a frekvenciába esnek, így megkülönböztetjük őket a folytonosságról. Ha a frekvencia háromszor folyamatos, akkor megerősítjük, hogy sípszó. Tehát, ha a frekvencia 1800 és 2000 között van, akkor növeljük a folytonosságnak nevezett változót.
if (frekvencia> 1800 && frekvencia <2000) {folytonosság ++; Serial.print ("Folyamatosság ->"); Soros.println (folytonosság); gyakoriság = 0;}
Ha a folytonosság értéke eléri vagy meghaladja a hármat, akkor az állapotnak nevezett változó be- és kikapcsolásával megváltoztatjuk a LED állapotát. Ha az állam már igaz, akkor hamisra és ellenkezőre változtatjuk.
if (folytonosság> = 3 && állapot == hamis) {állapot = igaz; folytonosság = 0; Serial.println ("A fény bekapcsolt"); késleltetés (1000);} if (folytonosság> = 3 && állapot == igaz) {állapot = hamis; folytonosság = 0; Serial.println ("A fény kikapcsolt"); késés (1000);}
Az Arduino sípjelző működik
Miután a kód és a hardver készen áll, elkezdhetjük a tesztelést. Ellenőrizze, hogy a csatlakozások megfelelőek-e, és kapcsolja be a modult. Nyissa ki a soros monitort, és kezdjen fütyülni, észreveheti a folytonosság értékének növekedését, és végül a lámpa be- vagy kikapcsolását. Az alábbiakban bemutatom a soros monitorom pillanatképét.
Amikor a soros monitor azt mondja, hogy a fény bekapcsolt 13 csapot magasra emeli, és a relét bekapcsolja a lámpa bekapcsolása. Hasonlóképpen a lámpa is kikapcsol, amikor a soros monitor azt mondja, hogy a Fény ki van kapcsolva . Miután tesztelte a működést, a tápellátást 12 V-os adapterrel táplálhatja, és síp segítségével vezérelheti a hálózati háztartási készüléket.
A projekt teljes működése az alábbi linken található videón található. Remélem, megértette az oktatóanyagot, és élvezettel töltött el valami újat. Ha bármilyen problémája van a dolgok működtetésével, hagyja őket a megjegyzés rovatban, vagy használja a fórumunkat más technikai igények kielégítésére.