Tartalomjegyzék:

Pool Pi Guy - AI által vezérelt riasztórendszer és medencefigyelés a Raspberry Pi használatával: 12 lépés (képekkel)
Pool Pi Guy - AI által vezérelt riasztórendszer és medencefigyelés a Raspberry Pi használatával: 12 lépés (képekkel)

Videó: Pool Pi Guy - AI által vezérelt riasztórendszer és medencefigyelés a Raspberry Pi használatával: 12 lépés (képekkel)

Videó: Pool Pi Guy - AI által vezérelt riasztórendszer és medencefigyelés a Raspberry Pi használatával: 12 lépés (képekkel)
Videó: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Július
Anonim
Pool Pi Guy - AI által vezérelt riasztórendszer és medencefigyelés a Raspberry Pi segítségével
Pool Pi Guy - AI által vezérelt riasztórendszer és medencefigyelés a Raspberry Pi segítségével

Az otthoni medence szórakoztató, de nagy felelősséggel jár. A legnagyobb gondom az, hogy figyelemmel kísérem, ha valaki felügyelet nélkül tartózkodik a medence közelében (különösen a fiatalabb gyerekek). A legnagyobb bosszúságom annak biztosítása, hogy a medence vízvezetéke soha ne menjen a szivattyú bemenete alá, ami a szivattyút szárazon járatná, és tönkretenné a javítás költségeit.

Nemrég rájöttem, hogyan használhatom a Raspberry Pi -t OpenCV -vel és TensorFlow -val, vízszint -érzékelővel és mágnesszeleppel együtt mindkét probléma megoldásához - és jó szórakozást!

Kiderül, hogy ez egy nagyszerű riasztórendszer is - mozgással aktivált, AI -vezérelt, végtelenül testreszabható.

Merüljünk bele.

1. lépés: Nagy terv

Ebben az oktatóanyagban megmutatjuk, hogyan kell:

  1. Állítson be egy Raspberry Pi -t OpenCV és TensorFlow segítségével
  2. Csatlakoztassa a webkamerát egy hosszú USB -kábellel
  3. Írjon OpenCV algoritmust a mozgás észlelésére
  4. Használja a TensorFlow -t az objektumok észleléséhez
  5. Állítson be egy webszervert a Raspberry Pi -n az érdekes képek megjelenítéséhez
  6. Integrálja az IFTTT -vel, hogy mobil riasztásokat indítson, ha személyt észlel
  7. Csatlakoztasson egy kalap relét a Raspberry Pi -hez, és csatlakoztassa azt egy mágnesszelephez, amely vizet ad a medencéhez
  8. Csatlakoztasson egy vízszint -érzékelőt a Raspberry Pi -hez, és csatlakoztassa vele a Pi GPIO -ját
  9. Írjon néhány kódot, hogy összeragasztja az egészet

2. lépés: Bevásárló lista

Bevásárló lista
Bevásárló lista

Minden összetevő könnyen elérhető az Amazon -tól. Bátran kísérletezzen és cseréljen alkatrészeket - ez a mulatság fele!

  1. Raspberry Pi
  2. Raspberry Pi tápegység (itt ne spóroljon)
  3. Memóriakártya (nagyobb, annál jobb)
  4. Tok (ez elég nagy ahhoz, hogy a Pi és a HAT is helyet kapjon benne)
  5. USB webkamera (bármely webkamera megteszi, de szeretne olyan képet, amely jó képeket kap és kiegyensúlyozza a világítást)
  6. USB hosszabbító kábel (ha szükséges - mérje meg a távolságot a Pi és a kamera elhelyezése között)
  7. HAT relé tábla (ennek 3 reléje van, és csak egyre van szükségünk, de a többieknek hamarosan használható lesz!)
  8. Szolenoid
  9. Mágnesszelep 1 -es és 2 -es szerelvény (ez valóban attól függ, hogy mire illeszti a mágnesszelepet, de ezek nekem működtek)
  10. Mágnesszelep tápegység (bármilyen 24V -os váltakozó áramú megtenné)
  11. Kábel (megint csaknem minden 2 szálú kábel megtenné - az áram minimális)
  12. Vízszintes úszókapcsoló (ez csak egy példa, nézze meg, mi könnyen csatlakoztatható a medencéhez)
  13. Néhány jumper vezeték és vezeték csatlakozó

3. lépés: A Raspberry Pi beállítása

Állítsa be a Raspberry Pi -t
Állítsa be a Raspberry Pi -t

A Raspberry Pi egy remek kis számítógép. Mindössze 35 dollárba kerül, folyamatosan fut, és sok kompatibilis szoftvert és hardvert tartalmaz. A beállítás nagyon egyszerű:

  1. Formázza az SD -kártyát. Ez különös gondosságot igényel - a Raspberry Pi csak FAT formátumú SD -kártyáról indítható. Kövesse ezeket az utasításokat.
  2. Csatlakoztassa a Raspberry Pi -t egy USB -billentyűzethez és egérhez, valamint egy HDMI -kijelzőhöz, és kövesse a Raspberry Pi NOOBS bemutató utasításait. Feltétlenül állítsa be a WiFi -t és engedélyezze az SSH -hozzáférést. Ne felejtse el beállítani az alapértelmezett pi -fiók jelszavát.
  3. Az otthoni hálózaton állítson be egy statikus IP -címet a Raspberry Pi -hez - ez sokkal könnyebbé tenné az SSH használatát.
  4. Győződjön meg arról, hogy az asztalon/laptopon telepítve van egy ssh kliens. PC -hez a Puttyt ajánlanám, amelyet innen telepíthet.
  5. Húzza ki az USB -t és a HDMI -t a Raspberry Pi -ből, indítsa újra, és kapcsolja be az SSH -t - ha minden működött, akkor valami ilyesmit kell látnia:

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

A Debian GNU/Linux rendszerhez tartozó programok ingyenes szoftverek; az egyes programok pontos terjesztési feltételeit az/usr/share/doc/*/copyright mappában található egyes fájlok írják le. A Debian GNU/Linux -ot abszolút NEM SZOLGÁLTATJA, a vonatkozó törvények által megengedett mértékben. Utolsó bejelentkezés: hétfő, május 13, 10:41:40 2019 tól 104.36.248.13 pi@raspberrypi: ~ $

4. lépés: Az OpenCV beállítása

Az OpenCV beállítása
Az OpenCV beállítása

Az OpenCV a képszerkesztő funkciók csodálatos gyűjteménye a számítógépes látáshoz. Lehetővé teszi számunkra, hogy képeket olvassunk a webkameráról, manipuláljuk őket, hogy mozgásterületeket találjunk, elmentsük őket és így tovább. A Raspberry Pi beállítása nem nehéz, de némi odafigyelést igényel.

Kezdje a virtaulenvwrapper telepítésével: minden programozásunkhoz a python -t fogjuk használni, és a virtualenv segítene abban, hogy az OpenCV és a TensorFlow vs. Flask vagy GPIO függőségeit külön tartsuk:

pi@raspberrypi: ~ $ sudo pip install virtualenvwrapper

Most végrehajthatja az "mkvirtualenv" parancsot egy új környezet létrehozásához, a "workon" -t, hogy dolgozzon rajta, és így tovább.

Létrehozzunk tehát egy környezetet a képmanipulációnkhoz, a python 3 alapértelmezett tolmácsként (2019 van, nincs ok ragaszkodni a régebbi 2 -es pythonhoz):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi: ~

Készen állunk az OpenCV telepítésére. Leginkább a Learn OpenCV kiváló bemutatóját fogjuk követni. Konkrétan kövesse az 1. és 2. lépést:

sudo apt -y updatesudo apt -y upgrade ## Telepítési függőségek 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 telepítse a 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 telepítse a libprotobuf fájlt -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- teszt

Most már csak telepíthetjük az OpenCV -t python kötésekkel a cv virtualenv -be (még mindig benne vagy, ugye?)

pip install opencv-contrib-python

És ez az! Az OpenCV telepítve van a Raspberry Pi -re, készen áll a fényképek és videók rögzítésére, manipulálására és menőnek lenni.

A python tolmács megnyitásával és az opencv importálásával ellenőrizze, hogy nincsenek -e hibák:

(cv) pi@raspberrypi: ~ $ python

Python 3.5.3 (alapértelmezett, 2018. szeptember 27., 17:25:39) [GCC 6.3.0 20170516] Linux rendszeren Típus "help", "copyright", "credits" vagy "license" további információkért. >>> cv2 importálása >>>

5. lépés: A TensorFlow beállítása

A TensorFlow beállítása
A TensorFlow beállítása

A TensorFlow a Google által kifejlesztett és karbantartott gépi tanulási / AI keretrendszer. Széles körben támogatja a mély tanulási modelleket különféle feladatokhoz, beleértve az objektumok észlelését a képeken, és most meglehetősen egyszerű telepíteni a Raspberry Pi-re. Könnyű modelljeinek teljesítménye az apró Pi -n körülbelül 1 képkocka másodpercenként, ami tökéletesen megfelel egy olyan alkalmazáshoz, mint a miénk.

Alapvetően az Edje Electronics kiváló oktatóanyagát fogjuk követni, a módosításokat az újabb TensorFlow disztribúciók teszik lehetővé:

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 párna lxml jupyter matplotlib cython (cv) pi@raspberrypi: ~ $ sudo apt-get install python-tk

Most össze kell állítanunk a Google protobuf -ját. Csak kövesse ugyanazon kiváló oktatóanyag 4. lépésében található utasításokat

Végül klónozza és állítsa be a TensorFlow modell definícióit - kövesse az Edje Electronics bemutató 5. lépését

Nyugodtan kövesse példájukat a 6. lépésben is, ez remek bevezetés a Raspberry Pi objektumérzékeléséhez.

6. lépés: Mozgásérzékelés az OpenCV használatával

Kezdjük azzal, hogy teszteljük, hogy az OpenCV képes -e kapcsolódni a webkameránkhoz: ssh a Raspberry Pi -be, lépjen a cv virtualenv -re (workon cv), nyisson meg egy python -tolmácsot (csak írja be a python -ot), és írja be a következő python -parancsokat:

import 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 ('Keret mérete: {} x {}'.format (frame.shape [1], frame.shape [0])

Sok szerencsével látni fogja, hogy az OpenCV képes volt HD keretet olvasni a kamerából.

A cv2.imwrite (elérési út, keret) segítségével írhatja a keretet a lemezre, és visszaállíthatja, hogy tényleges megjelenést kapjon.

A mozgás észlelésének stratégiája meglehetősen egyszerű:

  1. Dolgozzon alacsonyabb felbontású kereteken - itt nem kell teljes HD -n operálni
  2. Továbbá homályosítsa el a képeket, hogy a lehető legkisebb zajt biztosítsa.
  3. Tartsa az utolsó N képkocka futó átlagát. Ennél az alkalmazásnál, ahol a képsebesség 1 FPS körül van (csak azért, mert a TensorFlow képkockánként eltart egy ideig), azt tapasztaltam, hogy az N = 60 jó eredményeket ad vissza. És mivel a gondos végrehajtás nem igényel több CPU -t több kerettel, ez rendben van (több memóriát igényel - de ez elhanyagolható, ha az alacsonyabb felbontású keretekkel dolgozunk)
  4. Vonja ki az aktuális képet a futó átlagból (csak óvatosan gépeljen - engedélyeznie kell a pozitív és negatív értékeket [-255.. 255], ezért a keretet int -re kell konvertálni)
  5. A kivonást elvégezheti a keret (és az átlag) szürkeárnyalatos konverziójánál, vagy külön-külön az egyes RGB csatornákon, majd egyesítheti az eredményeket (ezt a stratégiát választottam, érzékenyebbé téve a színváltozásokat)
  6. Használjon küszöböt a deltán, és távolítsa el a zajt az erózió és a tágulás által
  7. Végül keressen deltával rendelkező területek kontúrjait - ezeken a területeken történt mozgás, és az aktuális kép eltér a korábbi képek átlagától. Ha szükséges, további keresődobozokat is találhatunk ezekhez a kontúrokhoz.

Az ehhez szükséges kódot beillesztettem a DeltaFinder python osztályába, amelyet itt talál a githubomban

7. lépés: Objektumok észlelése a TensorFlow használatával

Ha követte a TensorFlow telepítési eljárását, akkor már tesztelte, hogy a TensorFlow telepítve van és működik.

Az általános kültéri jelenetekben az emberek észlelése céljából a COCO adathalmazra előzetesen kiképzett modellek meglehetősen jól teljesítenek - pontosan ezt a modellt töltöttük le a TensorFlow telepítés végén. Csak következtetésekre kell használnunk!

Ismét beágyazom a modell betöltését és a következtetést a TFClassify python osztályba, hogy megkönnyítsem a dolgokat, amelyeket itt talál.

8. lépés: Állítson be egy webszervert a Raspberry Pi -n

Állítson be egy webszervert a Raspberry Pi -n
Állítson be egy webszervert a Raspberry Pi -n

Az objektumfelismerési eredmények elérésének legegyszerűbb módja egy webböngésző, ezért állítsunk be egy webszervert a Raspberry Pi -n. Ezután beállíthatjuk, hogy kiszolgálja az adott könyvtárból származó képeket.

A webszerver keretrendszerének több lehetősége van. A Flaskot választottam. Rendkívül konfigurálható és könnyen bővíthető a Python segítségével. Mivel a szükséges "skála" triviális, több mint elég volt.

Azt javaslom, hogy telepítse egy új virtualenv -be, így:

pi@raspberrypi: ~ $ mkvirtualenv webserv

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

Vegye figyelembe, hogy normál hálózati beállítás esetén csak akkor érhető el, ha böngészője ugyanazon a vezeték nélküli LAN -on van, mint a Raspberry Pi. Létrehozhat egy portleképezési / NAT -konfigurációt az internetes útválasztón, hogy lehetővé tegye a külső hozzáférést - de én ezt javaslom. Az általam írt kód nem próbálja meg biztosítani azt a biztonságot, amelyre szüksége lenne, ha engedélyezi a Raspberry Pi általános internet -hozzáférését.

Tesztelje a telepítést a Lombik gyorsindítási útmutató követésével

9. lépés: Mobil értesítések a Raspberry Pi -től az IFTTT használatával

Mobil értesítések a Raspberry Pi -től az IFTTT használatával
Mobil értesítések a Raspberry Pi -től az IFTTT használatával

Nagyon szeretnék értesítéseket kapni mobilról, ha események történnek. Ebben az esetben, amikor egy személyt észlelnek, és amikor a vízszint alacsony. Ennek legegyszerűbb módja az IFTTT használata, anélkül, hogy egyéni mobilalkalmazást kellene írnom. Az IFTTT jelentése "If This then That", és lehetővé teszi, hogy sokféle esemény sokféle műveletet indítson el. Esetünkben az IFTTT Maker Webhook triggerre vagyunk kíváncsiak. Ez lehetővé teszi számunkra, hogy IFTTT műveletet indítsunk el, ha HTTP POST kérést küldünk az IFTTT szerverhez, a fiókunkhoz rendelt speciális kulccsal, valamint a történteket meghatározó adatokkal együtt. Az általunk elvégzett művelet olyan egyszerű lehet, mint értesítés létrehozása mobileszközünkön az IFTTT mobilalkalmazás használatával, vagy bármi ennél összetettebb.

Ezt a következőképpen teheti meg:

  1. Hozzon létre IFTTT -fiókot az ifttt.com webhelyen
  2. Bejelentkezés közben lépjen a Webhook szolgáltatás beállításainak oldalára, és írja be az URL -t a böngészőjébe (például https://maker.ifttt.com/use/. Ez a weboldal megmutatja a kulcsot és a műveletek kiváltásához használt URL -t.
  3. Hozzon létre egy IFTTT kisalkalmazást, amely mobil értesítést generál, amikor a Webhook aktiválódik az esemény részleteivel:

    1. Kattintson a "Saját kisalkalmazások", majd az "Új kisalkalmazás" elemre.
    2. Kattintson a "+ez" gombra, és válassza a "webhooks" lehetőséget. Kattintson a "Webes kérés fogadása" gombra a részletek megtekintéséhez
    3. Adjon nevet az eseménynek, pl. "PoolEvent" és kattintson a "trigger létrehozása" gombra
    4. Kattintson a "+" gombra, és válassza az "értesítések" lehetőséget. Ezután válassza a "Gazdag értesítés küldése az IFTTT alkalmazásból" lehetőséget
    5. A "cím "hez válasszon valamit, például" PoolPi"
    6. Az "üzenet" -hez írja be: "Pool Pi észlelve:", majd kattintson az "összetevő hozzáadása" gombra. "Value1".
    7. Térjen vissza a 2. lépésben másolt URL -címhez. Megjelenik az újonnan létrehozott kisalkalmazás meghívásához használt URL. Másolja ezt az URL -t, és cserélje le a (z) {event} helyőrzőt az esemény nevével (a PoolEvent példában)
  4. Töltse le, telepítse és jelentkezzen be az IFTTT alkalmazásba mobileszközére
  5. Futtassa ezt a python -szkriptet a Raspberry Pi -n, hogy lássa, hogyan működik (vegye figyelembe, hogy néhány másodperc vagy perc elteltével aktiválódhat a mobileszközön):

import kérések

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Hello értesítések"})

10. lépés: Adjon hozzá egy relé sapkát a Raspberry Pi -hez, és csatlakoztassa egy mágnesszelephez

Adjon hozzá egy relé sapkát a Raspberry Pi -hez, és csatlakoztassa egy mágnesszelephez
Adjon hozzá egy relé sapkát a Raspberry Pi -hez, és csatlakoztassa egy mágnesszelephez
Adjon hozzá egy relé sapkát a Raspberry Pi -hez, és csatlakoztassa egy mágnesszelephez
Adjon hozzá egy relé sapkát a Raspberry Pi -hez, és csatlakoztassa egy mágnesszelephez
Adjon hozzá egy relé sapkát a Raspberry Pi -hez, és csatlakoztassa egy mágnesszelephez
Adjon hozzá egy relé sapkát a Raspberry Pi -hez, és csatlakoztassa egy mágnesszelephez

Mielőtt folytatná ezt a lépést, KAPCSOLJA KI a Raspberry Pi: ssh -t, és írja be: "sudo shutdown now", majd válassza le a tápellátást

Célunk, hogy be- és kikapcsoljuk a mágnesszelep tápellátását - egy szelepet, amely a tápegységből származó 24 V AC tápellátás alapján képes nyitni vagy zárni a vízellátást. A relék azok az elektromos alkatrészek, amelyek megnyithatják vagy bezárhatják az áramkört a digitális jel alapján, amelyet a Raspberry Pi tud nyújtani. Amit itt teszünk, egy relét csatlakoztatunk a Raspberry Pi digitális jelzőcsapjaihoz, és lezárjuk az áramkört a 24 V -os tápegység és a mágnesszelep között.

A Raspberry Pi digitális bemenetként vagy kimenetként működő csapjait GPIO - General Purpose Input/Output (Általános célú bemenet/kimenet) nevezik, és ezek a Pi oldalán található 40 érintkezőből álló sor. Ha a Pi ki van kapcsolva, és erősen helyezze be a relé kalapját. Az általam választott kalapban 3 relé van, és csak egyet fogunk használni. Képzeld el, mit tehetsz a másik kettővel:)

Most kapcsolja be újra a Raspberry Pi -t. A HAT relén lévő piros "power" LED -nek be kell kapcsolnia, jelezve, hogy a GPO -n keresztül kap áramot a Pi -ből. Teszteljük, hogy tudjuk -e irányítani: ssh a Pi -be, írja be a python -ot és írja be:

gpiozero importálása

dev = gpiozero. DigitalOutputDevice (26, kezdeti_érték = igaz) dev.off ()

Hangos "kattanást" kell hallania, jelezve, hogy a relé be van kapcsolva, és látni kell egy LED bekapcsolását, amely azt jelzi, hogy az első relé csatlakoztatott helyzetben van. Most már gépelhet

Devon()

Ami a relét "kikapcsolt" helyzetbe kapcsolná (furcsa, tudom …), és kilépne () a pythonból.

Most áthidaló kábelek és a hosszabb kábel segítségével csatlakoztassa a relét a 24 V -os tápegység és a mágnesszelep közé. Lásd a diagramot. Végül csatlakoztassa a mágnesszelepet egy csaptelephez az adapterek segítségével, és készüljön fel a tesztelésre a fenti parancsok megismétlésével - be- és kikapcsolja a vizet.

Csatlakoztasson egy tömlőt a mágnesszelephez, és helyezze a másik végét a medence mélyére. Most már rendelkezik egy számítógéppel vezérelt medencefelső rendszerrel, és ideje csatlakoztatni egy érzékelőt, hogy megmondja, mikor kell futtatni.

11. lépés: Csatlakoztasson egy vízszint -érzékelőt

Csatlakoztasson vízszint -érzékelőt
Csatlakoztasson vízszint -érzékelőt
Csatlakoztasson vízszint -érzékelőt
Csatlakoztasson vízszint -érzékelőt
Csatlakoztasson vízszint -érzékelőt
Csatlakoztasson vízszint -érzékelőt
Csatlakoztasson vízszint -érzékelőt
Csatlakoztasson vízszint -érzékelőt

A vízszint -érzékelő egyszerűen egy úszó, amely összekapcsolja az elektromos áramkört, amikor az úszó leereszkedik, és megtöri, amikor felúszik. Ha a megfelelő magasságban helyezi a medencébe, akkor az úszó felemelkedik, ha a vízszint megfelelő, de leesik, ha nincs elegendő víz.

Ahhoz, hogy a Raspberry Pi tudja a vízszint -érzékelő állapotát, szükségünk van a Pi -re, hogy érzékeljük a nyitott vagy zárt áramkört. Szerencsére ez nagyon egyszerű: ugyanazok a GPIO csatlakozók, amelyeket digitális kimenetként használunk a relék vezérlésére, bemenetként is működhetnek (innen az I a GPIO -ban). Pontosabban, ha az érzékelő egyik vezetékét a GPIO-csatlakozó +3,3 V-os csatlakozójához, a másik érzékelővezetéket pedig egy, a lehúzható bemenetként konfigurált tűhöz (azaz normál esetben GND feszültségszintre) csatlakoztatjuk, akkor a tű mérni fogja digitális "magas" vagy "be" feszültség csak akkor, ha a vízszintérzékelő lezárja az áramkört - ha a vízszint alacsony. Bemenetként a GPIO 16 -os tűt használtam, amelyet a fenti képen megjelöltem.

A python kód a tű bemenetként való konfigurálásához és az aktuális állapot teszteléséhez:

gpiozero importálása

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

Az egyik lehetséges kihívás az, hogy amikor az érzékelő csak állapotot vált, gyorsan ingadozik a be- és kikapcsolási állapotok között. A megoldás erre "visszavágás" néven ismert, és a cselekvés előtt következetes állapotváltozást keres. A GPIOZERO könyvtár rendelkezik ezzel a kóddal, de valamiért ez a kód nem működött számomra. Írtam egy egyszerű ciklust az IFTTT riasztások kiváltására, ha következetes állapotváltozást észlelünk, amelyet itt talál a táromban.

12. lépés: Írjon kódot, hogy összekapcsolja

Írjon kódot, hogy összekapcsolja
Írjon kódot, hogy összekapcsolja

Ez az. Beállításunk befejeződött. Írhat saját kódot, hogy összekapcsolja a dolgokat egy teljes rendszerben, vagy használhatja az általam megadott kódot. Ehhez csak hozza létre a könyvtárszerkezetet, és klónozza a lerakatot, például:

mkdir poolpi

cd poolpi git klón

Ezután szerkessze az ifttt_url.txt nevű fájlokat a motion_alert és a water_level könyvtárakban, hogy a titkos kulccsal rendelkezzen saját IFTTT webhorogjának URL -jével. Két különböző webhorgot használhat különböző műveletekhez.

Végül szeretnénk, ha ez a kód automatikusan futna. Ennek legegyszerűbb módja a Linux crontab szolgáltatás. Két fő feladathoz hozzáadhatunk néhány crontab sort:

  1. Futtassa három programunkat: az objektumérzékelőt, a vízszintérzékelőt és a webszervert minden újraindításkor
  2. A kimeneti könyvtár tisztítása, régi képek és régi videofájlok törlése (az 1 napnál régebbi és a 7 napnál régebbi képek törlését választottam - bátran kísérletezzen)

Ehhez írja be a crontab -e parancsot, amely megnyitja a nano szövegszerkesztőt. Adja hozzá a következő sorokat a fájl aljához:

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

Végül indítsa újra a Raspberry Pi -t. Most már készen áll arra, hogy a medencéje tele legyen és biztonságban legyen.

Gondolkozzon a beállításokon, a kódon, és ne felejtse el csillagozni a github táromat, és ha hasznosnak találja, megjegyzést fűz az utasításhoz. Mindig arra törekszem, hogy többet tanuljak.

Boldog alkotást!

IoT kihívás
IoT kihívás
IoT kihívás
IoT kihívás

Második hely az IoT Challenge -ben

Ajánlott: