Orodha ya maudhui:

Pool Pi Guy - AI Inayotokana na Mfumo wa Kengele na Ufuatiliaji wa Dimbwi Kutumia Raspberry Pi: Hatua 12 (na Picha)
Pool Pi Guy - AI Inayotokana na Mfumo wa Kengele na Ufuatiliaji wa Dimbwi Kutumia Raspberry Pi: Hatua 12 (na Picha)

Video: Pool Pi Guy - AI Inayotokana na Mfumo wa Kengele na Ufuatiliaji wa Dimbwi Kutumia Raspberry Pi: Hatua 12 (na Picha)

Video: Pool Pi Guy - AI Inayotokana na Mfumo wa Kengele na Ufuatiliaji wa Dimbwi Kutumia Raspberry Pi: Hatua 12 (na Picha)
Video: Пост для выживания 2024, Julai
Anonim
Pool Pi Guy - AI Inayotokana na Mfumo wa Kengele na Ufuatiliaji wa Dimbwi Kutumia Raspberry Pi
Pool Pi Guy - AI Inayotokana na Mfumo wa Kengele na Ufuatiliaji wa Dimbwi Kutumia Raspberry Pi

Kuwa na dimbwi nyumbani ni raha, lakini huja na jukumu kubwa. Wasiwasi wangu mkubwa ni ufuatiliaji ikiwa mtu yuko karibu na dimbwi bila kutunzwa (haswa watoto wadogo). Kero yangu kubwa ni kuhakikisha kuwa laini ya maji ya dimbwi haiendi chini ya kiingilio cha pampu, ambacho kingemaliza pampu kavu na kuiharibu kugharimu $ $ $ katika ukarabati.

Hivi majuzi nimegundua jinsi ya kutumia Raspberry Pi na OpenCV na TensorFlow, pamoja na sensa ya kiwango cha maji na valve ya solenoid kutatua maswala yote mawili - na kufurahiya kuifanya!

Inageuka pia kuwa mfumo mzuri wa kengele pia - mwendo ulioamilishwa, uliodhibitiwa na AI, unaoweza kubadilishwa sana.

Wacha tuingie.

Hatua ya 1: Mpango Mkubwa

Katika hii tunaweza kufundisha jinsi ya:

  1. Sanidi Raspberry Pi na OpenCV na TensorFlow
  2. Unganisha kamera ya wavuti kupitia kebo ndefu ya USB
  3. Andika algorithm ya OpenCV ili kugundua mwendo
  4. Tumia TensorFlow kwa kugundua kitu
  5. Sanidi seva ya wavuti kwenye Raspberry Pi ili kuonyesha picha za kupendeza
  6. Unganisha na IFTTT ili kuchochea arifa za rununu ikiwa mtu atagunduliwa
  7. Ambatisha HAT ya kupeleka kwenye Raspberry Pi na uiunganishe na valve ya solenoid ambayo itaongeza maji kwenye dimbwi.
  8. Ambatisha sensa ya kiwango cha maji kwenye Raspberry Pi na unganishe nayo kwa kutumia GPIO ya Pi
  9. Andika nambari kadhaa ya kuifunga pamoja

Hatua ya 2: Orodha ya Ununuzi

Orodha ya manunuzi
Orodha ya manunuzi

Vipengele vyote vinapatikana kwa urahisi kutoka Amazon. Jisikie huru kujaribu na kubadilisha vifaa - hiyo ni furaha ya nusu!

  1. Pi ya Raspberry
  2. Ugavi wa Nguvu ya Raspberry Pi (usicheze hapa)
  3. Kadi ya Kumbukumbu (kubwa ni bora)
  4. Kesi (hii ni kubwa ya kutosha kuweka Pi na HAT)
  5. Kamera ya wavuti ya USB (kamera yoyote ya wavuti itafanya, lakini unataka ile inayopata picha nzuri na mizani ya taa vizuri)
  6. Cable ya ugani ya USB (ikiwa inahitajika - pima umbali kati ya Pi na wapi ungeweka kamera)
  7. Bodi ya kupitisha HAT (hii ina relays 3 na tunahitaji moja tu, lakini utapata matumizi kwa zingine mapema hivi karibuni!)
  8. Solenoid
  9. Solenoid inayofaa 1 na Inafaa 2 (ambayo inategemea sana kile unalingana na soti pekee, lakini hizi zilinifanyia kazi)
  10. Ugavi wa Umeme wa Solenoid (AC yoyote 24V ingefanya)
  11. Cable (tena, karibu cable yoyote ya strand 2 ingefanya - sasa ni ndogo)
  12. Kiwango cha Kubadilika kwa Kuelea kwa Kiwango cha Maji (huu ni mfano tu, angalia ni nini kinachoweza kushikamana kwa urahisi na dimbwi lako)
  13. Baadhi ya waya za Jumper na viunganisho vya waya

Hatua ya 3: Sanidi Raspberry yako Pi

Sanidi Raspberry yako Pi
Sanidi Raspberry yako Pi

Raspberry Pi ni kompyuta nzuri sana. Inagharimu $ 35 tu, inaendesha kila wakati, na ina programu na vifaa vingi vinavyoendana. Kuiweka ni rahisi sana:

  1. Umbiza kadi yako ya SD. Hii inahitaji huduma maalum - Raspberry Pi inaweza tu kutoka kwa kadi ya SD iliyoumbizwa ya FAT. Fuata maagizo haya.
  2. Unganisha Raspberry Pi kwenye kibodi na panya ya USB, pamoja na onyesho la HDMI, na ufuate maagizo kwenye mafunzo ya Raspberry Pi NOOBS. Hakikisha kusanidi WiFi na kuwezesha ufikiaji wa SSH. Usisahau kusanidi nywila ya akaunti chaguo-msingi ya pi.
  3. Kwenye usanidi wa mtandao wako wa nyumbani IP tuli kwa Raspberry Pi - ingeifanya iwe rahisi kwa SSH kuingia.
  4. Hakikisha una mteja wa ssh iliyosanikishwa kwenye desktop / laptop yako. Kwa PC ningependekeza Putty, ambayo unaweza kusanikisha kutoka hapa.
  5. Ondoa USB na HDMI kutoka kwa Raspberry Pi, anzisha tena, na uingie ndani - ikiwa yote ilifanya kazi unapaswa kuona kitu kama hiki:

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

Programu zilizojumuishwa na mfumo wa Debian GNU / Linux ni programu ya bure; maneno halisi ya usambazaji kwa kila programu yameelezewa katika faili za kibinafsi katika / usr / share / doc / * / hakimiliki. Debian GNU / Linux inakuja na HAKUNA UHAKIKI KABISA, kwa kiwango kinachoruhusiwa na sheria inayotumika. Kuingia mwisho: Mon Mei 13 10: 41: 40 2019 kutoka 104.36.248.13 pi @ raspberrypi: ~ $

Hatua ya 4: Sanidi OpenCV

Sanidi OpenCV
Sanidi OpenCV

OpenCV ni mkusanyiko wa kushangaza wa kazi za kudanganya picha kwa maono ya kompyuta. Itaturuhusu kusoma picha kutoka kwa Kamera ya Wavuti, kuzifanya kupata maeneo ya mwendo, kuziokoa na zaidi. Usanidi kwenye Raspberry Pi sio ngumu lakini inahitaji utunzaji fulani.

Anza kwa kusanikisha virtaulenvwrapper: tutatumia chatu kufanya programu zetu zote, na wema utatusaidia kutenganisha utegemezi kwa OpenCV na TensorFlow dhidi ya Flask au GPIO:

pi @ raspberrypi: ~ $ sudo pip install virtualenvwrapper

Sasa unaweza kutekeleza "mkvirtualenv" ili kuunda mazingira mapya, "workon" kuifanyia kazi, na zaidi.

Kwa hivyo, wacha tuunde mazingira ya udanganyifu wetu wa picha, na chatu 3 kama mkalimani chaguo-msingi (ni 2019, hakuna sababu ya kushikamana na chatu wa zamani 2):

pi @ raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi @ raspberrypi: ~

Sasa tuko tayari kusanikisha OpenCV. Tutafuata mafunzo bora katika Jifunze OpenCV. Hasa fuata hatua yao ya 1 na 2:

Sudo apt-sasisho sudo apt -sasasisha ## Sakinisha utegemezi sudo apt-pata-weka -kiki ya muhimu ya kuweka dev libpng12-dev sudo apt-get -y kufunga libtiff5-dev sudo apt-kupata -y kufunga libtiff-dev sudo apt-kupata-kufunga libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-kupata - unasakin libxine2-dev libv4l-dev cd / usr / include / linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y kusakinisha libgstreamer 10-dev sudo apt-get -y kufunga libgtk2.0-dev libtbb-dev qt5-default sudo apt-get -y kufunga libatlas-base-dev sudo apt-kupata-kufunga libmp3lame-dev libtheora-dev sudo apt-kupata -Inaweka libvorbis-dev libxvidcore-dev libx264-dev Sudo apt-get -y kufunga libprotobuf -dev protobuf-compiler sudo apt-get -y kufunga libgoogle-glog-dev libgflags-dev sudo apt-get -y kufunga libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo apt-kupata kufunga libqtgui4 sudo apt-get kufunga libqt4- mtihani

Sasa tunaweza tu kusanikisha OpenCV na vifungo vya chatu ndani ya fadhila ya cv (bado uko ndani, sivyo?) Ukitumia

pip kufunga opencv-contrib-chatu

Na ndio hivyo! Tuna OpenCV iliyosanikishwa kwenye Raspberry Pi yetu, tayari kukamata picha na video, kuzishughulikia na kuwa baridi.

Angalia kuwa kwa kufungua mkalimani wa chatu na kuagiza opencv na angalia kuwa hakuna makosa:

(cv) pi @ raspberrypi: ~ $ chatu

Python 3.5.3 (default, Sep 27 2018, 17:25:39) [GCC 6.3.0 20170516] kwenye linux Aina "msaada", "hakimiliki", "mikopo" au "leseni" kwa habari zaidi. >>> kuagiza cv2 >>>

Hatua ya 5: Sanidi TensorFlow

Sanidi TensorFlow
Sanidi TensorFlow

TensorFlow ni mfumo wa kujifunza mashine / AI iliyoundwa na kudumishwa na Google. Inayo msaada mkubwa kwa modeli za ujifunzaji wa kina kwa kazi anuwai pamoja na kugundua kitu kwenye picha, na sasa ni rahisi kusanikisha kwenye Raspberry Pi. Utendaji wa mifano yake nyepesi kwenye Pi ndogo ni karibu sura 1 kwa sekunde, ambayo ni ya kutosha kwa matumizi kama yetu.

Tutafuata mafunzo bora na Edje Electronics, na marekebisho yaliyowezekana na usambazaji wa TensorFlow wa hivi karibuni:

pi @ raspberrypi: ~ $ workon cv

. pi @ raspberrypi: ~ $ sudo apt-pata kufunga python-tk

Sasa tunahitaji kukusanya protobuf ya Google. Fuata tu maagizo katika hatua ya 4 ya mafunzo sawa bora

Mwishowe, unganisha na usanidi ufafanuzi wa mfano wa TensorFlow - fuata hatua ya 5 katika mafunzo ya Umeme ya Edje

Jisikie huru kufuata mfano wao katika hatua ya 6 pia, ni utangulizi mzuri wa kugundua kitu kwenye Raspberry Pi.

Hatua ya 6: Kugundua Mwendo Kutumia OpenCV

Wacha tuanze kwa kujaribu kuwa OpenCV inaweza kuunganishwa na kamera yetu ya wavuti: ssh ndani ya Raspberry Pi, songa kwa cv virtualenv (workon cv), fungua mkalimani wa chatu (chapa tu chatu), na weka amri zifuatazo za chatu:

kuagiza cv2

cap = cv2. VideoCapture (0) cap.set (cv2. CAP_PROP_FRAME_WIDTH, 1920) cap. fomati (fremu. sura [1], fremu. sura [0])

Kwa bahati yoyote utaona kuwa OpenCV iliweza kusoma fremu ya HD kutoka kwa kamera.

Unaweza kutumia cv2.imwrite (njia, fremu) kuandika fremu hiyo kwenye diski na kuirudisha nyuma ili uangalie halisi.

Mkakati wa kugundua mwendo uko sawa mbele:

  1. Fanya kazi kwa muafaka wa azimio la chini - hakuna haja ya kufanya kazi kwenye HD kamili hapa
  2. Zaidi ya hayo, ficha picha ili kuhakikisha kelele kidogo iwezekanavyo.
  3. Weka wastani wa fremu N za mwisho. Kwa programu hii, ambapo kiwango cha fremu iko karibu na ramprogrammen 1 (kwa sababu tu TensorFlow inachukua muda kwa kila fremu), niligundua kuwa N = 60 inarudisha matokeo mazuri. Na kwa kuwa utekelezaji makini hauchukui CPU zaidi na muafaka zaidi ambayo ni sawa (inachukua kumbukumbu zaidi - lakini hiyo ni ndogo wakati tunafanya kazi na muafaka wa azimio la chini)
  4. Ondoa picha ya sasa kutoka kwa wastani unaotumika (kuwa mwangalifu kwa kuandika - unahitaji kuruhusu maadili mazuri na hasi [-255.. 255], kwa hivyo fremu inahitaji kubadilishwa kuwa int)
  5. Unaweza kufanya uondoaji kwenye ubadilishaji wa kijivu wa fremu (na wastani), au uifanye kando kwa kila njia ya RGB kisha unganisha matokeo (ambayo ni mkakati niliochagua, na kuifanya iwe nyeti kwa mabadiliko ya rangi)
  6. Tumia kizingiti kwenye delta na uondoe kelele kwa mmomomyoko na upanuzi
  7. Mwishowe tafuta mtaro wa maeneo yenye delta - maeneo haya ni mahali ambapo mwendo umetokea na picha ya sasa ni tofauti na wastani wa picha zilizopita. Tunaweza kupata zaidi masanduku yanayopakana kwa mtaro huu ikiwa inahitajika.

Nimejumuisha nambari ya kufanya hivi katika darasa la chatu la DeltaFinder ambalo unaweza kupata kwenye github yangu hapa

Hatua ya 7: Gundua Vitu ukitumia TensorFlow

Ikiwa umefuata utaratibu wa usanikishaji wa TensorFlow, tayari umejaribu kuwa umeweka TensorFlow na kufanya kazi.

Kwa madhumuni ya kugundua watu katika eneo la nje la nje, mifano ambayo imefundishwa mapema kwenye seti ya data ya COCO hufanya vizuri - ambayo ndio mfano ambao tumepakua mwishoni mwa usanidi wa TensorFlow. Tunahitaji tu kuitumia kwa kuzingatia!

Tena, nimeingiza upakiaji wa mfano na upendeleo katika darasa la TFClassify chatu ili kufanya mambo iwe rahisi, ambayo unaweza kupata hapa.

Hatua ya 8: Sanidi Seva ya Wavuti kwenye Raspberry Pi

Sanidi Seva ya Wavuti kwenye Raspberry Pi
Sanidi Seva ya Wavuti kwenye Raspberry Pi

Njia rahisi ya kupata matokeo ya kugundua kitu ni kivinjari, kwa hivyo wacha tuanzishe seva ya wavuti kwenye Raspberry Pi. Tunaweza kisha kuiweka ili kutumikia picha kutoka kwa saraka iliyopewa.

Kuna chaguzi nyingi kwa mfumo wa seva ya wavuti. Nilichagua Flask. Inasanidi sana na ni rahisi kupanua na chatu. Kwa kuwa "kiwango" tunachohitaji ni kidogo, kilikuwa zaidi ya kutosha.

Ninapendekeza kuiweka katika fadhila mpya, kwa hivyo:

pi @ raspberrypi: ~ $ mkvirtualenv webserv

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

Kumbuka kuwa na usanidi wa kawaida wa mtandao utapatikana tu wakati kivinjari chako kiko kwenye LAN sawa ya waya kama Raspberry Pi yako. Unaweza kuunda usanidi wa ramani ya bandari / usanidi wa NAT kwenye router yako ya mtandao ili kuruhusu ufikiaji wa nje - lakini ninapendekeza dhidi ya hiyo. Nambari niliyoandika hajaribu kutoa usalama ambao utahitaji wakati wa kuruhusu ufikiaji wa mtandao kwa Raspberry Pi yako.

Jaribu usanidi wako kwa kufuata mwongozo wa kuanza haraka wa Flask

Hatua ya 9: Arifa za rununu kutoka kwa Raspberry Pi Kutumia IFTTT

Arifa za rununu Kutoka kwa Raspberry Pi Kutumia IFTTT
Arifa za rununu Kutoka kwa Raspberry Pi Kutumia IFTTT

Nataka sana kupata arifa za rununu wakati matukio yanatokea. Katika kesi hii, wakati mtu hugunduliwa na wakati kiwango cha maji kinapungua. Njia rahisi zaidi ambayo nimeona kufanya hivyo, bila ya kuandika programu maalum ya rununu, ni kutumia IFTTT. IFTTT inasimama kwa "Ikiwa Hii Halafu Hiyo" na inawezesha aina nyingi za hafla kuchochea aina nyingi za vitendo. Kwa upande wetu, tunavutiwa na kichocheo cha IFTTT Maker Webhook. Hii inatuwezesha kuchochea hatua ya IFTTT kwa kufanya ombi la POST ya HTTP kwa seva ya IFTTT na ufunguo maalum uliopewa akaunti yetu, pamoja na data ambayo inabainisha kilichotokea. Hatua tunayochukua inaweza kuwa rahisi kama kuunda arifa kwenye kifaa chetu cha rununu kutumia programu ya rununu ya IFTTT, au kitu chochote ngumu zaidi kuliko hicho.

Hapa kuna jinsi ya kufanya hivyo:

  1. Unda akaunti ya IFTTT kwenye ifttt.com
  2. Wakati umeingia, nenda kwenye ukurasa wa mipangilio ya huduma ya Webhook na uweke URL kwenye kivinjari chako (kitu kama https://maker.ifttt.com/use/. Ukurasa huo wa wavuti utakuonyesha ufunguo wako na URL ya kutumia kuchochea vitendo.
  3. Unda applet ya IFTTT ambayo itatoa arifa ya rununu wakati Webhook inasababishwa na maelezo ya hafla hiyo:

    1. Bonyeza "Applets Yangu" na kisha "Applet Mpya".
    2. Bonyeza "+ hii" na uchague "webhooks". Bonyeza "Pokea ombi la wavuti" ili uende kwenye maelezo
    3. Ipe tukio lako jina, k.m. "PoolEvent" na ubofye "Unda kichochezi"
    4. Bonyeza "+ hiyo" na uchague "arifa". Kisha chagua "Tuma arifa tajiri kutoka kwa programu ya IFTTT"
    5. Kwa "jina" chagua kitu kama "PoolPi"
    6. Kwa "ujumbe" andika "Po Po Pi imegunduliwa:" na bonyeza "ongeza kiunga".. "Thamani1".
    7. Rudi kwenye URL uliyonakili katika hatua ya 2. Itaonyesha URL ya kutumia kuomba applet yako mpya. Nakili URL hiyo, ukibadilisha kishika nafasi {event} na jina la tukio (katika mfano wa PoolEvent)
  4. Pakua, weka na ingia kwenye programu ya IFTTT ya kifaa chako cha rununu
  5. Endesha hati hii ya chatu kwenye Raspberry Pi yako ili kuiona ikifanya kazi (kumbuka inaweza kuchukua sekunde chache au dakika kuanza kwenye kifaa chako cha rununu):

kuagiza maombi

maombi.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Hello Notifications"})

Hatua ya 10: Ongeza Kofia ya Kupeleka kwa Raspberry Pi na Uiunganishe na Valve ya Solenoid

Ongeza HAT ya Kupokea kwa Raspberry Pi na Uiunganishe na Valve ya Solenoid
Ongeza HAT ya Kupokea kwa Raspberry Pi na Uiunganishe na Valve ya Solenoid
Ongeza HAT ya Kupokea kwa Raspberry Pi na Uiunganishe na Valve ya Solenoid
Ongeza HAT ya Kupokea kwa Raspberry Pi na Uiunganishe na Valve ya Solenoid
Ongeza HAT ya Kupokea kwa Raspberry Pi na Uiunganishe na Valve ya Solenoid
Ongeza HAT ya Kupokea kwa Raspberry Pi na Uiunganishe na Valve ya Solenoid

Kabla ya kuendelea na hatua hii ZIMA Raspberry Pi yako: ssh nayo na andika "kuzima kwa sudo sasa", kisha uikate kutoka kwa nguvu

Lengo letu ni kuwasha na kuzima usambazaji wa umeme kwa valve ya pekee - valve inayoweza kufungua au kufunga usambazaji wa maji kulingana na nguvu ya 24V AC inapata kutoka kwa usambazaji wa umeme. Relays ni vifaa vya umeme ambavyo vinaweza kufungua au kufunga mzunguko kulingana na ishara ya dijiti ambayo Raspberry Pi yetu inaweza kutoa. Tunachofanya hapa ni kuunganisha relay kwa pini hizi za dijiti za Raspberry Pi, na kuifunga karibu na mzunguko kati ya usambazaji wa umeme wa 24V AC na valve ya solenoid.

Pini kwenye Raspberry Pi inayoweza kufanya kama pembejeo au pato la dijiti inaitwa GPIO - Pembejeo / Pato la Kusudi la Jumla na ni safu ya pini 40 upande wa Pi. Pamoja na Pi kuzimwa na kuingiza HAT ya relay ndani yake. HAT niliyochagua ina relay 3 ndani yake, na tutatumia moja tu. Fikiria yote unayoweza kufanya na hizo zingine mbili:)

Sasa washa tena Raspberry Pi. Taa nyekundu ya "nguvu" kwenye HAT ya relay inapaswa kuwasha, ikionyesha inapata nguvu kutoka kwa Pi kupitia GPIO. Wacha tujaribu kwamba tunaweza kuidhibiti: ssh ndani ya Pi tena, ingiza chatu na andika:

kuagiza gpiozero

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

Unapaswa kusikia "bonyeza" inayosikika, ikionyesha kwamba relay imeshiriki, na uone mwangaza wa LED ikionyesha kuwa relay ya kwanza iko kwenye nafasi iliyounganishwa. Sasa unaweza kuandika

dev.on ()

Ambayo ingegeuza upelekaji kwa nafasi ya "kuzima" (isiyo ya kawaida, najua…) na kutoka () kutoka kwa chatu.

Sasa kwa kutumia nyaya za kuruka na kebo ndefu zaidi unganisha relay kati ya umeme wa 24V na valve ya solenoid. Tazama mchoro. Mwishowe, unganisha valve ya solenoid kwenye bomba ukitumia adapta na uwe tayari kuijaribu yote kwa kurudia amri zilizo hapo juu - wanapaswa kuwasha na kuzima maji.

Ambatisha bomba kwa valve ya solenoid na uweke ncha nyingine kirefu kwenye dimbwi. Sasa una mfumo wa kudhibiti dimbwi linalodhibitiwa na kompyuta, na ni wakati wa kuunganisha kitambara ili kukiambia ni wakati gani wa kukimbia.

Hatua ya 11: Unganisha Sensor ya Kiwango cha Maji

Unganisha Sensor ya Kiwango cha Maji
Unganisha Sensor ya Kiwango cha Maji
Unganisha Sensor ya Kiwango cha Maji
Unganisha Sensor ya Kiwango cha Maji
Unganisha Sensor ya Kiwango cha Maji
Unganisha Sensor ya Kiwango cha Maji
Unganisha Sensor ya Kiwango cha Maji
Unganisha Sensor ya Kiwango cha Maji

Sensor ya kiwango cha maji ni kuelea tu ambayo huunganisha mzunguko wa umeme wakati kuelea iko chini, na kuivunja wakati inaelea juu. Ukiiingiza kwenye dimbwi kwa urefu wa kulia kuelea itakuwa juu wakati kiwango cha maji kinatosha lakini huanguka chini wakati hakuna maji ya kutosha.

Kwa Raspberry Pi kujua hali ya sensa ya kiwango cha maji tunahitaji Pi kuhisi mzunguko wazi au uliofungwa. Kwa bahati nzuri hiyo ni rahisi sana: viunganishi sawa vya GPIO ambavyo tunatumia kama pato la dijiti kudhibiti upitishaji vinaweza kufanya kama pembejeo (kwa hivyo mimi katika GPIO). Hasa, ikiwa tutaunganisha waya moja ya sensa kwa + 3.3V kwenye kiunganishi cha GPIO na waya nyingine ya sensorer kwa pini ambayo tunasanidi kama pembejeo ya kuvuta (ikimaanisha itakuwa kawaida katika kiwango cha voltage ya GND), pini hiyo itapima dijiti "ya juu" au "kwenye" voltage tu wakati sensor ya kiwango cha maji inapofunga mzunguko - wakati kiwango cha maji ni cha chini. Nilitumia GPIO pin 16 kama pembejeo, ambayo niliweka alama kwenye picha hapo juu.

Nambari ya chatu ya kusanidi pini kama pembejeo na jaribu hali yake ya sasa ni:

kuagiza gpiozero

kiwango_iingizo = gpiozero. Kitufe (16) maji_pungua = kiwango_ya pembejeo. imesisitizwa

Changamoto moja inayowezekana ni kwamba wakati sensor inabadilika tu hali ingeweza kusonga haraka kati ya majimbo ya kuwasha na kuzima. Suluhisho la hilo linajulikana kama "kujiondoa" na linatafuta mabadiliko thabiti ya serikali kabla ya kuchukua hatua. Maktaba ya GPIOZERO ina nambari ya kufanya hivyo, lakini kwa sababu fulani nambari hiyo haikunifanyia kazi vizuri. Niliandika kitanzi rahisi kuchochea arifu za IFTTT wakati mabadiliko ya hali thabiti yanapatikana, ambayo unaweza kupata katika hazina yangu hapa.

Hatua ya 12: Andika Nambari ya Kuifunga Yote Pamoja

Andika Nambari ya Kuifunga Yote Pamoja
Andika Nambari ya Kuifunga Yote Pamoja

Hiyo ndio. Usanidi wetu umekamilika. Unaweza kuandika nambari yako mwenyewe kufunga vitu pamoja kwenye mfumo kamili, au kutumia nambari ninayotoa. Ili kufanya hivyo tengeneza tu muundo wa saraka na uunganishe hazina, kama hivyo:

mkdir poolpi

cd poolpi clone ya git

Ifuatayo, hariri faili zilizoitwa ifttt_url.txt katika saraka ya motion_alert na maji_level kuwa na URL ya ndoano yako ya wavuti ya IFTTT na ufunguo wako wa siri. Unaweza kutumia kulabu mbili tofauti za wavuti kwa vitendo tofauti.

Mwishowe, tunataka nambari hii ya kuendesha kiatomati. Njia rahisi ya kukamilisha hiyo ni kupitia huduma ya crontab ya Linux. Tunaweza kuongeza mistari ya crontab kwa kazi kuu mbili:

  1. Endesha programu zetu tatu: kigunduzi cha kitu, sensa ya kiwango cha maji na seva ya wavuti kwenye kila reboot
  2. Kusafisha saraka ya pato, ukifuta picha za zamani na faili za video za zamani (nilichagua kufuta faili zilizozidi siku 1 na picha zilizo zaidi ya siku 7 - jisikie huru kujaribu)

Ili kufanya aina hiyo crontab -e ambayo itafungua kihariri chako cha nano. Ongeza mistari ifuatayo chini ya faili:

0 1 * * * pata / nyumbani / pi / poolpi / pato -type f-jina "*.avi" -mtime +1 -futa

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

Mwishowe, anzisha tena Raspberry Pi yako. Sasa iko tayari kuweka dimbwi lako kamili na salama.

Fikiria juu ya usanidi, nambari, na usisahau kuweka nyota kwenye hazina yangu ya github na utoe maoni juu ya inayoweza kufundishwa ikiwa utaiona kuwa muhimu. Siku zote natafuta ili kujifunza zaidi.

Kufanya furaha!

Changamoto ya IoT
Changamoto ya IoT
Changamoto ya IoT
Changamoto ya IoT

Mkimbiaji Juu katika Changamoto ya IoT

Ilipendekeza: