Satura rādītājs:

Saldētavas trauksmes relejs: 5 soļi
Saldētavas trauksmes relejs: 5 soļi

Video: Saldētavas trauksmes relejs: 5 soļi

Video: Saldētavas trauksmes relejs: 5 soļi
Video: 3 в 1 ZigBee датчик температуры, влажности и освещения с LCD дисплеем 2024, Jūlijs
Anonim
Saldētavas trauksmes relejs
Saldētavas trauksmes relejs

Mūsu saldētava atrodas saimniecības telpā, kas ir izolēta no mūsu dzīves telpas. Dažreiz saldētavas durvis netiek pareizi aizvērtas un signalizācija atskan. Problēma ir tā, ka mēs to nevaram dzirdēt, ja atrodamies savā dzīves telpā. Kā mēs varam saņemt ziņojumu, ka saldētavas durvis ir atvērtas? Šī ir izplatīta problēma, un mūsu mājās ir ierīces, kas ar mums runā, bet kas notiek, ja kāda iemesla dēļ tās nedzirdam. Es sāku to kā mazliet jautru, bet tas var noderēt nopietnākā lietojumprogrammā.

Šai problēmai ir divas daļas, mums ir nepieciešama metode, kā noteikt trauksmes signālu, un metode, kā šo faktu nodot mūsu dzīves telpai. Es izvēlējos izmantot Raspberry Pi, lai klausītos, vai ieslēdzas saldētavas trauksme, un pēc tam nosūtīt skaņas trauksmes ziņojumu uz manu vietējo radio, kurā ir iespējots uPNP. Universālais Plug and Play (UpnP) ir standarts dažādu tīkla ierīču, tostarp multivides serveru un atskaņotāju, piedāvāto pakalpojumu atklāšanai un mijiedarbībai ar tiem, lai gan, manuprāt, standarta izstrādes laikā nebija paredzētas saldētavas. Brīdinājuma ziņojums tika padarīts skaļš un kairinošs un atkārtojas bezgalīgi, līdz radio tiek izslēgts.

Es izvēlējos noteikt trauksmi ar Raspberry Pi Zero W un Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero ir Raspberry Pi zemo izmaksu versija, un opcijai W ir iebūvēts WiFi, savukārt Seeed Pi HAT tiek pārdots mazāk nekā 10 USD, ir iebūvētas gaismas diodes un lietotāja poga. Pi HAT ir pagarinājuma kartes, kas tiek pievienotas tieši Raspberry Pi, padarot ļoti vienkāršu montāžas procedūru. Jebkura Pi versija būtu vairāk nekā spējīga darbam, un izvēlēto mikrofonu var aizstāt, lai gan šajā konstrukcijā es izmantoju iebūvētās gaismas diodes.

Ir viegli pārbaudīt, vai radio vai televizors jums noderētu. Tas, visticamāk, tiks aprakstīts kā "DLNA iespējots" vai līdzīgs. Lai sazinātos, tiek izmantots uPNP. Windows datorā atlasiet mp3 failu un “Apraidīt ierīcē”. Ja parādās jūsu ierīce un varat atskaņot failu, varat sākt darbu.

Es sadalīju programmatūru 2 python skriptos, checkFreezer.py, lai pārbaudītu, vai ir aktivizēts brīdinājums par saldētavu, un raiseAlarm.py, lai paaugstinātu trauksmi. Šos skriptus var izstrādāt un pārbaudīt atsevišķi, un tos var viegli pielāgot vai aizstāt ar dažādām mikrofonu trauksmes celšanas metodēm.

Piegādes

  • Programmatūra -https://github.com/wapringle/freezer-alarm
  • Aveņu PI Zero W
  • Redzēts ReSpeaker 2-Mics Pi HAT
  • uPNP iespējots radio

1. darbība. Detektora projektēšana

Kad saldētavas durvis ir atvērtas un temperatūra paaugstinās, saldētava dod skaņas signālu "pīkstiens pīkstiens". Tāpat kā lielākajai daļai elektronisko pīkstienu, šī ir viena frekvence. Ideja ir izlasīt audio ieeju, veikt ātro Furjē transformāciju (FFT), kas pārveido uz laiku balstītu signālu uz frekvenci balstītu signālu, citiem vārdiem sakot, tiek sadalīts signāls, lai parādītu dažādas signāla frekvences. Skatiet pamācāmo Raspberry Pi spektra analizatoru ar RGB LED sloksni. Mēs varam meklēt maksimumu zummeru frekvencē un aktivizēt trauksmi, kad skaņas signāls kādu laiku ir bijis aktīvs.

Šim detektoram ir 2 prasības

  • Tam vajadzētu noteikt skaņas signālu pat apkārtējā trokšņa klātbūtnē (novērst viltus negatīvu)
  • To nedrīkst izraisīt apkārtējais troksnis (novērš viltus pozitīvus)

Es nolēmu, ka Hoovera vadīšana saimniecības telpā būtu labs pārbaudījums. Tam nevajadzētu iedarbināt trauksmi, un trauksme jāaktivizē, kad saldētavas skaņas signāls nodziest un darbojas Hūvers.

2. darbība. Detektora konfigurēšana

Detektora konfigurēšana
Detektora konfigurēšana
Detektora konfigurēšana
Detektora konfigurēšana
Detektora konfigurēšana
Detektora konfigurēšana

Ar savu tālruni es paņēmu audio paraugus kā saldētavas skaņas signāla WAV failus atsevišķi, ar trokšņainu fonu un darbojoties Hūveram. Es pielāgoju kodu, lai veiktu FFT no ziņojuma Audio straumes lasīšana FFT (ja rodas šaubas, plagarizējiet), un izmantoju skriptu fourierTest.py, lai attēlotu neapstrādātus un Furjē pārveidotus skaņas signāla paraugus klusā, trokšņainā un ļoti trokšņainā fonā. Līmeņa pieaugums frekvencē 645 ir izteikts pirmajā diagrammā un joprojām ir ievērojams ar ļoti trokšņainu fonu.

3. darbība. Detektora izveide

Detektora salikšana

Ļoti vienkārši. Pi W ir aprīkots ar iebūvētu Wifi, un HAT ir diegi savienots ar Pi GPIO tapām. Lai konfigurētu programmatūru, ir jāveic darbības

  • Instalējiet raspbian distro vietnē Raspberry Pi. Par to ir daudz ceļvežu, kas to var izskaidrot daudz labāk nekā es.
  • Wifi iestatīšana (tāpat kā iepriekš)
  • Tam ir jāinstalē alsa pakotne

$ sudo apt-get install libasound-dev

$ pip instalēt pyalsaaudio

  • Pievienojiet cepuri aveņu PI
  • Izpildiet redzamās vietnes norādījumus, lai instalētu HAT draiverus.
  • Palaidiet redzamo diagnostiku, lai pārbaudītu, vai HAT darbojas un ir pareizi konfigurēts.

Detektoru programma nolasa datu bloku kā paraugu no mikrofona, veic FFT un izlemj, vai tā ir vai nav noteikusi signālu signālā. Es mēģināju padarīt bloku pēc iespējas ilgāku, samazinot audio izlases ātrumu līdz 16 kHz un izmantojot lielāko buferi, ko lasītājs pieņemtu. Man bija bažas, ka FFT aprēķins var izraisīt rāmju atmešanu, bet tas nenotika.

Iepriekš ierakstīti paraugi tālrunī ievērojami atviegloja detektora izveidi, jo es varēju pilnībā uzbūvēt uz stenda pirms testēšanas uz vietas saldētavā.

Detektora apmācība

Detektors tika apmācīts, skenējot katru paraugu, kad detektoram tika atskaņots skaņas signāla WAV ieraksts. Programma izvada pozīciju FFT spektrā ar augstāko jaudas līmeni (maksimālo frekvenci) kopā ar šīs maksimālās frekvences līmeni. Bija vienkārši atrast skaņas signāla frekvenci un tās izstaroto jaudas līmeni.

Ir divi veidi, kā noteikt, vai ir pīkstiens:-

  1. Vai skaņas signāla frekvence bija maksimālā frekvence paraugā?
  2. vai jaudas līmenis zummeru frekvencē pārsniedza slieksni?

Jebkura metode darbojās klusā paraugā, bet otrā bija labāka ar trokšņainu paraugu, tāpēc es to izmantoju.

Dažreiz paraugs aptvēra pīkstienu, dažreiz tas bija starp pīkstieniem, un pēc katriem 3 pīkstieniem bija ilga pauze pirms nākamajiem pīkstieniem. Lai droši noteiktu, ka ir radusies pīkstienu kopa, katram paraugam bija pozitīvs balsojums, ja tika konstatēts pīkstiens, un negatīvs balsojums, ja nē. Šīs balsis tika svērtas, lai noteiktu skaitli, kas saskanētu ar pīkstiena paraugu un starplaikiem lēnām samazinātu. Kad skaits sasniegs slieksni, var tikt aktivizēts trauksmes signāls. Ja nejaušs troksnis tiktu atklāts kā pīkstiens, skaitlis atgrieztos līdz nullei.

Pēc tam mums ir vajadzīgi svari par un pret balsojumu kopā ar slieksni. To es izdarīju ar izmēģinājumiem un kļūdām vairākos paraugos. Man nebija jānosaka faktiskā zummeru frekvence, es vienkārši meklēju izcilo frekvenci FFT spektrā.

4. solis: ziņojuma sūtīšana radio

Trauksmes celšana tika veikta ar atsevišķu skriptu. Tas ir darbs, ja nepieciešams, ieslēgt radio, ielauzties neatkarīgi no atskaņotā radio un atkārtot trauksmes ziņojumu, līdz radio atkal tiek izslēgts. Man nācās pārveidot izmantoto uPnP protokolu, jo man bija lielas problēmas iegūt ticamu informāciju vai piemērus. Pāris atsauces, kuras man šķita noderīgas, bija

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Šeit ir labs pārskats par to, kā tas viss sader kopā
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Es izmantoju Wireshark, kas darbojas Windows datorā, lai atskaņotu parauga failu no sava datora radio, lai noņemtu ziņojumu secību, un pēc nelielas izklaidēšanās es saņēmu komandu secību, kas darbojās. Tas ir

  • Palaidiet uznirstošo tīmekļa serveri, lai rādītu brīdinājuma ziņojumu, kad radio to pieprasa
  • Iestatiet skaļuma līmeni uz LOUD (brīdinājuma ziņojumam jāpievērš ikviena uzmanība)
  • Nododiet brīdinājuma ziņojuma uri radio
  • Aptaujājiet radio, līdz pašreizējais stāvoklis ir "STOPPED"
  • Iegūstiet radio, lai atskaņotu uri
  • Atkārtojiet pēdējās 2 darbības, līdz pašreizējais stāvoklis ir “NO MEDIA PRESENT”, kas nozīmē, ka trauksme ir apstiprināta, izslēdzot radio
  • Visbeidzot aizveriet tīmekļa serveri un izejiet.

Šis ir skripts raiseAlarm.py

5. darbība: dariet to pats

Dariet to pats
Dariet to pats

Modelis "detektors" un "paaugstināt trauksmi" nav paredzēts tikai saldētavām, tas varētu būt noderīgs jebkur, kur automatizētā trauksme jāpārraida, izmantojot citu datu nesēju. Ja tas būtu interesanti, droši dodieties.

PI Zero W iestatīšana, ieskaitot mikrofonu

  • Salieciet aparatūru, kā aprakstīts 3. darbībā
  • Lejupielādējiet saldētavas trauksmes skriptus no šīs pamācības vai no git krātuves, kurā ir dažas papildu dziesmas

$ git klons

Jums ir jāinstalē arī programmatūra, lai izmantotu iebūvētās APA102 gaismas diodes. Esmu ievietojis apa102.py kopiju git darba direktorijā

Detektora apmācība

Skriptam checkFreezer.py esmu pievienojis apmācības iespēju. Tas darbojas atsevišķi un komandrindā izdrukā diagnostiku, bet vispirms daži trauksmes paraugi klusā vidē jāreģistrē kā WAV faili un tas pats jādara trokšņainā. Lai pabeigtu apmācību, vispirms jāatrod FFT frekvence ar augstāko līmeni ("maksimālā frekvence") un pēc tam šīs frekvences sliekšņa līmenis, lai iestatītu aktivizētāju. Lai to izdarītu, palaidiet skriptu checkFreezer apmācības režīmā ar opciju “-t” un atskaņojiet trauksmes ierakstu.

$ python checkFreezer.py -t

Tādējādi skripts tiek palaists apmācības režīmā. Tas izdrukā "gatavs", kad redzamais Cepure ir inicializēts un gaismas diode kļūst zaļa, un pēc tam tiek parādīta līnija katram necilajam troksnim, ko tas dzird, piem.

$ python checkFreezer.py -t

Gatavs maksimālās frekvences 55 iedarbināšanas 1. līmenis ir aktivizēts? Vai ir aktivizēta viltus maksimālā frekvence 645 sprūda līmenis 484? Vai tika aktivizēta viltus maksimālā frekvence 645 sprūda līmenis 380? Nepatiess

Maksimālā frekvence šajā gadījumā ir 645, un tā kļūst par sprūda frekvenci. Tagad, lai iegūtu sprūda līmeni, atkārtojiet checkFreezer, iestatot sprūdu

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

Gatavs maksimālās frekvences 645 sprūda līmenis 1273 iedarbināts? Vai ir aktivizēts nepatiesas maksimālās frekvences 645 sprūda līmenis 653? Vai ir aktivizēts nepatiesas maksimālās frekvences 645 sprūda līmenis 641? Vai ir aktivizēts nepatiesas maksimālās frekvences 645 sprūda līmenis 616? Nepatiess

Visbeidzot, mums ir nepieciešams sprūda slieksnis, kas aktivizējas, kad tiek konstatēts pīkstiens, bet ignorē troksni, piem

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

Gatavs maksimālās frekvences 645 sprūda līmenis 581 iedarbināts? Vai ir aktivizēta patiesā maksimālā frekvence 645 sprūda līmenis 798? Vai ir aktivizēta patiesā maksimālā frekvence 645 sprūda līmenis 521? Taisnība

Pārbaudiet to ar pāris trokšņainiem paraugiem, un jums vajadzētu būt iespējai noteikt sliekšņa vērtību, kas diskriminē skaņas signālu un apkārtējo troksni. Jums vajadzētu arī redzēt, ka gaismas diode kļūst sarkana, ja dažas sekundes tiek atskaņots pīkstiens. Ja tas ir pārāk ātrs/lēns, rediģējiet skripta iestatījumus

Savienojuma izveide ar radio

Lai konfigurētu skriptus savai iestatīšanai, jums jāatrod IP adrese un porta numurs, ko ierīce izmanto UPnP pakalpojumiem. Radio iestatījumiem tie jānodrošina. Noklusējuma porta numurs ir 8080, un būtu pārsteigums, ja tas būtu atšķirīgs.

Esmu piegādājis noklusējuma trauksmes ziņojumu freezer.mp3. Jūtieties brīvi aizstāt ar savu ziņojumu.

Rediģējiet skriptu ar atbilstošajām IP adresēm un palaidiet skriptu.

$ python raiseAlarm.py

Ja viss ir kārtībā, skaļš un kairinošs trauksmes ziņojums skanēs no jūsu radio, līdz radio tiks izslēgts, atceļot modinātāju.

Skripta darbības laikā tajā darbojas mini tīmekļa serveris, lai radio nosūtītu modinātāju mp3, iespējams, drošības problēma, taču tas ir aktīvs tikai trauksmes ziņojuma atskaņošanas laikā.

Notiek tiešraide

Noņemiet apmācības karogu “-t” un palaidiet checkFreezer ar savām vērtībām, piem

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

Lai tas sāktos pēc atsāknēšanas, pievienojiet to /etc/rc.local, cd/home/pi/saldētava-signalizācija

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

Iedegas zaļā gaismas diode un esat gatavs darbam. Atskaņojiet trauksmes signāla ierakstu un pēc dažām sekundēm gaismas diode iedegsies sarkanā krāsā un trauksmes ziņojums tiks atskaņots jūsu radio.

Visbeidzot

Novietojiet PI vietā, kas atrodas netālu no saldētavas, ārpus ceļa un pie barošanas avota. Ieslēdziet un iedegas zaļā gaismas diode. Pārbaudiet trauksmes iedarbināšanu, atstājot durvis atvērtas. Gaismai vajadzētu iedegties sarkanā krāsā, un radio jāskan trauksmes ziņojumam.

Veiksmi !! Jūs to esat izdarījis. Palutiniet sevi ar garu dzērienu ar ledu no saldētavas, taču neaizmirstiet aizvērt saldētavas durvis!

Ieteicams: