Obsah:

Relé alarmu mrazničky: 5 kroků
Relé alarmu mrazničky: 5 kroků

Video: Relé alarmu mrazničky: 5 kroků

Video: Relé alarmu mrazničky: 5 kroků
Video: Jak odemknout fabii bez klíčů rukama za 2 vteřiny 2024, Červenec
Anonim
Relé alarmu mrazničky
Relé alarmu mrazničky

Naše mraznička je v technické místnosti, která je izolována od našeho obytného prostoru. Dveře mrazničky se občas nezavřou správně a spustí se alarm. Problém je v tom, že to nemůžeme slyšet, pokud jsme ve svém životním prostoru. Jak dostaneme zprávu, že jsou dveře mrazničky otevřené? Jedná se o běžný problém, máme doma zařízení, která s námi mluví, ale co se stane, když je z jakéhokoli důvodu neslyšíme. Začal jsem to jako trochu legrace, ale může to být užitečné v serióznější aplikaci.

Tento problém má 2 části, potřebujeme metodu detekce poplachu a metodu přenosu této skutečnosti do našeho obytného prostoru. Design, na kterém jsem se usadil, bylo použít Raspberry Pi k poslechu alarmu mrazničky a poté odeslat zvukovou poplachovou zprávu do mého domácího rádia, které má povoleno uPNP. Universal Plug and Play (UpnP) je standard pro zjišťování a interakci se službami nabízenými různými zařízeními v síti, včetně mediálních serverů a přehrávačů, i když si nemyslím, že se při vývoji standardu počítalo s mrazničkami. Varovná zpráva byla hlasitá a dráždivá a opakuje se donekonečna, dokud rádio nevypnete.

Rozhodl jsem se detekovat alarm pomocí Raspberry Pi Zero W a Seeed ReSpeaker 2-Mics Pi HAT Raspberry PI Zero je levná verze Raspberry Pi a možnost W má integrované WiFi, zatímco Seeed Pi HAT prodává za méně než 10 $, má vestavěné LED diody a uživatelské tlačítko. Pi HAT jsou rozšiřující karty, které se připojují přímo k Raspberry Pi a vytvářejí velmi jednoduchý postup montáže. Jakákoli verze Pi by pro tuto práci byla více než schopná a zvolený mikrofon lze nahradit, i když jsem v této sestavě využil vestavěné LED diody.

Je snadné zkontrolovat, zda vám rádio nebo televize bude fungovat. Bude pravděpodobně popsán jako „povolená DLNA“nebo podobně. Ke komunikaci používá uPNP. Na počítači se systémem Windows vyberte soubor mp3 a „Cast to Device“. Pokud se vaše zařízení zobrazí a můžete soubor přehrát, můžete začít.

Rozdělil jsem software na 2 pythonové skripty, checkFreezer.py, abych zkontroloval, zda bylo spuštěno upozornění na mrazák, a raiseAlarm.py vyvolal poplach. Tyto skripty lze vyvíjet a testovat samostatně a lze je snadno přizpůsobit nebo nahradit různými způsoby vyvolání poplachu pro různé mikrofony.

Zásoby

  • Software -https://github.com/wapringle/freezer-alarm
  • Raspberry PI Zero W
  • Viděl jsem ReSpeaker 2-Mics Pi HAT
  • Rádio s podporou uPNP

Krok 1: Navrhování detektoru

Když necháte dvířka mrazničky otevřená a teplota stoupne, mraznička vydá zvukový signál „píp píp píp píp“. Stejně jako u většiny elektronických zvukových signálů jde o jedinou frekvenci. Cílem je vyzkoušet zvukový vstup, provést rychlou Fourierovu transformaci (FFT), která transformuje časově závislý signál na frekvenčně založený, jinými slovy rozděluje signál tak, aby zobrazoval různé frekvence v signálu. Podívejte se na instruktabilní analyzátor spektra Raspberry Pi s RGB LED páskem Můžeme hledat vrchol na frekvenci bzučáku a spustit alarm, když je bzučák nějakou dobu aktivní.

Tento detektor má 2 požadavky

  • Mělo by detekovat bzučák, a to i za přítomnosti okolního hluku (eliminovat falešně negativní)
  • Nemělo by být spouštěno okolním hlukem (eliminujte falešně pozitivní)

Rozhodl jsem se, že provozovat Hoover v technické místnosti bude dobrý test. Nemělo by to spustit poplach a poplach by se měl spustit, když bzučák mrazničky zhasne a Hoover běží.

Krok 2: Konfigurace detektoru

Konfigurace detektoru
Konfigurace detektoru
Konfigurace detektoru
Konfigurace detektoru
Konfigurace detektoru
Konfigurace detektoru

S mým telefonem jsem vzal zvukové ukázky jako soubory WAV samotného mrazicího bzučáku, s hlučným pozadím a spuštěným Hooverem. Upravil jsem kód pro provádění FFT z příspěvku Čtení audio streamu pro FFT (Když máte pochybnosti, plagarise) a použil jsem skript fourierTest.py k vykreslení vzorků bzučáku surových a Fourierových transformací v tichých, hlučných a velmi hlučných pozadí. Špička úrovně na frekvenci 645 je v prvním grafu výrazná a je stále významná s velmi hlučným pozadím.

Krok 3: Konstrukce detektoru

Sestavení detektoru

Velmi jednoduché. Pi W je dodáván s vestavěným Wifi a HAT je přímo zapojen do kolíků GPIO na Pi. Konfigurace softwaru vyžaduje následující kroky

  • Nainstalujte si Raspbian distro na Raspberry Pi. Existuje na to spousta příruček, které to dokážou vysvětlit mnohem lépe než já.
  • Nastavit Wifi (výše)
  • Vyžaduje nainstalovaný balíček alsa

$ sudo apt-get install libasound-dev

$ pip install pyalsaaudio

  • Připojte HAT k malinovému PI
  • Při instalaci ovladačů pro HAT postupujte podle pokynů na uvedených webových stránkách.
  • Spusťte viděnou diagnostiku a zkontrolujte, zda HAT funguje a je správně nakonfigurován.

Program detektoru načte blok dat jako vzorek z mikrofonu, provede FFT a rozhodne, zda detekoval bzučák ve vzorku. Snažil jsem se udělat blok tak dlouhý, jak je to možné, snížením vzorkovací frekvence zvuku na 16 kHz a použitím největší vyrovnávací paměti, kterou by čtečka akceptovala. Obával jsem se, že výpočet FFT může způsobit vynechání rámců, ale to se nestalo.

Díky předem nahraným vzorkům v mém telefonu bylo vybudování detektoru mnohem snazší, protože jsem mohl provést kompletní sestavení na lavičce před testováním na místě v mrazáku.

Školení detektoru

Detektor byl vycvičen skenováním každého vzorku, když byl do detektoru přehráván záznam WAV bzučáku. Program vydává polohu ve FFT spektru s nejvyšší úrovní výkonu (špičkovou frekvencí) spolu s úrovní této špičkové frekvence. Bylo jednoduché zjistit frekvenci bzučáku a úroveň výkonu, které vyzařovalo.

Existují 2 způsoby, jak zjistit, zda došlo k pípnutí:-

  1. Byla frekvence bzučáku špičkovou frekvencí ve vzorku?
  2. nebo byla úroveň výkonu na frekvenci bzučáku nad prahovou hodnotou?

Každá metoda fungovala v tichém vzorku, ale druhá byla lepší s hlučným vzorkem, takže jsem to použil.

Někdy vzorek zakryl pípnutí, někdy to bylo mezi pípnutími a po každých 3 pípnutích následovala dlouhá pauza před dalším pípnutím. Aby byl spolehlivě detekován výskyt pípnutí, měl každý vzorek kladný hlas, pokud bylo detekováno pípnutí, a hlasovací hlas, pokud ne. Tyto hlasy byly váženy, aby se stanovil počet, který by narazil na pípnutí a pomalu se mezi časy rozpadal. Jakmile počet dosáhl prahu, mohl být spuštěn poplach. Pokud by byl jako vzorek pípnutí detekován náhodný šum, počet by se posunul zpět na nulu.

Potom potřebujeme váhy pro upvote a downvote společně s prahem. To jsem provedl pokusem a omylem u řady vzorků. Nepotřeboval jsem určit skutečnou frekvenci bzučáku, jen jsem hledal výjimečnou frekvenci ve spektru fft.

Krok 4: Odeslání zprávy do rádia

Vyvolání poplachu bylo provedeno pomocí samostatného skriptu. Jeho úkolem je v případě potřeby zapnout rádio, vniknout do jakéhokoli rádia, které hraje, a opakovat poplašnou zprávu, dokud se rádio znovu nevypne. Musel jsem zpětně analyzovat použitý protokol uPnP, protože jsem měl velké problémy se získáváním spolehlivých informací nebo příkladů. Několik referencí, které jsem považoval za užitečné, bylo

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ To má pěkný přehled o tom, jak to všechno do sebe 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 jsem Wireshark běžící na počítači s Windows, abych uvolnil sekvenci zpráv při přehrávání ukázkového souboru z počítače na rádiu a po troše fidlingu jsem dostal příkazovou sekvenci, která fungovala. Tohle je

  • Spusťte vyskakovací webový server, který zobrazí varovnou zprávu, když o to rádio požádá
  • Nastavte úroveň hlasitosti na LOUD (Varovná zpráva by měla upoutat pozornost všech)
  • Předejte uri varovné zprávy do rádia
  • Hlasujte v rádiu, dokud nebude aktuální stav „ZASTAVEN“
  • Pořiďte si rádio k „PLAY“uri
  • Opakujte poslední 2 kroky, dokud nebude aktuální stav „NO MEDIA PRESENT“, což znamená, že alarm byl potvrzen vypnutím rádia
  • Nakonec webový server zavřete a ukončete.

Toto je skript raiseAlarm.py

Krok 5: Udělejte to sami

Dělat to sám
Dělat to sám

Model „detektor“a „vyvolat poplach“není jen pro mrazničky, ale mohl by být užitečný všude tam, kde je třeba předávat automatizovaný poplach prostřednictvím jiného média. Pokud by vás to zajímalo, neváhejte.

Nastavení PI Zero W, včetně mikrofonu

  • Sestavte hardware jako v kroku 3
  • Stáhněte si skripty alarmů mrazáku z tohoto Instructable nebo z úložiště git, které obsahuje několik bonusových skladeb

$ git klon

Musíte také nainstalovat software, abyste mohli používat integrované LED diody APA102. Vložil jsem kopii apa102.py do pracovního adresáře git

Trénujte svůj detektor

Do skriptu checkFreezer.py jsem přidal možnost školení. Spustí se samostatně a vytiskne diagnostiku na příkazový řádek, ale nejprve musíte zaznamenat některé vzorky alarmu v tichém prostředí jako soubory WAV a totéž provést v hlučném prostředí. Chcete -li dokončit trénink, musíte nejprve najít frekvenci FFT s nejvyšší úrovní („špičková frekvence“) a poté prahovou úroveň pro tuto frekvenci pro nastavení spouště. Chcete-li to provést, spusťte skript checkFreezer v tréninkovém režimu s volbou „-t“a přehrajte záznam alarmu.

$ python checkFreezer.py -t

Tím se skript spustí v tréninkovém režimu. Vytiskne „připraveno“, když byla inicializována viděná HAT a LED se rozsvítí zeleně, poté řádek pro každý netriviální hluk, který slyší, např.

$ python checkFreezer.py -t

Připravena špičková frekvence 55 spuštěna úroveň 1 spuštěna? Falešná špičková frekvence 645 spuštěna úroveň 484 spuštěna? Byla spuštěna falešná špičková frekvence 645, úroveň spouštění 380? Nepravdivé

Špičková frekvence je v tomto případě 645 a ta se stává spouštěcí frekvencí. Chcete -li získat úroveň spouště, spusťte znovu checkFreezer a nastavte spoušť

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

Připravená špičková frekvence 645 spouštěcí úroveň spuštěna 1273? Falešná špičková frekvence 645 spuštěna úroveň 653 spuštěna? Falešná špičková frekvence 645 spuštěna úroveň 641 spuštěna? Falešná špičková frekvence 645 spuštěna úroveň 616 spuštěna? Nepravdivé

Nakonec potřebujeme spoušť, která se spustí, když je detekováno pípnutí, ale ignoruje hluk, např

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

Připravená špičková frekvence 645 spouštěcí úroveň 581 spuštěna? Skutečná špičková frekvence 645 spuštěna úroveň 798 spuštěna? Skutečná špičková frekvence 645 spuštěna úroveň 521 spuštěna? Skutečný

Otestujte to na několika hlučných vzorcích a měli byste být schopni stanovit prahovou hodnotu, která rozlišuje mezi zvukem bzučáku a okolním hlukem. Měli byste také vidět LED diodu zčervená, když se na několik sekund přehraje pípnutí. Pokud to má být rychlé/pomalé, upravte nastavení ve skriptu

Připojení k rádiu

Chcete -li konfigurovat skripty pro vlastní nastavení, musíte zjistit IP adresu a číslo portu, které vaše zařízení používá pro služby UPnP. Nastavení rádia by to mělo zajistit. Výchozí číslo portu je 8080 a bylo by překvapením, kdyby se lišilo.

Zadal jsem výchozí poplachovou zprávu freezer.mp3. Neváhejte nahradit vlastní zprávou.

Upravte skript s příslušnými IP adresami a spusťte skript.

$ python raiseAlarm.py

Pokud je vše v pořádku, bude z vašeho rádia vycházet hlasitá a dráždivá poplašná zpráva, dokud se rádio nevypne, čímž alarm zruší.

Během běhu skriptu je spuštěn mini webový server, který slouží k alarmu mp3 do rádia, možná k bezpečnostnímu problému, ale je aktivní pouze při přehrávání poplachové zprávy.

Žít

Odstraňte tréninkový příznak „-t“a spusťte checkFreezer s vlastními hodnotami, např

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

Chcete -li, aby to začalo po restartu, přidejte do souboru /etc/rc.local, cd/home/pi/mrazák-alarm

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

Zelená LED se rozsvítí a jste připraveni k akci. Přehrajte záznam pípnutí budíku a po několika sekundách se LED dioda rozsvítí červeně a na vašem rádiu se přehraje poplachová zpráva.

Konečně

Umístěte PI na místo poblíž mrazničky, mimo cestu a napájení. Zapněte napájení a zelená LED by se měla rozsvítit. Vyzkoušejte spuštění alarmu ponecháním otevřených dveří. Kontrolka by se měla rozsvítit červeně a v rádiu by se měla přehrát poplašná zpráva.

Úspěch !! Dokázal jsi to. Dopřejte si dlouhý nápoj s ledem z mrazničky, ale nezapomeňte zavřít dvířka mrazničky!

Doporučuje: