Cuprins:

Releu de alarmă congelator: 5 pași
Releu de alarmă congelator: 5 pași

Video: Releu de alarmă congelator: 5 pași

Video: Releu de alarmă congelator: 5 pași
Video: Releu 12V Explicat -- 12V Relay Explained 2024, Iulie
Anonim
Releu de alarmă congelator
Releu de alarmă congelator

Congelatorul nostru se află într-un spațiu utilitar izolat de spațiul nostru de locuit. Ocazional ușa congelatorului nu se închide corect și alarma se declanșează. Problema este că nu o putem auzi dacă ne aflăm în spațiul nostru de locuit. Cum primim un mesaj că ușa congelatorului este deschisă? Aceasta este o problemă obișnuită, avem dispozitive în casele noastre care ne vorbesc, dar ce se întâmplă dacă nu le putem auzi din orice motiv. Am început acest lucru ca un pic distractiv, dar poate fi util într-o aplicație mai serioasă.

Există două părți ale acestei probleme, avem nevoie de o metodă pentru a detecta alarma care a dispărut și o metodă pentru a transmite acest fapt în spațiul nostru de locuit. Proiectul pe care m-am hotărât a fost să folosesc un Raspberry Pi pentru a asculta alarma de la congelator și apoi să trimit un mesaj de alarmă sonoră la radioul meu intern, care este activat pentru uPNP. Universal Plug and Play (UpnP) este un standard pentru descoperirea și interacțiunea cu serviciile oferite de diferite dispozitive dintr-o rețea, inclusiv servere media și playere, deși nu cred că au fost avute în vedere congelatoare atunci când standardul a fost dezvoltat. Mesajul de avertizare a fost făcut puternic și iritant și se repetă la nesfârșit până la oprirea radioului.

Am ales să detectez alarma cu un Raspberry Pi Zero W și Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero este o versiune low cost a Raspberry Pi și opțiunea W are WiFi încorporat, în timp ce Seeed Pi HAT se vinde pentru mai puțin de 10 USD, are LED-uri încorporate și un buton utilizator. Pi HAT sunt carduri de extensie care se conectează direct la Raspberry Pi, realizând o procedură de asamblare foarte simplă. Orice versiune Pi ar fi mai mult decât capabilă pentru lucrare, iar microfonul ales poate fi înlocuit, deși am folosit LED-urile încorporate în această construcție.

Este ușor să verificați dacă un radio sau un televizor ar funcționa pentru dvs. Cel mai probabil va fi descris ca „DLNA activat” sau similar. Aceasta utilizează uPNP pentru a comunica. Pe un computer Windows, selectați un fișier mp3 și „Cast to Device”. Dacă dispozitivul dvs. apare și puteți reda fișierul, atunci sunteți bine să mergeți.

Am împărțit software-ul în 2 scripturi python, checkFreezer.py pentru a verifica dacă a fost declanșată o alertă la congelator și raiseAlarm.py pentru a declanșa alarma. Aceste scripturi ar putea fi dezvoltate și testate separat și pot fi ușor adaptate sau înlocuite cu diferite metode de creștere a alarmelor de microfoane.

Provizii

  • Software -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • Seeed ReSpeaker 2-Mics Pi HAT
  • Radio activat pentru uPNP

Pasul 1: Proiectarea detectorului

Atunci când ușa congelatorului este lăsată deschisă și temperatura crește, congelatorul dă o alarmă sonoră „beep beep beep”. În comun cu majoritatea sunetelor electronice, aceasta este o singură frecvență. Ideea este să eșantionăm intrarea audio, să realizăm o Transformare Fourier Rapidă (FFT) care transformă un semnal bazat pe timp într-unul bazat pe frecvență, cu alte cuvinte este descompune un semnal pentru a afișa diferitele frecvențe din semnal. Consultați Analizatorul de spectru Raspberry Pi cu bandă LED RGB. Putem căuta un vârf la frecvența buzzerului și putem declanșa alarma când buzzerul este activ de ceva timp.

Acest detector are 2 cerințe

  • Ar trebui să detecteze soneria, chiar și în prezența zgomotului ambiental (eliminați falsul negativ)
  • Nu ar trebui să fie declanșat de zgomotul ambiental (eliminați falsul pozitiv)

Am decis că rularea unui Hoover în camera de utilitate ar fi un test bun. Nu ar trebui să declanșeze alarma, iar alarma ar trebui să fie declanșată atunci când buzzerul congelatorului se stinge și Hooverul funcționează.

Pasul 2: Configurarea detectorului

Configurarea detectorului
Configurarea detectorului
Configurarea detectorului
Configurarea detectorului
Configurarea detectorului
Configurarea detectorului

Cu telefonul meu, am luat mostre audio ca fișiere WAV ale buzzerului congelatorului singur, cu un fundal zgomotos și cu Hoover în funcțiune. Am adaptat codul pentru a efectua FFT de la postarea Lecturii fluxului audio pentru FFT (Când aveți îndoieli, plagarise) și am folosit scriptul fourierTest.py pentru a trasa mostre brute și transformate Fourier ale buzzerului în fundaluri liniștite, zgomotoase și foarte zgomotoase. Creșterea nivelului la frecvența 645 este pronunțată în primul grafic și este încă semnificativă, cu un fundal foarte zgomotos.

Pasul 3: Construirea detectorului

Asamblarea detectorului

Foarte simplu. Pi W vine cu Wifi încorporat, iar HAT este conectat diect la pinii GPIO de pe Pi. Configurarea software-ului necesită pașii

  • Instalați raspbian distro pe Raspberry Pi. Există o mulțime de ghiduri în acest sens, care pot explica mult mai bine posibil.
  • Configurați Wifi (idem mai sus)
  • Are nevoie de pachetul alsa instalat

$ sudo apt-get install libasound-dev

$ pip instala pyalsaaudio

  • Conectați HAT la zmeura PI
  • Urmați Instrucțiunile de pe site-ul web pentru a instala driverele pentru HAT.
  • Rulați diagnosticul văzut pentru a verifica dacă HAT funcționează și este configurat corect.

Programul detector citește un bloc de date ca un eșantion de la microfon, face FFT și decide dacă a detectat sau nu buzzerul în eșantion. Am încercat să fac blocul cât mai mult posibil reducând rata de eșantionare audio la 16 kHz și folosind cel mai mare buffer pe care cititorul l-ar accepta. Am fost îngrijorat de faptul că calculul FFT ar putea determina caderea cadrelor, dar acest lucru nu s-a întâmplat.

Având mostre preînregistrate pe telefonul meu a făcut construcția detectorului mult mai ușoară, deoarece aș putea face construcția completă pe bancă înainte de a testa in situ de la congelator.

Antrenarea detectorului

Detectorul a fost antrenat prin scanarea fiecărei probe atunci când înregistrarea WAV a sonorului a fost redată la detector. Programul transmite poziția în spectrul FFT cu cel mai înalt nivel de putere (frecvența de vârf), împreună cu nivelul acelei frecvențe de vârf. A fost simplu să găsim frecvența sonorului și nivelul de putere pe care îl emite.

Există 2 moduri de a detecta dacă a apărut un bip: -

  1. Frecvența sonorului a fost frecvența de vârf în eșantion?
  2. sau nivelul puterii la frecvența sonorului era peste un prag?

Oricare dintre metode a funcționat într-un eșantion liniștit, dar a doua a fost mai bună cu un eșantion zgomotos, așa că am folosit asta.

Uneori, un eșantion acoperea un semnal sonor, alteori era între semnalele sonore și, după fiecare 3 semnalări sonore, a existat o lungă pauză înainte de următoarele semnalizare sonoră. Pentru a detecta în mod fiabil că a apărut un set de bipuri, fiecare eșantion a avut un vot ascendent dacă a fost detectat un bip și un vot negativ, dacă nu. Aceste voturi au fost ponderate pentru a stabili un număr care să se lovească cu un eșantion sonor și să se descompună încet între timpuri. Odată ce numărul a atins un prag, alarma ar putea fi declanșată. Dacă s-ar detecta zgomot aleatoriu ca un eșantion de semnal sonor, numărul va reveni la zero.

Avem nevoie apoi de greutățile pentru votul ascendent și negativ împreună cu pragul. Acest lucru l-am făcut cu încercări și erori în mai multe eșantioane. Nu a fost nevoie să stabilesc frecvența actuală a soneriei, ci doar am căutat frecvența deosebită în spectrul fft.

Pasul 4: Trimiterea unui mesaj la radio

Declanșarea alarmei a fost făcută cu un script separat. Sarcina este să porniți radioul, dacă este necesar, să intrați în ceea ce joacă radioul și să repetați mesajul de alarmă până când radioul este oprit din nou. A trebuit să inversez protocolul uPnP folosit, deoarece am avut mari probleme în a obține informații sau exemple de încredere. Câteva referințe pe care le-am găsit utile au fost

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Aceasta are o imagine de ansamblu frumoasă a modului în care se potrivește totul
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Am folosit Wireshark care rulează pe un computer cu Windows pentru a deselecta secvența de mesaje atunci când redau un fișier eșantion de pe computerul meu la radio și, după un pic de lăutări, am primit o secvență de comandă care a funcționat. Aceasta este

  • Lansați un server web popup pentru a difuza mesajul de avertizare atunci când radio îl solicită
  • Setați nivelul volumului la LOUD (mesajul de avertizare ar trebui să atragă atenția tuturor)
  • Transmite uri radio mesajului de avertizare
  • Interogați radioul până când starea actuală este „OPRIT”
  • Du-te la radio pentru a „JUCA” uri
  • Repetați ultimii 2 pași până când starea actuală este „FĂRĂ MEDIU PREZENT”, ceea ce înseamnă că alarma a fost confirmată prin oprirea radioului
  • În cele din urmă închideți serverul web și ieșiți.

Acesta este scriptul raiseAlarm.py

Pasul 5: Fă-o singur

Făcându-l singur
Făcându-l singur

Modelul „detector” și „alarmă de creștere” nu este doar pentru congelatoare, ar putea fi util oriunde trebuie să fie transmisă o alarmă automată printr-un alt suport. Dacă acest lucru ar fi de interes, nu ezitați să faceți o încercare.

Configurarea PI Zero W, inclusiv microfonul

  • Asamblați hardware-ul ca la pasul 3
  • Descărcați scripturile de alarmă congelator din acest instructabil sau din depozitul git care include câteva piese bonus

$ git clone

De asemenea, trebuie să instalați software-ul pentru a utiliza LED-urile APA102 de la bord. Am inclus o copie a apa102.py în directorul de lucru git

Antrenează-ți detectorul

Am adăugat o opțiune de instruire la scriptul checkFreezer.py. Acest lucru îl rulează independent și imprimă o diagnosticare pe linia de comandă, dar mai întâi trebuie să înregistrați câteva mostre de alarmă într-un mediu liniștit ca fișiere WAV și să faceți același lucru într-unul zgomotos. Pentru a finaliza antrenamentul, trebuie să găsiți mai întâi frecvența FFT cu cel mai înalt nivel („frecvența de vârf”) și apoi un nivel prag pentru acea frecvență pentru a seta un declanșator. Pentru a face acest lucru, rulați scriptul checkFreezer în modul de antrenament, cu opțiunea „-t” și redați înregistrarea alarmei.

$ python checkFreezer.py -t

Acesta rulează scriptul în modul de antrenament. Tipărește „gata” când HAT-ul văzut a fost inițializat și LED-ul devine verde, apoi o linie pentru fiecare zgomot non-trivial pe care îl aude, de ex.

$ python checkFreezer.py -t

Gata de frecvență de vârf 55 declanșat nivelul 1 declanșat? Frecvență de vârf falsă 645 declanșat nivelul 484 declanșat? Frecvență de vârf falsă 645 nivel de declanșare 380 declanșat? Fals

Frecvența de vârf este, în acest caz, 645 și aceasta devine frecvența de declanșare. Acum, pentru a obține nivelul de declanșare, rulați din nou checkFreezer, setând declanșatorul

$ python checkFreezer.py -t --trigger = 645

Gata de frecvență de vârf 645 nivel de declanșare 1273 declanșat? Frecvență de vârf falsă 645 declanșat nivelul 653 declanșat? Frecvență de vârf falsă 645 declanșat nivelul 641 declanșat? Frecvența de vârf falsă 645 Nivelul de declanșare 616 declanșat? Fals

În cele din urmă, avem nevoie de un prag de declanșare care se declanșează atunci când este detectat un bip, dar ignoră zgomotul, de ex

$ python checkFreezer.py -t --trigger = 645 --threshold = 500

Gata frecvență de vârf 645 declanșat nivelul 581 declanșat? Frecvența de vârf adevărată 645 declanșează nivelul 798 declanșat? Frecvența de vârf adevărată 645 declanșează nivelul 521 declanșat? Adevărat

Testați acest lucru împotriva a câteva probe zgomotoase și ar trebui să puteți stabili o valoare de prag care să discrimineze între sunetul sonorului și zgomotul ambiental. De asemenea, ar trebui să vedeți LED-ul devine roșu atunci când se redă semnalul sonor timp de câteva secunde. Dacă este rapid / lent să vină, editați setările din script

Conectarea la radio

Pentru a configura scripturile pentru propria dvs. configurare, trebuie să găsiți adresa IP și numărul de port pe care dispozitivul dvs. le folosește pentru serviciile UPnP. Configurarea radio ar trebui să le ofere. Numărul de port implicit este 8080 și ar fi o surpriză dacă este diferit.

Am furnizat un mesaj de alarmă implicit, freezer.mp3. Simțiți-vă liber să înlocuiți cu propriul mesaj.

Editați scriptul cu adresele IP corespunzătoare și rulați scriptul.

$ python raiseAlarm.py

Dacă totul este bine, mesajul de alarmă puternic și iritant va ieși din radio până când radio-ul este oprit, anulând alarma.

În timp ce scriptul rulează, acesta rulează un mini server web pentru a transmite alarma mp3 la radio, posibil o problemă de securitate, dar este activ doar în timp ce se redă mesajul de alarmă.

În direct

Eliminați steagul de antrenament „-t” și rulați checkFreezer cu propriile valori, de ex

$ python checkFreezer.py --trigger = 645 --threshold = 200

Pentru a începe să reporniți, adăugați la /etc/rc.local, cd / home / pi / congelator-alarmă

(python checkFreezer.py --trigger = 645 --threshold = 200> / tmp / freezer 2> / tmp / freezererror &) & exit 0

LED-ul verde se va aprinde și sunteți gata de acțiune. Redați înregistrarea semnalului sonor de alarmă și, după câteva secunde, LED-ul va deveni roșu și mesajul de alarmă va fi redat la radio.

In cele din urma

Poziționați PI într-o locație aproape de congelator, departe de drum și de o sursă de alimentare. Porniți și LED-ul verde ar trebui să se aprindă. Testați declanșarea alarmei lăsând ușa deschisă. Lumina ar trebui să devină roșie și mesajul de alarmă să fie redat la radio.

Succes !! Ați făcut-o. Bucurați-vă de o băutură lungă cu gheață din congelator, dar nu uitați să închideți ușa congelatorului!

Recomandat: