Përmbajtje:

Pool Pi Guy - Sistemi i alarmit i drejtuar nga AI dhe monitorimi i pishinës duke përdorur Raspberry Pi: 12 hapa (me fotografi)
Pool Pi Guy - Sistemi i alarmit i drejtuar nga AI dhe monitorimi i pishinës duke përdorur Raspberry Pi: 12 hapa (me fotografi)

Video: Pool Pi Guy - Sistemi i alarmit i drejtuar nga AI dhe monitorimi i pishinës duke përdorur Raspberry Pi: 12 hapa (me fotografi)

Video: Pool Pi Guy - Sistemi i alarmit i drejtuar nga AI dhe monitorimi i pishinës duke përdorur Raspberry Pi: 12 hapa (me fotografi)
Video: Neel 51 Trimaran Atlantic Crossing, ARC Regatta - Ep.2/5 2024, Korrik
Anonim
Pool Pi Guy - Sistemi i alarmit i drejtuar nga AI dhe monitorimi i pishinës duke përdorur Raspberry Pi
Pool Pi Guy - Sistemi i alarmit i drejtuar nga AI dhe monitorimi i pishinës duke përdorur Raspberry Pi

Të kesh një pishinë në shtëpi është argëtuese, por vjen me përgjegjësi të madhe. Shqetësimi im më i madh është monitorimi nëse dikush është pranë pishinës pa mbikëqyrje (veçanërisht fëmijët më të vegjël). Bezdisja ime më e madhe është të sigurohem që linja e ujit të pishinës të mos shkojë kurrë nën hyrjen e pompës, e cila do të thante pompën dhe do ta shkatërronte atë duke kushtuar $ $ $ në riparime.

Kohët e fundit kam kuptuar se si të përdor një Raspberry Pi me OpenCV dhe TensorFlow, së bashku me një sensor të nivelit të ujit dhe një valvul solenoid për të zgjidhur të dy çështjet - dhe argëtohu duke e bërë atë!

Rezulton të jetë gjithashtu një sistem alarmi i shkëlqyeshëm - lëvizja e aktivizuar, e kontrolluar nga AI, pafundësisht e personalizueshme.

Le të zhyten brenda.

Hapi 1: Plani i Madh

Në këtë udhëzues do të tregojmë se si të:

  1. Vendosni një Raspberry Pi me OpenCV dhe TensorFlow
  2. Lidhni një Webcam përmes një kablli të gjatë USB
  3. Shkruani një algoritëm OpenCV për të zbuluar lëvizjen
  4. Përdorni TensorFlow për zbulimin e objekteve
  5. Vendosni një server në internet në Raspberry Pi për të treguar imazhet interesante
  6. Integrohuni me IFTTT për të shkaktuar alarme celulare në rast se zbulohet një person
  7. Bashkangjitni një HAT stafetë në Raspberry Pi dhe lidheni atë me një valvul solenoid që do të shtonte ujë në pishinë
  8. Bashkangjitni një sensor të nivelit të ujit në Raspberry Pi dhe ndërhyni me të duke përdorur GPIO të Pi
  9. Shkruani një kod për t'i ngjitur të gjitha së bashku

Hapi 2: Lista e blerjeve

Listë pazar
Listë pazar

Të gjithë përbërësit janë në dispozicion nga Amazon. Mos ngurroni të eksperimentoni dhe shkëmbeni përbërës - kjo është gjysma e kënaqësisë!

  1. Mjedër Pi
  2. Furnizimi me energji Raspberry Pi (mos kurseni këtu)
  3. Kartë memorie (më e madhe është më mirë)
  4. Rasti (ky është mjaft i madh për të strehuar Pi dhe HAT)
  5. Webcam USB (çdo kamerë uebi do të funksionojë, por ju dëshironi një që merr imazhe të mira dhe balancon mirë ndriçimin)
  6. Kabllo shtesë USB (nëse është e nevojshme - matni distancën midis Pi dhe vendit ku do ta vendosni kamerën)
  7. Bordi i stafetave HAT (ky ka 3 stafetë dhe ne kemi nevojë vetëm për një, por do të gjeni një përdorim për ato të tjera shumë shpejt!)
  8. Solenoid
  9. Pajisja solenoid 1 dhe Pajisja 2 (kjo me të vërtetë varet nga ajo për të cilën i përshtateni solenoidit, por këto funksionuan për mua)
  10. Furnizimi me energji solenoid (çdo AC 24V do të bënte)
  11. Kabllo (përsëri, pothuajse çdo kabllo 2 fije do të bënte - rryma është minimale)
  12. Ndërruesi i notit të nivelit të ujit (ky është vetëm një shembull, kontrolloni se çfarë mund të lidhet lehtësisht me pishinën tuaj)
  13. Disa tela Jumper dhe lidhje tela

Hapi 3: Konfiguroni Raspberry Pi tuaj

Vendosni Raspberry Pi tuaj
Vendosni Raspberry Pi tuaj

Raspberry Pi është një kompjuter i madh i vogël. Kushton vetëm 35 dollarë, funksionon vazhdimisht dhe ka shumë softuer dhe pajisje të pajtueshme. Vendosja e tij është mjaft e thjeshtë:

  1. Formatoni kartën tuaj SD. Kjo kërkon kujdes të veçantë - Raspberry Pi mund të fillojë vetëm nga një kartë SD e formatuar FAT. Ndiqni këto udhëzime.
  2. Lidheni Raspberry Pi me një tastierë dhe miun USB, plus një ekran HDMI dhe ndiqni udhëzimet në tutorialin Raspberry Pi NOOBS. Sigurohuni që të konfiguroni WiFi dhe të aktivizoni qasjen në SSH. Mos harroni të vendosni një fjalëkalim për llogarinë e paracaktuar pi.
  3. Në rrjetin tuaj shtëpiak konfiguroni një IP statike për Raspberry Pi - do ta bënte shumë më të lehtë futjen në SSH.
  4. Sigurohuni që keni një klient ssh të instaluar në desktopin/laptopin tuaj. Për një kompjuter unë do të rekomandoja Putty, të cilin mund ta instaloni nga këtu.
  5. Zhbllokoni USB -në dhe HDMI -në nga Raspberry Pi, rindizeni dhe futeni në të - nëse gjithçka funksionon, duhet të shihni diçka si kjo:

Linux raspberrypi 4.14.98-v7+ #1200 SMP E Mart 12 Shk 20:27:48 GMT 2019 armv7l

Programet e përfshira me sistemin Debian GNU/Linux janë softuer falas; kushtet e sakta të shpërndarjes për secilin program përshkruhen në skedarët individualë në/usr/share/doc/*/copyright. Debian GNU/Linux vjen me ABSOLUTISHT JO GARANCI, në masën e lejuar nga ligji në fuqi. Hyrja e fundit: E Hënë 13 Maj 10:41:40 2019 nga 104.36.248.13 pi@raspberrypi: ~ $

Hapi 4: Konfiguroni OpenCV

Konfiguro OpenCV
Konfiguro OpenCV

OpenCV është një koleksion i mahnitshëm i funksioneve të manipulimit të imazhit për vizionin e kompjuterit. Do të na lejojë të lexojmë imazhe nga Webcam, t'i manipulojmë ato për të gjetur zonat e lëvizjes, t'i ruajmë ato dhe më shumë. Vendosja në Raspberry Pi nuk është e vështirë, por kërkon pak kujdes.

Filloni duke instaluar virtaulenvwrapper: ne do të përdorim python për të bërë të gjithë programimin tonë, dhe virtualenv do të na ndihmonte t'i mbanim varësitë të ndara për OpenCV dhe TensorFlow kundër Flask ose GPIO:

pi@raspberrypi: ~ $ sudo pip instaloni virtualenvwrapper

Tani mund të ekzekutoni "mkvirtualenv" për të krijuar një mjedis të ri, "workon" për të punuar në të, dhe më shumë.

Pra, le të krijojmë një mjedis për manipulimin e imazhit tonë, me python 3 si përkthyes të paracaktuar (është viti 2019, nuk ka arsye të qëndrojmë me pitonin më të vjetër 2):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi:

Tani jemi gati të instalojmë OpenCV. Ne kryesisht do të ndjekim mësimin e shkëlqyer në Learn OpenCV. Ndiqni në mënyrë të veçantë hapin e tyre 1 dhe 2:

sudo apt -y updatesudo apt -y upgrade ## Instaloni varësitë sudo apt-merrni -y instaloni build-thelbësorinstaloni 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 instaloni libxine2-dev libv4l-dev cd/usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y instaloni 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 instaloni libprotobuf -dev protobuf-përpilues 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- test

Tani ne thjesht mund të instalojmë OpenCV me lidhëse python brenda cv virtualenv (ju jeni akoma në të, apo jo?) Duke përdorur

pip instaloni opencv-contrib-python

Dhe kjo eshte! Ne kemi të instaluar OpenCV në Raspberry Pi tonë, gati për të kapur fotografi dhe video, për t'i manipuluar ato dhe për të qenë të lezetshëm.

Kontrolloni që duke hapur një përkthyes python dhe duke importuar opencv dhe kontrolloni që nuk ka gabime:

(cv) pi@raspberrypi: ~ $ piton

Python 3.5.3 (parazgjedhje, Shtator 27 2018, 17:25:39) [GCC 6.3.0 20170516] në linux Lloji "ndihmë", "e drejta e autorit", "kredite" ose "licencë" për më shumë informacion. >>> importoni cv2 >>>

Hapi 5: Konfiguroni TensorFlow

Konfiguro TensorFlow
Konfiguro TensorFlow

TensorFlow është një kornizë e mësimit të makinerisë / AI e zhvilluar dhe mirëmbajtur nga Google. Ka mbështetje të gjerë për modele të mësimit të thellë për një sërë detyrash, përfshirë zbulimin e objekteve në imazhe, dhe tani është mjaft e thjeshtë për t'u instaluar në Raspberry Pi. Performanca e modeleve të tij të lehta në Pi të vogël është rreth 1 kuadër në sekondë, e cila është krejtësisht e përshtatshme për një aplikim si i yni.

Ne do të ndjekim në thelb mësimin e shkëlqyer nga Edje Electronics, me modifikime të mundshme nga shpërndarjet më të fundit të TensorFlow:

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

Tani na duhet të përpilojmë protobufin e Google. Vetëm ndiqni udhëzimet në hapin 4 të të njëjtit mësim të shkëlqyer

Së fundi, klononi dhe konfiguroni përkufizimet e modelit të TensorFlow - ndiqni hapin 5 në tutorialin e Edje Electronics

Ndjehuni të lirë të ndiqni shembullin e tyre edhe në hapin 6, është një hyrje e shkëlqyeshme për zbulimin e objekteve në Raspberry Pi.

Hapi 6: Zbulimi i lëvizjes duke përdorur OpenCV

Le të fillojmë duke testuar që OpenCV mund të ndërfaqej me kamerën tonë të internetit: ssh në Raspberry Pi, kaloni në cv virtualenv (workon cv), hapni një përkthyes python (thjesht shkruani python) dhe futni komandat e mëposhtme python:

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 ('Lexo madhësinë e kornizës: {} x {}'.format (korniza.forma [1], korniza.forma [0])

Me çdo fat do të shihni që OpenCV ishte në gjendje të lexonte një kornizë HD nga kamera.

Ju mund të përdorni cv2.imwrite (shtegu, korniza) për ta shkruar atë kornizë në disk dhe sftp atë përsëri për të marrë një vështrim aktual.

Strategjia për të zbuluar lëvizjen është mjaft e drejtë përpara:

  1. Punoni në korniza me rezolucion më të ulët - këtu nuk ka nevojë të punoni me HD të plotë
  2. Më tej, turbulloni imazhet për të siguruar sa më pak zhurmë të jetë e mundur.
  3. Mbani një mesatare të funksionimit të kornizave të fundit N. Për këtë aplikacion, ku shkalla e kornizës është rreth 1 FPS (vetëm sepse TensorFlow kërkon pak kohë për kuadër), zbulova se N = 60 kthen rezultate të mira. Dhe meqenëse një zbatim i kujdesshëm nuk kërkon më shumë CPU me më shumë korniza që është në rregull (kërkon më shumë memorje - por kjo është e papërfillshme kur punojmë me kornizat me rezolucion më të ulët)
  4. Zbritni imazhin aktual nga mesatarja e funksionimit (thjesht kini kujdes me shtypjen - duhet të lejoni vlera pozitive dhe negative [-255.. 255], kështu që korniza duhet të konvertohet në int)
  5. Ju mund të kryeni zbritjen në një konvertim në shkallë gri të kornizës (dhe mesatares), ose ta bëni veçmas për secilin nga kanalet RGB dhe pastaj të kombinoni rezultatet (e cila është strategjia që kam zgjedhur, duke e bërë atë të ndjeshëm ndaj ndryshimeve të ngjyrave)
  6. Përdorni një prag në deltën dhe hiqni zhurmën nga erozioni dhe zgjerimi
  7. Më në fund kërkoni konturet e zonave me një delta - këto zona janë aty ku ka ndodhur lëvizja dhe imazhi aktual është i ndryshëm nga mesatarja e imazheve të mëparshme. Ne mund të gjejmë më tej kuti kufizuese për këto konture nëse është e nevojshme.

Unë kam përmbledhur kodin për ta bërë këtë në klasën python DeltaFinder që mund ta gjeni në github tim këtu

Hapi 7: Zbuloni objektet duke përdorur TensorFlow

Nëse keni ndjekur procedurën e instalimit TensorFlow, ju keni testuar tashmë që keni instaluar dhe punuar TensorFlow.

Me qëllim të zbulimit të njerëzve në një skenë të përgjithshme në natyrë, modelet që janë trajnuar paraprakisht në grupin e të dhënave COCO performojnë mjaft mirë - që është pikërisht modeli që kemi shkarkuar në fund të instalimit TensorFlow. Ne vetëm duhet ta përdorim atë për përfundim!

Përsëri, unë kam përfshirë kapjen e modelit dhe përfundimin në klasën e python TFClassify për t'i bërë gjërat më të lehta, të cilat mund t'i gjeni këtu.

Hapi 8: Vendosni një Web Server në Raspberry Pi

Vendosni një server në internet në Raspberry Pi
Vendosni një server në internet në Raspberry Pi

Mënyra më e lehtë për të hyrë në rezultatet e zbulimit të objektit është një shfletues uebi, kështu që le të krijojmë një server në internet në Raspberry Pi. Ne pastaj mund ta vendosim atë për të shërbyer fotografi nga një drejtori e caktuar.

Ekzistojnë mundësi të shumta për një kornizë të serverit në internet. Zgjodha Flask. Extremelyshtë jashtëzakonisht e konfigurueshme dhe e lehtë për tu zgjeruar me Python. Meqenëse "shkalla" që na nevojitet është e parëndësishme, ishte më se e mjaftueshme.

Unë sugjeroj ta instaloni në një virtualenv të ri, kështu që:

pi@raspberrypi: ~ $ mkvirtualenv webserv

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

Vini re se me një konfigurim normal të rrjetit do të jetë i arritshëm vetëm kur shfletuesi juaj është në të njëjtin LAN pa tel me Raspberry Pi tuaj. Ju mund të krijoni një konfigurim të portës / konfigurimit NAT në ruterin tuaj të Internetit për të lejuar qasje të jashtme - por unë rekomandoj kundër kësaj. Kodi që kam shkruar nuk përpiqet të sigurojë sigurinë që ju nevojitet kur lejoni qasje të përgjithshme në internet në Raspberry Pi tuaj.

Provoni instalimin tuaj duke ndjekur udhëzuesin e fillimit të shpejtë të Flask

Hapi 9: Njoftimet celulare nga Raspberry Pi duke përdorur IFTTT

Njoftimet celulare nga Raspberry Pi duke përdorur IFTTT
Njoftimet celulare nga Raspberry Pi duke përdorur IFTTT

Unë me të vërtetë dua të marr njoftime në celular kur ndodhin ngjarje. Në këtë rast, kur zbulohet një person dhe kur niveli i ujit zbret. Mënyra më e thjeshtë që kam gjetur për ta bërë këtë, pa pasur nevojë të shkruaj një aplikacion të personalizuar celular, është përdorimi i IFTTT. IFTTT qëndron për "Nëse Kjo Atëherë" dhe mundëson që shumë lloje të ngjarjeve të shkaktojnë shumë lloje veprimesh. Në rastin tonë, ne jemi të interesuar për shkasin IFTTT Maker Webhook. Kjo na lejon të shkaktojmë një veprim IFTTT duke i bërë një kërkesë HTTP POST serverit IFTTT me një çelës special të caktuar në llogarinë tonë, së bashku me të dhënat që specifikojnë atë që ka ndodhur. Veprimi që ndërmarrim mund të jetë aq i thjeshtë sa krijimi i një njoftimi në pajisjen tonë celular duke përdorur aplikacionin celular IFTTT, ose ndonjë gjë më komplekse se kaq.

Ja se si ta bëni atë:

  1. Krijoni një llogari IFTTT në ifttt.com
  2. Ndërsa jeni regjistruar, shkoni te faqja e cilësimeve të shërbimit Webhook dhe futni URL -në në shfletuesin tuaj (diçka si https://maker.ifttt.com/use/. Ajo faqe në internet do t'ju tregojë çelësin tuaj dhe URL -në që do të përdorni për të aktivizuar veprimet Me
  3. Krijoni një aplet IFTTT që do të gjenerojë një njoftim celular kur Webhook të aktivizohet me detajet e ngjarjes:

    1. Klikoni "Apletet e mia" dhe pastaj "Apleti i ri".
    2. Klikoni "+kjo" dhe zgjidhni "webhooks". Klikoni "Merrni një kërkesë në internet" për të vazhduar me detajet
    3. Jepini ngjarjes tuaj një emër, p.sh. "PoolEvent" dhe kliko "Krijo shkas"
    4. Klikoni "+atë" dhe zgjidhni "njoftimet". Pastaj zgjidhni "Dërgo një njoftim të pasur nga aplikacioni IFTTT"
    5. Për "titullin" zgjidhni diçka si "PoolPi"
    6. Për "mesazhin" shkruani "Pool Pi u zbulua:" dhe klikoni "shto përbërës".. "Vlera 1".
    7. Kthehuni te URL -ja që keni kopjuar në hapin 2. Ajo do të tregojë URL -në që do të përdorni për të thirrur apletin tuaj të sapokrijuar. Kopjoni atë URL, duke zëvendësuar vendmbajtësin {ngjarje} me emrin e ngjarjes (në shembullin PoolEvent)
  4. Shkarkoni, instaloni dhe identifikohuni në aplikacionin IFTTT për pajisjen tuaj celular
  5. Drejtoni këtë skenar python në Raspberry Pi tuaj për ta parë atë duke punuar (vini re se mund të duhen disa sekonda ose minuta për të aktivizuar në pajisjen tuaj celular):

kërkesat e importit

kërkesat.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Përshëndetje Njoftimet"})

Hapi 10: Shtoni një HAT rele për Raspberry Pi dhe lidheni atë me një valvul solenoid

Shtoni një HAT Rele në Raspberry Pi dhe lidheni atë me një valvul solenoid
Shtoni një HAT Rele në Raspberry Pi dhe lidheni atë me një valvul solenoid
Shtoni një HAT Rele në Raspberry Pi dhe lidheni atë me një valvul solenoid
Shtoni një HAT Rele në Raspberry Pi dhe lidheni atë me një valvul solenoid
Shtoni një HAT Rele në Raspberry Pi dhe lidheni atë me një valvul solenoid
Shtoni një HAT Rele në Raspberry Pi dhe lidheni atë me një valvul solenoid

Para se të vazhdoni me këtë hap, FIKONI Raspberry Pi tuaj: ssh në të dhe shkruani "sudo shutdown now", pastaj shkëputeni atë nga energjia

Qëllimi ynë është të ndezim dhe fikim furnizimin me energji në një valvul solenoid - një valvul që mund të hapë ose mbyllë furnizimin me ujë bazuar në fuqinë AC 24V që merr nga një furnizim me energji elektrike. Reletë janë përbërësit elektrikë që mund të hapin ose mbyllin një qark bazuar në një sinjal dixhital që Raspberry Pi ynë mund të sigurojë. Ajo që ne bëjmë këtu është të lidhim një stafetë me këto kunja sinjali dixhital të Raspberry Pi dhe ta mbyllim qarkun midis furnizimit me energji 24V AC dhe valvulës solenoide.

Kunjat në Raspberry Pi që mund të veprojnë si hyrje ose dalje dixhitale quhen GPIO - Input/Output për Qëllim të Përgjithshëm dhe ato janë rreshti i 40 kunjave në anën e Pi. Me Pi të fikur dhe futeni stafetën HAT fort në të. HAT -i që zgjodha ka 3 stafetë, dhe ne do të përdorim vetëm njërën prej tyre. Imagjinoni gjithçka që mund të bëni me dy të tjerët:)

Tani ndizni Raspberry Pi përsëri. LED i kuq "i fuqisë" në stafetën HAT duhet të ndizet, duke treguar se po merr energji nga Pi përmes GPIO. Le të provojmë se mund ta kontrollojmë: ssh përsëri në Pi, futni python dhe shkruani:

import gpiozero

dev = gpiozero. DigitalOutputDevice (26, vlera fillestare = e vërtetë) dev.off ()

Ju duhet të dëgjoni një "klik" të dëgjueshëm, që tregon se stafeta është e angazhuar dhe shihni një LED të ndezur që tregon se stafeta e parë është në pozicionin e lidhur. Tani mund të shtypni

dev.on ()

E cila do ta kthente stafetën në pozicionin "off" (e çuditshme, e di …) dhe do të dilte () nga python.

Tani duke përdorur kabllo kërcyes dhe kabllon më të gjatë lidhni stafetën midis furnizimit me energji 24V dhe valvulës solenoid. Shihni diagramin. Së fundi, lidhni valvulën solenoide me një rubinet duke përdorur adaptorët dhe përgatituni t'i provoni të gjitha duke përsëritur komandat e mësipërme - ata duhet të ndezin dhe fikin ujin.

Bashkangjitni një zorrë në valvulën solenoid dhe vendoseni skajin tjetër thellë në pishinë. Tani keni një sistem mbushjeje të pishinës të kontrolluar nga kompjuteri, dhe është koha për të lidhur një sensor për t'i treguar se kur të funksionojë.

Hapi 11: Lidhni një sensor të nivelit të ujit

Lidhni një sensor të nivelit të ujit
Lidhni një sensor të nivelit të ujit
Lidhni një sensor të nivelit të ujit
Lidhni një sensor të nivelit të ujit
Lidhni një sensor të nivelit të ujit
Lidhni një sensor të nivelit të ujit
Lidhni një sensor të nivelit të ujit
Lidhni një sensor të nivelit të ujit

Një sensor i nivelit të ujit është thjesht një noton që lidh një qark elektrik kur notimi është poshtë dhe e prish atë kur noton lart. Nëse e futni në pishinë në lartësinë e duhur, nota do të ngrihet kur niveli i ujit është i përshtatshëm, por do të bjerë poshtë kur nuk ka ujë të mjaftueshëm.

Që Raspberry Pi të njohë statusin e sensorit të nivelit të ujit ne kemi nevojë që Pi të ndiejë një qark të hapur ose të mbyllur. Për fat të mirë kjo është shumë e thjeshtë: të njëjtët lidhës GPIO që ne përdorim si dalje dixhitale për të kontrolluar stafetat mund të veprojnë si hyrje (pra I në GPIO). Në mënyrë të veçantë, nëse lidhim një tel të sensorit në +3.3V në lidhësin GPIO dhe tela tjetër sensor në një kunj që e konfigurojmë si hyrje tërheqëse (që do të thotë se normalisht do të jetë në nivelin e tensionit GND), ai kunj do të matet një tension dixhital "i lartë" ose "i ndezur" vetëm kur sensori i nivelit të ujit mbyll qarkun - kur niveli i ujit është i ulët. Kam përdorur pinin GPIO 16 si hyrje, të cilën e shënova në imazhin e mësipërm.

Kodi python për të konfiguruar pin si hyrje dhe për të testuar gjendjen e tij aktuale është:

import gpiozero

niveli_input = gpiozero. Butoni (16) uji_luft = niveli_input.është shtypur

Një sfidë e mundshme është se kur sensori thjesht ndryshon gjendjen, ai do të lëkundej shpejt midis gjendjeve të ndezura dhe të fikura. Zgjidhja për këtë njihet si "debouncing" dhe kërkon një ndryshim të qëndrueshëm të gjendjes para se të ndërmerrni veprime. Biblioteka GPIOZERO ka kod për ta bërë këtë, por për disa arsye ai kod nuk funksionoi mirë për mua. Shkrova një lak të thjeshtë për të shkaktuar alarme IFTTT kur zbulohet një ndryshim i qëndrueshëm i gjendjes, të cilin mund ta gjeni në depon time këtu.

Hapi 12: Shkruani kod për t'i lidhur të gjitha së bashku

Shkruani kod për t'i lidhur të gjitha së bashku
Shkruani kod për t'i lidhur të gjitha së bashku

Kjo eshte. Konfigurimi ynë është i plotë. Ju mund të shkruani kodin tuaj për t'i lidhur gjërat së bashku në një sistem të plotë, ose përdorni kodin që unë jap. Për ta bërë këtë, thjesht krijoni strukturën e drejtorisë dhe klononi depon, si kështu:

mkdir poolpi

cd poolpi git klon

Tjetra, modifikoni skedarët e quajtur ifttt_url.txt në drejtoritë motion_alert dhe water_level për të pasur URL -në për lidhësin tuaj të internetit IFTTT me çelësin tuaj sekret. Ju mund të përdorni dy grepa të ndryshëm në internet për veprime të ndryshme.

Së fundi, ne duam që ky kod të funksionojë automatikisht. Mënyra më e lehtë për ta arritur këtë është përmes shërbimit Linux crontab. Ne mund të shtojmë disa linja crontab për dy detyra kryesore:

  1. Drejtoni tre programet tona: detektorin e objektit, sensorin e nivelit të ujit dhe serverin e uebit në çdo rindezje
  2. Pastroni drejtorinë e daljes, fshini fotot e vjetra dhe skedarët e vjetër video (zgjodha të fshij skedarët më të vjetër se 1 ditë dhe fotografitë më të vjetër se 7 ditë - mos ngurroni të eksperimentoni)

Për ta bërë atë, shkruani crontab -e i cili do të hapë redaktuesin tuaj të tekstit nano. Shtoni rreshtat e mëposhtëm në fund të skedarit:

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

0 2 * * * find/home/pi/poolpi/output -type f -name " *.jpg" -mtime +7 -fshij @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

Më në fund, rindizni Raspberry Pi tuaj. Tani është gati për ta mbajtur pishinën tuaj të plotë dhe të sigurt.

Bëj kallajxhi me konfigurimin, kodin dhe mos harro të shënosh në depon time të github -it dhe komento mbi udhëzimet nëse të duket e dobishme. Unë jam gjithmonë në kërkim për të mësuar më shumë.

Gëzuar bërja!

Sfida IoT
Sfida IoT
Sfida IoT
Sfida IoT

Vrapues në Sfidën IoT

Recommended: