- Nepieciešamie materiāli
- Skaņas sensors darbojas
- Audio frekvences mērīšana osciloskopā
- Svilpes detektors Arduino shēmas shēma
- Biežuma mērīšana ar Arduino
- Arduino programmēšana svilpes noteikšanai
- Arduino svilpes detektors darbojas
Bērnībā mani fascinēja rotaļlietu mūzikas automašīna, kas iedarbojas, kad jūs sitat plaukstas, un tad, kad es uzaugu, es domāju, vai mēs varam to pašu izmantot, lai pārslēgtu gaismas un ventilatorus mūsu mājās. Būtu forši vienkārši ieslēgt manus Ventilatorus un gaismas, vienkārši klapējot plaukstas, nevis staigāt manu slinko sevi pie sadales paneļa. Bieži vien tas nedarbojas pareizi, jo šī ķēde reaģēs uz jebkuru skaļu troksni vidē, piemēram, skaļu radio vai mana kaimiņa zāles pļāvēju. Lai arī klapēšanas slēdža veidošana ir arī jautrs projekts.
Tas bija tad, kad es saskāros ar šo svilpes noteikšanas metodi, kurā ķēde noteiks svilpi. Svilpei, atšķirībā no citām skaņām, noteiktā ilgumā būs vienāda frekvence, un tāpēc to varēs atšķirt no runas vai mūzikas. Tātad šajā apmācībā mēs uzzināsim, kā noteikt svilpes skaņu, sasaistot skaņas sensoru ar Arduino, un, kad tiek atklāta svilpe, mēs pārslēdzam maiņstrāvas lampu caur releju. Pa ceļam mēs arī uzzināsim, kā skaņas signālus uztver mikrofons un kā izmērīt frekvenci, izmantojot Arduino. Izklausās interesanti, tāpēc sāksim darbu ar Arduino balstīto mājas automatizācijas projektu.
Nepieciešamie materiāli
- Arduino UNO
- Skaņas sensora modulis
- Releja modulis
- Maiņstrāvas lampa
- Vadu savienošana
- Maizes dēlis
Skaņas sensors darbojas
Pirms mēs ienirstam šī mājas automatizācijas projekta aparatūras savienojumā un kodā, apskatīsim skaņas sensoru. Šajā modulī izmantotais skaņas sensors ir parādīts zemāk. Lielākās daļas tirgū pieejamo skaņas sensoru darbības princips ir līdzīgs šim, lai gan izskats varētu nedaudz mainīties.
Kā mēs zinām, primitīvais komponents skaņas sensorā ir mikrofons. Mikrofons ir pārveidotāja veids, kas pārveido skaņas viļņus (akustisko enerģiju) elektriskajā enerģijā. Mikrofona iekšpusē esošā diafragma vibrē ar skaņas viļņiem atmosfērā, kas uz izejas tapas rada elektrisko signālu. Bet šie signāli būs ļoti maza lieluma (mV), un tāpēc mikrokontrolleris, piemēram, Arduino, tos nevar tieši apstrādāt. Arī pēc noklusējuma skaņas signāli pēc būtības ir analogi, tāpēc mikrofona izeja būs sinusoidāls ar mainīgu frekvenci, bet mikrokontrolleri ir digitālas ierīces un tādējādi labāk darbojas ar kvadrātveida viļņiem.
Lai pastiprinātu šos zemā signāla sinusoidālos viļņus un pārveidotu tos par kvadrātveida viļņiem, modulis izmanto borta LM393 Comparator moduli, kā parādīts iepriekš. Zema sprieguma audio izeja no mikrofona tiek piegādāta vienai komparatora kontaktligzdai caur pastiprinātāja tranzistoru, bet atskaites spriegums tiek iestatīts uz otra kontakta, izmantojot sprieguma dalītāja ķēdi, iesaistot potenciometru. Kad mikrofona audio izejas spriegums pārsniedz iepriekš iestatīto spriegumu, salīdzinātājs paaugstinās ar 5 V (darba spriegumu), pretējā gadījumā salīdzinātājs paliek zems 0 V līmenī. Tādā veidā zemu signālu sinusoidālo viļņu var pārveidot par augstsprieguma (5V) kvadrātveida viļņu. Zemāk redzamais osciloskopa momentuzņēmums parāda to pašu, kur dzeltenais vilnis ir zemais signāla sinusoidālais vilnis, un zilais ieslēgtais ir izejas kvadrātveida vilnis. Thejutību var kontrolēt, mainot potenciometru uz moduļa.
Audio frekvences mērīšana osciloskopā
Šis skaņas sensora modulis pārveidos skaņas viļņus atmosfērā kvadrātveida viļņos, kuru frekvence būs vienāda ar skaņas viļņu frekvenci. Tātad, izmērot kvadrātveida viļņu frekvenci, mēs varam atrast skaņas signālu biežumu atmosfērā. Lai pārliecinātos, ka lietas darbojas, kā paredzēts, es pieslēdzu skaņas sensoru savai darbības jomai, lai pārbaudītu tā izejas signālu, kā parādīts zemāk esošajā video.
Es ieslēdzu mērīšanas režīmu savā diapazonā, lai izmērītu frekvenci, un izmantoju Android lietojumprogrammu (Frequency Sound Generator) no Play veikala, lai ģenerētu zināmas frekvences skaņas signālus. Kā redzat iepriekšminētajā GID, darbības sfēra spēja izmērīt skaņas signālus ar diezgan pienācīgu precizitāti, diapazonā attēlotās frekvences vērtība ir ļoti tuvu tai, kas tiek rādīta manā tālrunī. Tagad, kad mēs zinām, ka modulis darbojas, varat turpināt Skaņas sensora saskarni ar Arduino.
Svilpes detektors Arduino shēmas shēma
Pilnīga Arduino svilpes detektora slēdža shēmas shēma, izmantojot skaņas sensoru, ir parādīta zemāk. Kontūra tika uzzīmēta, izmantojot programmatūru Fritzing.
Skaņas sensoru un releja moduli darbina Arduino 5 V tapa. Skaņas sensora izejas tapa ir savienota ar Arduino digitālo kontaktu 8, tas ir saistīts ar šīs tapas taimera īpašību, un mēs par to vairāk apspriedīsim programmēšanas sadaļā. Releja moduli iedarbina 13. kontakts, kas ir savienots arī ar iebūvēto LED uz UNO dēļa.
Maiņstrāvas padeves pusē neitrālais vads ir tieši savienots ar releja moduļa kopējo (C) tapu, savukārt fāze ir savienota ar releja parasti atvērtu (NO) tapu caur maiņstrāvas slodzi (spuldze). Tādā veidā, kad tiek iedarbināts relejs, NO tapa tiks savienota ar C tapu, un tādējādi spuldze spīdēs. Cits burbulis paliks izslēgts. Kad savienojumi ir izveidoti, mana aparatūra izskatījās apmēram šāda.
Brīdinājums: Darbs ar maiņstrāvas ķēdi var kļūt bīstams, piesardzīgi rīkoties ar strāvas vadiem un izvairīties no īssavienojumiem. Automātiskais slēdzis vai pieaugušo uzraudzība ir ieteicama cilvēkiem, kuri nav pieredzējuši ar elektroniku. Tu esi ticis brīdināts!!
Biežuma mērīšana ar Arduino
Līdzīgi kā mūsu darbības sfērā, nolasot ienākošo kvadrātveida viļņu biežumu, mums ir jāprogrammē Arduino, lai aprēķinātu frekvenci. Kā to izdarīt, mēs jau esam iemācījušies mūsu Frekvenču skaitītāja apmācībā, izmantojot impulsa funkciju. Bet šajā apmācībā mēs izmantosim Freqmeasure bibliotēku, lai mērītu biežumu, lai iegūtu precīzus rezultātus. Šī bibliotēka izmanto iekšējo taimera pārtraukumu 8. tapā, lai izmērītu, cik ilgi impulss paliek ieslēgts. Kad laiks ir mērīts, mēs varam aprēķināt frekvenci, izmantojot formulas F = 1 / T. Tomēr, tā kā mēs tieši izmantojam bibliotēku, mums nav jāiekļaujas reģistrā un matemātikā, kā mēra frekvenci. Bibliotēku var lejupielādēt no saites zemāk:
- Frekvences mērījumu bibliotēka ar pjrc
Iepriekš minētā saite lejupielādēs zip failu, pēc tam jūs varat pievienot šo zip failu savam Arduino IDE, sekojot ceļam Skice -> Iekļaut bibliotēku -> Pievienot.ZIP bibliotēku.
Piezīme: Izmantojot bibliotēku, tiks atspējota analogWrite funkcionalitāte UNO 9. un 10. tapā, jo taimeri aizņem šī bibliotēka. Arī šie tapas mainīsies, ja tiks izmantoti citi dēļi.
Arduino programmēšana svilpes noteikšanai
Pilnu programmu ar demonstrācijas video var atrast pie šīs lapas apakšā. Šajā sadaļā es izskaidrošu programmu, sadalot to mazos fragmentos.
Kā vienmēr, mēs sākam programmu, iekļaujot nepieciešamās bibliotēkas un deklarējot nepieciešamos mainīgos. Pārliecinieties, vai esat jau pievienojis bibliotēku FreqMeasure.h, kā paskaidrots iepriekš. Mainīgais stāvoklis apzīmē gaismas diodes stāvokli, un mainīgos biežumu un nepārtrauktību izmanto attiecīgi izmērītās frekvences un tās nepārtrauktības izvadīšanai.
# iekļaut
Tukšās iestatīšanas funkcijas iekšpusē mēs sākam sērijveida monitoru ar 9600 bitu pārraides ātrumu atkļūdošanai. Pēc tam izmantojiet funkciju FreqMeasure.begin (), lai inicializētu tapu 8 frekvences mērīšanai. Mēs arī paziņojam, ka tiek izvadīta tapa 13 (LED_BUILTIN).
void setup () { Sērijas.sākt (9600); FreqMeasure.begin (); // Pasākumi 8. tapā pēc noklusējuma pinMode (LED_BUILTIN, OUTPUT); }
Bezgalīgās cilpas iekšpusē mēs turpinām klausīties 8. tapu, izmantojot funkciju FreqMeasure.available (). Ja ir ienākošs signāls, mēs mēra frekvenci, izmantojot FreqMeasure.read (). Lai izvairītos no kļūdām trokšņa dēļ, mēs izmērām 100 paraugus un paņēmām vidējo. Kods, lai izdarītu to pašu, ir parādīts zemāk.
if (FreqMeasure.available ()) { // vidēji vairāku lasījumu summa kopā = summa + FreqMeasure.read (); skaitīt = skaitīt + 1; if (skaits> 100) { frekvence = FreqMeasure.countToFrequency (summa / skaits); Serial.println (biežums); summa = 0; skaits = 0; } }
Šeit varat izmantot funkciju Serial.println (), lai pārbaudītu svilpes frekvences vērtību. Manā gadījumā saņemtā vērtība bija no 1800Hz līdz 2000Hz. Lielākajā daļā cilvēku svilpes biežums samazināsies tieši šajā diapazonā. Bet pat citas skaņas, piemēram, mūzika vai balss, var pakļauties šai frekvencei, tāpēc, lai tās atšķirtu, mēs uzraudzīsim nepārtrauktību. Ja frekvence ir nepārtraukta 3 reizes, mēs apstiprinām, ka tā ir svilpes skaņa. Tātad, ja frekvence ir no 1800 līdz 2000, mēs palielinām mainīgo, ko sauc par nepārtrauktību.
ja (frekvence> 1800 && frekvence <2000) {nepārtrauktība ++; Serial.print ("Nepārtrauktība ->"); Serial.println (nepārtrauktība); biežums = 0;}
Ja nepārtrauktības vērtība sasniedz vai pārsniedz trīs, tad mēs mainām gaismas diodes stāvokli, pārslēdzot mainīgo, ko sauc par stāvokli. Ja valsts jau ir patiesa, mēs to mainām uz nepatiesu un pretēji.
ja (nepārtrauktība> = 3 && stāvoklis == nepatiesa) {stāvoklis = taisnība; nepārtrauktība = 0; Serial.println ("Gaisma ieslēgta"); kavēšanās (1000);} ja (nepārtrauktība> = 3 && stāvoklis == taisnība) {stāvoklis = nepatiesa; nepārtrauktība = 0; Serial.println ("Gaisma izslēgta"); kavēšanās (1000);}
Arduino svilpes detektors darbojas
Kad kods un aparatūra ir gatava, mēs varam sākt to pārbaudīt. Pārliecinieties, vai savienojumi ir pareizi, un ieslēdziet moduli. Atveriet sērijveida monitoru un sāciet svilpot, jūs varat pamanīt nepārtrauktības vērtības pieaugumu un beidzot lampas ieslēgšanu vai izslēgšanu. Tālāk parādīts mana sērijveida monitora momentuzņēmuma paraugs.
Kad sērijveida monitors saka, ka gaisma, kas ieslēgta, tapu 13 padarīs augstu un relejs tiks aktivizēts, lai ieslēgtu lampu. Līdzīgi lampa tiks izslēgta, kad sērijveida monitorā ir teikts, ka gaisma ir izslēgta . Kad esat pārbaudījis darbību, varat ieslēgt iestatīšanu, izmantojot 12 V adapteri, un sākt kontrolēt maiņstrāvas mājas ierīci, izmantojot svilpi.
Pilnīga darba šī projekta var atrast video saistīti zemāk. Ceru, ka sapratāt apmācību un jums patika uzzināt kaut ko jaunu. Ja jums ir kādas problēmas, lai lietas darbotos, atstājiet tās komentāru sadaļā vai izmantojiet mūsu forumu citiem tehniskiem jautājumiem.