Sadržaj:

Relej alarma zamrzivača: 5 koraka
Relej alarma zamrzivača: 5 koraka

Video: Relej alarma zamrzivača: 5 koraka

Video: Relej alarma zamrzivača: 5 koraka
Video: Морозильная камера не включается (замена пускового реле) 2024, Juli
Anonim
Relej alarma zamrzivača
Relej alarma zamrzivača

Naš zamrzivač nalazi se u pomoćnoj prostoriji koja je izolirana od našeg životnog prostora. Povremeno se vrata zamrzivača ne zatvaraju pravilno i alarm se uključuje. Problem je u tome što ga ne možemo čuti ako smo u svom životnom prostoru. Kako možemo dobiti poruku da su vrata zamrzivača otvorena? Ovo je uobičajen problem, u našim domovima imamo uređaje koji razgovaraju s nama, ali što se događa ako ih iz bilo kojeg razloga ne možemo čuti. Započeo sam ovo kao zabavu, ali može biti od koristi u ozbiljnijim aplikacijama.

Postoje dva dijela ovog problema, potrebna nam je metoda za otkrivanje da se alarm oglasio i metoda za prenošenje ove činjenice u naš životni prostor. Dizajn na koji sam se odlučio bio je da koristim Raspberry Pi da oslušnem alarm za zamrzavanje, a zatim da pošaljem zvučnu alarmnu poruku svom kućnom radiju koji je omogućen uPNP. Univerzalni Plug and Play (UpnP) standard je za otkrivanje i interakciju sa uslugama koje nude različiti uređaji na mreži, uključujući medijske servere i playere, iako ne mislim da su zamrzivači bili predviđeni prilikom razvoja standarda. Poruka upozorenja bila je glasna i iritantna i ponavljala se beskonačno dok se radio ne isključi.

Odlučio sam otkriti alarm pomoću Raspberry Pi Zero W i Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero je jeftina verzija Raspberry Pi-a i W opcija ima ugrađen WiFi, dok Seeed Pi HAT prodaje manje od 10 USD, ima ugrađene LED diode i korisničko dugme. Pi HAT su kartice za proširenje koje se priključuju direktno na Raspberry Pi čineći vrlo jednostavan postupak sastavljanja. Bilo koja Pi verzija bila bi više nego sposobna za posao, a odabrani mikrofon se može zamijeniti, iako sam u ovoj verziji koristio ugrađene LED diode.

Lako je provjeriti radi li vam radio ili TV. Vjerojatnije će biti opisano kao "omogućeno DLNA" ili slično. Ovo koristi uPNP za komunikaciju. Na računaru sa operativnim sistemom Windows izaberite mp3 datoteku i „Cast to Device“. Ako se vaš uređaj pojavi i možete reproducirati datoteku, onda ste spremni.

Podijelio sam softver na 2 python skripte, checkFreezer.py da provjerim je li aktivirano upozorenje iz zamrzivača i raiseAlarm.py za podizanje alarma. Ove skripte se mogu razvijati i testirati zasebno i lako se mogu prilagoditi ili zamijeniti različitim metodama alarmiranja mikrofona.

Supplies

  • Softver -https://github.com/wapringle/freezer-alarm
  • Malina PI Zero W
  • Vidio ReSpeaker 2-Mics Pi HAT
  • radio sa omogućenim uPNP -om

Korak 1: Dizajniranje detektora

Kad vrata zamrzivača ostanu otvorena i temperatura poraste, zamrzivač daje zvučni alarm "bip bip bip bip". Kao i kod većine elektroničkih zvučnih signala, ovo je jedna frekvencija. Ideja je uzorkovati audio ulaz, izvesti brzu Furijeovu transformaciju (FFT) koja pretvara vremenski zasnovan signal u frekvencijski zasnovan, drugim riječima, razbija signal za prikaz različitih frekvencija u signalu. Pogledajte instruktorski analizator spektra Raspberry Pi sa RGB LED trakom Možemo tražiti vrhunac na frekvenciji zujalice i aktivirati alarm kada je zujalica već neko vrijeme aktivna.

Ovaj detektor ima 2 zahtjeva

  • Trebao bi otkriti zujalicu, čak i u prisutnosti buke iz okoline (eliminirati lažno negativno)
  • Ne bi ga trebalo izazivati buka iz okoline (eliminirati lažno pozitivno)

Odlučio sam da bi pokretanje Hoovera u pomoćnom prostoru bio dobar test. Ne bi trebao aktivirati alarm, a alarm bi se trebao aktivirati kada se zvučni signal zamrzivača isključi i Hoover radi.

Korak 2: Konfiguriranje detektora

Konfiguriranje detektora
Konfiguriranje detektora
Konfiguriranje detektora
Konfiguriranje detektora
Konfiguriranje detektora
Konfiguriranje detektora

Telefonom sam uzeo audio uzorke kao WAV datoteke samo zujalice zamrzivača, sa bučnom pozadinom i sa uključenim Hooverom. Prilagodio sam kôd za izvođenje FFT -a iz posta Čitanje audio toka za FFT (Kada ste u nedoumici, plagarise) i upotrijebio skriptu fourierTest.py za iscrtavanje sirovih i Fourierovih transformacija uzoraka zujalice u tihoj, bučnoj i vrlo bučnoj pozadini. Skok nivoa na frekvenciji 645 izražen je u prvom grafikonu i još uvijek je značajan sa vrlo bučnom pozadinom.

Korak 3: Konstrukcija detektora

Sklapanje detektora

Veoma jednostavno. Pi W dolazi s ugrađenim Wi-Fi-jem, a HAT je uključen u GPIO pinove na Pi-u. Konfiguracija softvera zahtijeva korake

  • Instalirajte raspbian distro na Raspberry Pi. Postoji mnogo vodiča o ovome koji to mogu objasniti mnogo bolje nego ja.
  • Postavite Wifi (isto tako)
  • Potrebno je instalirati alsa paket

$ sudo apt-get install libasound-dev

$ pip install pyalsaaudio

  • Spojite ŠEŠIR na PI maline
  • Slijedite upute na web stranici za instaliranje upravljačkih programa za HAT.
  • Pokrenite dijagnostičku dijagnostiku da provjerite radi li HAT ispravno i pravilno konfigurirano.

Program detektora čita blok podataka kao uzorak iz mikrofona, radi FFT i odlučuje je li otkrio zujalicu u uzorku. Pokušao sam blok učiniti što duljim smanjenjem frekvencije uzorkovanja zvuka na 16 kHz i korištenjem najvećeg međuspremnika koji bi čitatelj prihvatio. Bio sam zabrinut da bi proračun FFT -a mogao uzrokovati ispuštanje okvira, ali to se nije dogodilo.

Nakon što sam unaprijed snimio uzorke na telefonu, znatno je olakšana izrada detektora jer sam mogao napraviti kompletnu izgradnju na klupi prije testiranja na licu mjesta u zamrzivaču.

Obuka detektora

Detektor je obučen skeniranjem svakog uzorka kada se na detektoru reproducirao WAV snimak zujalice. Program emituje poziciju u FFT spektru sa najvećim nivoom snage (vršna frekvencija), zajedno sa nivoom te vršne frekvencije. Bilo je jednostavno pronaći frekvenciju zujalice i razinu snage koju emitira.

Postoje dva načina da otkrijete je li se oglasio zvučni signal:-

  1. Je li frekvencija zujalice bila vršna frekvencija u uzorku?
  2. ili je nivo snage na frekvenciji zujalice prešao prag?

Bilo koja od metoda radila je u tihom uzorku, ali druga je bila bolja sa bučnim uzorkom, pa sam to i iskoristio.

Ponekad je uzorak obuhvatio zvučni signal, ponekad je to bio između zvučnih signala, a nakon svaka 3 zvučna signala uslijedila je duga pauza prije sljedećeg zvučnog signala. Kako bi se pouzdano otkrilo da se dogodio skup zvučnih signala, svaki uzorak je imao pozitivan glas ako je zvučni signal otkriven, a negativan ako nije. Ovi glasovi su ponderisani kako bi se postavilo prebrojavanje koje bi se pojačalo uz uzorak zvučnog signala i polako propadalo između vremena. Kada je brojanje doseglo prag, alarm se mogao aktivirati. Ako bi se slučajni šum otkrio kao uzorak zvučnog signala, odbrojavanje bi se vratilo na nulu.

Zatim su nam potrebni utezi za pozitivan glas i negativan glas zajedno s pragom. To sam učinio pokušajem i greškom u više uzoraka. Nisam trebao utvrđivati stvarnu frekvenciju zujalice, samo sam tražio istaknutu frekvenciju u fft spektru.

Korak 4: Slanje poruke radiju

Podizanje alarma obavljeno je zasebnom skriptom. Posao je uključiti radio ako je potrebno, provaliti u ono što radio svira i ponavljati alarmnu poruku dok se radio ponovo ne isključi. Morao sam obrnuto inženjerirati uPnP protokol koji sam koristio jer sam imao velikih problema s dobivanjem pouzdanih informacija ili primjera. Par referenci koje sam smatrao korisnim bile su

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Ovo ima lijep pregled kako se sve to uklapa
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Koristio sam Wireshark pokrenut na Windows PC -u za otključavanje sekvence poruka prilikom reprodukcije uzorka datoteke sa mog računara na radiju, a nakon malo petljanja dobio sam komandni niz koji je uspio. Ovo je

  • Pokrenite skočni web poslužitelj za posluživanje poruke upozorenja kada radio to zatraži
  • Postavite jačinu zvuka na GLASNO (Poruka upozorenja trebala bi privući svačiju pažnju)
  • Prenesite uri poruke upozorenja radiju
  • Anketirajte radio sve dok trenutno stanje nije "STOPPED"
  • Uključite radio na "PLAY" uri
  • Ponavljajte posljednja 2 koraka dok trenutno stanje nije "NEMA MEDIJA", što znači da je alarm potvrđen isključivanjem radija
  • Konačno zatvorite web poslužitelj i izađite.

Ovo je skripta raiseAlarm.py

Korak 5: Učinite to sami

Radite to sami
Radite to sami

Model "detektora" i "podizanja alarma" nije samo za zamrzivače, već bi mogao biti koristan bilo gdje gdje se automatizirani alarm mora prenijeti putem drugog medija. Ako bi vas ovo zanimalo, slobodno krenite.

Postavljanje PI Zero W, uključujući mikrofon

  • Sastavite hardver kao u koraku 3
  • Preuzmite skripte alarma za zamrzavanje sa ovog Instructable-a ili iz git spremišta koje uključuje nekoliko bonus pjesama

$ git clone

Također morate instalirati softver da biste koristili ugrađene APA102 LED diode. Uključio sam kopiju apa102.py u radni direktorij git

Obučite svoj detektor

Dodao sam opciju obuke skripti checkFreezer.py. Ovo ga pokreće samostalno i ispisuje dijagnostiku u naredbenu liniju, ali prvo morate snimiti neke uzorke alarma u tihom okruženju kao WAV datoteke, a isto učiniti u bučnom. Da biste dovršili obuku, prvo morate pronaći frekvenciju FFT -a s najvišim nivoom ("vršna frekvencija"), a zatim prag za tu frekvenciju da biste postavili okidač. Da biste to učinili, pokrenite skriptu checkFreezer u načinu treninga, s opcijom '-t' i reproducirajte snimku alarma.

$ python checkFreezer.py -t

Ovo pokreće skriptu u načinu rada za obuku. Štampa se "spremno" kada se inicijalni ugledani HAT inicira i LED zasvijetli, zatim linija za svaku ne-trivijalnu buku koju čuje, npr.

$ python checkFreezer.py -t

Spremna vršna frekvencija 55, okidač razine 1 aktiviran? Pokrenuta lažna vršna frekvencija 645, nivo okidača 484? Pokrenuta lažna vršna frekvencija 645, nivo okidača 380? Netačno

Vršna frekvencija je, u ovom slučaju 645 i to postaje frekvencija okidača. Sada da biste dobili nivo okidača, ponovo pokrenite checkFreezer i postavite okidač

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

Spremna aktivirana vršna frekvencija 645, nivo okidača 1273? Pokrenuta lažna vršna frekvencija 645 nivo okidača 653? Pokrenuta lažna vršna frekvencija 645, nivo okidača 641? Pokrenuta lažna vršna frekvencija 645 nivo okidača 616? Netačno

Konačno, potreban nam je prag okidača koji se aktivira kada se otkrije zvučni signal, ali zanemaruje šum, npr

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

Spremna aktivirana vršna frekvencija 645, nivo okidača 581? Istinska vršna frekvencija 645 aktivira nivo okidača 798? Istinska vršna frekvencija 645 aktivira nivo okidača 521? Istinito

Testirajte ovo na nekoliko bučnih uzoraka i trebali biste moći utvrditi graničnu vrijednost koja razlikuje zvuk blefera i okolnu buku. Takođe biste trebali vidjeti LED diodu koja postaje crvena kada se na nekoliko sekundi reproducira promjena zvučnog signala. Ako želite brzo/sporo doći, uredite postavke u skripti

Povezivanje na radio

Da biste konfigurirali skripte za vlastito postavljanje, morate pronaći IP adresu i broj porta koji vaš uređaj koristi za UPnP usluge. Radio postavke bi trebale to omogućiti. Zadani broj porta je 8080 i bilo bi iznenađenje ako se razlikuje.

Poslao sam zadanu alarmnu poruku, freezer.mp3. Slobodno zamijenite vlastitom porukom.

Uredite skriptu s odgovarajućim IP adresama i pokrenite skriptu.

$ python raiseAlarm.py

Ako je sve u redu, glasna i iritantna poruka alarma izvirivat će iz vašeg radija sve dok se radio ne isključi, poništavajući alarm.

Dok je skripta pokrenuta, ona pokreće mini web server za posluživanje alarma mp3 radiju, moguće sigurnosni problem, ali je aktivan samo dok se reprodukuje poruka alarma.

Going Live

Uklonite zastavicu '-t' za obuku i pokrenite checkFreezer sa vlastitim vrijednostima, npr

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

Da biste ga pokrenuli pri ponovnom pokretanju, dodajte u /etc/rc.local, cd/home/pi/zamrzivač-alarm

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

Zelena LED lampica će zasvijetliti i spremni ste za akciju. Reproducirajte snimku zvučnog signala alarma i nakon nekoliko sekundi LED dioda će postati crvena i poruka alarma će se reproducirati na vašem radiju.

Konačno

Postavite PI na lokaciju blizu zamrzivača, s puta i uz izvor napajanja. Uključite napajanje i trebala bi se upaliti zelena LED dioda. Testirajte aktiviranje alarma ostavljajući vrata otvorena. Lampica bi trebala postati crvena, a alarmna poruka se reproducira na radiju.

Uspjeh !! Uradili ste to. Priuštite si dugo piće s ledom iz zamrzivača, ali ne zaboravite zatvoriti vrata zamrzivača!

Preporučuje se: