
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47

Fagyasztónk egy háztartási helyiségben van, amely elszigetelt az életterünktől. Előfordul, hogy a fagyasztó ajtaja nem csukódik be megfelelően, és a riasztó megszólal. A probléma az, hogy nem halljuk, ha az életterünkben vagyunk. Hogyan kaphatunk üzenetet arról, hogy a fagyasztó ajtaja nyitva van? Ez gyakori probléma, otthonunkban vannak olyan eszközök, amelyek beszélnek hozzánk, de mi történik, ha bármilyen okból nem halljuk őket. Ezt egy kicsit szórakoztatásnak indítottam, de lehet, hogy hasznos lesz egy komolyabb alkalmazásban.
Ennek a problémának két része van, szükségünk van egy módszerre a riasztás észlelésének észlelésére és egy módszerre, amellyel ezt a tényt továbbíthatjuk lakóhelyünkre. A tervezés szerint az volt, hogy egy Raspberry Pi -t használtam a fagyasztó riasztásának hallgatására, majd hangos riasztási üzenetet küldtem a hazai rádiómnak, amely engedélyezve van az uPNP -n. Az Univerzális Plug and Play (UpnP) szabvány a hálózat különböző eszközei által kínált szolgáltatások, köztük a médiaszerverek és lejátszók felfedezésére és azokkal való interakcióra, bár nem hiszem, hogy a szabvány kidolgozásakor fagyasztókat terveztek. A figyelmeztető üzenet hangos és irritáló volt, és végtelenül ismétlődik, amíg a rádiót ki nem kapcsolják.
A riasztást Raspberry Pi Zero W és Seeed ReSpeaker 2-Mics Pi HAT segítségével választottam $ 10, beépített LED-ekkel és felhasználói gombbal rendelkezik. A Pi HAT olyan bővítőkártyák, amelyek közvetlenül a Raspberry Pi -hez csatlakoznak, és nagyon egyszerű összeszerelési eljárást tesznek lehetővé. Bármely Pi verzió több mint alkalmas a feladatra, és a választott mikrofon helyettesíthető, bár ebben a konstrukcióban a beépített LED-eket használtam.
Könnyű ellenőrizni, hogy rádió vagy TV működne -e az Ön számára. Valószínűleg "DLNA engedélyezett" vagy hasonló lesz. Ez az uPNP -t használja a kommunikációhoz. Windows PC -n válassza ki az mp3 fájlt, és válassza a „Cast to Device” lehetőséget. Ha megjelenik az eszköze, és le tudja játszani a fájlt, akkor készen áll.
A szoftvert 2 python szkriptre osztottam, a checkFreezer.py segítségével ellenőrizhetem, hogy a fagyasztó riasztása aktiválódott -e, és a raiseAlarm.py jelzéssel. Ezeket a szkripteket külön lehet fejleszteni és tesztelni, és könnyen adaptálhatók vagy helyettesíthetők a különböző mikrofonok riasztási módjaira.
Kellékek
- Szoftver -https://github.com/wapringle/freezer-alarm
- Málna PI Zero W
- Látta a ReSpeaker 2-Mics Pi HAT-ot
- uPNP -kompatibilis rádió
1. lépés: Az érzékelő tervezése
Amikor a fagyasztó ajtaja nyitva marad, és a hőmérséklet emelkedik, a fagyasztó hangjelzést ad. A legtöbb elektronikus hangjelzéshez hasonlóan ez egyetlen frekvencia. Az ötlet az, hogy mintát vesz az audió bemenetről, gyors Fourier -transzformációt (FFT) hajt végre, amely az időalapú jelet frekvenciaalapúvá alakítja, más szóval lebont egy jelet, hogy megjelenítse a jel különböző frekvenciáit. Lásd az Instructable Raspberry Pi spektrumanalizátort RGB LED szalaggal Kereshetünk egy csúcsot a zümmögő frekvenciáján, és riasztást indíthatunk, ha a zümmögő már egy ideje aktív.
Ennek az érzékelőnek 2 követelménye van
- Érzékelnie kell a zümmögőt, még környezeti zaj jelenlétében is (kiküszöbölve a hamis negatívokat)
- Nem válthatja ki a környezeti zaj (kiküszöböli a hamis pozitív eredményeket)
Úgy döntöttem, hogy egy Hoover futtatása a háztartási helyiségben jó teszt lesz. Nem indíthatja el a riasztást, és a riasztást akkor kell aktiválni, amikor a fagyasztó hangjelzője kikapcsol és a Hoover fut.
2. lépés: Az érzékelő konfigurálása



A telefonommal hangmintákat vettem egyedül a fagyasztó zümmere WAV fájljaiként, zajos háttérrel, és a Hoover futásával. A kódot úgy alakítottam ki, hogy végrehajtsa az FFT -t a Reading Audio Stream for FFT bejegyzésből (ha kétségei vannak, plagarizáljon), és a fourierTest.py szkriptet használva nyers és Fourier transzformált mintákat készítettem a zümmögőből csendes, zajos és nagyon zajos háttérben. A 645 -ös frekvencia szintjének emelkedése az első ábrán kifejezett, és továbbra is jelentős, nagyon zajos háttérrel.
3. lépés: Az érzékelő felépítése
Az érzékelő összeszerelése
Nagyon egyszerű. A Pi W beépített Wifi-vel érkezik, a HAT pedig rendesen be van dugva a Pi GPIO csapjaiba. A szoftver konfigurálása megköveteli a lépéseket
- Telepítse a raspbian disztribúciót a Raspberry Pi -re. Rengeteg útmutató van ezzel kapcsolatban, amelyek sokkal jobban meg tudják magyarázni, mint én.
- A Wifi beállítása (fent is)
- Telepíteni kell az alsa csomagot
$ sudo apt-get install libasound-dev
$ pip install pyalsaaudio
- Csatlakoztassa a kalapot a málna PI -hez
- Kövesse a webhelyen található utasításokat a HAT illesztőprogramjainak telepítéséhez.
- Futtassa a látott diagnosztikát, hogy ellenőrizze a HAT működését és megfelelő konfigurálását.
Az érzékelő program egy adatblokkot olvas be mintának a mikrofonból, elvégzi az FFT -t és eldönti, hogy észlelte -e a zümmögőt a mintában. Megpróbáltam a blokkot a lehető leghosszabbra állítani azáltal, hogy az audio mintavételi frekvenciát 16 kHz -re csökkentettem, és az olvasó által elfogadott legnagyobb puffert használtam. Aggódtam amiatt, hogy az FFT számítás a keretek leesését okozhatja, de ez nem történt meg.
A telefonon előre rögzített minták sokkal könnyebbé tették az érzékelő felépítését, mivel a teljes felépítést a padon végezhettem, mielőtt a fagyasztónál helyben teszteltem volna.
Az érzékelő képzése
Az érzékelőt az egyes minták szkennelésével képezték ki, amikor a zümmögő WAV felvételét lejátszották az érzékelőnek. A program az FFT spektrumban a pozíciót adja ki a legmagasabb teljesítményszinttel (csúcsfrekvencia), valamint a csúcsfrekvencia szintjével együtt. Egyszerű dolog volt megtalálni a zümmögő frekvenciáját és az általa kibocsátott teljesítményszintet.
Kétféleképpen lehet megállapítani, hogy sípolás történt-e:
- A zümmögési frekvencia volt a minta csúcsfrekvenciája?
- vagy a zümmögési frekvencia teljesítményszintje küszöbérték felett volt?
Bármelyik módszer csendes mintában működött, de a második jobb volt zajos mintával, ezért ezt használtam.
Néha egy minta elfedett egy hangjelzést, néha a hangjelzések között volt, és minden 3 hangjelzés után hosszú szünet következett a következő sípolás előtt. Annak érdekében, hogy megbízhatóan felderítsük, hogy egy csipogás történt, minden mintának volt egy felhangja, ha sípolást észlelt, és egy lefelé, ha nem. Ezeket a szavazatokat úgy súlyozták, hogy olyan számot állítsanak be, amely egy hangjelzéssel ütközik, és lassan csökken az idők között. Amint a szám elérte a küszöbértéket, a riasztás aktiválható. Ha csipogó mintaként véletlenszerű zajt észleltek, a szám visszaesik a nullára.
Szükségünk van a súlyokra a fel- és a leszavazáshoz a küszöbértékkel együtt. Ezt próbával és tévedéssel tettem számos mintán. Nem kellett meghatároznom a zümmögés tényleges frekvenciáját, csak a kiemelkedő frekvenciát kerestem az fft spektrumban.
4. lépés: Üzenet küldése a rádiónak
A riasztást külön szkripttel hajtották végre. Az a dolga, hogy szükség esetén bekapcsolja a rádiót, betörjön a rádió lejátszásába, és ismételje meg a riasztási üzenetet, amíg a rádió újra ki nem kapcsol. Meg kellett fordítanom az alkalmazott uPnP protokollt, mivel nagy gondot okozott a megbízható információk vagy példák megszerzése. Pár hasznosnak talált hivatkozás hasznos volt
- www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Ez egy szép áttekintést nyújt arról, hogyan illeszkedik minden
- developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
- stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973
A Windows PC -n futó Wireshark segítségével feloldottam az üzenetsorozatot, amikor egy mintafájlt játszottam le a számítógépről a rádión, és egy kis hegedülés után kaptam egy működő parancssort. Ez
- Indítson el egy felugró webszervert a figyelmeztető üzenet megjelenítésére, amikor a rádió kéri
- Állítsa a hangerőt LOUD -ra (a figyelmeztető üzenetnek fel kell hívnia mindenki figyelmét)
- A figyelmeztető üzenet uri -ját adja át a rádiónak
- A rádió lekérdezése, amíg a jelenlegi állapot "STOPPED"
- Kapcsolja be a rádiót az uri "PLAY" -jához
- Ismételje meg az utolsó 2 lépést, amíg az aktuális állapot "NO MEDIA PRESENT" lesz, ami azt jelenti, hogy a riasztást a rádió kikapcsolásával nyugtázták
- Végül zárja be a webszervert, és lépjen ki.
Ez a raiseAlarm.py szkript
5. lépés: Csináld magad

Az "érzékelő" és a "riasztás emelés" modell nem csak a fagyasztók számára készült, bárhol hasznos lehet, ahol az automatikus riasztást egy másik adathordozón keresztül kell továbbítani. Ha ez érdekelne, nyugodtan próbálkozzon.
A PI Zero W beállítása a mikrofonnal együtt
- Szerelje össze a hardvert a 3. lépés szerint
- Töltse le a fagyasztó-riasztási parancsfájlokat erről az utasításról, vagy a git tárolóból, amely néhány bónusz számot tartalmaz
$ git klón
A fedélzeti APA102 LED-ek használatához telepítenie kell a szoftvert is. Az apa102.py egy példányát beillesztettem a git munkakönyvtárába
Az érzékelő képzése
Hozzáadtam egy képzési lehetőséget a checkFreezer.py szkripthez. Ez önállóan futtatja, és diagnosztikát nyomtat a parancssorba, de először fel kell vennie néhány riasztási mintát csendes környezetben WAV fájlként, és ugyanezt kell tennie zajos környezetben. Az edzés befejezéséhez először meg kell találnia a legmagasabb FFT frekvenciát ("csúcsfrekvencia"), majd az adott frekvencia küszöbszintjét a trigger beállításához. Ehhez futtassa a checkFreezer szkriptet edzés üzemmódban a „-t” opcióval, és játssza le a riasztás felvételét.
$ python checkFreezer.py -t
Ez a szkriptet edzési módban futtatja. "Készen" nyomtat, amikor a látott kalapot inicializálja, és a LED zöldre vált, majd egy sort minden nem triviális zajhoz, pl.
$ python checkFreezer.py -t
Kész csúcsfrekvencia 55 trigger 1. szint aktiválódik? Hamis csúcsfrekvencia 645 trigger 484 szint aktiválódott? Hamis csúcsfrekvencia 645 trigger 380 szint aktiválódott? Hamis
A csúcsfrekvencia ebben az esetben 645, és ez lesz a triggerfrekvencia. Most, hogy megkapja a trigger szintet, futtassa újra a checkFreezer programot, állítsa be a ravaszt
$ python checkFreezer.py -t --trigger = 645
Készen áll a csúcsfrekvencia 645 trigger 1273 szintje? Hamis csúcsfrekvencia 645 trigger 653 szint aktiválva? Hamis csúcsfrekvencia 645 trigger 641 aktivált szint? Hamis csúcsfrekvencia 645 trigger 616 szint aktiválódott? Hamis
Végül szükségünk van egy trigger küszöbértékre, amely egy hangjelzés észlelésekor aktiválódik, de figyelmen kívül hagyja a zajt, pl
$ python checkFreezer.py -t --trigger = 645 --küszöb = 500
Készen áll a csúcsfrekvencia 645 trigger 581 szintje? Valódi csúcsfrekvencia 645 trigger szint 798 aktiválódott? Valódi csúcsfrekvencia 645 trigger 521 szint aktiválva? Igaz
Tesztelje ezt néhány zajos mintával, és meg kell tudnia határozni egy küszöbértéket, amely megkülönbözteti a hangszóró hangját és a környezeti zajt. Azt is látnia kell, hogy a LED pirosan világít, ha a hangjelzés néhány másodpercig lejátszódik. Ha gyors/lassú a bekapcsolás, módosítsa a parancsfájl beállításait
Csatlakozás a rádióhoz
A szkriptek saját beállításához történő konfigurálásához meg kell találnia azt az IP -címet és portszámot, amelyet az eszköz UPnP -szolgáltatásokhoz használ. Ezeket a rádióbeállításnak kell biztosítania. Az alapértelmezett portszám 8080, és meglepő lenne, ha más lenne.
Alapértelmezett riasztási üzenetet küldtem, freezer.mp3. Nyugodtan cserélje le saját üzenetére.
Szerkessze a szkriptet a megfelelő IP -címekkel, és futtassa a szkriptet.
$ python raiseAlarm.py
Ha minden rendben van, akkor a hangos és irritáló riasztási üzenet addig hallatszik a rádióból, amíg ki nem kapcsolja a rádiót, és nem törli a riasztást.
Amíg a szkript fut, egy mini webszervert futtat a riasztó mp3 -nak a rádióba való adására, esetleg biztonsági probléma, de csak a riasztási üzenet lejátszása közben aktív.
Élőben
Távolítsa el a „-t” edzési zászlót, és futtassa a checkFreezer programot saját értékeivel, pl
$ python checkFreezer.py --trigger = 645 --küszöb = 200
Az újraindításkor való elinduláshoz adja hozzá az /etc/rc.local, cd/home/pi/fagyasztó-riasztó
(python checkFreezer.py --trigger = 645 --threshold = 200> /tmp /freezer 2> /tmp /freezererror &) & exit 0
A zöld LED kigyullad, és készen áll a cselekvésre. Játssza le a riasztási hangjelzés felvételét, és néhány másodperc múlva a LED pirosan világít, és a riasztási üzenet megszólal a rádión.
Végül
Helyezze a PI -t a fagyasztóhoz közeli helyre, távol az útból és a tápegységtől. Kapcsolja be, és a zöld LED -nek világítania kell. Tesztelje a riasztás aktiválását az ajtó nyitva hagyásával. A lámpának pirosra kell váltania, és a riasztási üzenet megszólal a rádióban.
Siker !! Megcsináltad. Kényeztesse magát egy hosszú itallal a fagyasztó jégével, de ne felejtse el becsukni a fagyasztó ajtaját!
Ajánlott:
Hideg kávé riasztó készülék Arduino Uno használatával: 5 lépés

Hideg kávé riasztó készülék az Arduino Uno használatával: Létrehoztam egy riasztó készüléket, amely meghatározza a kávé (vagy tea) hőmérsékletét, megmutatja az állapotát, ha még mindig MELEG, MELEG vagy HIDEG, LED -ekkel (piros, sárga és kék) , figyelmeztető riasztást indít, ha hideg lesz és zümmögni kezd
Hűtőszekrény/fagyasztó javítása és frissítése (Bosch KSV29630): 5 lépés

Hűtőszekrény/fagyasztó javítása és frissítése (Bosch KSV29630): Javítás és amp; Frissítés helyett Csere & Tünetek: amikor a hűtőszekrény megpróbálja felgyújtani a kompresszort, néha működik, néha meghibásodik, és a zöld hőmérsékletjelző villog. Lehet, hogy sikerül elindítani a kompresszort, de utána
Zseblámpa fagyasztó: 11 lépés

Zseblámpa fagyasztó: Hordozható kis fagyasztó, amely régi zseblámpákból készült, és fagyasztva tartja a dolgokat, például jégkockákat és apró harapnivalókat hordozható használatra
A fagyasztó jég az altoidok dobozaiban merevebbé teszi őket a lyukak vágásához stb.: 3 lépés

A fagyos jég az Altoids dobozok belsejében merevebbé teszi őket a vágólyukakhoz stb. Ebben az utasításban egy egyszerű módot mutatunk be ezen altoid konzervdobozok fémének alátámasztására. A megközelítés
Tündérlé fagyasztó koktél robot: 7 lépés (képekkel)

Fairy Juicing Cocktail Robot: Ez a projekt a 2008 -as bécsi Ausztriában megrendezett Roboexotica konferenciára készült, ahol az italfogyasztási kategória első helyén állt. Íme, hogyan készült