Kazalo:

Alarmni rele zamrzovalnika: 5 korakov
Alarmni rele zamrzovalnika: 5 korakov

Video: Alarmni rele zamrzovalnika: 5 korakov

Video: Alarmni rele zamrzovalnika: 5 korakov
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Julij
Anonim
Alarmni rele zamrzovalnika
Alarmni rele zamrzovalnika

Naš zamrzovalnik je v pomožnem prostoru, ki je ločen od našega bivalnega prostora. Včasih se vrata zamrzovalnika ne zaprejo pravilno in alarm se oglasi. Težava je v tem, da tega ne slišimo, če smo v svojem bivalnem prostoru. Kako dobimo sporočilo, da so vrata zamrzovalnika odprta? To je pogosta težava, doma imamo naprave, ki govorijo z nami, a kaj se zgodi, če jih iz kakršnega koli razloga ne slišimo. To sem začel nekoliko zabavno, vendar bo morda koristen v resnejši aplikaciji.

Ta problem ima dva dela: potrebujemo metodo za odkrivanje, da se je alarm sprožil, in metodo za prenos tega dejstva v naš življenjski prostor. Zasnova, na katero sem se odločil, je bila uporaba Raspberry Pi -ja za poslušanje alarma v zamrzovalniku in nato za pošiljanje zvočnega alarmnega sporočila na moj domači radio, ki je omogočen uPNP. Universal Plug and Play (UpnP) je standard za odkrivanje in interakcijo s storitvami, ki jih ponujajo različne naprave v omrežju, vključno s medijskimi strežniki in predvajalniki, čeprav mislim, da zamrzovalniki niso bili predvideni pri razvoju standarda. Opozorilno sporočilo je bilo glasno in dražeče ter se ponavlja neskončno, dokler radio ni izklopljen.

Odločil sem se, da alarm zaznam z Raspberry Pi Zero W in Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero je poceni različica Raspberry Pi in možnost W ima vgrajen WiFi, medtem ko je Seeed Pi HAT na voljo za manj kot 10 USD, ima vgrajene LED diode in uporabniški gumb. Pi HAT so razširitvene kartice, ki se priključijo neposredno na Raspberry Pi, zaradi česar je postopek sestavljanja zelo preprost. Vsaka različica Pi bi bila več kot sposobna za delo, izbrani mikrofon pa lahko zamenjamo, čeprav sem v tej zgradbi uporabil vgrajene LED diode.

Preprosto je preveriti, ali bi radio ali televizija delovala za vas. Bolj verjetno bo opisan kot "omogočeno DLNA" ali podobno. Ta za komunikacijo uporablja uPNP. V računalniku z operacijskim sistemom Windows izberite datoteko mp3 in »Predvajaj v napravo«. Če se prikaže vaša naprava in lahko predvajate datoteko, potem ste pripravljeni.

Programsko opremo sem razdelil na 2 skripta python, checkFreezer.py, da preverim, ali je bilo sproženo opozorilo o zamrzovanju, in dvigniti alarm.py, da dvignem alarm. Te skripte je mogoče razviti in preizkusiti ločeno in jih je mogoče enostavno prilagoditi ali nadomestiti z različnimi načini alarmiranja mikrofonov.

Zaloge

  • Programska oprema -https://github.com/wapringle/freezer-alarm
  • Malina PI Zero W
  • Glej ReSpeaker 2-Mics Pi HAT
  • radio z omogočeno uPNP

1. korak: Oblikovanje detektorja

Ko vrata zamrzovalnika ostanejo odprta in temperatura naraste, zamrzovalnik sproži zvočni alarm "bip bip bip bip". Kot pri večini elektronskih piskov je to ena sama frekvenca. Zamisel je, da vzorčimo avdio vhod, izvedemo hitro Fourierjevo transformacijo (FFT), ki pretvori časovno zasnovan signal v frekvenčnega, z drugimi besedami razbije signal za prikaz različnih frekvenc v signalu. Oglejte si Instructable Analizator spektra Raspberry Pi z RGB LED trakom Lahko poiščemo vrh pri frekvenci brenčalnika in sprožimo alarm, ko je brenčalec že nekaj časa aktiven.

Ta detektor ima dve zahtevi

  • Zaznati mora brenčalo tudi v prisotnosti hrupa iz okolice (odpraviti lažno negativno)
  • Ne sme ga sprožiti hrup iz okolice (odpraviti lažno pozitiven rezultat)

Odločil sem se, da bo vodenje Hooverja v pomožni sobi dober preizkus. Ne bi smel sprožiti alarma, alarm pa bi se moral sprožiti, ko se ugasne zvonec zamrzovalnika in teče Hoover.

2. korak: Konfiguriranje detektorja

Konfiguriranje detektorja
Konfiguriranje detektorja
Konfiguriranje detektorja
Konfiguriranje detektorja
Konfiguriranje detektorja
Konfiguriranje detektorja

S telefonom sem vzel zvočne vzorce kot datoteke WAV samo z zvočnikom zamrzovalnika, s hrupnim ozadjem in pri delujočem Hooverju. Kodo sem prilagodil za izvajanje FFT iz objave Reading Audio Stream for FFT (Kadar ste v dvomih, plagarise) in uporabil skript fourierTest.py za risanje surovih in Fourierjevih preoblikovanih vzorcev brenčalnika v tihem, hrupnem in zelo hrupnem ozadju. Zvišanje ravni pri frekvenci 645 je izrazito v prvi ploskvi in je še vedno pomembno z zelo hrupnim ozadjem.

3. korak: Izdelava detektorja

Sestavljanje detektorja

Zelo preprosto. Pi W ima vgrajen Wi-Fi, HAT pa je priključen na vtičnice GPIO na Pi. Konfiguracija programske opreme zahteva korake

  • Namestite raspbian distro na Raspberry Pi. O tem je veliko vodičev, ki to lahko razložijo veliko bolje kot jaz.
  • Nastavitev Wi -Fi (enako zgoraj)
  • Potrebuje nameščen paket alsa

$ sudo apt-get install libasound-dev

$ pip namestite pyalsaaudio

  • KLUB povežite z malinovim PI
  • Sledite navodilom na tem spletnem mestu za namestitev gonilnikov za HAT.
  • Zaženite vidno diagnostiko, da preverite, ali HAT deluje in je pravilno konfiguriran.

Program detektorja prebere blok podatkov kot vzorec iz mikrofona, naredi FFT in se odloči, ali je v vzorcu odkril brenčalo ali ne. Poskušal sem narediti blok čim dlje, tako da sem zmanjšal frekvenco vzorčenja zvoka na 16 kHz in uporabil največji vmesni pomnilnik, ki bi ga bralec sprejel. Skrbelo me je, da bi izračun FFT lahko povzročil izpad okvirjev, vendar se to ni zgodilo.

S predhodno posnetimi vzorci na telefonu je bilo izdelavo detektorja veliko lažje, saj sem lahko celotno izdelavo naredil na klopi, preden sem jo preizkusil v zamrzovalniku.

Usposabljanje detektorja

Detektor je bil usposobljen s skeniranjem vsakega vzorca, ko je bil na detektor predvajan snemanje brenčalnika WAV. Program prikaže položaj v spektru FFT z najvišjo stopnjo moči (najvišjo frekvenco), skupaj z ravnjo te najvišje frekvence. Preprosto je bilo najti frekvenco brenčal in moč, ki jo oddaja.

Če se je oglasil pisk, lahko zaznate na dva načina:-

  1. Je bila frekvenca brenčanja najvišja frekvenca v vzorcu?
  2. ali je bila raven moči pri frekvenci brenčal čez prag?

Obe metodi sta delovali pri mirnem vzorcu, druga pa je bila boljša pri hrupnem vzorcu, zato sem to uporabil.

Včasih je vzorec pokrival pisk, včasih med piski, po vsakih treh piskih pa je pred naslednjimi piski prišlo do dolge pavze. Za zanesljivo zaznavanje, da je prišlo do niza piskov, je imel vsak vzorec pozitiven glas, če je bil zaznan pisk, in pozitiven, če ne. Ti glasovi so bili tehtani, da so določili štetje, ki bi se pojavilo z vzorcem piska in se vmes počasi razpadalo. Ko je štetje doseglo prag, se lahko sproži alarm. Če bi kot vzorec piska odkrili naključni hrup, bi se štetje vrnilo na nič.

Nato potrebujemo uteži za glasove za in proti, skupaj s pragom. To sem naredil s poskusi in napakami pri več vzorcih. Ni mi bilo treba določiti dejanske frekvence brenčanja, samo iskal sem izstopajočo frekvenco v spektru fft.

4. korak: Pošiljanje sporočila radiu

Dvig alarma je bil narejen z ločenim scenarijem. Vaša naloga je, da po potrebi vklopite radio, vlomite v vse, kar radio predvaja, in ponavljajte alarmno sporočilo, dokler se radio spet ne izklopi. Moral sem spremeniti protokol uPnP, ki sem ga uporabil, saj sem imel velike težave pri pridobivanju zanesljivih informacij ali primerov. Nekaj referenc, ki so se mi zdele uporabne, je bilo

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

Uporabil sem Wireshark, ki se je uporabljal na računalniku z operacijskim sistemom Windows, da sem pri predvajanju vzorčne datoteke iz računalnika na radiu odstranil zaporedje sporočil, in po malo poigravanja sem dobil ukazno zaporedje, ki je delovalo. To je

  • Zaženite pojavni spletni strežnik, ki bo služil opozorilnemu sporočilu, ko radio to zahteva
  • Glasnost nastavite na LOUD (Opozorilo mora pritegniti pozornost vseh)
  • Pošljite uri opozorilnega sporočila radiu
  • Anketirajte radio, dokler trenutno stanje ni »STOPPED«
  • Prenesite radio, da "predvaja" uri
  • Ponovite zadnja 2 koraka, dokler trenutno stanje ni "NI MEDIJSKIH PREDSTAVITEV", kar pomeni, da je bil alarm potrjen z izklopom radia
  • Končno zaprite spletni strežnik in zapustite.

To je skript raiseAlarm.py

5. korak: Naredite sami

Naredi sam
Naredi sam

Model "detektor" in "dvig alarma" ni samo za zamrzovalnike, lahko bi bil uporaben kjer koli, kjer je treba avtomatiziran alarm posredovati prek drugega medija. Če bi vas to zanimalo, lahko poskusite.

Nastavitev PI Zero W, vključno z mikrofonom

  • Sestavite strojno opremo kot v koraku 3
  • Prenesite skripte za alarm zamrzovalnika iz tega Instructable ali iz skladišča git, ki vključuje nekaj bonus skladb

klon $ git

Za uporabo vgrajenih LED-diod APA102 morate namestiti tudi programsko opremo. Kopijo apa102.py sem vključil v delovni imenik git

Usposabljanje detektorja

Skriptu checkFreezer.py sem dodal možnost usposabljanja. Ta ga zažene samostojno in natisne diagnostiko v ukazno vrstico, vendar morate najprej posneti nekaj vzorcev alarma v mirnem okolju kot datoteke WAV in isto narediti v hrupnem. Za dokončanje usposabljanja morate najprej najti frekvenco FFT z najvišjo stopnjo ("najvišja frekvenca") in nato mejno vrednost za to frekvenco, da nastavite sprožilec. Če želite to narediti, zaženite skript checkFreezer v načinu usposabljanja z možnostjo '-t' in predvajajte posnetek alarma.

$ python checkFreezer.py -t

To zažene skript v načinu usposabljanja. Natisne "pripravljeno", ko je inicializiran vidni HAT in LED sveti zeleno, nato pa vrstica za vsak ne-trivialni hrup, ki ga sliši, npr.

$ python checkFreezer.py -t

Ali je sprožena najvišja frekvenca 55, sprožilec stopnje 1? Sprožena napačna najvišja frekvenca 645 stopnja sprožilca 484? Sprožena napačna najvišja frekvenca 645 sprožilna stopnja 380? Napačno

Največja frekvenca je v tem primeru 645 in to postane sprožilna frekvenca. Zdaj, da dobite raven sprožilca, znova zaženite checkFreezer in nastavite sprožilec

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

Ali je sprožena najvišja frekvenca 645, sprožilna stopnja 1273? Sprožena napačna najvišja frekvenca 645 sprožilna stopnja 653? Sprožena napačna najvišja frekvenca 645 stopnja sprožilca 641? Sprožena napačna najvišja frekvenca 645 sprožilna stopnja 616? Napačno

Nazadnje potrebujemo sprožilni prag, ki se sproži, ko se zazna pisk, vendar prezre hrup, npr

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

Ali je sprožena najvišja frekvenca 645, sprožilna stopnja 581? Ali je sprožena sprožilna stopnja 645 prave najvišje frekvence 645? Dejanska najvišja frekvenca 645 se sproži sprožilna stopnja 521? Prav

Preizkusite to na nekaj hrupnih vzorcih in morali boste ugotoviti mejno vrednost, ki razlikuje med zvokom mešalnika in hrupom v okolici. Ko se nekaj sekund predvaja prerazporeditev piska, bi morala LED dioda tudi postati rdeča. Če želite priti hitro/počasi, uredite nastavitve v skriptu

Priključitev na radio

Če želite konfigurirati skripte za lastno nastavitev, morate poiskati naslov IP in številko vrat, ki jih naprava uporablja za storitve UPnP. Radijska nastavitev mora to zagotoviti. Privzeta številka vrat je 8080 in bi bilo presenečenje, če bi bila drugačna.

Posredoval sem privzeto alarmno sporočilo, freezer.mp3. Zamenjajte ga s svojim sporočilom.

Uredite skript z ustreznimi naslovi IP in zaženite skript.

$ python raiseAlarm.py

Če je vse v redu, bo glasno in dražilno alarmno sporočilo pihalo iz vašega radia, dokler se radio ne izklopi, prekliče alarm.

Medtem ko se skript izvaja, zažene mini spletni strežnik, ki radiju pošlje alarmni mp3, morda varnostno težavo, vendar je aktiven le med predvajanjem alarmnega sporočila.

V živo

Odstranite zastavico usposabljanja '-t' in zaženite checkFreezer z lastnimi vrednostmi, npr

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

Če se želite znova zagnati, dodajte v /etc/rc.local, cd/home/pi/zamrzovalnik-alarm

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

Prižgala se bo zelena LED lučka in pripravljeni ste na akcijo. Predvajajte posnetek vašega alarmnega piska in po nekaj sekundah bo LED svetila rdeče in alarmno sporočilo se bo predvajalo na vašem radiu.

Končno

PI postavite na mesto blizu zamrzovalnika, stran od napajalnika. Vklopite napajanje in prižgati se mora zelena LED. Preizkusite sprožitev alarma tako, da pustite vrata odprta. Lučka naj postane rdeča in na radiu se predvaja alarmno sporočilo.

Uspeh !! Storili ste. Privoščite si dolgo pijačo z ledom iz zamrzovalnika, vendar ne pozabite zapreti vrat zamrzovalnika!

Priporočena: