Sisällysluettelo:

Pakastimen hälytysrele: 5 vaihetta
Pakastimen hälytysrele: 5 vaihetta

Video: Pakastimen hälytysrele: 5 vaihetta

Video: Pakastimen hälytysrele: 5 vaihetta
Video: хурма или королек из косточки через морозильник 2024, Heinäkuu
Anonim
Pakastimen hälytysrele
Pakastimen hälytysrele

Pakastimemme on kodinhoitohuoneessa, joka on eristetty asuintilastamme. Joskus pakastimen ovi ei sulkeudu kunnolla ja hälytys soi. Ongelmana on, että emme voi kuulla sitä, jos olemme asuinalueellamme. Miten saamme viestin, että pakastimen ovi on auki? Tämä on yleinen ongelma, meillä on kodissamme laitteita, jotka puhuvat meille, mutta mitä tapahtuu, jos emme jostain syystä kuule niitä. Aloitin tämän hauskana, mutta siitä voi olla hyötyä vakavammassa sovelluksessa.

Tässä ongelmassa on kaksi osaa, tarvitsemme menetelmän hälytyksen laukaisun havaitsemiseksi ja menetelmän tämän tosiasian välittämiseksi asuinalueellemme. Suunnitteluni, johon päädyin, oli käyttää Raspberry Pi: tä kuuntelemaan pakastimen hälytystä ja lähettää sitten hälytysviesti kotitaloudelle, joka on uPNP -käytössä. Universal Plug and Play (UpnP) on standardi löytää ja käyttää vuorovaikutuksessa verkon eri laitteiden, mukaan lukien mediapalvelimet ja soittimet, tarjoamia palveluita, vaikka en usko, että pakastimia oli suunniteltu standardin kehittämisen aikana. Varoitusviesti tehtiin kovaa ja ärsyttävää ja toistuu loputtomasti, kunnes radio sammutetaan.

Päätin havaita hälytyksen Raspberry Pi Zero W: llä ja Seeed ReSpeaker 2-Mics Pi HAT: lla. 10 dollaria, siinä on sisäänrakennetut LEDit ja käyttäjäpainike. Pi HAT ovat laajennuskortteja, jotka liitetään suoraan Raspberry Pi -laitteeseen, mikä tekee erittäin yksinkertaisen kokoonpanotoimenpiteen. Mikä tahansa Pi-versio olisi enemmän kuin kykenevä työhön, ja valittu mikrofoni voidaan korvata, vaikka käytin sisäänrakennettuja LED-valoja tässä rakenteessa.

On helppo tarkistaa, toimiiko radio tai televisio. Sitä kuvataan todennäköisemmin "DLNA -käytössä" tai vastaavana. Tämä käyttää uPNP: tä kommunikointiin. Valitse Windows -tietokoneessa mp3 -tiedosto ja "Cast to Device". Jos laite näkyy ja voit toistaa tiedoston, voit aloittaa.

Jaoin ohjelmiston kahteen python -skriptiin, checkFreezer.py tarkistaakseni, onko pakastimen hälytys lauennut, ja raiseAlarm.py hälytyksen nostamiseksi. Nämä skriptit voitaisiin kehittää ja testata erikseen, ja ne voidaan helposti mukauttaa tai korvata erilaisilla mikrofonien hälytysmenetelmillä.

Tarvikkeet

  • Ohjelmisto -https://github.com/wapringle/freezer-alarm
  • Vadelma PI Zero W
  • Nähtiin ReSpeaker 2-Mics Pi HAT
  • uPNP -yhteensopiva radio

Vaihe 1: Ilmaisimen suunnittelu

Kun pakastimen ovi jätetään auki ja lämpötila nousee, pakastin antaa äänimerkin "piip piip piip". Kuten useimmat elektroniset piippaukset, tämä on yksi taajuus. Ajatuksena on ottaa näytteitä audiotulosta, suorittaa nopea Fourier -muunnos (FFT), joka muuttaa aikapohjaisen signaalin taajuuspohjaiseksi, toisin sanoen hajottaa signaalin signaalin eri taajuuksien näyttämiseksi. Katso Instructable Raspberry Pi -spektrianalysaattori RGB -LED -nauhalla. Voimme etsiä huipun summerin taajuudella ja laukaista hälytyksen, kun summeri on ollut aktiivinen jonkin aikaa.

Tällä ilmaisimella on kaksi vaatimusta

  • Sen pitäisi tunnistaa summeri, vaikka ympäristössä olisi melua (eliminoi väärän negatiivisen)
  • Sitä ei saa laukaista ympäristön melusta (poista vääriä positiivisia)

Päätin, että Hooverin suorittaminen kodinhoitohuoneessa olisi hyvä testi. Sen ei pitäisi laukaista hälytystä, ja hälytys tulisi laukaista, kun pakastimen summeri sammuu ja Hoover on käynnissä.

Vaihe 2: Ilmaisimen määrittäminen

Ilmaisimen määrittäminen
Ilmaisimen määrittäminen
Ilmaisimen määrittäminen
Ilmaisimen määrittäminen
Ilmaisimen konfigurointi
Ilmaisimen konfigurointi

Otin puhelimella ääninäytteitä yksin pakastimen summerin WAV -tiedostoina, meluisalla taustalla ja Hooverin ollessa käynnissä. Muokkasin koodin FFT: n suorittamiseksi FFT: n Reading Audio Stream for post -julkaisun jälkeen (jos epäilet, plagaroi) ja käytin komentosarjaa fourierTest.py piirtämään summerin raaka- ja Fourier -muunnetut näytteet hiljaisella, meluisalla ja erittäin meluisalla taustalla. Tason piikki taajuudella 645 korostuu ensimmäisessä juonessa ja on edelleen merkittävä erittäin meluisalla taustalla.

Vaihe 3: Ilmaisimen rakentaminen

Ilmaisimen kokoaminen

Erittäin yksinkertainen. Pi W: ssä on sisäänrakennettu Wifi ja HAT on kytketty dieetisti Pi: n GPIO-nastoihin. Ohjelmiston määrittäminen edellyttää vaiheita

  • Asenna raspbian -distro Raspberry Pi: lle. Tästä on paljon oppaita, jotka voivat selittää sen paljon paremmin kuin minä.
  • Wifi -yhteyden määrittäminen (sama yllä)
  • Se tarvitsee alsa -paketin asennettuna

$ sudo apt-get install libasound-dev

$ pip asenna pyalsaaudio

  • Kytke hattu vadelma PI: hen
  • Asenna HAT -ohjaimet noudattamalla näkyneen verkkosivuston ohjeita.
  • Suorita näkyvä diagnostiikka tarkistaaksesi, että HAT toimii ja on määritetty oikein.

Ilmaisinohjelma lukee datalohkon näytteeksi mikrofonista, suorittaa FFT -toiminnon ja päättää, onko se havainnut näytteen summerin vai ei. Yritin tehdä lohkosta mahdollisimman pitkän alentamalla äänen näytteenottotaajuuden 16 kHz: iin ja käyttämällä suurinta puskuria, jonka lukija hyväksyisi. Olin huolissani siitä, että FFT -laskelma saattaa aiheuttaa kehysten pudotuksen, mutta niin ei tapahtunut.

Esinäytettyjen näytteiden ottaminen puhelimeeni helpotti ilmaisimen rakentamista huomattavasti, koska pystyin tekemään koko rakenteen penkillä ennen kuin testasin pakastimen paikan päällä.

Ilmaisimen harjoittelu

Ilmaisin koulutettiin skannaamalla jokainen näyte, kun summerin WAV -tallenne toistettiin ilmaisimelle. Ohjelma lähettää FFT -spektrin paikan korkeimmalla tehotasolla (huipputaajuus) yhdessä kyseisen huipputaajuuden tason kanssa. Oli yksinkertaista löytää summerin taajuus ja sen lähettämä tehotaso.

On kaksi tapaa havaita piippaus:-

  1. Oliko summerin taajuus näytteen huipputaajuus?
  2. vai oliko tehotaso summerin taajuudella kynnyksen yläpuolella?

Kumpikin menetelmä toimi hiljaisessa näytteessä, mutta toinen oli parempi meluisalla näytteellä, joten käytin sitä.

Joskus näyte kattoi äänimerkin, joskus piippausten välissä, ja jokaisen kolmen piippauksen jälkeen oli pitkä tauko ennen seuraavia äänimerkkejä. Jotta voidaan luotettavasti havaita, että äänimerkkejä oli tapahtunut, jokaisella näytteellä oli ylääänestys, jos piippaus havaittiin, ja alaääni, jos ei. Nämä äänet painotettiin laskemaan lukema, joka kohosi äänimerkillä ja hajoaa hitaasti välillä. Kun määrä on saavuttanut kynnyksen, hälytys voidaan laukaista. Jos satunnainen melu havaittiin piippausnäytteenä, lukema siirtyisi takaisin nollaan.

Tarvitsemme ylä- ja alaäänestyksen painot yhdessä kynnyksen kanssa. Tämän tein yrittämällä ja erehtymällä useiden näytteiden suhteen. Minun ei tarvinnut määrittää todellista summerin taajuutta, etsin vain erottelutaajuutta fft -spektristä.

Vaihe 4: Viestin lähettäminen radioon

Hälytyksen nostaminen tehtiin erillisellä käsikirjoituksella. Tehtävänä on kytkeä radio päälle tarvittaessa, murtautua mihin tahansa radioon ja toistaa hälytysviestiä, kunnes radio sammuu uudelleen. Minun oli käännettävä käytetty uPnP -protokolla, koska minulla oli suuria vaikeuksia saada luotettavia tietoja tai esimerkkejä. Pari viittausta, jotka pidin hyödyllisinä, olivat hyödyllisiä

  • www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/ Tässä on hyvä yleiskuva siitä, miten kaikki sopii yhteen
  • developer.sony.com/develop/audio-control-api/get-started/browse-dlna-file.
  • stackoverflow.com/questions/28422609/how-to-send-setavtransporturi-using-upnp-c/35819973

Käytin Windows -tietokoneella käynnissä olevaa Wiresharkia poistaakseni viestisekvenssin, kun toisin mallitiedostoa tietokoneeltani radiossa, ja pienen hämmentämisen jälkeen sain toimivan komentosarjan. Tämä on

  • Käynnistä ponnahdusikkuna -verkkopalvelin, joka näyttää varoitusviestin, kun radio pyytää sitä
  • Aseta äänenvoimakkuudeksi LOUD (varoitusviestin tulisi kiinnittää jokaisen huomio)
  • Välitä varoitusviestin uri radioon
  • Äänestä radiota, kunnes nykyinen tila on "STOPPED"
  • Hanki radio "TOISTA" uri
  • Toista 2 viimeistä vaihetta, kunnes nykyinen tila on "NO MEDIA PRESENT", mikä tarkoittaa, että hälytys on kuitattu sammuttamalla radio
  • Lopuksi sulje verkkopalvelin ja poistu.

Tämä on script raiseAlarm.py

Vaihe 5: Tee se itse

Tee se itse
Tee se itse

"Ilmaisin" ja "nosta hälytys" -malli eivät ole vain pakastimille, vaan ne voivat olla hyödyllisiä missä tahansa, missä automaattinen hälytys on välitettävä toisen välineen kautta. Jos tämä kiinnostaa, kokeile rohkeasti.

PI Zero W: n asennus, mukaan lukien mikrofoni

  • Kokoa laitteisto kuten vaiheessa 3
  • Lataa pakastimen hälytysskriptit tästä Instructable-ohjelmasta tai git-arkistosta, joka sisältää muutaman bonusraidan

$ git klooni

Sinun on myös asennettava ohjelmisto, jotta voit käyttää sisäisiä APA102-LED-valoja. Olen lisännyt kopion apa102.py git -työhakemistoon

Harjoita ilmaisinta

Olen lisännyt koulutusvaihtoehdon checkFreezer.py -skriptiin. Tämä suorittaa sen itsenäisesti ja tulostaa diagnostiikan komentoriville, mutta ensin sinun on tallennettava joitakin hälytysnäytteitä hiljaisessa ympäristössä WAV-tiedostoina ja tehtävä sama meluisassa. Harjoituksen suorittamiseksi sinun on ensin löydettävä korkeimman tason FFT -taajuus ("huipputaajuus") ja sitten kyseisen taajuuden kynnystaso liipaisimen asettamiseksi. Suorita tämä suorittamalla skriptitarkistus FreeFreezer harjoitustilassa "-t" -vaihtoehdolla ja toista hälytyksen tallenne.

$ python checkFreezer.py -t

Tämä suorittaa komentosarjan harjoitustilassa. Se tulostaa "valmiina", kun näkynyt HAT on alustettu ja LED-valo muuttuu vihreäksi.

$ python checkFreezer.py -t

Valmis huipputaajuus 55 liipaisutaso 1 laukaistu? Väärä huipputaajuus 645 laukaisee tason 484? Väärä huipputaajuus 645 laukaisee tason 380? Väärä

Huipputaajuus on tässä tapauksessa 645 ja siitä tulee liipaisutaajuus. Saadaksesi laukaisutason, suorita checkFreezer uudelleen ja säädä liipaisin

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

Valmis huipputaajuus 645 laukaisee tason 1273? Väärä huipputaajuus 645 laukaisee tason 653? Väärä huipputaajuus 645 laukaisee tason 641? Väärä huipputaajuus 645 laukaisee tason 616? Väärä

Lopuksi tarvitsemme liipaisukynnyksen, joka laukaisee, kun piippaus havaitaan, mutta jättää huomiotta esim

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

Valmis huipputaajuus 645 laukaisee tason 581? Todellinen huipputaajuus 645 laukaisee tason 798? Todellinen huipputaajuus 645 laukaisee tason 521? Totta

Testaa tämä parilla meluisalla näytteellä ja sinun pitäisi pystyä määrittämään kynnysarvo, joka erottaa äänenvaimentimen äänen ja ympäristön melun. LED -valon pitäisi myös muuttua punaiseksi, kun äänimerkkiä toistetaan muutaman sekunnin ajan. Jos se tulee nopeasti/hitaasti, muokkaa komentosarjan asetuksia

Yhdistäminen radioon

Jos haluat määrittää komentosarjat omaan asetukseesi, sinun on löydettävä IP -osoite ja portin numero, jota laite käyttää UPnP -palveluihin. Radioasetusten pitäisi tarjota nämä. Oletusportin numero on 8080, ja olisi yllätys, jos se olisi erilainen.

Olen lähettänyt oletushälytysviestin, freezer.mp3. Voit korvata sen omalla viestilläsi.

Muokkaa komentosarjaa sopivilla IP -osoitteilla ja suorita komentosarja.

$ python raiseAlarm.py

Jos kaikki on hyvin, kova ja ärsyttävä hälytysviesti soi radiosta, kunnes radio sammutetaan, mikä peruuttaa hälytyksen.

Skriptin ollessa käynnissä se käyttää mini -verkkopalvelinta, joka palvelee mp3 -hälytystä radioon, mahdollisesti turvallisuusongelma, mutta se on aktiivinen vain hälytysviestin toiston aikana.

Livenä

Poista”-t” -harjoituslippu ja suorita checkFreezer omilla arvoillasi, esim

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

Aloita se uudelleenkäynnistyksen yhteydessä lisäämällä /etc/rc.local, cd/koti/pi/pakastin-hälytys

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

Vihreä LED -valo syttyy ja olet valmis toimintaan. Toista hälytysäänimerkin tallenne ja muutaman sekunnin kuluttua LED muuttuu punaiseksi ja hälytysviesti toistetaan radiossa.

Lopuksi

Sijoita PI pakastimen lähellä olevaan paikkaan, pois tieltä ja virtalähteeseen. Käynnistä ja vihreän LED -valon pitäisi syttyä. Testaa hälytyksen laukaisu jättämällä ovi auki. Valon pitäisi muuttua punaiseksi ja hälytysviesti soi radiossa.

Menestys !! Olet tehnyt sen. Hemmottele itseäsi drinkillä pakastimen jäällä, mutta älä unohda sulkea pakastimen ovea!

Suositeltava: