INHOUDSOPGAWE:

Vries alarm alarm: 5 stappe
Vries alarm alarm: 5 stappe

Video: Vries alarm alarm: 5 stappe

Video: Vries alarm alarm: 5 stappe
Video: Очистка самогона за 5 минут 2024, November
Anonim
Vrieskas alarm relais
Vrieskas alarm relais

Ons vrieskas is in 'n waskamer wat geïsoleerd is van ons leefruimte. Soms sluit die deur van die vrieskas nie behoorlik nie en die alarm gaan af. Die probleem is dat ons dit nie kan hoor as ons in ons leefruimte is nie. Hoe kry ons 'n boodskap dat die vrieskas se deur oop is? Dit is 'n algemene probleem; ons het toestelle in ons huise wat met ons praat, maar wat gebeur as ons dit om watter rede ook al nie kan hoor nie? Ek het dit as 'n bietjie pret begin, maar dit kan nuttig wees in 'n ernstiger toepassing.

Daar is twee dele aan hierdie probleem; ons benodig 'n metode om te sien dat die alarm afgegaan het en 'n metode om dit na ons leefruimte oor te dra. Die ontwerp waarop ek besluit het, was om 'n Raspberry Pi te gebruik om te luister of die vrieskas se alarm afgaan, en dan 'n hoorbare alarmboodskap na my huishoudelike radio te stuur wat uPNP -aangeskakel is. Universal Plug and Play (UpnP) is 'n standaard vir die ontdekking en interaksie met dienste wat deur verskillende toestelle op 'n netwerk aangebied word, insluitend mediaservers en spelers, hoewel ek nie dink dat vrieskaste in die vooruitsig gestel is toe die standaard ontwikkel is nie. Die waarskuwingsboodskap is hard en irriterend gemaak en word eindeloos herhaal totdat die radio afgeskakel is.

Ek het gekies om die alarm op te spoor met 'n Raspberry Pi Zero W en Seeed ReSpeaker 2-Mics Pi HAT Die Raspberry PI Zero is 'n goedkoop weergawe van die Raspberry Pi en die W-opsie het WiFi ingebou, terwyl die Seeed Pi HAT minder as verkoop word $ 10, het ingeboude LED's en 'n gebruikersknoppie. Pi HAT is uitbreidingskaarte wat direk op die Raspberry Pi gekoppel word, wat 'n baie eenvoudige monteerprosedure maak. Elke Pi-weergawe is meer as bekwaam vir die taak, en die gekose mikrofoon kan vervang word, alhoewel ek gebruik gemaak het van die ingeboude LED's in hierdie build.

Dit is maklik om te kyk of 'n radio of TV vir u werk. Dit sal waarskynlik beskryf word as 'DLNA enabled' of soortgelyk. Dit gebruik uPNP om te kommunikeer. Kies 'n mp3 -lêer op 'n Windows -rekenaar en 'Cast to Device'. As u toestel verskyn en u die lêer kan speel, is u gereed.

Ek verdeel die sagteware in 2 python -skrifte, checkFreezer.py om te kyk of 'n vrieskaswaarskuwing geaktiveer is en raiseAlarm.py om alarm te maak. Hierdie skrifte kan afsonderlik ontwikkel en getoets word en kan maklik aangepas of vervang word vir verskillende metodes vir alarmopwekking van mikrofone.

Voorrade

  • Sagteware -https://github.com/wapringle/freezer-alarm
  • Framboos PI Zero W
  • Sien ReSpeaker 2-Mics Pi HAT
  • uPNP -aangeskakel radio

Stap 1: Ontwerp die detector

As die vrieskas se deur oopgemaak word en die temperatuur styg, gee die vrieskas 'n hoorbare "piep piep" alarm. Net soos die meeste elektroniese piep, is dit 'n enkele frekwensie. Die idee is om die klankinvoer te proe, 'n Fast Fourier Transform (FFT) uit te voer wat 'n tydgebaseerde sein omskakel na 'n frekwensie gebaseer, met ander woorde 'n sein word afgebreek om die verskillende frekwensies in die sein weer te gee. Sien die Instrueerbare Raspberry Pi -spektrumanaliseerder met RGB LED -strook Ons kan 'n piek op die gonsfrekwensie soek en die alarm aktiveer as die zoemer al 'n geruime tyd aktief is.

Hierdie detektor het 2 vereistes

  • Dit moet die zoemer opspoor, selfs in die teenwoordigheid van omringende geraas (elimineer vals negatief)
  • Dit moet nie veroorsaak word deur omringende geraas nie (skakel vals positief uit)

Ek het besluit dat die bestuur van 'n Hoover in die waskamer 'n goeie toets sou wees. Dit moet nie die alarm aktiveer nie, en die alarm moet geaktiveer word wanneer die vrieskas se gonser afgaan en die Hoover loop.

Stap 2: Die opstel van die detektor

Die opstel van die detektor
Die opstel van die detektor
Die opstel van die detektor
Die opstel van die detektor
Die opstel van die detektor
Die opstel van die detektor

Met my telefoon het ek klankmonsters geneem as WAV -lêers van die vrieskas alleen, met 'n raserige agtergrond en met die Hoover. Ek het die kode aangepas om die FFT uit die post Reading Audio Stream vir FFT uit te voer (as u twyfel, plagarise) en die script fourierTest.py gebruik om rou en Fourier -getransformeerde monsters van die zoemer in stil, raserige en baie raserige agtergronde te teken. Die styging in vlak op frekwensie 645 word in die eerste plot uitgespreek en is steeds beduidend met 'n baie raserige agtergrond.

Stap 3: Bou die detektor

Monteer die detektor

Baie eenvoudig. Die Pi W het ingeboude Wifi en die HAT word direk in die GPIO-penne op die Pi gekoppel. Die konfigurasie van die sagteware vereis die stappe

  • Installeer raspbian distro op Raspberry Pi. Daar is baie gidse hieroor wat dit baie beter kan verduidelik as wat ek kan.
  • Stel die Wifi op (ook hierbo)
  • Die alsa -pakket moet geïnstalleer word

$ sudo apt-get install libasound-dev

$ pip installeer pyalsaaudio

  • Koppel die HAT aan die framboos -PI
  • Volg die instruksies op die webwerf wat u sien om die bestuurders vir die HAT te installeer.
  • Voer die opgespoorde diagnostiek uit om te sien of die HAT werk en korrek gekonfigureer is.

Die detektorprogram lees 'n blok data as 'n monster uit die mikrofoon, doen die FFT en besluit of dit die zoemer in die monster opgemerk het of nie. Ek het probeer om die blok so lank as moontlik te maak deur die klankmonstersnelheid tot 16kHz te verlaag en die grootste buffer te gebruik wat die leser sou aanvaar. Ek was bekommerd dat die FFT -berekening rame laat val, maar dit het nie gebeur nie.

Met vooraf opgeneemde monsters op my telefoon, is die bou van die detektor baie makliker gemaak, aangesien ek die volledige konstruksie op die bank kon doen voordat ek in die vrieskas in-situ toets.

Opleiding van die detektor

Die detektor is opgelei deur elke monster te skandeer toe die WAV -opname van die zoemer vir die detektor gespeel is. Die program gee die posisie in die FFT -spektrum met die hoogste drywingsvlak (die piekfrekwensie), tesame met die vlak van die piekfrekwensie. Dit was eenvoudig om die gonsfrekwensie en die kragvlak wat dit uitstraal te bepaal.

Daar is 2 maniere om op te spoor of 'n piep was:-

  1. Was die gonsfrekwensie die piekfrekwensie in die monster?
  2. of was die kragvlak by die gonsfrekwensie oor 'n drumpel?

Elke metode werk in 'n stil monster, maar die tweede was beter met 'n raserige monster, so ek het dit gebruik.

Soms het 'n monster 'n piep bedek, soms was dit tussen piep, en na elke 3 piep was daar 'n lang pouse voor die volgende piep. Om betroubaar op te spoor dat 'n stel biepies plaasgevind het, het elke monster 'n opstem gehad as 'n piep opgespoor is en 'n afslag indien nie. Hierdie stemme is geweeg om 'n telling te bepaal wat met 'n biepmonster sou styg en stadig tussen die tye sou verval. Sodra die telling 'n drempel bereik het, kan die alarm geaktiveer word. As ewekansige geraas as 'n biepmonster bespeur word, sal die telling teruggaan na nul.

Ons benodig dan die gewigte vir die op- en afstem saam met die drumpel. Dit het ek gedoen met toets en fout oor 'n aantal monsters. Ek hoef nie die werklike gonsfrekwensie te bepaal nie, ek het net gesoek na die opvallende frekwensie in die fft -spektrum.

Stap 4: Stuur 'n boodskap aan die radio

Om 'n alarm te maak, was 'n aparte skrif. Dit is die taak om die radio aan te skakel indien nodig, in te breek by alles wat die radio speel en die alarmboodskap te herhaal totdat die radio weer afgeskakel word. Ek moes die uPnP -protokol wat gebruik is, omskakel, aangesien ek baie probleme ondervind het om betroubare inligting of voorbeelde te kry. 'N Paar verwysings wat ek nuttig gevind het, was

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Dit het 'n goeie oorsig van hoe dit alles bymekaar pas
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Ek het Wireshark op 'n Windows -rekenaar gebruik om die boodskapvolgorde uit te haal toe ek 'n voorbeeldlêer van my rekenaar op my radio gespeel het, en na 'n bietjie gesukkel het ek 'n opdragreeks gekry wat gewerk het. Dit is

  • Begin 'n opspringer -webbediener om die waarskuwingsboodskap te bedien wanneer die radio daarvoor vra
  • Stel die volume op LOUD (die waarskuwingsboodskap moet almal se aandag trek)
  • Gee die uri van die waarskuwingsboodskap aan die radio
  • Poll die radio totdat die huidige toestand "STOP" is
  • Kry die radio om die uri te "SPEEL"
  • Herhaal die laaste 2 stappe totdat die huidige toestand 'GEEN MEDIA AANBIED' is nie, wat beteken dat die alarm erken is deur die radio af te skakel
  • Sluit uiteindelik die webserver en verlaat.

Dit is die script raiseAlarm.py

Stap 5: Doen dit self

Doen dit self
Doen dit self

Die "detector" en "alarm maak" -model is nie net vir vrieskaste nie; dit kan oral nuttig wees waar 'n outomatiese alarm deur 'n ander medium oorgedra moet word. As dit van belang is, kan u gerus 'n draai kom maak.

Die opstel van die PI Zero W, insluitend die mikrofoon

  • Monteer die hardeware soos in stap 3
  • Laai die vries-alarm-skrifte af van hierdie Instructable, of van die git-bewaarplek wat 'n paar bonussnitte bevat

$ git-kloon

U moet ook die sagteware installeer om die ingeboude APA102 LED's te gebruik. Ek het 'n afskrif van apa102.py in die git -werkgids ingesluit

Leer jou detektor op

Ek het 'n opleidingsopsie by die checkFreezer.py -script gevoeg. Dit werk selfstandig en druk 'n diagnose op die opdragreël af, maar eers moet u 'n paar monsters van die alarm in 'n stil omgewing as WAV-lêers opneem, en dieselfde doen in 'n lawaaierige. Om die opleiding te voltooi, moet u eers die FFT -frekwensie met die hoogste vlak (die "piekfrekwensie") vind en dan 'n drempelvlak vir die frekwensie om 'n sneller in te stel. Om dit te doen, voer die script checkFreezer in die oefenmodus uit met die '-t'-opsie en speel die opname van die alarm.

$ python checkFreezer.py -t

Dit voer die script in die opleidingsmodus uit. Dit druk "gereed" af wanneer die gesiende HAT geïnisialiseer is en die LED groen word, dan 'n streep vir elke nie-triviale geraas wat dit hoor, bv.

$ python checkFreezer.py -t

Gereed piekfrekwensie 55 sneller vlak 1 geaktiveer? Valse piekfrekwensie 645 snellervlak 484 geaktiveer? Valse piekfrekwensie 645 sneller vlak 380 geaktiveer? onwaar

Die piekfrekwensie is in hierdie geval 645 en dit word die snellerfrekwensie. Om die snellervlak te kry, herhaal checkFreezer en stel die sneller in

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

Gereed piekfrekwensie 645 snellervlak 1273 geaktiveer? Valse piekfrekwensie 645 snellervlak 653 geaktiveer? Valse piekfrekwensie 645 snellervlak 641 geaktiveer? Valse piekfrekwensie 645 sneller vlak 616 geaktiveer? onwaar

Uiteindelik het ons 'n snellerdrempel nodig wat afvuur wanneer 'n piep opgespoor word, maar geraas ignoreer, bv

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

Gereed piekfrekwensie 645 snellervlak 581 geaktiveer? Ware piekfrekwensie 645 sneller vlak 798 geaktiveer? Ware piekfrekwensie 645 snellervlak 521 geaktiveer? Waar

Toets dit met 'n paar raserige monsters, en u moet 'n drempelwaarde kan bepaal wat onderskei tussen die geluid van die blaser en die omringende geraas. U moet ook sien dat die LED rooi word as die piepopname vir 'n paar sekondes gespeel word. Wysig dan die instellings in die script as dit te vinnig/stadig gaan

Koppel aan die radio

Om die skrifte vir u eie opstelling op te stel, moet u die IP -adres en poortnommer vind wat u toestel vir UPnP -dienste gebruik. Die radio -opstelling moet dit verskaf. Die standaard poortnommer is 8080, en dit sal 'n verrassing wees as dit anders is.

Ek het 'n standaard alarmboodskap, vrieskas.mp3, verskaf. Vervang gerus met u eie boodskap.

Wysig die script met die toepaslike IP -adresse en voer die script uit.

$ python raiseAlarm.py

As alles goed is, blaas die harde en irriterende alarmboodskap uit u radio totdat die radio afgeskakel word, wat die alarm kanselleer.

Terwyl die skrip loop, loop dit 'n mini -webbediener om die alarm mp3 na die radio te stuur, moontlik 'n sekuriteitsprobleem, maar dit is slegs aktief terwyl die alarmboodskap speel.

Gaan Live

Verwyder die '-t' opleidingsvlag en voer checkFreezer uit met u eie waardes, bv

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

Om dit by herlaai te begin, voeg dit by die /etc/rc.local, cd/home/pi/vrieskas-alarm

(python checkFreezer.py --trigger = 645 --drempel = 200> /tmp /vrieskas 2> /tmp /freezererror &) en verlaat 0

Die groen LED sal brand en jy is gereed vir aksie. Speel die opname van u alarmbiep en na 'n paar sekondes word die LED rooi en die alarmboodskap word op u radio gespeel.

Ten slotte

Plaas die PI op 'n plek naby die vrieskas, uit die weg en deur 'n kragtoevoer. Skakel aan en die groen LED moet aanskakel. Toets die alarm deur die deur oop te laat. Die lig moet rooi word en die alarmboodskap speel op die radio.

Sukses !! Jy het dit gedoen. Bederf jouself met 'n lang drankie met ys uit die vrieskas, maar moenie vergeet om die deur van die vrieskas toe te maak nie!

Aanbeveel: