Obsah:

Relé alarmu mrazničky: 5 krokov
Relé alarmu mrazničky: 5 krokov

Video: Relé alarmu mrazničky: 5 krokov

Video: Relé alarmu mrazničky: 5 krokov
Video: Zemismart SPM01 - компактный двунаправленный zigbee энергомонитор на токовом трансформаторе 2024, Júl
Anonim
Relé alarmu mrazničky
Relé alarmu mrazničky

Naša mraznička je v technickej miestnosti, ktorá je izolovaná od nášho obytného priestoru. Dvere mrazničky sa občas nezatvoria správne a spustí sa alarm. Problém je v tom, že to nemôžeme počuť, ak sme v našom životnom priestore. Ako dostaneme správu, že dvere mrazničky sú otvorené? Ide o bežný problém, v domácnostiach máme zariadenia, ktoré s nami hovoria, ale čo sa stane, ak ich z akéhokoľvek dôvodu nepočujeme. Začal som s tým ako sranda, ale môže to poslúžiť aj vo vážnejšej aplikácii.

Tento problém má 2 časti: potrebujeme metódu na zistenie spustenia alarmu a metódu na prenos tejto skutočnosti do nášho obytného priestoru. Rozhodol som sa použiť Raspberry Pi na počúvanie alarmu mrazničky a potom na odoslanie zvukovej poplachovej správy do môjho domáceho rádia, ktoré má povolený uPNP. Universal Plug and Play (UpnP) je štandard pre objavovanie a interakciu so službami, ktoré ponúkajú rôzne zariadenia v sieti, vrátane mediálnych serverov a prehrávačov, aj keď si nemyslím, že by sa pri vývoji štandardu počítalo s mrazničkami. Varovná správa bola hlasná a dráždivá a opakuje sa donekonečna, kým sa nevypne rádio.

Rozhodol som sa detekovať alarm pomocou Raspberry Pi Zero W a Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero je nízkonákladová verzia Raspberry Pi a možnosť W má vstavané WiFi, zatiaľ čo Seeed Pi HAT predáva za menej ako 10 dolárov, má vstavané diódy LED a užívateľské tlačidlo. Pi HAT sú rozširujúce karty, ktoré sa pripájajú priamo k Raspberry Pi a robia veľmi jednoduchý postup montáže. Akákoľvek verzia Pi by bola pre túto prácu viac než schopná a zvolený mikrofón je možné nahradiť, aj keď som v tejto zostave použil vstavané diódy LED.

Je ľahké skontrolovať, či vám rádio alebo televízor bude fungovať. S väčšou pravdepodobnosťou bude popísaný ako „povolená DLNA“alebo podobne. Na komunikáciu používa uPNP. Na počítači so systémom Windows vyberte súbor mp3 a „Prenášať do zariadenia“. Ak sa vaše zariadenie zobrazí a môžete súbor prehrať, môžete ísť.

Rozdelil som softvér na 2 pythonové skripty, checkFreezer.py, aby som skontroloval, či bolo spustené upozornenie na mrazničku, a zvýšením alarmu zvýšením alarmu. Tieto skripty je možné vyvinúť a testovať oddelene a dajú sa ľahko prispôsobiť alebo nahradiť rôznymi spôsobmi vyvolávania poplachov pre rôzne mikrofóny.

Zásoby

  • Softvér -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • Videl ReSpeaker 2-Mics Pi HAT
  • Rádio s podporou uPNP

Krok 1: Návrh detektora

Keď zostanú dvere mrazničky otvorené a teplota stúpne, mraznička vydá zvukový signál „píp píp píp píp“. Bežne pre väčšinu elektronických pípnutí je to jedna frekvencia. Cieľom je vzorkovať zvukový vstup, vykonať rýchlu Fourierovu transformáciu (FFT), ktorá transformuje časový signál na frekvenčný, inými slovami, rozloží signál, aby sa v signáli zobrazili rôzne frekvencie. Pozrite si inštruovateľný analyzátor spektra malín Pi s RGB LED pásikom Môžeme hľadať vrchol pri frekvencii bzučiaka a spustiť alarm, keď je bzučiak nejaký čas aktívny.

Tento detektor má 2 požiadavky

  • Mal by detekovať bzučiak, dokonca aj za prítomnosti okolitého hluku (eliminovať falošne negatívne)
  • Nesmie byť spustený okolitým hlukom (eliminujte falošne pozitívne)

Rozhodol som sa, že spustenie Hoovera v technickej miestnosti bude dobrým testom. Nemalo by to spustiť alarm a poplach by sa mal spustiť, keď zaznie bzučiak mrazničky a spustí sa Hoover.

Krok 2: Konfigurácia detektora

Konfigurácia detektora
Konfigurácia detektora
Konfigurácia detektora
Konfigurácia detektora
Konfigurácia detektora
Konfigurácia detektora

S mojím telefónom som vzal zvukové ukážky ako súbory WAV samotného mraziaceho bzučiaka, s hlučným pozadím a so spusteným Hooverom. Upravil som kód tak, aby vykonával FFT z príspevku Čítanie zvukového streamu pre FFT (Ak máte pochybnosti, plagarise) a použil som skript fourierTest.py na vykreslenie vzoriek bzučiaka v surovom stave a Fourierovej transformácii v tichom, hlučnom a veľmi hlučnom prostredí. Nárast hladiny na frekvencii 645 je výrazný v prvom grafe a je stále výrazný s veľmi hlučným pozadím.

Krok 3: Konštrukcia detektora

Zostavenie detektora

Veľmi jednoduché. Pi W je dodávaný so vstavaným Wifi a HAT je priamo zapojený do pinov GPIO na Pi. Konfigurácia softvéru vyžaduje tieto kroky

  • Nainštalujte raspbian distro na Raspberry Pi. Existuje množstvo sprievodcov, ktorí to môžu vysvetliť oveľa lepšie ako ja.
  • Nastavte Wi -Fi (podobne ako vyššie)
  • Vyžaduje nainštalovaný balík alsa

$ sudo apt-get install libasound-dev

$ pip install pyalsaaudio

  • Pripojte HAT k malinovému PI
  • Pri inštalácii ovládačov pre HAT postupujte podľa pokynov na navštívenej webovej stránke.
  • Spustite uvedenú diagnostiku a skontrolujte, či HAT funguje a je správne nakonfigurovaný.

Program detektora načíta blok dát ako vzorku z mikrofónu, urobí FFT a rozhodne, či zistil alebo nezaznamenal bzučiak vo vzorke. Snažil som sa urobiť blok čo najdlhší znížením vzorkovacej frekvencie zvuku na 16 kHz a použitím najväčšieho vyrovnávacej pamäte, ktorú by čítačka akceptovala. Obával som sa, že výpočet FFT môže spôsobiť vypadnutie rámcov, ale nestalo sa tak.

Vďaka vopred nahraným vzorkám v telefóne bolo zostavenie detektora oveľa jednoduchšie, pretože pred testovaním na mieste v mrazničke som mohol vykonať kompletné zostavenie na lavičke.

Tréning detektora

Detektor bol trénovaný skenovaním každej vzorky, keď bol do detektora prehrávaný záznam WAV bzučiaka. Program produkuje pozíciu v FFT spektre s najvyššou úrovňou výkonu (špičková frekvencia) spolu s úrovňou tejto špičkovej frekvencie. Bolo jednoduché nájsť frekvenciu bzučiaka a úroveň výkonu, ktoré vysielalo.

Existujú 2 spôsoby, ako zistiť, či došlo k pípnutiu:-

  1. Bola frekvencia bzučiaka najvyššou frekvenciou vo vzorke?
  2. alebo bola úroveň výkonu pri frekvencii bzučiaka nad prahovou hodnotou?

Každá metóda fungovala v tichej vzorke, ale druhá bola lepšia s hlučnou vzorkou, takže som ju použil.

Niekedy vzorka zakryla pípnutie, niekedy bola medzi pípnutiami a po každých troch pípnutiach nasledovala dlhá prestávka pred ďalším pípnutím. Aby sa spoľahlivo zistilo, že došlo k množine pípnutí, každá vzorka mala kladný hlas, ak bolo zistené pípnutie, a znížený hlas, ak nie. Tieto hlasy boli vážené, aby sa určil počet, ktorý by narazil na vzorku pípnutia a medzitým by sa pomaly rozpadal. Akonáhle počet dosiahne hraničnú hodnotu, môže byť spustený alarm. Ak by bol ako zvukový signál detekovaný náhodný šum, počet by sa posunul späť na nulu.

Potom potrebujeme váhy pre upvote a downvote spolu s prahovou hodnotou. Urobil som to pokusom a omylom pre niekoľko vzoriek. Nepotreboval som určiť skutočnú frekvenciu bzučiaka, len som hľadal vynikajúcu frekvenciu v spektre ftf.

Krok 4: Odoslanie správy do rádia

Vybudenie poplachu sa vykonalo pomocou samostatného skriptu. Jeho úlohou je v prípade potreby zapnúť rádio, vniknúť do toho, čo rádio hrá, a opakovať poplašnú správu, kým sa rádio znova nevypne. Musel som spätne analyzovať použitý protokol uPnP, pretože som mal veľké problémy so získavaním spoľahlivých informácií alebo príkladov. Niekoľko referencií, ktoré som považoval za užitočné, bolo

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Toto má pekný prehľad o tom, ako to všetko do seba zapadá
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Použil som Wireshark spustený na počítači so systémom Windows na zrušenie výberu poradia správ pri prehrávaní ukážkového súboru z počítača v rádiu a po troche fičania som dostal príkazovú sekvenciu, ktorá fungovala. Toto je

  • Spustite vyskakovací webový server, ktorý zobrazí výstražnú správu, keď o to rádio požiada
  • Nastavte úroveň hlasitosti na LOUD (Varovná správa by mala upútať pozornosť všetkých)
  • Odošlite identifikátor uri výstražnej správy do rádia
  • Hlasujte v rádiu, kým nebude aktuálny stav „ZASTAVENÝ“
  • Nechajte si rádio „PLAY“hrať rádio
  • Opakujte posledné 2 kroky, kým nebude aktuálny stav „BEZ PRÍTOMNOSTI MÉDIÍ“, čo znamená, že alarm bol potvrdený vypnutím rádia
  • Nakoniec zatvorte webový server a ukončite program.

Toto je skript raiseAlarm.py

Krok 5: Urobte si to sami

Robiť to sám
Robiť to sám

Model „detektor“a „vyvolať poplach“nie je len pre mrazničky, ale mohol by byť užitočný kdekoľvek, kde je potrebné automatizovaný poplach prenášať prostredníctvom iného média. Ak by vás to zaujímalo, neváhajte ísť.

Nastavenie PI Zero W vrátane mikrofónu

  • Zostavte hardvér ako v kroku 3
  • Stiahnite si skripty alarmu mrazničky z tohto Instructable alebo z úložiska git, ktoré obsahuje niekoľko bonusových skladieb

$ git klon

Musíte tiež nainštalovať softvér, aby ste mohli používať integrované diódy LED APA102. Vložil som kópiu apa102.py do pracovného adresára git

Trénujte svoj detektor

Do skriptu checkFreezer.py som pridal možnosť školenia. Spustí sa samostatne a vytlačí diagnostiku na príkazový riadok, ale najskôr musíte nahrať niekoľko ukážok alarmu v tichom prostredí ako súbory WAV a to isté urobiť v hlučnom prostredí. Na dokončenie školenia musíte najskôr nájsť frekvenciu FFT s najvyššou úrovňou („špičková frekvencia“) a potom prahovú úroveň pre túto frekvenciu na nastavenie spúšťača. Za týmto účelom spustite skript checkFreezer v tréningovom režime s možnosťou „-t“a prehrajte záznam alarmu.

$ python checkFreezer.py -t

Skript sa spustí v tréningovom režime. Vytlačí sa „pripravené“, keď sa inicializovaný viditeľný HAT rozsvieti a LED dióda sa rozsvieti na zeleno, potom riadok pre každý netriviálny hluk, ktorý počuje, napr.

$ python checkFreezer.py -t

Je pripravená špičková frekvencia 55 spustená úroveň 1 spustená? Spustená falošná špičková frekvencia 645, spúšťacia úroveň 484? Bola spustená falošná špičková frekvencia 645, úroveň spustenia 380? Falošné

Špičková frekvencia je v tomto prípade 645 a tá sa stane spúšťacou frekvenciou. Teraz, aby ste získali úroveň spúšťača, znova spustite checkFreezer a nastavte spúšťač

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

Pripravená špičková frekvencia 645 spustená úroveň 1273 spustená? Bola spustená falošná špičková frekvencia 645, spúšťacia úroveň 653? Spustila sa falošná špičková frekvencia 645, spúšťacia úroveň 641? Bola spustená falošná špičková frekvencia 645, spúšťacia úroveň 616? Falošné

Nakoniec potrebujeme spúšťací prah, ktorý sa spustí, keď je detekované pípnutie, ale ignoruje hluk, napr

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

Pripravená špičková frekvencia 645 spustená úroveň 581 spustená? Skutočne špičková frekvencia 645 spustená úroveň 798 spustená? Je spustená skutočná špičková frekvencia 645, úroveň spustenia 521? Pravda

Otestujte to na niekoľkých hlučných vzorkách a mali by ste byť schopní určiť prahovú hodnotu, ktorá rozlišuje medzi zvukom pípača a okolitým hlukom. Mali by ste tiež vidieť LED diódu sčervenať, keď zaznie zvukový signál na niekoľko sekúnd. Ak to má prísť rýchlo/pomaly, upravte nastavenia v skripte

Pripojenie k rádiu

Ak chcete nakonfigurovať skripty pre vlastné nastavenie, musíte nájsť IP adresu a číslo portu, ktoré vaše zariadenie používa na služby UPnP. Toto by malo poskytovať nastavenie rádia. Predvolené číslo portu je 8080 a bolo by prekvapením, keby sa líšilo.

Zadal som predvolenú alarmovú správu freezer.mp3. Neváhajte nahradiť vlastnou správou.

Upravte skript s príslušnými adresami IP a spustite ho.

$ python raiseAlarm.py

Ak je všetko v poriadku, hlasné a dráždivé poplašné správy budú z vášho rádia vychádzať, kým sa rádio nevypne, čím sa alarm zruší.

Kým je skript spustený, beží na mini webovom serveri, ktorý slúži na poplach mp3 v rádiu, čo je pravdepodobne problém zabezpečenia, ale je aktívny iba počas prehrávania poplašnej správy.

Vysielanie naživo

Odstráňte tréningový príznak „-t“a spustite checkFreezer s vlastnými hodnotami, napr

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

Ak chcete začať reštartovať, pridajte súbor /etc/rc.local, cd/home/pi/mraziaci alarm

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

Rozsvieti sa zelená LED dióda a ste pripravení na akciu. Prehrajte záznam zvukového signálu budíka a po niekoľkých sekundách sa dióda LED rozsvieti načerveno a vo vašom rádiu sa spustí správa s alarmom.

Konečne

Umiestnite PI na miesto blízko mrazničky, mimo cesty a napájania. Zapnite napájanie a zelená LED dióda by sa mala rozsvietiť. Skúste spustiť alarm tak, že necháte otvorené dvere. Kontrolka by mala svietiť na červeno a v rádiu by sa mala prehrať správa o alarme.

Úspech !! Dokázal si to. Doprajte si dlhý nápoj s ľadom z mrazničky, ale nezabudnite zavrieť dvere mrazničky!

Odporúča: