Talaan ng mga Nilalaman:

Pag-relay ng Freezer Alarm: 5 Hakbang
Pag-relay ng Freezer Alarm: 5 Hakbang

Video: Pag-relay ng Freezer Alarm: 5 Hakbang

Video: Pag-relay ng Freezer Alarm: 5 Hakbang
Video: Fridge Wiring diagram refrigerator wiring 2024, Hulyo
Anonim
Pag-relay ng Freezer Alarm
Pag-relay ng Freezer Alarm

Ang aming freezer ay nasa isang utility room na kung saan ay nakahiwalay mula sa aming espasyo sa sala. Paminsan-minsan ang pinto ng freezer ay hindi nakasara nang maayos at ang alarma ay pumapatay. Ang problema ay hindi natin ito maririnig kung tayo ay nasa aming puwang sa pamumuhay. Paano tayo makakakuha ng isang mensahe na bukas ang pinto ng freezer? Ito ay isang pangkaraniwang isyu, mayroon kaming mga aparato sa aming mga tahanan na nakikipag-usap sa amin, ngunit kung ano ang mangyayari kung hindi namin marinig ang mga ito para sa anumang kadahilanan. Sinimulan ko ito bilang kaunting kasiyahan, ngunit maaaring ito ay magamit sa isang mas seryosong aplikasyon.

Mayroong 2 bahagi sa problemang ito, kailangan namin ng isang paraan upang matukoy na ang alarma ay nawala at isang pamamaraan upang maipasa ang katotohanang ito sa aming puwang sa pamumuhay. Ang disenyo na naayos ko ay ang paggamit ng isang Raspberry Pi upang makinig para sa pag-alarma ng freezer alarm, at pagkatapos ay upang magpadala ng isang maririnig na mensahe ng alarma sa aking domestic radio na pinagana ang uPNP. Ang Universal Plug and Play (UpnP) ay isang pamantayan para sa pagtuklas at pakikipag-ugnay sa mga serbisyong inaalok ng iba't ibang mga aparato sa isang network, kabilang ang mga server ng media at manlalaro, kahit na sa palagay ko ay hindi naiisip ang mga freezer nang nabuo ang pamantayan. Ang babalang mensahe ay ginawa nang malakas at nakakairita at nauulit nang walang katapusan hanggang sa pinatay ang radyo.

Pinili kong tuklasin ang alarma gamit ang isang Raspberry Pi Zero W at Seeed ReSpeaker 2-Mics Pi HAT Ang Raspberry PI Zero ay isang mababang bersyon ng gastos ng Raspberry Pi at ang opsyon na W ay builtin sa WiFi, habang ang Seeed Pi HAT ay nagbebenta nang mas mababa sa Ang $ 10, ay may built-in na LEDs at isang Button ng User. Ang Pi HAT ay mga extension card na direktang nag-plug sa Raspberry Pi na gumagawa ng isang napaka-simpleng pamamaraan ng pagpupulong. Anumang bersyon ng Pi ay magiging higit pa sa kakayahan para sa trabaho, at ang microphone na napili ay maaaring mapalitan, kahit na ginamit ko ang mga built-in na LED sa build na ito.

Madaling suriin kung gagana ang isang radyo o TV para sa iyo. Mas malamang na mailalarawan ito bilang "pinagana ang DLNA" o katulad. Gumagamit ito ng uPNP upang makipag-usap. Sa isang Windows PC, pumili ng isang mp3 file at "Cast to Device". Kung ang iyong aparato ay lilitaw at maaari mong i-play ang file, pagkatapos ay mahusay kang pumunta.

Pinaghiwalay ko ang software sa 2 mga script ng python, checkFreezer.py upang suriin kung ang isang alerto sa freezer ay na-trigger at nakataasAlarm.py upang itaas ang alarma. Ang mga script na ito ay maaaring binuo at nasubukan nang magkahiwalay at madaling maiakma o napapalitan para sa iba't ibang mga pamamaraan ng pagpapataas ng alarma sa mga mikropono.

Mga gamit

  • Software -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • Nakita ang ReSpeaker 2-Mics Pi HAT
  • uPNP pinagana ang radyo

Hakbang 1: Pagdidisenyo ng Detector

Kapag ang pintuan ng freezer ay naiwan na bukas at ang temperatura ay tumataas, ang freezer ay nagbibigay ng isang naririnig na "beep beep beep" na alarma. Karaniwan sa karamihan ng mga elektronikong beep, ito ay isang solong dalas. Ang ideya ay upang mai-sample ang audio input, magsagawa ng isang Fast Fourier Transform (FFT) na nagbabago ng isang signal na batay sa oras sa isang batay sa dalas, sa madaling salita ay sinisira ang isang senyas upang maipakita ang iba't ibang mga frequency sa signal. Tingnan ang Instructable Raspberry Pi Spectrum Analyzer Sa RGB LED Strip Maaari tayong maghanap ng isang rurok sa dalas ng buzzer at ma-trigger ang alarma kapag ang buzzer ay naging aktibo nang ilang oras.

Ang detektor na ito ay may 2 mga kinakailangan

  • Dapat itong tuklasin ang buzzer, kahit na sa pagkakaroon ng ingay sa paligid (alisin ang maling negatibo)
  • Hindi ito dapat ma-trigger ng ingay ng paligid (alisin ang maling positibo)

Napagpasyahan kong ang pagpapatakbo ng isang Hoover sa utility room ay magiging isang magandang pagsubok. Hindi nito dapat ma-trigger ang alarma, at dapat ma-trigger ang alarma kapag ang freezer buzzer ay papatay at ang Hoover ay tumatakbo.

Hakbang 2: Pag-configure ng Detector

Ang pag-configure ng Detector
Ang pag-configure ng Detector
Ang pag-configure ng Detector
Ang pag-configure ng Detector
Ang pag-configure ng Detector
Ang pag-configure ng Detector

Sa aking telepono, kumuha ako ng mga sample ng audio bilang mga file ng WAV ng freezer buzzer na nag-iisa, na may maingay na background, at sa pagpapatakbo ng Hoover. Inangkop ko ang code upang maisagawa ang FFT mula sa post na Pagbasa ng Audio Stream para sa FFT (Kapag may pag-aalinlangan, plagarise) at ginamit ang script na fourierTest.py upang magbalangkas ng hilaw at Fourier Transformed na mga sample ng buzzer sa tahimik, maingay at napaka ingay na mga background. Ang spike sa antas sa dalas 645 ay binibigkas sa unang balangkas at makabuluhan pa rin sa isang napakaingay na background.

Hakbang 3: Pagbubuo ng Detector

Pag-iipon ng detektor

Napakasimple. Ang Pi W ay may built-in na Wifi at ang HAT ay naka-plug na madurong sa mga pin ng GPIO sa Pi. Ang pag-configure ng software ay nangangailangan ng mga hakbang

  • I-install ang raspbian distro sa Raspberry Pi. Mayroong maraming mga gabay sa ito na maaaring ipaliwanag ito nang mas mahusay na magagawa ko.
  • I-set up ang Wifi (ditto sa itaas)
  • Kailangan nito ng naka-install na pakete ng alsa

$ sudo apt-get install libasound-dev

$ pip install pyalsaaudio

  • Ikonekta ang HAT sa raspberry PI
  • Sundin ang Mga Tagubilin sa nakita na website upang mai-install ang mga driver para sa HAT.
  • Patakbuhin ang mga nakitang diagnostic upang suriin ang HAT na gumagana at maayos na na-configure.

Ang programa ng detektor ay nagbabasa ng isang bloke ng data bilang isang sample mula sa mikropono, ginagawa ng FFT at nagpasya kung nakita o hindi nito nakita ang buzzer sa sample. Sinubukan kong gawin ang bloke hangga't maaari sa pamamagitan ng pagbawas ng rate ng sample ng audio sa 16kHz at paggamit ng pinakamalaking buffer na tatanggapin ng mambabasa. Nag-aalala ako na ang pagkalkula ng FFT ay maaaring maging sanhi ng pagbagsak ng mga frame, ngunit hindi iyon nangyari.

Ang pagkakaroon ng mga naka-preorder na mga sample sa aking telepono ay ginagawang mas madali ang pagbuo ng detector dahil magagawa ko ang kumpletong pagbuo sa bench bago subukan ang in-situ ng freezer.

Pagsasanay sa detektor

Ang detektor ay sinanay sa pamamagitan ng pag-scan sa bawat sample kapag ang pagrekord ng WAV ng buzzer ay pinatugtog sa detektor. Ang programa ay naglalabas ng posisyon sa FFT spectrum na may pinakamataas na antas ng lakas (ang rugto ng rurok), kasama ang antas ng dalas ng rurok na iyon. Ito ay simpleng bagay upang hanapin ang dalas ng buzzer at ang antas ng kuryente na inilalabas nito.

Mayroong 2 mga paraan upang matukoy kung ang isang beep ay naganap: -

  1. Ang dalas ba ng buzzer ang rurok ng rurok sa sample?
  2. o ang antas ng kuryente sa dalas ng buzzer sa isang threshold?

Ang alinmang pamamaraan ay nagtrabaho sa isang tahimik na sample, ngunit ang pangalawa ay mas mahusay sa isang maingay na sample, kaya ginamit ko iyon.

Minsan ang isang sample ay natakpan ang isang beep, kung minsan ito ay nasa pagitan ng mga beep, at pagkatapos ng bawat 3 beep mayroong mahabang paghinto bago ang susunod na mga beep. Upang mapagkakatiwalaan tuklasin na ang isang hanay ng mga beep ay nangyari bawat sample ay may isang upvote kung ang isang beep ay napansin at isang downvote kung hindi. Ang mga botong ito ay tinimbang upang magtakda ng isang bilang na kung saan ay mabubulusok sa isang sample ng beep at dahan-dahang mabulok sa pagitan ng mga oras. Kapag ang bilang ay umabot sa isang threshold ang alarma ay maaaring ma-trigger. Kung ang random na ingay ay napansin bilang isang sample ng beep, ang bilang ay naanod pabalik sa zero.

Kailangan namin ng mga bigat para sa upvote at downvote kasama ang threshold. Ginawa ko ito sa pagsubok at error sa maraming mga sample. Hindi ko kailangang matukoy ang tunay na dalas ng buzzer, hinanap ko lang ang standout frequency sa fft spectrum.

Hakbang 4: Pagpapadala ng Mensahe sa Radyo

Ang pagtaas ng alarma ay tapos na sa isang hiwalay na script. Trabaho ito ay upang buksan ang radyo kung kinakailangan, basahin ang kung ano man ang tumutugtog ng radyo at ulitin ang mensahe ng alarma hanggang sa muling ma-off ang radyo. Kinailangan kong baligtarin ang inhenyero ng uPnP protocol na ginamit dahil nagkaroon ako ng malaking problema sa pagkuha ng maaasahang impormasyon o mga halimbawa. Ang isang pares ng mga sanggunian na nakita kong kapaki-pakinabang ay

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Ito ay may magandang pangkalahatang ideya ng kung paano magkakasama ang lahat
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Ginamit ko ang Wireshark na tumatakbo sa isang windows PC upang ma-unsick ang pagkakasunud-sunod ng mensahe kapag nagpe-play ng isang sample na file mula sa aking PC sa aking radyo, at pagkatapos ng kaunting pagkalikot nakuha ko ang isang pagkakasunud-sunod ng utos na gumana. Ito ay

  • Ilunsad ang isang popup webserver upang maihatid ang mensahe ng babala kapag hiniling ito ng radyo
  • Itakda ang antas ng lakas ng tunog sa LOUD (Ang babala na mensahe ay dapat makaakit ng pansin ng bawat isa)
  • Ipasa ang uri ng mensahe ng babala sa radyo
  • I-poll ang radyo hanggang sa kasalukuyang estado ay "ITINIGIL"
  • Kunin ang radyo upang "MAGLARO" ng uri
  • Ulitin ang huling 2 hakbang hanggang sa kasalukuyang estado ay "WALANG MEDIA PRESENT", na nangangahulugang ang alarma ay kinilala sa pamamagitan ng pag-off ng radyo
  • Panghuli isara ang webserver at lumabas.

Ito ang scripttaasAlarm.py

Hakbang 5: Ginagawa ang Iyong Sarili

Paggawa Nito ng Sarili
Paggawa Nito ng Sarili

Ang modelo ng "detector" at "pagtaas ng alarma" ay hindi lamang para sa mga freezer, maaaring maging kapaki-pakinabang kahit saan kung saan kailangang maipasa ang isang awtomatikong alarma sa pamamagitan ng ibang medium. Kung ito ay magiging interesado, huwag mag-atubiling magkaroon ng go.

Pagse-set up ng PI Zero W, kasama ang mikropono

  • Ipunin ang hardware tulad ng sa hakbang 3
  • I-download ang mga freezer-alarm script mula sa Instructable na ito, o mula sa git repository na may kasamang ilang mga track ng bonus

$ git clone

Kailangan mo ring i-install ang software upang magamit ang on-board APA102 LEDs. Nagsama ako ng isang kopya ng apa102.py sa git na direktoryo ng pagtatrabaho

Pagsasanay ng iyong detektor

Nagdagdag ako ng isang pagpipilian sa pagsasanay sa checkFreezer.py script. Pinapatakbo nito itong nag-iisa at naglilimbag ng mga diagnostic sa linya ng utos, ngunit kailangan mo munang magrekord ng ilang mga sample ng alarma sa isang tahimik na kapaligiran bilang mga file ng WAV, at gawin ang pareho sa isang maingay. Upang makumpleto ang pagsasanay kailangan mong hanapin muna ang dalas ng FFT na may pinakamataas na antas (ang "rurok ng rurok") at pagkatapos ay isang antas ng threshold para sa dalas na iyon upang magtakda ng isang gatilyo. Upang magawa ito, patakbuhin ang script checkFreezer sa mode ng pagsasanay, kasama ang opsyong ‘-t’ at i-play ang pag-record ng alarma.

$ python checkFreezer.py -t

Pinapatakbo nito ang script sa mode ng pagsasanay. Ito ay naka-print na "handa" kapag ang nakita na HAT ay na-initialize at ang LED ay nagiging berde, pagkatapos ay isang linya para sa bawat di-maliit na ingay na naririnig nito, hal.

$ python checkFreezer.py -t

Handa na ba ng dalas ng 55 na-trigger na antas ng 1 na-trigger? Maling rurok ng dalas 645 antas ng pag-trigger 484 na-trigger? Maling rurok ng dalas 645 antas ng pag-trigger na 380 na-trigger? Mali

Ang dalas ng rurok ay, sa kasong ito 645 at iyon ang nagiging sanhi ng dalas ng pag-trigger. Ngayon upang makuha ang antas ng pag-trigger, muling ibalik ang checkFreezer, itatakda ang gatilyo

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

Handa ba ng dalas na dalas ng 645 na antas ng pag-trigger na 1273 na-trigger? Maling rurok ng dalas ng 645 antas ng pag-trigger 653 na-trigger? Maling rurok ng dalas 645 antas ng pag-trigger na 641 na-trigger? Maling rurok ng dalas ng 645 antas ng pag-trigger 616 na-trigger? Mali

Sa wakas kailangan namin ng isang threshold ng pag-trigger na nagpapaputok kapag nakita ang isang beep, ngunit hindi pinapansin ang ingay, hal

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

Handa ba ng dalas ng dalas 645 antas ng pag-trigger na 581 na-trigger? Ang tunay na rurok ng dalas 645 antas ng pag-trigger ay nag-trigger? Ang tunay na rurok ng dalas 645 na antas ng pag-trigger ay nag-trigger? Totoo

Subukan ito laban sa isang pares ng mga ingay na sample at dapat mong maitaguyod ang isang halaga ng threshold na nagtatangi sa pagitan ng tunog ng paputi at ingay na paligid. Dapat mo ring makita ang LED na pula kapag ang pag-reep ng beep ay pinatugtog ng ilang segundo. Kung ito ay upang mabilis / mabagal sa pagdating sa i-edit ang mga setting sa script

Kumokonekta sa radyo

Upang mai-configure ang mga script para sa iyong sariling pag-setup, kailangan mong hanapin ang IP address at numero ng port na ginagamit ng iyong aparato para sa mga serbisyo ng UPnP. Ang radyo setup ay dapat magbigay ng mga ito. Ang default na numero ng port ay 8080 at magiging sorpresa kung naiiba ito.

Nag-supply ako ng isang default na mensahe ng alarma, freezer.mp3. Huwag mag-atubiling palitan ng iyong sariling mensahe.

I-edit ang script gamit ang naaangkop na mga IP address at patakbuhin ang script.

$ python pagtaasAlarm.py

Kung maayos ang lahat, ang malakas at nakakainis na mensahe ng alarma ay sasabog sa iyong radyo hanggang sa ma-off ang radyo, na kinakansela ang alarma.

Habang tumatakbo ang script nagpapatakbo ito ng isang mini web server upang maihatid ang alarma mp3 sa radyo, posibleng isang isyu sa seguridad, ngunit ito ay aktibo lamang habang nagpe-play ang mensahe ng alarma.

Liveing

Alisin ang flag ng pagsasanay na ‘-t’, at patakbuhin ang checkFreezer gamit ang iyong sariling mga halaga, hal

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

Upang masimulan ito sa pag-reboot, idagdag sa /etc/rc.local, cd / home / pi / freezer-alarm

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

Ang berdeng LED ay sindihan at handa ka na para sa aksyon. Patugtugin ang pagrekord ng iyong beep ng alarma at pagkatapos ng ilang segundo ang LED ay magiging pula at ang mensahe ng alarma ay i-play sa iyong radyo.

Sa wakas

Iposisyon ang PI sa isang lokasyon na malapit sa freezer, wala sa daan at ng isang supply ng kuryente. Power up at ang berdeng LED ay dapat na dumating sa. Subukan ang pagpapalitaw ng alarma sa pamamagitan ng pag-iwan sa bukas ng pinto. Ang ilaw ay dapat na pula at pumutok ang mensahe ng alarma sa radyo.

Tagumpay !! Nagawa mo na ito Tratuhin ang iyong sarili sa isang mahabang inumin na may yelo mula sa freezer, ngunit huwag kalimutang isara ang pinto ng freezer!

Inirerekumendang: