Orodha ya maudhui:

Usambazaji wa Alarm ya Freezer: Hatua 5
Usambazaji wa Alarm ya Freezer: Hatua 5

Video: Usambazaji wa Alarm ya Freezer: Hatua 5

Video: Usambazaji wa Alarm ya Freezer: Hatua 5
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Julai
Anonim
Alama ya Alarm ya Freezer
Alama ya Alarm ya Freezer

Friji yetu iko kwenye chumba cha matumizi ambacho kimetengwa na nafasi yetu ya kuishi. Mara kwa mara mlango wa jokofu haufungi vizuri na kengele inazima. Shida ni kwamba hatuwezi kuisikia ikiwa tuko kwenye nafasi yetu ya kuishi. Je! Tunapataje ujumbe kwamba mlango wa freezer uko wazi? Hili ni suala la kawaida, tuna vifaa katika nyumba zetu ambavyo huzungumza nasi, lakini ni nini kinachotokea ikiwa hatuwezi kuwasikia kwa sababu yoyote. Nilianza hii kama raha kidogo, lakini inaweza kuwa ya matumizi katika programu nzito zaidi.

Kuna sehemu 2 za shida hii, tunahitaji njia ya kugundua kengele imezimwa na njia ya kupeleka ukweli huu kwa nafasi yetu ya kuishi. Ubunifu niliokaa juu ni kutumia Raspberry Pi kusikiliza kengele ya freezer ikizima, na kisha kutuma ujumbe wa kengele unaosikika kwa redio yangu ya ndani ambayo imewezeshwa uPNP. Universal Plug and Play (UpnP) ni kiwango cha kugundua na kuingiliana na huduma zinazotolewa na vifaa anuwai kwenye mtandao, pamoja na seva za media na wachezaji, ingawa sidhani kuwa freezers zilifikiriwa wakati kiwango kilitengenezwa. Ujumbe wa onyo ulifanywa kwa sauti kubwa na inakera na unarudiwa bila kikomo hadi redio itakapozimwa.

Nilichagua kugundua kengele na Raspberry Pi Zero W na Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero ni toleo la bei ya chini ya Raspberry Pi na chaguo la W limejenga WiFi, wakati Seeed Pi HAT inauzwa chini ya $ 10, ina LED zilizojengwa na Kitufe cha Mtumiaji. Pi HAT ni kadi za ugani ambazo huziba moja kwa moja kwenye Raspberry Pi ikifanya utaratibu rahisi sana wa kusanyiko. Toleo lolote la Pi litakuwa na uwezo zaidi wa kazi hiyo, na kipaza sauti iliyochaguliwa inaweza kubadilishwa, ingawa nilitumia LED zilizojengwa katika jengo hili.

Ni rahisi kuangalia ikiwa redio au Runinga itakufanyia kazi. Inawezekana kuelezewa kama "DLNA imewezeshwa" au sawa. Hii hutumia uPNP kuwasiliana. Kwenye Windows PC, chagua faili ya mp3 na "Tuma kwa Kifaa". Ikiwa kifaa chako kinajitokeza na unaweza kucheza faili, basi ni vizuri kwenda.

Niligawanya programu kuwa hati 2 za chatu, checkFreezer.py kuangalia ikiwa tahadhari ya freezer imesababishwa na kuongezaAlarm.py ili kuongeza kengele. Hati hizi zinaweza kutengenezwa na kupimwa kando na zinaweza kubadilishwa kwa urahisi au kubadilishwa kwa njia tofauti za maikrofoni za kuongeza sauti.

Vifaa

  • Programu -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • Msemaji wa Seeed 2-Mics Pi HAT
  • redio iliyowezeshwa na uPNP

Hatua ya 1: Kubuni Kigunduzi

Wakati mlango wa kufungia ukiachwa wazi na joto linapoongezeka, jokofu hutoa kengele ya "beep beep beep" inayosikika. Kwa kawaida na beeps nyingi za elektroniki, hii ni masafa moja. Wazo ni sampuli ya uingizaji wa sauti, fanya mabadiliko ya Fast Fourier (FFT) ambayo hubadilisha ishara inayotegemea wakati kuwa mzunguko wa msingi, kwa maneno mengine ni kuvunja ishara kuonyesha masafa tofauti kwenye ishara. Tazama Mchanganuzi wa Spektra ya Raspberry ya Pi Iliyo na Ripu ya RGB ya LED Tunaweza kutafuta kilele kwenye masafa ya buzzer na kuchochea kengele wakati buzzer imekuwa ikifanya kazi kwa muda.

Kigunduzi hiki kina mahitaji 2

  • Inapaswa kugundua buzzer, hata mbele ya kelele iliyoko (ondoa hasi ya uwongo)
  • Haipaswi kusababishwa na kelele iliyoko (ondoa chanya bandia)

Niliamua kuwa kuendesha Hoover kwenye chumba cha matumizi itakuwa mtihani mzuri. Haipaswi kusababisha kengele, na kengele inapaswa kusababishwa wakati buzzer ya freezer inapozima na Hoover inaendesha.

Hatua ya 2: Kusanidi Kivinjari

Kusanidi Kivinjari
Kusanidi Kivinjari
Kusanidi Kivinjari
Kusanidi Kivinjari
Kusanidi Kivinjari
Kusanidi Kivinjari

Na simu yangu, nilichukua sampuli za sauti kama faili za WAV za buzzer ya freezer peke yake, na historia ya kelele, na Hoover inayoendesha. Nilibadilisha nambari ili kutekeleza FFT kutoka kwa chapisho la Kusoma Mkondo wa Sauti kwa FFT (Wakati una shaka, wizi) na nikatumia hati ya nneerTest.py kupanga sampuli mbichi na za Fourier zilizobadilishwa za buzzer katika hali ya utulivu, kelele na kelele sana. Mwiba katika kiwango cha masafa 645 hutamkwa katika njama ya kwanza na bado ni muhimu na msingi wa kelele sana.

Hatua ya 3: Kuunda Kigunduzi

Kukusanya detector

Rahisi sana. Pi W inakuja na Wifi iliyojengwa na HAT imechomekwa kwa sekunde kwenye pini za GPIO kwenye Pi. Kusanidi programu inahitaji hatua

  • Sakinisha distro ya raspbian kwenye Raspberry Pi. Kuna miongozo mingi juu ya hii ambayo inaweza kuelezea vizuri zaidi kama ninavyoweza.
  • Sanidi Wifi (ditto hapo juu)
  • Inahitaji kifurushi cha alsa kilichowekwa

$ sudo apt-kupata kusanikisha -lass-dev

$ pip weka pyalsaaudio

  • Unganisha HAT na PI rasipberry
  • Fuata Maagizo kwenye wavuti iliyoonekana kusakinisha madereva ya HAT.
  • Tumia uchunguzi ulioonekana ili kuangalia HAT inafanya kazi na imesanidiwa vizuri.

Programu ya detector inasoma data ya data kama sampuli kutoka kwa kipaza sauti, hufanya FFT na kuamua ikiwa imegundua buzzer kwenye sampuli au la. Nilijaribu kufanya kizuizi kwa muda mrefu iwezekanavyo kwa kupunguza kiwango cha sampuli ya sauti hadi 16kHz na kutumia bafa kubwa zaidi ambayo msomaji angekubali. Nilikuwa na wasiwasi kwamba hesabu ya FFT inaweza kusababisha muafaka kutupwa, lakini hiyo haikutokea.

Kuwa na sampuli zilizorekodiwa mapema kwenye simu yangu kulifanya ujenzi wa kipelelezi iwe rahisi zaidi kwani ningeweza kujenga kamili kwenye benchi kabla ya kupima in-situ na freezer.

Kufundisha upelelezi

Kigunduzi kilifundishwa kwa kukagua kila sampuli wakati kurekodi WAV ya buzzer ilichezwa kwa detector. Programu hutoa nafasi katika wigo wa FFT na kiwango cha juu cha nguvu (masafa ya kilele), pamoja na kiwango cha masafa ya kilele. Lilikuwa jambo rahisi kupata masafa ya buzzer na kiwango cha nguvu kilikuwa kinatoa.

Kuna njia 2 za kugundua ikiwa beep ilitokea: -

  1. Je! Masafa ya buzzer ilikuwa kiwango cha juu cha sampuli?
  2. au kiwango cha nguvu kilikuwa kwenye masafa ya buzzer juu ya kizingiti?

Njia yoyote ilifanya kazi katika sampuli tulivu, lakini ya pili ilikuwa bora na sampuli ya kelele, kwa hivyo nilitumia hiyo.

Wakati mwingine sampuli ilifunikwa beep, wakati mwingine ilikuwa kati ya beeps, na baada ya kila beeps 3 kulikuwa na pause ndefu kabla ya beeps inayofuata. Ili kugundua kwa uaminifu kuwa seti ya beeps ilitokea kila sampuli ilikuwa na upvote ikiwa beep iligunduliwa na kura ya chini ikiwa sivyo. Kura hizi zilipewa uzito wa kuweka hesabu ambayo itasonga na sampuli ya beep na kuoza polepole kati ya nyakati. Mara hesabu ilipofikia kizingiti kengele inaweza kusababishwa. Ikiwa kelele ya nasibu iligunduliwa kama sampuli ya beep, hesabu ingerejea nyuma hadi sifuri.

Tunahitaji basi uzito wa kupigia kura na kushuka chini pamoja na kizingiti. Hii nilifanya kwa kujaribu na makosa juu ya sampuli kadhaa. Sikuhitaji kuamua masafa halisi ya buzzer, nilitafuta tu masafa ya kusimama katika wigo wa fft.

Hatua ya 4: Kutuma Ujumbe kwa Redio

Kuongeza kengele ilifanywa na hati tofauti. Kazi ni kuwasha redio ikiwa ni lazima, kuvunja chochote redio inacheza na kurudia ujumbe wa kengele hadi redio ikizimwa tena. Ilinibidi kubadili mhandisi itifaki ya uPnP iliyotumiwa kwani nilikuwa na shida kubwa kupata habari au mifano ya kuaminika. Marejeleo kadhaa niliyoona kuwa muhimu yalikuwa

  • www.electricmonk.nl/log/2016/07/05/kuchunguza-upnp-with-python/ Hii ina muhtasari mzuri wa jinsi inavyofaa pamoja
  • developer.sony.com/develop/audio-control-api/get-started/brows-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Nilitumia Wireshark kukimbia kwenye PC ya windows kufungua mfuatano wa ujumbe wakati wa kucheza faili ya sampuli kutoka kwa PC yangu kwenye redio yangu, na baada ya kuchelewa kidogo nilipata mlolongo wa amri ambao ulifanya kazi. Hii ni

  • Anzisha kidude cha wavuti ili kutumikia ujumbe wa onyo wakati redio inaiuliza
  • Weka kiwango cha sauti iwe LOUD (Ujumbe wa onyo unapaswa kuvutia umakini wa kila mtu)
  • Pitia uri wa ujumbe wa onyo kwa redio
  • Piga kura ya redio hadi hali ya sasa "IMEZIMAMA"
  • Pata redio "CHEZA" uri
  • Rudia hatua 2 za mwisho hadi hali ya sasa iwe "HAKUNA VYOMBO VYA HABARI", ambayo inamaanisha kuwa kengele imekubaliwa kwa kuzima redio
  • Mwishowe funga seva ya wavuti na utoke.

Hii ndio hati ya kuongezaAlarm.py

Hatua ya 5: Kuifanya mwenyewe

Kuifanya mwenyewe
Kuifanya mwenyewe

Mfano wa "detector" na "kuongeza kengele" sio tu ya kufungia, inaweza kuwa na faida mahali popote ambapo kengele ya kiotomatiki inahitaji kupelekwa kupitia njia nyingine. Ikiwa hii itakuwa ya kupendeza, jisikie huru kwenda.

Kuanzisha PI Zero W, pamoja na kipaza sauti

  • Unganisha vifaa kama ilivyo katika hatua ya 3
  • Pakua hati za kengele ya freezer kutoka kwa hii inayoweza kufundishwa, au kutoka kwa hazina ya git ambayo inajumuisha nyimbo kadhaa za ziada

$ git clone

Unahitaji pia kusanikisha programu hiyo ili utumie mwangaza wa bodi za APA102 za bodi. Nimejumuisha nakala ya apa102.py katika saraka ya kufanya kazi ya git

Kufundisha detector yako

Nimeongeza chaguo la mafunzo kwa hati ya checkFreezer.py. Hii inaisimamia peke yake na inachapisha uchunguzi kwenye laini ya amri, lakini kwanza unahitaji kurekodi sampuli kadhaa za kengele katika mazingira tulivu kama faili za WAV, na fanya vivyo hivyo kwa kelele. Ili kumaliza mafunzo unahitaji kupata kwanza masafa ya FFT na kiwango cha juu ("kiwango cha juu") na kisha kiwango cha kizingiti cha masafa hayo kuweka kichocheo. Ili kufanya hivyo, tumia script checkFreezer katika hali ya mafunzo, na chaguo la '-t' na ucheze rekodi ya kengele.

$ python checkFreezer.py -t

Hii inaendesha maandishi katika hali ya mafunzo. Inachapisha "tayari" wakati kofia ya msumeno imeanzishwa na LED inageuka kuwa kijani, kisha laini kwa kila kelele isiyo ya maana inayosikia, mfano.

$ python checkFreezer.py -t

Tayari kiwango cha juu cha kiwango cha 55 cha kuchochea kiwango cha 1 kimesababishwa? Kiwango cha juu cha uwongo 645 kiwango cha kuchochea 484 kimesababishwa? Kiwango cha juu cha uwongo 645 kiwango cha kuchochea 380 kimesababishwa? Uongo

Mzunguko wa kilele ni, katika kesi hii 645 na hiyo inakuwa frequency ya trigger. Sasa kupata kiwango cha kichochezi, rejesha checkFreezer, ukiweka kichocheo

$ python checkFreezer.py -t - trigger = 645

Tayari kiwango cha juu cha kasi 645 kiwango cha kuchochea cha 1273 kimesababishwa? Kiwango cha juu cha uwongo 645 kiwango cha kuchochea 653 kimesababishwa? Kiwango cha juu cha uwongo 645 kiwango cha kuchochea 641 kimesababishwa? Kiwango cha juu cha uwongo 645 kiwango cha kuchochea cha 616 kimesababishwa? Uongo

Mwishowe tunahitaji kizingiti cha kuchochea ambacho moto wakati beep hugunduliwa, lakini hupuuza kelele, kwa mfano

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

Tayari kiwango cha juu cha kasi 645 kiwango cha kuchochea 581 kimesababishwa? Kiwango cha kweli cha kiwango cha 645 cha kuchochea kiwango cha 798 kimesababishwa? Je! Kiwango cha juu cha kiwango cha 645 cha kuchochea kiwango cha 521 kimesababishwa? Kweli

Jaribu hii dhidi ya sampuli kadhaa za kelele na unapaswa kuwa na uwezo wa kuweka kizingiti cha thamani ambacho kinabagua kati ya sauti ya kelele na kelele iliyoko. Unapaswa pia kuona LED ikiwa nyekundu wakati kurekodi beep kunachezwa kwa sekunde chache. Ikiwa ni haraka / polepole kuja kuhariri mipangilio kwenye hati

Kuunganisha na redio

Ili kusanidi hati kwa usanidi wako mwenyewe, unahitaji kupata anwani ya IP na nambari ya bandari ambayo kifaa chako kinatumia huduma za UPnP. Usanidi wa redio unapaswa kutoa hizi. Nambari chaguo-msingi ya bandari ni 8080 na itakuwa mshangao ikiwa ni tofauti.

Nimetoa ujumbe wa kengele chaguo-msingi, freezer.mp3. Jisikie huru kuchukua nafasi na ujumbe wako mwenyewe.

Hariri hati na anwani zinazofaa za IP na uendesha hati.

$ chatu kuongezaAlarm.py

Ikiwa yote ni sawa, ujumbe wa kengele wenye sauti kubwa na inayokera utavuma nje ya redio yako hadi redio ikizimwa, na kughairi kengele.

Wakati hati inafanya kazi inaendesha seva ndogo ya wavuti kutumikia kengele mp3 kwa redio, labda suala la usalama, lakini inatumika tu wakati ujumbe wa kengele unacheza.

Kuenda Moja kwa Moja

Ondoa bendera ya mafunzo ya '-t', na uendeshe checkFreezer na maadili yako mwenyewe, mfano

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

Ili kuifanya kuanza upya, ongeza kwa /etc/rc.local, cd / nyumbani / pi / freezer-alarm

(python checkFreezer.py --trigger = 645 - kizingiti = 200> / tmp / freezer 2> / tmp / freezererror &) na toka 0

LED ya kijani itaangaza na uko tayari kwa hatua. Cheza rekodi ya beep yako ya kengele na baada ya sekunde chache LED itageuka kuwa nyekundu na ujumbe wa kengele utacheza kwenye redio yako.

Mwishowe

Weka PI mahali karibu na jokofu, nje ya njia na kwa usambazaji wa umeme. Nguvu juu na LED ya kijani inapaswa kuja. Jaribu kuchochea kengele kwa kuacha mlango wazi. Nuru inapaswa kuwa nyekundu na ujumbe wa kengele ucheze kwenye redio.

Mafanikio !! Umefanya hivyo. Jipatie kinywaji kirefu na barafu kutoka kwenye freezer, lakini usisahau kufunga mlango wa freezer!

Ilipendekeza: