- Nødvendig materiale
- Lydsensor fungerer
- Måling av lydfrekvens på oscilloskop
- Fløytdetektor Arduino kretsdiagram
- Målefrekvens med Arduino
- Programmering av Arduino for å oppdage Whistle
- Arduino Whistle Detector Working
Som barn ble jeg fascinert av en leketøymusikkbil som blir utløst når du klapper i hendene, og da jeg vokste opp lurte jeg på om vi kan bruke det samme til å veksle lys og vifter hjemme hos oss. Det ville være kult å bare slå på viftene og lysene mine ved å bare klappe i hendene i stedet for å gå det late jeg til bryterbrettet. Men ofte vil det ikke fungere, da denne kretsen vil svare på høy lyd i miljøet, som en høy radio eller til min nabos gressklipper. Selv om det å bygge en klappbryter er også et morsomt prosjekt å gjøre.
Det var da jeg kom over denne Whistle Detecting-metoden der kretsen vil oppdage for fløyte. En fløyte i motsetning til andre lyder vil ha en jevn frekvens for en bestemt varighet og kan derfor skilles fra tale eller musikk. Så i denne opplæringen vil vi lære å oppdage fløytelyd ved å grensesnitt lydsensor med Arduino, og når en fløyte oppdages, vil vi bytte en AC-lampe gjennom et relé. Underveis lærer vi også hvordan lydsignaler mottas av mikrofonen og hvordan man måler frekvens ved hjelp av Arduino. Høres interessant ut, så la oss komme i gang med Arduino-basert hjemmeautomatiseringsprosjekt.
Nødvendig materiale
- Arduino UNO
- Lydsensormodul
- Relémodul
- AC-lampe
- Koble ledninger
- Brettbrett
Lydsensor fungerer
Før vi dykker ned i maskinvaretilkoblingen og koden for dette hjemmeautomatiseringsprosjektet, la oss ta en titt på lydsensoren. Lydsensoren som brukes i denne modulen er vist nedenfor. Arbeidsprinsippet til de fleste lydsensorer som er tilgjengelige i markedet, ligner på dette, selv om utseendet kan endre seg litt.
Som vi vet er den primitive komponenten i en lydsensor mikrofonen. En mikrofon er en type svinger som konverterer lydbølger (akustisk energi) til elektrisk energi. I utgangspunktet vibrerer membranen inne i mikrofonen til lydbølgene i atmosfæren som produserer elektrisk signal på utgangsstiften. Men disse signalene vil ha svært lav styrke (mV) og kan derfor ikke behandles direkte av en mikrokontroller som Arduino. Også som standard er lydsignaler analoge i naturen, og derfor vil utgangen fra mikrofonen være en sinusbølge med variabel frekvens, men mikrokontrollere er digitale enheter og fungerer derfor bedre med firkantbølge.
For å forsterke disse lavsignalsinusbølgene og konvertere dem til firkantbølger, bruker modulen den innebygde LM393 Comparator-modulen som vist ovenfor. Lavspenningslydutgangen fra mikrofonen tilføres en pinne på komparatoren gjennom en forsterkertransistor mens en referansespenning er satt på den andre pinnen ved hjelp av en spenningsdelerkrets som involverer et potensiometer. Når lydutgangsspenningen fra mikrofonen overstiger den forhåndsinnstilte spenningen, blir komparatoren høy med 5V (driftsspenning), ellers forblir komparatoren lav ved 0V. På denne måten kan sinusbølgen med lav signal være omformer til høyspenning (5V) firkantbølge. Oscilloskop øyeblikksbildet nedenfor viser det samme der den gule bølgen er den lave signal sinusbølgen og den blå på er den utgående firkantbølgen. Defølsomhet kan styres ved å variere potensiometeret på modulen.
Måling av lydfrekvens på oscilloskop
Denne lydsensormodulen vil konvertere lydbølgene i atmosfæren til firkantede bølger, hvis frekvens vil være lik frekvensen til lydbølgene. Så ved å måle frekvensen til firkantbølgen kan vi finne frekvensen til lydsignalene i atmosfæren. For å sikre at ting fungerer som de skal, koblet jeg lydsensoren til mitt omfang for å undersøke utgangssignalet som vist i videoen nedenfor.
Jeg slo på målemodusen i omfanget mitt for å måle frekvensen og brukte en Android-applikasjon (Frequency Sound Generator) fra Play Store for å generere lydsignaler med kjent frekvens. Som du kan se i GID ovenfor, var omfanget i stand til å måle lydsignaler med en ganske anstendig nøyaktighet, verdien av frekvensen som vises i omfanget, er veldig nær den som vises på telefonen min. Nå som vi vet at modulen fungerer kan vi fortsette med å grensesnitt lydsensor med Arduino.
Fløytdetektor Arduino kretsdiagram
Det komplette kretsskjemaet for Arduino Whistle Detector Switch-kretsen med lydsensor er vist nedenfor. Kretsen ble tegnet med Fritzing-programvare.
Lydsensoren og relémodulen drives av 5V-pinnen på Arduino. Utgangspinnen til lydsensoren er koblet til den digitale pinnen 8 på Arduino, dette er på grunn av tidsegenskapene til den pinnen, og vi vil diskutere mer om dette i programmeringsdelen. Relémodulen utløses av pin 13 som også er koblet til den innebygde LED-en på UNO-kortet.
På vekselstrømsforsyningssiden er den nøytrale ledningen direkte koblet til Common (C) -pinnen på relémodulen mens fasen er koblet til den normalt åpne (NO) pinnen på reléet gjennom vekselstrømmen (lyspære). Når reléet utløses, vil NO-pinnen kobles til C-pinnen, og lyset vil dermed lyse. Ellers forblir blubben slått av. Når tilkoblingene er gjort, så maskinvaren min omtrent slik ut.
Advarsel: Arbeid med vekselstrømskrets kan bli farlig, være forsiktig når du håndterer strømførende ledninger og unngå kortslutning. En strømbryter eller tilsyn av voksne anbefales for personer som ikke har erfaring med elektronikk. Du har blitt advart!!
Målefrekvens med Arduino
I likhet med vårt omfang som leser frekvensen til de innkommende firkantbølgene, må vi programmere Arduino for å beregne frekvensen. Vi har allerede lært hvordan du gjør dette i vår Frequency Counter tutorial ved hjelp av pulsen i funksjon. Men i denne opplæringen bruker vi Freqmeasure-biblioteket for å måle frekvensen for å få nøyaktige resultater. Dette biblioteket bruker den interne tidsavbruddet på pin 8 for å måle hvor lenge en puls forblir PÅ. Når tiden er målt, kan vi beregne frekvensen ved hjelp av formlene F = 1 / T. Men siden vi bruker biblioteket direkte, trenger vi ikke å komme inn i registerdetaljene og matematikken for hvordan frekvensen måles. Biblioteket kan lastes ned fra lenken nedenfor:
- Frequency Measure Library av pjrc
Ovenstående lenke vil laste ned en zip-fil, du kan deretter legge til denne zip-filen i din Arduino IDE ved å følge stien Skisse -> Inkluder bibliotek -> Legg til.ZIP-bibliotek.
Merk: Bruk av biblioteket vil deaktivere analogWrite- funksjonaliteten på pin 9 og 10 på UNO, siden timeren blir okkupert av dette biblioteket. Disse pinnene endres også hvis andre kort brukes.
Programmering av Arduino for å oppdage Whistle
Hele programmet med en demonstrasjonsvideo finner du nederst på denne siden. I denne overskriften vil jeg forklare programmet ved å dele det opp i små utdrag.
Som alltid begynner vi programmet med å inkludere de nødvendige biblioteker og erklære de nødvendige variablene. Forsikre deg om at du allerede har lagt til FreqMeasure.h- biblioteket som forklart i overskriften ovenfor. Den variable tilstanden representerer LED-tilstanden og variablene frekvens og kontinuitet brukes til å sende henholdsvis den målte frekvensen og dens kontinuitet.
#inkludere
Inne i tomrumsoppsettfunksjonen begynner vi den serielle skjermen ved 9600 baudrate for feilsøking. Bruk deretter FreqMeasure.begin () -funksjonen til å initialisere tappen 8 for å måle frekvensen. Vi erklærer også at pin 13 (LED_BUILTIN) sendes ut.
ugyldig oppsett () { Serial.begin (9600); FreqMeasure.begin (); // Tiltak på pin 8 som standard pinMode (LED_BUILTIN, OUTPUT); }
Inne i den uendelige løkken fortsetter vi å lytte på pin 8 ved hjelp av funksjonen FreqMeasure.available (). Hvis det er et innkommende signal, måler vi frekvensen ved hjelp av FreqMeasure.read (). For å unngå feil på grunn av støy måler vi 100 prøver og tok et gjennomsnitt av det. Koden for å gjøre det samme er vist nedenfor.
hvis (FreqMeasure.available ()) { // gjennomsnittlig leser sammen sum = sum + FreqMeasure.read (); count = count + 1; hvis (telling> 100) { frekvens = FreqMeasure.countToFrequency (sum / count); Serial.println (frekvens); sum = 0; telle = 0; } }
Du kan bruke Serial.println () -funksjonen her for å sjekke verdien av frekvensen for fløyta. I mitt tilfelle var verdien som ble mottatt fra 1800Hz til 2000Hz. Fløytefrekvensen til de fleste vil falle i dette spesielle området. Men selv andre lyder som musikk eller stemme kan falle inn under denne frekvensen, så for å skille dem vil vi overvåke for kontinuitet. Hvis frekvensen er kontinuerlig i 3 ganger, bekrefter vi at det er en plystrelyd. Så hvis frekvensen er mellom 1800 og 2000, øker vi variabelen som kalles kontinuitet.
hvis (frekvens> 1800 && frekvens <2000) {kontinuitet ++; Serial.print ("Kontinuitet ->"); Serial.println (kontinuitet); frekvens = 0;}
Hvis kontinuitetsverdien når eller overstiger tre, endrer vi LED-tilstanden ved å bytte variabelen som kalles tilstand. Hvis staten allerede er sann, endrer vi den til falsk og omvendt.
hvis (kontinuitet> = 3 && state == false) {state = true; kontinuitet = 0; Serial.println ("Lys slått PÅ"); forsinkelse (1000);} hvis (kontinuitet> = 3 && tilstand == sann) {tilstand = usann; kontinuitet = 0; Serial.println ("Lys slått AV"); forsinkelse (1000);}
Arduino Whistle Detector Working
Når koden og maskinvaren er klar, kan vi begynne å teste den. Forsikre deg om at tilkoblingene er riktige og slå på modulen. Åpne den serielle skjermen og begynn å plystre, du kan legge merke til verdien av kontinuitet som økes og til slutt slå på eller av lampen. Et eksempel på et snapshot av min serielle skjerm er vist nedenfor.
Når seriell skjerm sier at lys slått på, vil pinnen 13 bli høyt og reléet vil bli utløst for å slå på lampen. Tilsvarende vil lampen bli slått av når seriell skjerm sier at Lys er slått av . Når du har testet arbeidet, kan du strømme oppsettet ved hjelp av en 12V adapter og begynne å kontrollere AC-apparatet ved hjelp av fløyte.
Den komplette arbeider av dette prosjektet kan bli funnet på video link under. Håper du forsto opplæringen og likte å lære noe nytt. Hvis du har problemer med å få ting til å fungere, kan du legge dem igjen i kommentarseksjonen eller bruke forumet vårt til andre tekniske spørsmål.