Агуулгын хүснэгт:

Pool Pi Guy - Raspberry Pi ашиглан хиймэл оюунаар ажилладаг дохиоллын систем ба усан сангийн хяналт: 12 алхам (зурагтай)
Pool Pi Guy - Raspberry Pi ашиглан хиймэл оюунаар ажилладаг дохиоллын систем ба усан сангийн хяналт: 12 алхам (зурагтай)

Видео: Pool Pi Guy - Raspberry Pi ашиглан хиймэл оюунаар ажилладаг дохиоллын систем ба усан сангийн хяналт: 12 алхам (зурагтай)

Видео: Pool Pi Guy - Raspberry Pi ашиглан хиймэл оюунаар ажилладаг дохиоллын систем ба усан сангийн хяналт: 12 алхам (зурагтай)
Видео: Топ 10 языков 2021. Java 16/17. Процессоры 3 нм. Триумф Netflix [MJC news #5] НОВОСТИ АЙТИ ФЕВРАЛЬ. 2024, Долдугаар сарын
Anonim
Pool Pi Guy - AI дээр суурилсан дохиоллын систем ба Raspberry Pi ашиглан усан сангийн хяналт
Pool Pi Guy - AI дээр суурилсан дохиоллын систем ба Raspberry Pi ашиглан усан сангийн хяналт

Гэртээ усан сантай байх нь хөгжилтэй боловч маш их үүрэг хариуцлага хүлээдэг. Миний хамгийн их санаа зовдог зүйл бол усан сангийн дэргэд хэн нэгэн хараа хяналтгүй (ялангуяа бага насны хүүхдүүд) байгаа эсэхийг хянах явдал юм. Миний хамгийн их бухимддаг зүйл бол усан сан дахь усны шугам хэзээ ч насосны оролтоос доогуур гарахгүй байх явдал юм.

Би саяхан Raspberry Pi -ийг OpenCV ба TensorFlow ашиглан усны түвшний мэдрэгч, цахилгаан соронзон хавхлагын хамт хоёуланг нь хэрхэн шийдвэрлэхээ олж мэдээд үүнийг хөгжилтэй өнгөрүүлээрэй!

Энэ нь бас гайхалтай дохиоллын систем болж хувирсан - хөдөлгөөнийг идэвхжүүлсэн, хиймэл оюун ухаанаар удирддаг, хязгааргүй тохируулдаг.

Усанд орцгооё.

Алхам 1: Их төлөвлөгөө

Энэхүү зааварчилгаанд бид хэрхэн хийхийг харуулах болно.

  1. OpenCV ба TensorFlow ашиглан Raspberry Pi -ийг тохируулна уу
  2. Вэбкамыг урт USB кабелиар холбоно уу
  3. Хөдөлгөөнийг илрүүлэх OpenCV алгоритмыг бичнэ үү
  4. Объект илрүүлэхийн тулд TensorFlow -ийг ашиглана уу
  5. Сонирхолтой зургуудыг үзүүлэхийн тулд Raspberry Pi дээр вэб сервер суулгаарай
  6. IFTTT -тэй нэгдэж, хүн илэрсэн тохиолдолд гар утасны сэрэмжлүүлэг өгөөрэй
  7. Raspberry Pi -д HAT реле холбож, усан сан руу ус нэмдэг ороомог хавхлагад холбоно уу.
  8. Усны түвшний мэдрэгчийг Raspberry Pi -д холбож, Pi -ийн GPIO ашиглан интерфэйсийг холбоно уу
  9. Бүгдийг наалдуулахын тулд хэдэн код бичээрэй

Алхам 2: Худалдааны жагсаалт

Худалдан авах бүтээгдэхүүний жагсаалт
Худалдан авах бүтээгдэхүүний жагсаалт

Бүх бүрэлдэхүүн хэсгүүдийг Амазоноос авах боломжтой. Туршилт хийх, бүрэлдэхүүн хэсгүүдийг солилцохдоо чөлөөтэй байгаарай - энэ бол зугаа цэнгэлийн хагас юм!

  1. Raspberry Pi
  2. Raspberry Pi цахилгаан хангамж (энд бүү хэмнээрэй)
  3. Санах ойн карт (том байх нь дээр)
  4. Кейс (энэ нь Pi ба HAT хоёуланг нь байрлуулахад хангалттай том хэмжээтэй)
  5. USB вэбкамер (ямар ч вэбкамер хийх болно, гэхдээ та сайн зураг авч, гэрэлтүүлгийг сайн тэнцвэржүүлэхийг хүсч байна)
  6. USB өргөтгөл кабель (хэрэв шаардлагатай бол камер хоорондох зай ба Pi -ийн хоорондох зайг хэмжинэ)
  7. HAT буухиа самбар (энэ нь 3 релейтэй бөгөөд бидэнд зөвхөн нэг нь л хэрэгтэй, гэхдээ та удахгүй бусдын хэрэглээгээ олох болно!)
  8. Соленоид
  9. 1 ба 2 -р цахилгаан ороомог (энэ нь таны ороомогтой яг тохирч байгаагаас хамаарна, гэхдээ эдгээр нь миний хувьд ажилласан)
  10. Цахилгаан тэжээлийн хангамж (ямар ч 24V AC хийх боломжтой)
  11. Кабель (дахин хэлэхэд бараг бүх 2 утастай кабель хийх болно - гүйдэл нь хамгийн бага)
  12. Усны түвшний хөвөх унтраалга (энэ бол зүгээр л нэг жишээ, усан санд юу амархан холбогдож болохыг шалгаарай)
  13. Зарим холбогч утас ба утас холбогч

Алхам 3: Raspberry Pi -ээ тохируулна уу

Raspberry Pi -ээ тохируулна уу
Raspberry Pi -ээ тохируулна уу

Raspberry Pi бол гайхалтай бяцхан компьютер юм. Энэ нь ердөө 35 долларын үнэтэй, тогтмол ажилладаг, олон нийцтэй програм хангамж, техник хангамжтай. Үүнийг тохируулах нь маш энгийн:

  1. SD картаа форматлах. Энэ нь онцгой анхаарал шаарддаг - Raspberry Pi зөвхөн FAT форматтай SD картаас ачаалах боломжтой. Эдгээр зааврыг дагана уу.
  2. Raspberry Pi -г USB гар, хулгана, HDMI дэлгэцтэй холбож, Raspberry Pi NOOBS хичээлийн зааврыг дагана уу. WiFi -г тохируулж, SSH хандалтыг идэвхжүүлээрэй. Анхдагч pi дансны нууц үгийг тохируулахаа бүү мартаарай.
  3. Гэрийн сүлжээнд Raspberry Pi -ийн статик IP -ийг тохируулах нь SSH -ийг ашиглахад илүү хялбар болно.
  4. Ширээний/зөөврийн компьютер дээрээ ssh клиент суулгасан эсэхээ шалгаарай. Компьютерийн хувьд эндээс суулгаж болох Putty -г санал болгож байна.
  5. Raspberry Pi -ээс USB болон HDMI -ийг салгаад дахин ачаалж, ssh -д оруулна уу - хэрэв энэ нь тус болсон бол та дараах зүйлийг харах ёстой.

Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue 2-р сарын 12 20:27:48 GMT 2019 armv7l

Debian GNU/Linux системд багтсан програмууд нь үнэгүй програм хангамж юм; програм тус бүрийн яг хуваарилах нөхцлийг/usr/share/doc/*/зохиогчийн эрхийн файлд тус тусад нь тусгасан болно. Debian GNU/Linux нь холбогдох хуулиар зөвшөөрөгдсөн хэмжээгээр БАТАЛГААГҮЙ. Сүүлийн нэвтрэлт: 5 -р сарын 13 -ны 10:41:40 2019 оны 104.36.248.13 pi@raspberrypi: ~ $

Алхам 4: OpenCV -ийг тохируулна уу

OpenCV -ийг тохируулах
OpenCV -ийг тохируулах

OpenCV бол компьютерийн алсын хараанд зориулагдсан дүрсийг удирдах гайхалтай функцүүдийн цуглуулга юм. Энэ нь вэбкамераас авсан зургуудыг унших, хөдөлгөөний талбарыг хайж олох, хадгалах, бусад зүйлийг хийх боломжийг бидэнд олгоно. Raspberry Pi дээр тохируулах нь тийм ч хэцүү биш боловч анхаарал халамж шаарддаг.

Эхлээд virtaulenvwrapper -ийг суулгаарай: бид бүх програмчлалаа хийхийн тулд python ашиглах болно, мөн virtualenv нь OpenCV ба TensorFlow vs Flask эсвэл GPIO -ийн хамаарлыг тусад нь хадгалахад тусална.

pi@raspberrypi: ~ $ sudo pip virtualenvwrapper суулгаарай

Одоо та шинэ орчин үүсгэхийн тулд "mkvirtualenv", үүн дээр ажиллах "workon" гэх мэтийг гүйцэтгэх боломжтой.

Тиймээс, Python 3 -ийг анхдагч тайлбарлагчаар дүрс зурах орчноо бүрдүүлж өгье (энэ бол 2019 он, хуучин питон 2 -тэй үлдэх ямар ч шалтгаан байхгүй):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi: ~

Бид одоо OpenCV -ийг суулгахад бэлэн боллоо. Бид ихэвчлэн OpenCV -ийг сурах шилдэг хичээлийг дагаж мөрдөх болно. Ялангуяа тэдний 1 ба 2 -р алхамыг дагана уу.

sudo apt -y updateudo apt -y upgrade ## хамаарлыг суулгах 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 суулгах libtiff5-dev sudo apt-get -y суулгах libtiff-dev sudo apt-get -y суулгах libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get- y libxine2-dev libv4l-dev cd/usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y libgstreamer0.10-dev libgstreamer-plugins-base0 суулгаарай. 10-dev sudo apt-get -y суулгах 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 libvorbis-dev libxvidcore-dev libx264-dev sudo apt-get -y суулгах 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 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- туршилт

Одоо бид cV virtualenv дотор python холболттой OpenCV -ийг суулгаж болно (та одоо хүртэл байгаа, тийм үү?)

pip суулгах opencv-Contrib-python

Тэгээд л боллоо! Бид Raspberry Pi дээр OpenCV суулгасан бөгөөд зураг, видео авах, удирдах, дажгүй байхад бэлэн байна.

Питон хэлмэрч нээж, opencv импортлох замаар алдаа байхгүй эсэхийг шалгана уу.

(cv) pi@raspberrypi: ~ $ python

Python 3.5.3 (анхдагч, 2018 оны 9 -р сарын 27, 17:25:39) [GCC 6.3.0 20170516] линукс дээр "тусламж", "зохиогчийн эрх", "кредит" эсвэл "лиценз" гэж бичээд дэлгэрэнгүй мэдээлэл аваарай. >>> cv2 импортлох >>>

Алхам 5: TensorFlow -ийг тохируулна уу

TensorFlow -ийг тохируулах
TensorFlow -ийг тохируулах

TensorFlow бол Google -ийн боловсруулж, хадгалж буй машин сурах / AI бүтэц юм. Энэ нь янз бүрийн даалгавруудыг гүнзгийрүүлэн судлах загварыг өргөнөөр дэмждэг бөгөөд зураг дээрх объектыг илрүүлэх боломжтой бөгөөд одоо Raspberry Pi дээр суулгахад нэлээд хялбар болжээ. Жижигхэн Pi дээрх хөнгөн загваруудын гүйцэтгэл нь секундэд 1 фрэйм байдаг бөгөөд энэ нь биднийхтэй адил програмын хувьд маш тохиромжтой юм.

Бид үндсэндээ Edje Electronics -ийн маш сайн зааврыг дагаж, сүүлийн үеийн 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 дэр lxml jupyter суулгах matplotlib cython (cv)) pi@raspberrypi: ~ $ sudo apt-get python-tk суулгаарай

Одоо бид Google -ийн протобуфыг эмхэтгэх хэрэгтэй. Үүнтэй ижил төстэй сургалтын 4 -р алхам дээрх зааврыг дагана уу

Эцэст нь TensorFlow -ийн загварын тодорхойлолтыг хуулбарлаж тохируулна уу - Edje Electronics хичээлийн 5 -р алхамыг дагана уу.

6 -р алхам дээр тэдний үлгэр жишээг дагахаас бүү эргэлзээрэй, энэ нь Raspberry Pi дээрх объект илрүүлэх гайхалтай танилцуулга юм.

Алхам 6: OpenCV ашиглан хөдөлгөөнийг илрүүлэх

OpenCV нь манай вэбкамертай ssh -ийг Raspberry Pi -тэй холбож, cv virtualenv (workon cv) руу шилжиж, python орчуулагчийг нээж (python гэж бичээд) туршиж эхэлье.

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 ('Хүрээний хэмжээг унших: {} x {}'). формат (frame.shape [1], frame.shape [0])

Аз таарвал OpenCV нь камераас HD фрэймийг уншиж чаддаг болохыг та харах болно.

Та cv2.imwrite (зам, хүрээ) ашиглан дискийг диск рүү бичиж, бодит дүр төрхийг харахын тулд буцааж sftp хийж болно.

Хөдөлгөөнийг илрүүлэх стратеги нь нэлээд шулуун байна:

  1. Бага нарийвчлалтай хүрээ дээр ажиллах - энд бүрэн HD дээр ажиллах шаардлагагүй
  2. Цаашилбал, аль болох бага дуу чимээ гаргахын тулд зургийг бүдгэрүүлээрэй.
  3. Сүүлийн N фрэймийн дунджийг ажиллуул. Хүрээний хурд 1 FPS орчим байдаг энэ програмын хувьд (TensorFlow нь нэг фрэймд бага зэрэг хугацаа зарцуулдаг учраас) N = 60 нь сайн үр дүн өгдөг болохыг олж мэдсэн. Анхааралтай хэрэгжүүлснээр илүү олон фрэймтэй илүү их процессор шаардагддаггүй тул илүү их санах ой шаардагддаг, гэхдээ бид бага нарийвчлалтай фрэймтэй ажиллахад энэ нь ач холбогдолгүй юм)
  4. Ажиллаж буй дундажаас одоогийн дүрсийг хасах (бичихдээ болгоомжтой байгаарай - та эерэг ба сөрөг утгыг зөвшөөрөх хэрэгтэй [-255.. 255], тиймээс хүрээг int болгон хөрвүүлэх шаардлагатай байна)
  5. Та хүрээг саарал масштабаар (мөн дунджаар) хөрвүүлэх эсвэл RGB суваг тус бүрт тусад нь хийж үр дүнг нэгтгэх боломжтой (энэ бол миний сонгосон стратеги бөгөөд өнгөний өөрчлөлтөд мэдрэмтгий болгодог).
  6. Дельта дээр босго тавьж, элэгдэл, өргөтгөлөөр дуу чимээг арилгана
  7. Эцэст нь дельта бүхий хэсгүүдийн контурыг хайж олоорой - эдгээр газрууд нь хөдөлгөөн болсон бөгөөд одоогийн зураг нь өмнөх зургуудын дундажаас ялгаатай байна. Шаардлагатай бол бид эдгээр контурын хязгаарлах хайрцгийг олж болно.

Үүнийг хийхийн тулд би github дээрээс олж болох DeltaFinder python ангилалд кодыг оруулсан болно.

Алхам 7: TensorFlow ашиглан обьектуудыг илрүүлэх

Хэрэв та TensorFlow суулгах процедурыг дагаж мөрдсөн бол TensorFlow суулгаж, ажиллаж байгаа гэдгээ аль хэдийн туршиж үзсэн болно.

Хүмүүсийг гадаа ерөнхий дүр төрхөөр илрүүлэх зорилгоор COCO өгөгдлийн багцад урьдчилан бэлтгэгдсэн загварууд нь маш сайн гүйцэтгэлтэй байдаг бөгөөд энэ нь TensorFlow суулгацын төгсгөлд бидний татаж авсан загвар юм. Бид үүнийг зөвхөн дүгнэлт гаргахад ашиглах хэрэгтэй!

Дахин хэлэхэд би TFClassify python ангиллын загварыг ачаалах, гаргах ажлыг хялбарчлахын тулд эндээс олж болно.

Алхам 8: Raspberry Pi дээр вэб сервер тохируулах

Raspberry Pi дээр вэб сервер тохируулах
Raspberry Pi дээр вэб сервер тохируулах

Объект илрүүлэх үр дүнд хүрэх хамгийн хялбар арга бол вэб хөтөч тул Raspberry Pi дээр вэб сервер тохируулцгаая. Дараа нь бид өгөгдсөн лавлахаас авсан зургуудыг үзүүлэхээр тохируулж болно.

Вэб серверийн хүрээ хийх олон сонголт байдаг. Би шилийг сонгосон. Энэ нь маш тохируулагдсан бөгөөд Python -ээр өргөтгөхөд хялбар байдаг. Бидэнд хэрэгтэй "масштаб" нь өчүүхэн тул хангалттай байсан.

Би үүнийг шинэ виртуал системд суулгахыг санал болгож байна.

pi@raspberrypi: ~ $ mkvirtualenv webserv

(webserv) pi@raspberrypi: ~ $ pip Flask -ийг суулгана уу

Сүлжээний ердийн тохиргоог хийснээр таны хөтөч таны Raspberry Pi -тай ижил утасгүй сүлжээнд холбогдсон үед л холбогдох боломжтой болно гэдгийг анхаарна уу. Та гадны хандалтыг зөвшөөрөхийн тулд интернет чиглүүлэгч дээрээ портын зураглал / NAT тохиргоог үүсгэж болно, гэхдээ би үүнийг хийхийг зөвлөдөггүй. Миний бичсэн код нь таны Raspberry Pi -д интернэтийн ерөнхий хандалтыг зөвшөөрөхөд шаардлагатай аюулгүй байдлыг хангахыг оролддоггүй.

Колбаны хурдан эхлүүлэх гарын авлагыг дагаж өөрийн суулгалтыг туршиж үзээрэй

Алхам 9: Raspberry Pi -аас гар утасны мэдэгдэл IFTTT ашиглан

IFTTT ашиглан Raspberry Pi -аас гар утасны мэдэгдэл
IFTTT ашиглан Raspberry Pi -аас гар утасны мэдэгдэл

Үйл явдал тохиолдох үед гар утасны мэдэгдэл авахыг үнэхээр хүсч байна. Энэ тохиолдолд хүнийг илрүүлэх, усны түвшин буурах үед. Үүнийг хийх хамгийн хялбар арга бол гар утасны тусгай програм бичихгүйгээр IFTTT ашиглах явдал юм. IFTTT нь "Хэрэв энэ тэгвэл" гэсэн үгийн товчлол бөгөөд олон төрлийн үйл явдлыг олон төрлийн үйлдлийг идэвхжүүлэх боломжийг олгодог. Манай тохиолдолд бид IFTTT Maker Webhook гохыг сонирхож байна. Энэ нь IFTTT -ийн үйлдлийг идэвхжүүлэх боломжийг олгодог бөгөөд IFTTT сервер рүү манай дансанд оноосон тусгай түлхүүр бүхий HTTP POST хүсэлт гаргаж, юу болсныг зааж өгсөн өгөгдлийг өгдөг. Бидний хийж буй үйлдэл бол IFTTT гар утасны аппликейшн ашиглан мобайл төхөөрөмж дээрээ мэдэгдэл үүсгэх эсвэл үүнээс илүү төвөгтэй зүйл хийхтэй адил хялбар байж болно.

Үүнийг хэрхэн яаж хийхийг энд харуулав.

  1. Ifttt.com дээр IFTTT данс үүсгэнэ үү
  2. Нэвтэрч байхдаа Webhook үйлчилгээний тохиргооны хуудас руу орж, хөтөч дээрээ URL оруулна уу (https://maker.ifttt.com/use/ гэх мэт). Энэ вэб хуудас нь таны түлхүүр болон үйлдлийг эхлүүлэхийн тулд ашиглах URL хаягийг харуулна..
  3. Үйл явдлын дэлгэрэнгүйг ашиглан Webhook -ийг идэвхжүүлэх үед гар утасны мэдэгдэл үүсгэх IFTTT апплет үүсгэнэ үү.

    1. "Миний апплетууд", дараа нь "Шинэ апплет" дээр дарна уу.
    2. "+This" дээр дараад "webhooks" -ыг сонгоно уу. Дэлгэрэнгүй үзэхийн тулд "Вэб хүсэлтийг хүлээн авах" дээр дарна уу
    3. Өөрийн арга хэмжээнд нэр өгөх, жишээ нь. "PoolEvent", "Гох үүсгэх" дээр дарна уу.
    4. "+That" дээр дараад "мэдэгдэл" -ийг сонгоно уу. Дараа нь "IFTTT програмаас баялаг мэдэгдэл илгээх" -ийг сонгоно уу.
    5. "Гарчиг" -ын хувьд "PoolPi" гэх мэт зүйлийг сонгоно уу.
    6. "Зурвас" -ын хувьд "Pool Pi found:" гэж бичээд "Найрлага нэмэх" дээр дарна уу. "Value1".
    7. 2 -р алхам дээр хуулж авсан URL руугаа буцна уу. Энэ нь таны шинээр үүсгэсэн апплетийг дуудахад ашиглах URL -г харуулах болно. Тухайн URL -г хуулж, {event} орлуулагчийг үйл явдлын нэрээр солино (жишээ нь PoolEvent дээр)
  4. IFTTT програмыг гар утсандаа татаж аваад суулгаж, нэвтэрнэ үү
  5. Энэ питон скриптийг Raspberry Pi дээрээ ажиллуулаад ажиллах эсэхийг шалгаарай (таны мобайл төхөөрөмж дээр хэдэн секунд эсвэл минут зарцуулагдаж магадгүйг анхаарна уу):

импортын хүсэлт

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Сайн уу мэдэгдлүүд"})

Алхам 10: Raspberry Pi -д буухиа малгай нэмж, цахилгаан ороомогтой холбоно уу

Raspberry Pi дээр буухиа малгай нэмж, цахилгаан ороомогтой холбоно уу
Raspberry Pi дээр буухиа малгай нэмж, цахилгаан ороомогтой холбоно уу
Raspberry Pi дээр буухиа малгай нэмж, цахилгаан ороомогтой холбоно уу
Raspberry Pi дээр буухиа малгай нэмж, цахилгаан ороомогтой холбоно уу
Raspberry Pi дээр буухиа малгай нэмж, цахилгаан ороомогтой холбоно уу
Raspberry Pi дээр буухиа малгай нэмж, цахилгаан ороомогтой холбоно уу

Энэ алхамыг үргэлжлүүлэхийн өмнө Raspberry Pi: ssh -ээ унтраагаад "sudo shutdown now" гэж бичээд дараа нь тэжээлээс салга.

Бидний зорилго бол цахилгаан тэжээлээс авдаг 24V хувьсах гүйдлийн хүчээр усны хангамжийг нээж, хаах боломжтой ороомог хавхлагын цахилгаан хангамжийг асаах, унтраах явдал юм. Реле бол бидний Raspberry Pi -ийн өгч чадах дижитал дохио дээр суурилсан хэлхээг нээж, хаах цахилгаан бүрэлдэхүүн хэсэг юм. Бидний энд хийдэг зүйл бол Raspberry Pi -ийн дижитал дохионы зүүг холбож, 24V хувьсах гүйдлийн тэжээлийн эх үүсвэр ба ороомог хавхлагын хоорондох хэлхээг хаах явдал юм.

Raspberry Pi дээрх дижитал оролт эсвэл гаралтын үүргийг GPIO - Ерөнхий зориулалтын оролт/гаралт гэж нэрлэдэг бөгөөд тэдгээр нь Pi -ийн хажуу талд байрлах 40 зүү юм. Пи -г унтрааж, HAT релеийг түүнд оруулна уу. Миний сонгосон малгай 3 релейтэй бөгөөд бид зөвхөн нэгийг нь ашиглах болно. Нөгөө хоёртойгоо хийж чадах бүхнээ төсөөлөөд үз дээ:)

Одоо Raspberry Pi -г дахин асаана уу. HAT реле дээрх улаан "хүч" LED асах ёстой бөгөөд энэ нь GPIO -ээр дамжуулан Pi -ээс тэжээл авч байгааг илтгэнэ. Үүнийг хянаж чадах эсэхээ шалгацгаая: ssh -ийг Pi руу дахин оруулаад python оруулаад бичнэ үү.

gpiozero импортлох

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

Та реле ажиллаж байгааг илтгэх "товших" дууг сонсох ёстой бөгөөд эхний реле холбогдсон байрлалд байгааг харуулсан LED асаалтыг харах хэрэгтэй. Та одоо бичиж болно

dev.on ()

Энэ нь реле "унтраах" байрлал руу шилжих болно (сондгой, би мэднэ …) ба python -аас гарах болно.

Одоо холбогч кабель болон урт кабелийг ашиглан 24В цахилгаан тэжээл ба ороомог хавхлагын хоорондох релеийг холбоно. Диаграмыг үзнэ үү. Эцэст нь, ороомог хавхлагыг адаптер ашиглан усны цорго руу холбож, дээрх тушаалуудыг давтаж бүгдийг туршихад бэлэн байгаарай - тэд усыг асааж, унтраах ёстой.

Соленоид хавхлагад хоолойг холбож, нөгөө үзүүрийг усан сангийн гүнд хийнэ. Та одоо компьютерээр удирддаг бассейн цэнэглэх системтэй болсон бөгөөд хэзээ ажиллуулахаа хэлж өгөх мэдрэгчийг холбох цаг болжээ.

Алхам 11: Усны түвшин мэдрэгчийг холбоно уу

Усны түвшин мэдрэгчийг холбоно уу
Усны түвшин мэдрэгчийг холбоно уу
Усны түвшин мэдрэгчийг холбоно уу
Усны түвшин мэдрэгчийг холбоно уу
Усны түвшин мэдрэгчийг холбоно уу
Усны түвшин мэдрэгчийг холбоно уу
Усны түвшин мэдрэгчийг холбоно уу
Усны түвшин мэдрэгчийг холбоно уу

Усны түвшний мэдрэгч нь зүгээр л хөвөгч юм. Хэрэв та үүнийг зөв өндөрт цөөрөмд оруулбал усны түвшин хангалттай байх үед хөвөгч нь дээшлэх боловч хангалттай ус байхгүй үед унах болно.

Raspberry Pi -ийн усны түвшний мэдрэгчийн статусыг мэдэхийн тулд нээлттэй эсвэл хаалттай хэлхээг мэдрэхэд бидэнд Pi хэрэгтэй болно. Аз болоход энэ нь маш энгийн зүйл юм: реленийг хянахын тулд дижитал гаралт болгон ашигладаг GPIO холбогч нь оролтын үүрэг гүйцэтгэдэг (иймээс GPIO дахь I). Тодруулбал, хэрэв бид мэдрэгчийн нэг утсыг GPIO холбогч дээрх +3.3V-т, нөгөө мэдрэгчийн утсыг доош татах оролт болгон тохируулсан зүү рүү холбовол (энэ нь ихэвчлэн GND хүчдэлийн түвшинд байх болно), тэр зүү нь хэмжигдэх болно. дижитал "өндөр" эсвэл "асаалттай" хүчдэл нь зөвхөн усны түвшин мэдрэгч нь хэлхээг хаах үед - усны түвшин бага байхад. Би GPIO pin 16 -ийг оролт болгон ашигласан бөгөөд үүнийг дээрх зурган дээр тэмдэглэв.

Зүүг оролт болгон тохируулж, одоогийн төлөвийг шалгах python код нь:

gpiozero импортлох

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

Боломжит нэг бэрхшээл бол мэдрэгч нь төлөвөө өөрчлөхөд л асаах, унтраах төлөвүүдийн хооронд хурдан хэлбэлзэх болно. Үүний шийдэл нь "хасах" гэж нэрлэгддэг бөгөөд арга хэмжээ авахаасаа өмнө төлөв байдлын тогтвортой өөрчлөлтийг эрэлхийлдэг. GPIOZERO номын санд үүнийг хийх код байгаа боловч яагаад ч юм тэр код надад сайн ажиллаагүй. Төлөв байдлын тогтвортой өөрчлөлтийг илрүүлэх үед IFTTT -ийн сэрэмжлүүлгийг өгөхийн тулд би энгийн давталт бичсэн бөгөөд үүнийг миний репозитороос олж болно.

Алхам 12: Бүгдийг хооронд нь холбох код бичээрэй

Бүгдийг хооронд нь холбохын тулд код бичээрэй
Бүгдийг хооронд нь холбохын тулд код бичээрэй

Ингээд л боллоо. Манай тохиргоо дууссан. Аливаа зүйлийг бүрэн системд холбохын тулд та өөрийн кодоо бичиж эсвэл миний өгсөн кодыг ашиглаж болно. Үүнийг хийхийн тулд директорын бүтцийг үүсгээд репозиторыг клон хий.

mkdir poolpi

cd poolpi git clone

Дараа нь IFTTT вэб дэгээнийхээ URL -ийг нууц түлхүүртэйгээ хамт байлгахын тулд motion_alert болон water_level лавлах дахь ifttt_url.txt нэртэй файлуудыг засна уу. Та өөр өөр үйлдэл хийхэд хоёр өөр вэб дэгээ ашиглаж болно.

Эцэст нь хэлэхэд бид энэ кодыг автоматаар ажиллуулахыг хүсч байна. Үүнийг хийх хамгийн хялбар арга бол Linux crontab үйлчилгээ юм. Бид хоёр үндсэн ажилд зориулж crontab шугам нэмж болно:

  1. Дахин ачаалах бүрт объект илрүүлэгч, усны түвшин мэдрэгч, вэб сервер гэсэн гурван програмыг ажиллуулна уу
  2. Гаралтын лавлахыг цэвэрлэх, хуучин зураг болон хуучин видео файлуудыг устгах (би 1 хоногоос дээш настай файлууд болон 7 хоногоос дээш настай зургуудыг устгахаар шийдсэн - туршилт хийхээс бүү чөлөөтэй байгаарай)

Үүнийг хийхийн тулд нано текст засварлагчийг нээх crontab -e бичнэ үү. Файлын доод хэсэгт дараах мөрүүдийг нэмнэ үү.

0 1 * * * find/home/pi/poolpi/output -type f -name " *.avi" -mtime +1 -устгах

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

Эцэст нь Raspberry Pi -г дахин ачаална уу. Одоо усан санг бүрэн дүүрэн, аюулгүй байлгахад бэлэн боллоо.

Тохиргоо, кодыг сайтар бодож үзээрэй, хэрэв танд хэрэгтэй гэж үзвэл миний github репозиторыг одоор тэмдэглэж, зааварчилгаа өгөхөө бүү мартаарай. Би үргэлж илүү ихийг сурахыг эрэлхийлдэг.

Аз жаргалтай хийцгээе!

IoT Challenge
IoT Challenge
IoT Challenge
IoT Challenge

IoT Challenge -д дэд байр эзэлсэн

Зөвлөмж болгож буй: