Sisällysluettelo:

Pool Pi Guy - tekoälyohjattu hälytysjärjestelmä ja altaan valvonta Raspberry Pi: n avulla: 12 vaihetta (kuvilla)
Pool Pi Guy - tekoälyohjattu hälytysjärjestelmä ja altaan valvonta Raspberry Pi: n avulla: 12 vaihetta (kuvilla)

Video: Pool Pi Guy - tekoälyohjattu hälytysjärjestelmä ja altaan valvonta Raspberry Pi: n avulla: 12 vaihetta (kuvilla)

Video: Pool Pi Guy - tekoälyohjattu hälytysjärjestelmä ja altaan valvonta Raspberry Pi: n avulla: 12 vaihetta (kuvilla)
Video: Анализ*: «Как Алиса Вейдель (АдГ) сводит счеты с политическими проступками в Welt» (Часть 12) 2024, Heinäkuu
Anonim
Pool Pi Guy - tekoälyohjattu hälytysjärjestelmä ja altaan valvonta Raspberry Pi: n avulla
Pool Pi Guy - tekoälyohjattu hälytysjärjestelmä ja altaan valvonta Raspberry Pi: n avulla

Uima -altaan ottaminen kotona on hauskaa, mutta siihen liittyy suuri vastuu. Suurin huolenaiheeni on seurata, onko joku lähellä uima -allasta (etenkin nuoremmat lapset). Suurin ärsytykseni on varmistaa, että uima -altaan vesilinja ei koskaan mene pumpun sisääntulon alapuolelle, mikä pumppu käy kuivana ja tuhoaa sen, mikä maksaa $$$ korjauksia.

Olen äskettäin tajunnut kuinka käyttää Raspberry Pi: tä OpenCV: n ja TensorFlow'n kanssa yhdessä vedenpinnan anturin ja magneettiventtiilin kanssa molempien ongelmien ratkaisemiseksi - ja hauskaa sen tekemisessä!

Se osoittautuu myös loistavaksi hälytysjärjestelmäksi - liike aktivoitu, tekoälyohjattu, äärettömän muokattavissa.

Sukellaan sisään.

Vaihe 1: Suunnitelma

Tässä ohjeessa näytämme, miten:

  1. Asenna Raspberry Pi OpenCV: n ja TensorFlow'n avulla
  2. Liitä verkkokamera pitkän USB -kaapelin kautta
  3. Kirjoita OpenCV -algoritmi liikkeen havaitsemiseksi
  4. Käytä TensorFlow -toimintoa esineiden tunnistamiseen
  5. Määritä Raspberry Pi -verkkopalvelin näyttämään mielenkiintoisia kuvia
  6. Integroi IFTTT: n kanssa laukaistaksesi mobiili -ilmoituksia, jos henkilö havaitaan
  7. Kiinnitä rele HAT Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin, joka lisää vettä altaaseen
  8. Kiinnitä vedenpinnan anturi Raspberry Pi -laitteeseen ja liitä se Pi: n GPIO: n avulla
  9. Kirjoita koodi liittääksesi sen yhteen

Vaihe 2: Ostoslista

Ostoslista
Ostoslista

Kaikki komponentit ovat helposti saatavilla Amazonista. Voit kokeilla ja vaihtaa komponentteja - se on puolet hauskaa!

  1. Raspberry Pi
  2. Raspberry Pi -virtalähde (älä säästä täällä)
  3. Muistikortti (isompi on parempi)
  4. Kotelo (tämä on tarpeeksi suuri sekä Pi: lle että HAT: lle)
  5. USB -verkkokamera (mikä tahansa verkkokamera sopii, mutta haluat sellaisen, joka saa hyvät kuvat ja tasapainottaa valaistuksen)
  6. USB -jatkojohto (tarvittaessa - mittaa etäisyys Pi: n ja kameran sijoituspaikan välillä)
  7. Relelevy HAT (tässä on 3 relettä ja tarvitsemme vain yhden, mutta muille löydät käytön pian!)
  8. Solenoidi
  9. Solenoidiliitin 1 ja liitin 2 (riippuu todella siitä, mihin solenoidi sovitetaan, mutta nämä toimivat minulle)
  10. Magneettivirtalähde (mikä tahansa 24V AC tekisi)
  11. Kaapeli (taas melkein mikä tahansa 2 -säikeinen kaapeli tekisi - virta on vähäinen)
  12. Vedenkorkeuden kellokytkin (tämä on vain esimerkki, tarkista, mitä altaan voi helposti yhdistää)
  13. Jotkut hyppyjohdot ja johdinliittimet

Vaihe 3: Asenna Raspberry Pi

Asenna Raspberry Pi
Asenna Raspberry Pi

Raspberry Pi on hieno pieni tietokone. Se maksaa vain 35 dollaria, toimii jatkuvasti ja sisältää paljon yhteensopivia ohjelmistoja ja laitteistoja. Sen asettaminen on melko helppoa:

  1. Alusta SD -kortti. Tämä vaatii erityistä huolenpitoa - Raspberry Pi voi käynnistyä vain FAT -alustetulta SD -kortilta. Noudata näitä ohjeita.
  2. Liitä Raspberry Pi USB -näppäimistöön ja -hiireen sekä HDMI -näyttöön ja noudata Raspberry Pi NOOBS -opetusohjelman ohjeita. Muista määrittää WiFi ja ottaa SSH -yhteys käyttöön. Muista asettaa salasana pi -oletustilille.
  3. Asenna kotiverkossasi Raspberry Pi: n staattinen IP -osoite - se helpottaisi SSH: n käyttöä.
  4. Varmista, että työpöydälle/kannettavaan tietokoneeseen on asennettu ssh -asiakas. PC: lle suosittelen Puttyä, jonka voit asentaa täältä.
  5. Irrota USB ja HDMI Raspberry Pi -laitteesta, käynnistä se uudelleen ja ssh siihen - jos kaikki toimi, sinun pitäisi nähdä jotain tällaista:

Linux raspberrypi 4.14.98-v7+ #1200 SMP ti helmi 12 20:27:48 GMT 2019 armv7l

Debian GNU/Linux -järjestelmän mukana tulevat ohjelmat ovat ilmaisia ohjelmistoja; kunkin ohjelman tarkat jakeluehdot on kuvattu yksittäisissä tiedostoissa/usr/share/doc/*/copyright. Debian GNU/Linux sisältää EHDOTTOMASTI TAKUUN sovellettavan lain sallimissa rajoissa. Viimeisin kirjautuminen: ma 13. toukokuuta 10:41:40 2019 alkaen 104.36.248.13 pi@raspberrypi: ~ $

Vaihe 4: Asenna OpenCV

Asenna OpenCV
Asenna OpenCV

OpenCV on hämmästyttävä kokoelma kuvankäsittelytoimintoja tietokoneen näkemiseen. Sen avulla voimme lukea kuvia verkkokamerasta, käsitellä niitä löytääksesi liikealueita, tallentaa niitä ja paljon muuta. Asennus Raspberry Pi -laitteella ei ole vaikeaa, mutta vaatii huolellisuutta.

Aloita asentamalla virtaulenvwrapper: käytämme kaikkia ohjelmointejamme pythonilla, ja virtualenv auttaisi meitä pitämään riippuvuudet erillään OpenCV: lle ja TensorFlow vs. Flaskille tai GPIO: lle:

pi@raspberrypi: ~ $ sudo pip install virtualenvwrapper

Nyt voit suorittaa "mkvirtualenv": n uuden ympäristön luomiseksi, "workon" sen käsittelemiseksi ja paljon muuta.

Luodaan siis ympäristö kuvankäsittelylle, jossa python 3 on oletustulkki (vuosi 2019, ei ole mitään syytä pysyä vanhemman python 2: n kanssa):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi: ~

Olemme nyt valmiita asentamaan OpenCV: n. Seuraamme enimmäkseen Learn OpenCV: n erinomaista opetusohjelmaa. Noudata erityisesti niiden vaiheita 1 ja 2:

sudo apt -y updates sudo apt -y upgrade ## Asenna riippuvuudet sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm sudo apt-get -y install git gfortran sudo apt-get -y install libjpeg8-dev libjasper- dev libpng12-dev sudo apt-get -y install libtiff5-dev sudo apt-get -y install libtiff-dev sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get- y asenna libxine2-dev libv4l-dev cd/usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0. 10-dev sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default sudo apt-get -y install libatlas-base-dev sudo apt-get -y install libmp3lame-dev libtheora-dev sudo apt-get -y install libvorbis-dev libxvidcore-dev libx264-dev sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get -y install libavresample-dev sudo apt-get -y install x264 v4l-utils sudo apt -get -y asenna libprotobuf -dev protobuf-compiler sudo apt-get -y install libgoogle-glog-dev libgflags-dev sudo apt-get -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo apt-get install libqtgui4 sudo apt-get install libqt4- testata

Nyt voimme vain asentaa OpenCV: n python -siteillä cv virtualenv: n sisään (olet edelleen siinä, eikö?) Käyttämällä

pip asenna opencv-contrib-python

Ja siinä se! Meillä on OpenCV asennettu Raspberry Pi -laitteeseemme, valmis ottamaan valokuvia ja videoita, käsittelemään niitä ja olemaan viileä.

Tarkista tämä avaamalla python -tulkki ja tuomalla opencv ja tarkista, ettei siinä ole virheitä:

(cv) pi@raspberrypi: ~ $ python

Python 3.5.3 (oletus, 27. syyskuuta 2018, 17:25:39) [GCC 6.3.0 20170516] linuxissa Lisätietoja saat kirjoittamalla "help", "copyright", "credits" tai "license". >>> tuoda cv2 >>>

Vaihe 5: Asenna TensorFlow

Asenna TensorFlow
Asenna TensorFlow

TensorFlow on Googlen kehittämä ja ylläpitämä koneoppimis- / tekoälykehys. Se tukee laajasti syväoppimismalleja eri tehtäviin, kuten objektien havaitsemiseen kuvissa, ja on nyt melko helppo asentaa Raspberry Pi -laitteeseen. Sen kevyiden mallien suorituskyky pienellä Pi: llä on noin 1 ruutu sekunnissa, mikä on täysin riittävä kaltaiselle sovellukselle.

Seuraamme pohjimmiltaan Edje Electronicsin erinomaista opetusohjelmaa, jonka muutokset ovat mahdollistaneet uudemmat TensorFlow -jakelut:

pi@raspberrypi: ~ $ workon cv

(cv) pi@raspberrypi: ~ $ pip install tensorflow (cv) pi@raspberrypi: ~ $ sudo apt-get install libxml2-dev libxslt-dev (cv) pi@raspberrypi: ~ $ pip install tyyny lxml jupyter matplotlib cython (cv) pi@raspberrypi: ~ $ sudo apt-get install python-tk

Nyt meidän on koottava Googlen protobuf. Seuraa vain saman erinomaisen opetusohjelman vaiheen 4 ohjeita

Lopuksi kloonaa ja asenna TensorFlow'n mallimääritelmät - noudata Edje Electronics -oppaan ohjeita 5

Voit myös seurata heidän esimerkkiään vaiheessa 6, se on loistava johdanto kohteen havaitsemiseen Raspberry Pi -laitteessa.

Vaihe 6: Liikkeentunnistus OpenCV: n avulla

Aloitetaan testaamalla, että OpenCV voi liittyä verkkokameraamme: ssh Raspberry Pi: hen, siirry cv virtualenv (workon cv), avaa python -tulkki (kirjoita vain python) ja kirjoita seuraavat python -komennot:

tuoda cv2

cap = cv2. VideoCapture (0) cap.set (cv2. CAP_PROP_FRAME_WIDTH, 1920) cap.set (cv2. CAP_PROP_FRAME_HEIGHT, 1080) ret, frame = cap.read () print ('Lue kehyksen koko: {} x {}'.format (frame.shape [1], frame.shape [0])

Onneksi näet, että OpenCV pystyi lukemaan HD -kehyksen kamerasta.

Voit käyttää cv2.imwrite -tiedostoa (polku, kehys) kirjoittaaksesi tämän kehyksen levylle ja sftp: n takaisin todellisen ulkoasun saamiseksi.

Strategia liikkeen havaitsemiseksi on melko suoraviivainen:

  1. Työskentele matalamman resoluution kehyksillä - täällä ei tarvitse käyttää Full HD -videota
  2. Lisäksi voit sumentaa kuvia niin, että kohinasta tulee mahdollisimman vähän.
  3. Pidä viimeisten N kehyksen keskiarvo. Tässä sovelluksessa, jossa kuvataajuus on noin 1 FPS (vain siksi, että TensorFlow kestää jonkin aikaa per kuva), huomasin, että N = 60 palauttaa hyviä tuloksia. Ja koska huolellinen toteutus ei vie enemmän CPU: ta ja enemmän kehyksiä, se on OK (se vie enemmän muistia - mutta se on vähäistä, kun työskentelemme pienemmän resoluution kehysten kanssa)
  4. Vähennä nykyinen kuva juoksevasta keskiarvosta (ole varovainen kirjoittaessasi - sinun on sallittava positiiviset ja negatiiviset arvot [-255.. 255], joten kehys on muunnettava int -muotoon)
  5. Voit tehdä vähennyksen kehyksen (ja keskiarvon) harmaasävymuunnoksella tai tehdä sen erikseen kullekin RGB-kanavalle ja yhdistää sitten tulokset (mikä on strategia, jonka valitsin, jolloin se on herkkä värimuutoksille)
  6. Käytä kynnystä deltaan ja poista melu eroosion ja laajentumisen avulla
  7. Lopuksi etsi alueita, joissa on delta - näillä alueilla on tapahtunut liikettä ja nykyinen kuva eroaa aiempien kuvien keskiarvosta. Tarvittaessa löydämme myös ääriviivoja näille ääriviivoille.

Olen kapseloinut koodin tätä varten DeltaFinder python -luokassa, jonka löydät githubistani täältä

Vaihe 7: Tunnista objektit TensorFlow'n avulla

Jos olet noudattanut TensorFlow -asennusmenettelyä, olet jo testannut, että TensorFlow on asennettu ja toimii.

Ihmisten havaitsemiseksi yleisessä ulkoilmapiirissä COCO -tietojoukkoon esikoulutetut mallit toimivat varsin hyvin - juuri tämän mallin olemme ladanneet TensorFlow -asennuksen lopussa. Meidän on vain käytettävä sitä johtopäätökseen!

Jälleen kerran olen kapseloinut mallin lataamisen ja päättelyn TFClassify python -luokassa helpottaaksesi asioita, jotka löydät täältä.

Vaihe 8: Määritä Web -palvelin Raspberry Pi -laitteeseen

Asenna Web -palvelin Raspberry Pi -laitteeseen
Asenna Web -palvelin Raspberry Pi -laitteeseen

Helpoin tapa käyttää objektin havaintotuloksia on verkkoselain, joten asetetaan verkkopalvelin Raspberry Pi -laitteeseen. Voimme sitten asettaa sen näyttämään kuvia tietystä hakemistosta.

Web -palvelinkehykselle on useita vaihtoehtoja. Valitsin Flaskin. Se on erittäin konfiguroitavissa ja helppo laajentaa Pythonilla. Koska tarvitsemamme "mittakaava" on triviaali, se oli enemmän kuin tarpeeksi.

Ehdotan sen asentamista uuteen virtualenviin, joten:

pi@raspberrypi: ~ $ mkvirtualenv -verkkopalvelu

(webserv) pi@raspberrypi: ~ $ pip install Flask

Huomaa, että normaalilla verkkoasetuksella se on tavoitettavissa vain, kun selaimesi on samassa langattomassa lähiverkossa kuin Raspberry Pi. Voit luoda porttikartoituksen / NAT -määrityksen Internet -reitittimellesi ulkoisen käytön sallimiseksi - mutta suosittelen sitä vastaan. Kirjoittamani koodi ei yritä tarjota turvallisuutta, jota tarvitset, kun sallit yleisen Internet -yhteyden Raspberry Pi -laitteeseesi.

Testaa asennus noudattamalla pullon pika -aloitusopasta

Vaihe 9: Mobiili -ilmoitukset Raspberry Pi: ltä IFTTT: n avulla

Mobiili -ilmoitukset Raspberry Pi: ltä IFTTT: n avulla
Mobiili -ilmoitukset Raspberry Pi: ltä IFTTT: n avulla

Haluan todella saada mobiili -ilmoituksia tapahtumista. Tässä tapauksessa, kun henkilö havaitaan ja kun vedenpinta laskee. Yksinkertaisin tapa, jolla löysin tehdä sen ilman, että tarvitsen kirjoittaa mukautettua mobiilisovellusta, on IFTTT. IFTTT tarkoittaa "If This then That" ja mahdollistaa monen tyyppisten tapahtumien käynnistää monenlaisia toimintoja. Meidän tapauksessamme olemme kiinnostuneita IFTTT Maker Webhook -liipaisimesta. Tämän avulla voimme käynnistää IFTTT -toiminnon tekemällä HTTP POST -pyynnön IFTTT -palvelimelle tilillemme määritetyllä erityisellä avaimella sekä tapahtumia määrittävillä tiedoilla. Toimintamme voi olla yhtä yksinkertaista kuin ilmoituksen luominen mobiililaitteellemme IFTTT -mobiilisovelluksen avulla tai mikä tahansa monimutkaisempi.

Voit tehdä sen seuraavasti:

  1. Luo IFTTT -tili osoitteessa ifttt.com
  2. Kun olet kirjautunut sisään, siirry Webhook -palvelun asetussivulle ja kirjoita URL -osoite selaimeesi (esimerkiksi https://maker.ifttt.com/use/. Sivulla näkyy avaimesi ja URL -osoite, jota käytetään toimintojen käynnistämiseen.
  3. Luo IFTTT -sovelma, joka luo mobiili -ilmoituksen, kun Webhook laukaistaan tapahtuman yksityiskohtien kanssa:

    1. Napsauta "Omat appletit" ja sitten "Uusi sovelma".
    2. Napsauta "+tämä" ja valitse "webhooks". Napsauta "Vastaanota verkkopyyntö" siirtyäksesi yksityiskohtiin
    3. Anna tapahtumallesi nimi, esim. "PoolEvent" ja napsauta "Create trigger"
    4. Napsauta "+että" ja valitse "ilmoitukset". Valitse sitten "Lähetä rikas ilmoitus IFTTT -sovelluksesta"
    5. Valitse otsikolle "PoolPi"
    6. Kirjoita "viestille" "Pool Pi havaittu:" ja napsauta "lisää ainesosa".. "Arvo1".
    7. Palaa vaiheessa 2 kopioimaasi URL -osoitteeseen. Siinä näkyy URL -osoite, jota käytetään äskettäin luodun sovelman kutsumiseen. Kopioi kyseinen URL -osoite ja korvaa paikkamerkki {event} tapahtuman nimellä (esimerkissä PoolEvent)
  4. Lataa, asenna ja kirjaudu mobiililaitteesi IFTTT -sovellukseen
  5. Suorita tämä python -komentosarja Raspberry Pi -laitteellasi nähdäksesi sen toimivan (huomaa, että se voi kestää muutaman sekunnin tai minuutin, ennen kuin se käynnistyy mobiililaitteellasi):

tuontipyynnöt

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Hei Ilmoitukset"})

Vaihe 10: Lisää relehattu Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin

Lisää relehattu Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin
Lisää relehattu Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin
Lisää relehattu Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin
Lisää relehattu Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin
Lisää relehattu Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin
Lisää relehattu Raspberry Pi -laitteeseen ja liitä se magneettiventtiiliin

Ennen kuin jatkat tätä vaihetta, KYTKE Raspberry Pi: ssh pois päältä ja kirjoita "sudo shutdown now" ja irrota sitten virta

Tavoitteenamme on kytkeä päälle ja pois päältä magneettiventtiilin virtalähde - venttiili, joka voi avata tai sulkea vesilähteen 24 V: n verkkovirran perusteella. Releet ovat sähköisiä komponentteja, jotka voivat avata tai sulkea piirin Raspberry Pi: n tarjoaman digitaalisen signaalin perusteella. Tässä yhteydessä kytketään rele näihin Raspberry Pi: n digitaalisiin signaalitappeihin ja suljetaan 24V AC -virtalähteen ja magneettiventtiilin välinen piiri.

Raspberry Pi: n tappeja, jotka voivat toimia digitaalisena tulona tai ulostulona, kutsutaan GPIO - General Purpose Input/Outputiksi ja ne ovat 40: n rivin rivi Pi: n puolella. Kun Pi on pois päältä ja aseta rele HAT tiukasti siihen. Valitsemassani HATissa on 3 relettä, ja käytämme vain yhtä niistä. Ajattele kaikkea mitä voit tehdä kahden muun kanssa:)

Kytke nyt Raspberry Pi takaisin päälle. Releen HAT: n punaisen "power" -merkkivalon pitäisi syttyä, mikä osoittaa, että se saa virtaa Pi: stä GPIO: n kautta. Testaa, että voimme hallita sitä: ssh osaksi Pi uudelleen, kirjoita python ja kirjoita:

tuoda gpiozero

dev = gpiozero. DigitalOutputDevice (26, initial_value = True) dev.off ()

Sinun pitäisi kuulla "napsahdus", joka osoittaa, että rele on kytketty, ja nähdä LED -valon syttyvän, joka osoittaa, että ensimmäinen rele on kytketty asennossa. Voit nyt kirjoittaa

dev.on ()

Mikä kääntäisi releen "off" -asentoon (outoa, tiedän…) ja poistuu () pythonista.

Käytä nyt hyppyjohtoja ja pidempää kaapelia, kytke rele 24V: n virtalähteen ja magneettiventtiilin väliin. Katso kaavio. Lopuksi kytke magneettiventtiili hanaan sovittimien avulla ja valmistaudu testaamaan kaikki toistamalla yllä olevat komennot - niiden pitäisi kytkeä vesi päälle ja pois.

Kiinnitä letku magneettiventtiiliin ja aseta toinen pää syvälle altaaseen. Sinulla on nyt tietokoneohjattu altaan ylhäältä poistojärjestelmä, ja on aika liittää anturi kertomaan, milloin se suoritetaan.

Vaihe 11: Liitä vesitason anturi

Liitä vesitason anturi
Liitä vesitason anturi
Liitä vesitason anturi
Liitä vesitason anturi
Liitä vesitason anturi
Liitä vesitason anturi
Liitä vesitason anturi
Liitä vesitason anturi

Vedenkorkeusanturi on yksinkertaisesti kelluke, joka yhdistää sähköpiirin, kun uimuri on alhaalla, ja rikkoo sen, kun se kelluu. Jos asetat sen altaaseen oikealle korkeudelle, kelluke nousee ylös, kun vedenpinta on riittävä, mutta putoaa alas, kun vettä ei ole tarpeeksi.

Jotta Raspberry Pi tietää vedenpinnan tilan, tarvitsemme Pi: n havaitsemaan avoimen tai suljetun piirin. Onneksi tämä on hyvin yksinkertaista: samat GPIO -liittimet, joita käytämme digitaalilähtönä releiden ohjaamiseen, voivat toimia tuloina (siis I GPIO: ssa). Erityisesti jos yhdistämme anturin yhden johdon GPIO-liittimen +3,3 V: n jännitteeseen ja toisen anturijohdon nastaan, jonka määritämme alasvedettäväksi tuloksi (eli se on normaalisti GND-jännitetasolla), tämä nasta mittaa digitaalinen "korkea" tai "päällä" -jännite vain, kun vedenpinnan anturi sulkee piirin - kun vedenpinta on alhainen. Käytin tulona GPIO -nasta 16, jonka merkitsin yllä olevaan kuvaan.

Python -koodi, jolla pin määritetään tuloksi ja testataan sen nykyinen tila, on:

tuoda gpiozero

level_input = gpiozero. Button (16) water_low = level_input.is_pressed

Yksi mahdollinen haaste on, että kun anturi vain vaihtaa tilaa, se värähtelee nopeasti päälle ja pois päältä. Ratkaisu tähän tunnetaan nimellä "debouncing" ja etsii johdonmukaista tilanmuutosta ennen toimenpiteiden aloittamista. GPIOZERO -kirjastossa on koodi siihen, mutta jostain syystä tämä koodi ei toiminut hyvin minulle. Kirjoitin yksinkertaisen silmukan käynnistämään IFTTT -hälytykset, kun havaitaan johdonmukainen tilan muutos, jonka löydät arkistostani täältä.

Vaihe 12: Kirjoita koodi sitomaan kaikki yhteen

Kirjoita koodi sitomaan kaikki yhteen
Kirjoita koodi sitomaan kaikki yhteen

Se siitä. Kokoonpanomme on valmis. Voit kirjoittaa oman koodisi yhdistääksesi asiat täydelliseen järjestelmään tai käyttää antamaani koodia. Voit tehdä tämän luomalla hakemistorakenteen ja kloonaamalla arkiston seuraavasti:

mkdir poolpi

cd poolpi git klooni

Muokkaa seuraavaksi ifttt_url.txt -nimisiä tiedostoja motion_alert- ja water_level -hakemistoissa, jotta saat URL -osoitteen omalle IFTTT -verkkokoukullesi salaisen avaimesi kanssa. Voit käyttää kahta eri verkkokoukkua eri toimintoihin.

Lopuksi haluamme, että tämä koodi suoritetaan automaattisesti. Helpoin tapa tehdä se on Linux crontab -palvelun kautta. Voimme lisätä joitakin crontab -rivejä kahteen päätehtävään:

  1. Suorita kolme ohjelmaa: esineentunnistin, vedenpinnan anturi ja verkkopalvelin jokaisen uudelleenkäynnistyksen yhteydessä
  2. Puhdista tulostushakemisto, poista vanhoja kuvia ja vanhoja videotiedostoja (päätin poistaa yli 1 päivän vanhat tiedostot ja yli 7 päivän vanhat kuvat - kokeile vapaasti)

Tätä varten kirjoita crontab -e, joka avaa nano -tekstieditorisi. Lisää seuraavat rivit tiedoston alaosaan:

0 1 * * * find/home/pi/poolpi/output -type f -name " *.avi" -mtime +1 -delete

0 2 * * * find/home/pi/poolpi/output -type f -name " *.jpg" -mtime +7 -delete @reboot python3 /home/pi/poolpi/motion_alert/webserv/webserv.py @reboot python3 /home/pi/poolpi/motion_alert/motion_obj_alert.py @reboot python3 /home/pi/poolpi/water_level/test_water_level.py

Käynnistä lopuksi Raspberry Pi uudelleen. Se on nyt valmis pitämään altaasi täynnä ja turvassa.

Työskentele asennuksen, koodin kanssa ja älä unohda merkitä github -arkistoani tähtiin ja kommentoida ohjeita, jos pidät sitä hyödyllisenä. Haluan aina oppia lisää.

Hyvää tekemistä!

IoT -haaste
IoT -haaste
IoT -haaste
IoT -haaste

Toinen sija IoT Challengessa

Suositeltava: