Სარჩევი:

აუზი Pi Guy - AI მართული სიგნალიზაცია და აუზის მონიტორინგი ჟოლოს Pi გამოყენებით: 12 ნაბიჯი (სურათებით)
აუზი Pi Guy - AI მართული სიგნალიზაცია და აუზის მონიტორინგი ჟოლოს Pi გამოყენებით: 12 ნაბიჯი (სურათებით)

ვიდეო: აუზი Pi Guy - AI მართული სიგნალიზაცია და აუზის მონიტორინგი ჟოლოს Pi გამოყენებით: 12 ნაბიჯი (სურათებით)

ვიდეო: აუზი Pi Guy - AI მართული სიგნალიზაცია და აუზის მონიტორინგი ჟოლოს Pi გამოყენებით: 12 ნაბიჯი (სურათებით)
ვიდეო: ქარიშხალი ფიონა | ჩვენი გამოცდილება კანადის ატლანტის სანაპიროზე 🇨🇦🌀 2024, ნოემბერი
Anonim
აუზი Pi Guy - AI მართული განგაშის სისტემა და აუზის მონიტორინგი ჟოლოს პიის გამოყენებით
აუზი Pi Guy - AI მართული განგაშის სისტემა და აუზის მონიტორინგი ჟოლოს პიის გამოყენებით

სახლში აუზის ქონა გართობაა, მაგრამ დიდი პასუხისმგებლობით. ჩემი ყველაზე დიდი საზრუნავი არის მონიტორინგი, თუ ვინმე აუზთან ახლოს არის (განსაკუთრებით მცირეწლოვანი ბავშვები). ჩემი ყველაზე დიდი გაღიზიანება იმაში მდგომარეობს, რომ აუზის წყლის ხაზი არასოდეს ჩავარდეს ტუმბოს შესასვლელთან ქვემოთ, რაც გამოაშრობს ტუმბოს და გაანადგურებს მას $ $ $ რემონტით.

მე ახლახანს გავარკვიე, თუ როგორ გამოვიყენო ჟოლო Pi OpenCV და TensorFlow, წყლის დონის სენსორთან და სოლენოიდულ სარქველთან ერთად ორივე საკითხის გადასაჭრელად - და გაერთეთ ამით!

ის ასევე არის შესანიშნავი სიგნალიზაციის სისტემა - მოძრაობა გააქტიურებულია, AI კონტროლირებადი, უსასრულოდ მორგებული.

მოდით ჩავყვინთოთ.

ნაბიჯი 1: გრანდიოზული გეგმა

ამ ინსტრუქციაში ჩვენ ვაჩვენებთ როგორ:

  1. დააინსტალირეთ Raspberry Pi OpenCV და TensorFlow– ით
  2. შეაერთეთ ვებკამერა გრძელი USB კაბელის საშუალებით
  3. დაწერეთ OpenCV ალგორითმი მოძრაობის გამოსავლენად
  4. გამოიყენეთ TensorFlow ობიექტების გამოვლენისთვის
  5. Raspberry Pi– ზე დააყენეთ ვებ სერვერი საინტერესო სურათების საჩვენებლად
  6. ინტეგრირება IFTTT– სთან, რათა გამოიწვიოს ადამიანის სიგნალიზაცია პირის გამოვლენის შემთხვევაში
  7. მიამაგრეთ რელე HAT Raspberry Pi– ს და შეაერთეთ იგი სოლენოიდულ სარქველთან, რომელიც წყალს აუზს დაამატებდა
  8. მიამაგრეთ წყლის დონის სენსორი Raspberry Pi– სთან და დაუკავშირდით მას Pi– ს GPIO– ს გამოყენებით
  9. დაწერეთ კოდი, რომ ეს ყველაფერი ერთმანეთზე დააკავშიროთ

ნაბიჯი 2: საყიდლების სია

Სავაჭრო სია
Სავაჭრო სია

ყველა კომპონენტი ადვილად ხელმისაწვდომია Amazon– დან. მოგერიდებათ ექსპერიმენტი და კომპონენტების გაცვლა - ეს არის სიამოვნების ნახევარი!

  1. ჟოლო პი
  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 წვდომა. არ დაგავიწყდეთ პაროლის დაყენება ნაგულისხმევი პი ანგარიშისთვის.
  3. თქვენს სახლის ქსელში შექმენით სტატიკური IP Raspberry Pi– სთვის - ეს გაადვილებს SSH– ში შესვლას.
  4. დარწმუნდით, რომ თქვენ გაქვთ ssh კლიენტი დაინსტალირებული თქვენს სამუშაო მაგიდაზე/ლეპტოპზე. კომპიუტერისთვის მე გირჩევთ Putty, რომელიც შეგიძლიათ დააინსტალიროთ აქედან.
  5. გათიშეთ USB და HDMI Raspberry Pi– დან, გადატვირთეთ და შეიყვანეთ მასში - თუ ყველაფერი მუშაობს, თქვენ უნდა ნახოთ მსგავსი რამ:

Linux raspberrypi 4.14.98-v7+ #1200 SMP სამ თებ 12, 20:27:48 GMT 2019 armv7l

Debian GNU/Linux სისტემაში შემავალი პროგრამები არის უფასო პროგრამული უზრუნველყოფა; თითოეული პროგრამისთვის ზუსტი განაწილების პირობები აღწერილია ცალკეულ ფაილებში/usr/share/doc/*/საავტორო უფლებებში. Debian GNU/Linux– ს გააჩნია აბსოლუტურად არანაირი გარანტია, იმდენად, რამდენადაც დასაშვებია მოქმედი კანონმდებლობით. ბოლო შესვლა: ორშაბათი 13 მაისი 10:41:40 2019 104.36.248.13 პი@raspberrypi: ~ $

ნაბიჯი 4: დააინსტალირეთ OpenCV

დააინსტალირეთ OpenCV
დააინსტალირეთ OpenCV

OpenCV არის კომპიუტერის ხედვის გამოსახულების მანიპულირების ფუნქციების საოცარი კოლექცია. ეს საშუალებას მოგვცემს წავიკითხოთ სურათები ვებკამერიდან, ვამუშაოთ ისინი მოძრაობის სფეროების საპოვნელად, შენახვისთვის და სხვა. Raspberry Pi– ზე დაყენება არ არის რთული, მაგრამ მოითხოვს გარკვეულ მოვლას.

დაიწყეთ virtaulenvwrapper– ის დაყენებით: ჩვენ გამოვიყენებთ პითონს ჩვენი ყველა პროგრამირების გასაკეთებლად და ვირტუალენვი დაგვეხმარება OpenCV– ისა და TensorFlow– ის დამოკიდებულების განცალკევებაში Flask ან GPIO– ს მიმართ:

pi@raspberrypi: su $ sudo pip დააინსტალირეთ virtualenvwrapper

ახლა თქვენ შეგიძლიათ შეასრულოთ "mkvirtualenv" ახალი გარემოს შესაქმნელად, "workon" მასზე მუშაობისთვის და სხვა.

მოდით, შევქმნათ გარემო ჩვენი გამოსახულების მანიპულირებისთვის, პითონი 3 როგორც ნაგულისხმევი თარჯიმანი (ეს არის 2019 წელი, არ არსებობს მიზეზი, რომ შევეხოთ ძველ პითონს 2):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi:

ჩვენ ახლა მზად ვართ დააინსტალიროთ OpenCV. ჩვენ ძირითადად მივყვებით შესანიშნავ გაკვეთილს Learn OpenCV– ში. კონკრეტულად მიჰყევით მათ ნაბიჯს 1 და 2:

sudo apt -y განახლებებიudo apt -y განახლება ## დააინსტალირეთ დამოკიდებულებები sudo apt-get -y დააინსტალირეთ 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 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 დააინსტალირეთ 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- გამოცდა

ახლა ჩვენ შეგვიძლია უბრალოდ დააინსტალიროთ OpenCV პითონის კავშირებით cv virtualenv შიგნით (თქვენ ჯერ კიდევ მასში ხართ, არა?) გამოყენებით

pip დააინსტალირეთ opencv-contrib-python

და ეს არის ის! ჩვენ გვაქვს Raspberry Pi- ზე დაყენებული OpenCV, რომელიც მზად არის გადაიღოს ფოტოები და ვიდეოები, მოახდინოს ისინი მანიპულირება და იყოს მაგარი.

შეამოწმეთ ეს პითონის თარჯიმნის გახსნით და opencv იმპორტით და შეამოწმეთ რომ არ არსებობს შეცდომები:

(cv) pi@raspberrypi: ~ $ პითონი

პითონი 3.5.3 (ნაგულისხმევი, სექტემბერი 27, 2018, 17:25:39) [GCC 6.3.0 20170516] linux– ზე დამატებითი ინფორმაციისათვის ჩაწერეთ „დახმარება“, „საავტორო უფლებები“, „კრედიტები“ან „ლიცენზია“. >>> იმპორტი cv2 >>>

ნაბიჯი 5: დააყენეთ TensorFlow

დააყენეთ TensorFlow
დააყენეთ TensorFlow

TensorFlow არის მანქანათმცოდნეობის / AI ჩარჩო, რომელიც შემუშავებულია და შენარჩუნებულია Google- ის მიერ. მას აქვს ფართო მხარდაჭერა ღრმა სწავლების მოდელებისთვის სხვადასხვა ამოცანებისათვის, მათ შორის გამოსახულების ობიექტების ამოცნობა, და ახლა საკმაოდ მარტივია მისი დაყენება 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 install pillow lxml jupyter matplotlib cython (cv pi@raspberrypi: su $ sudo apt-get დააინსტალირეთ python-tk

ახლა ჩვენ უნდა შევადგინოთ Google– ის პროტოფუფ. უბრალოდ მიჰყევით იმავე შესანიშნავი გაკვეთილის მე –4 საფეხურის მითითებებს

დაბოლოს, დააკონფიგურირეთ და დააყენეთ TensorFlow– ის მოდელის განმარტებები - მიჰყევით ნაბიჯ 5 – ს Edje Electronics– ის სამეურვეოში

მოგერიდებათ მიჰყევით მათ მაგალითს მე –6 საფეხურშიც, ეს არის შესანიშნავი შესავალი Raspberry Pi– ზე ობიექტების გამოვლენისთვის.

ნაბიჯი 6: მოძრაობის გამოვლენა OpenCV გამოყენებით

დავიწყოთ ტესტირებით, რომ OpenCV- ს შეუძლია ჩვენი ვებკამერა: ssh Raspberry Pi- ში, გადავიდეთ cv virtualenv (workv cv), გახსენით პითონის თარჯიმანი (უბრალოდ ჩაწერეთ პითონი) და შეიყვანეთ პითონის შემდეგი ბრძანებები:

იმპორტი 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 {}". ფორმატი (ჩარჩო. ფორმა [1], ჩარჩო. ფორმა [0])

ნებისმიერი იღბალით ნახავთ, რომ OpenCV– მ შეძლო კამერისგან HD ჩარჩოს წაკითხვა.

თქვენ შეგიძლიათ გამოიყენოთ cv2.imwrite (გზა, ჩარჩო), რომ ჩაწეროთ ეს ჩარჩო დისკზე და sftp უკან დააბრუნოთ, რომ მიიღოთ რეალური სახე.

მოძრაობის გამოვლენის სტრატეგია საკმაოდ წინ არის:

  1. იმუშავეთ დაბალი რეზოლუციის ჩარჩოებზე - აქ არ არის საჭირო სრული HD რეჟიმში მუშაობა
  2. გარდა ამისა, დაბინდეთ სურათები რაც შეიძლება ნაკლები ხმაურის უზრუნველსაყოფად.
  3. შეინარჩუნეთ ბოლო N ჩარჩოების საშუალო მაჩვენებელი. ამ პროგრამისთვის, სადაც კადრების სიხშირეა დაახლოებით 1 FPS (მხოლოდ იმიტომ, რომ TensorFlow იღებს გარკვეულ დროს ჩარჩოზე), აღმოვაჩინე, რომ N = 60 კარგ შედეგს იძლევა. და რადგან ფრთხილად განხორციელებას არ სჭირდება მეტი CPU მეტი ჩარჩოებით, რაც ნორმალურია (ამას მეტი მეხსიერება სჭირდება - მაგრამ ეს უმნიშვნელოა, როდესაც ჩვენ ვმუშაობთ ქვედა რეზოლუციის ჩარჩოებით)
  4. გამოაკელით მიმდინარე გამოსახულებას გაშვებული საშუალოდან (უბრალოდ ფრთხილად იყავით აკრეფისას - თქვენ უნდა დაუშვათ დადებითი და უარყოფითი მნიშვნელობები [-255.. 255], ამიტომ ჩარჩო უნდა გადაკეთდეს int)
  5. თქვენ შეგიძლიათ შეასრულოთ გამოკლება ჩარჩოს ნაცრისფერ მასშტაბზე (და საშუალოზე), ან გააკეთოთ ცალკე თითოეული RGB არხისთვის და შემდეგ შეაერთოთ შედეგები (ეს არის სტრატეგია, რომელიც მე ავირჩიე, რაც მას მგრძნობიარე გახდის ფერის ცვლილებებზე)
  6. გამოიყენეთ ბარიერი დელტაზე და ამოიღეთ ხმაური ეროზიით და გაფართოებით
  7. დაბოლოს, მოძებნეთ დელტას მქონე ტერიტორიების კონტურები - ეს არის ადგილები, სადაც მოძრაობა მოხდა და ამჟამინდელი სურათი განსხვავდება წინა სურათების საშუალო მაჩვენებლისგან. საჭიროების შემთხვევაში, ჩვენ შეგვიძლია ვიპოვოთ ამ კონტურების შემოსაზღვრული ყუთები.

მე ჩავრთე კოდი ამის გასაკეთებლად DeltaFinder პითონის კლასში, რომელიც შეგიძლიათ ნახოთ ჩემს github– ში აქ

ნაბიჯი 7: ობიექტების გამოვლენა TensorFlow– ის გამოყენებით

თუ თქვენ მიჰყევით TensorFlow– ის ინსტალაციის პროცედურას, თქვენ უკვე შეამოწმეთ, რომ გაქვთ TensorFlow დაინსტალირებული და მუშაობს.

ზოგადი გარე სცენის ადამიანების გამოვლენის მიზნით, მოდელები, რომლებიც წინასწარ არის გაწვრთნილი COCO მონაცემთა ნაკრებში, საკმაოდ კარგად გამოდიან - რაც ზუსტად ის მოდელია, რომელიც ჩვენ გადმოწერილი გვაქვს TensorFlow ინსტალაციის ბოლოს. ჩვენ უბრალოდ უნდა გამოვიყენოთ დასკვნის სახით!

ისევ და ისევ, მე ჩავრთე მოდელის ჩატვირთვა და დასკვნა TFClassify პითონის კლასში, რათა საქმეები უფრო ადვილი იყოს, რასაც აქ ნახავთ.

ნაბიჯი 8: შექმენით ვებ სერვერი Raspberry Pi– ზე

შექმენით ვებ სერვერი Raspberry Pi– ზე
შექმენით ვებ სერვერი Raspberry Pi– ზე

ობიექტის გამოვლენის შედეგებზე წვდომის უმარტივესი გზა არის ვებ ბრაუზერი, ასე რომ მოდით შევქმნათ ვებ სერვერი Raspberry Pi– ზე. ამის შემდეგ შეგვიძლია მისი დაყენება მოცემული დირექტორიიდან სურათების გადასატანად.

ვებ სერვერის ჩარჩოს მრავალი ვარიანტი არსებობს. მე ავირჩიე Flask. უკიდურესად კონფიგურირებადი და ადვილია პითონთან ერთად გაფართოება. ვინაიდან ჩვენთვის საჭირო "მასშტაბი" ტრივიალურია, ის საკმარისზე მეტი იყო.

მე გირჩევთ დააინსტალიროთ იგი ახალ ვირტუალენვში, ასე რომ:

pi@raspberrypi: ~ $ mkvirtualenv webserv

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

გაითვალისწინეთ, რომ ნორმალური ქსელის დაყენებით შესაძლებელი იქნება მხოლოდ მაშინ, როდესაც თქვენი ბრაუზერი იმავე უკაბელო LAN- ზეა, როგორც თქვენი Raspberry Pi. თქვენ შეგიძლიათ შექმნათ პორტის რუქა / NAT კონფიგურაცია თქვენს ინტერნეტ როუტერზე გარე წვდომის დასაშვებად - მაგრამ მე ამის საწინააღმდეგოდ გირჩევთ. კოდი, რომელიც მე დავწერე, არ ცდილობს უზრუნველყოს ის უსაფრთხოება, რაც დაგჭირდებათ, როდესაც თქვენს Raspberry Pi– ზე ზოგადი ინტერნეტ წვდომის საშუალებას მისცემთ.

შეამოწმეთ თქვენი ინსტალაცია Flask– ის სწრაფი დაწყების სახელმძღვანელოს მიხედვით

ნაბიჯი 9: მობილური შეტყობინებები Raspberry Pi– დან IFTTT– ის გამოყენებით

მობილური შეტყობინებები Raspberry Pi– დან IFTTT– ის გამოყენებით
მობილური შეტყობინებები Raspberry Pi– დან IFTTT– ის გამოყენებით

მე ნამდვილად მსურს მობილური შეტყობინებების მიღება მოვლენების დროს. ამ შემთხვევაში, როდესაც ადამიანი გამოვლენილია და როდესაც წყლის დონე დაბალია. უმარტივესი გზა ვიპოვე ამის გასაკეთებლად, მობილური აპლიკაციის დაწერის გარეშე, არის IFTTT. IFTTT ნიშნავს "თუ ეს მაშინ ეს" და საშუალებას აძლევს მრავალი სახის ღონისძიებას გამოიწვიოს მრავალი სახის ქმედება. ჩვენს შემთხვევაში, ჩვენ დაინტერესებულნი ვართ IFTTT Maker Webhook გამომწვევით. ეს გვაძლევს საშუალებას გავაქტიუროთ IFTTT მოქმედება HTTP POST მოთხოვნით IFTTT სერვერზე ჩვენი ანგარიშისათვის მინიჭებული სპეციალური გასაღებით, ასევე მონაცემებით, რაც განსაზღვრავს რა მოხდა. ჩვენ მიერ განხორციელებული ქმედება შეიძლება იყოს ისეთივე მარტივი, როგორც შეტყობინების შექმნა ჩვენს მობილურ მოწყობილობაზე IFTTT მობილური აპლიკაციის გამოყენებით, ან რაიმე უფრო რთული, ვიდრე ეს.

აქ მოცემულია, თუ როგორ უნდა გავაკეთოთ ეს:

  1. შექმენით IFTTT ანგარიში ifttt.com– ზე
  2. სისტემაში შესვლისას გადადით Webhook სერვისის პარამეტრების გვერდზე და შეიყვანეთ URL თქვენს ბრაუზერში (მაგალითად, https://maker.ifttt.com/use/. ეს ვებ გვერდი გაჩვენებთ თქვენს გასაღებს და მისამართს, რომელიც უნდა გამოიყენოთ მოქმედებების დასაწყებად რა
  3. შექმენით IFTTT აპლეტი, რომელიც გამოიმუშავებს მობილურ შეტყობინებას, როდესაც Webhook გააქტიურდება ღონისძიების დეტალებით:

    1. დააჭირეთ "ჩემი აპლეტები" და შემდეგ "ახალი აპლეტი".
    2. დააწკაპუნეთ "+ეს" და აირჩიეთ "webhooks". დააწკაპუნეთ "მიიღეთ ვებ მოთხოვნა" დეტალებზე გადასასვლელად
    3. მიეცით თქვენს ღონისძიებას სახელი, მაგ. "PoolEvent" და დააჭირეთ "შექმენით გამომწვევი"
    4. დააწკაპუნეთ "+ეს" და აირჩიეთ "შეტყობინებები". შემდეგ აირჩიეთ "გაგზავნეთ მდიდარი შეტყობინება IFTTT აპიდან"
    5. "სათაურისთვის" აირჩიეთ მსგავსი რამ "PoolPi"
    6. "შეტყობინებისთვის" დაწერეთ "აღმოჩენილია აუზი Pi:" და დააჭირეთ "დაამატეთ ინგრედიენტი".. "მნიშვნელობა 1".
    7. დაუბრუნდით თქვენს მიერ გადაწერილ URL– ს მე –2 საფეხურზე. ის აჩვენებს URL– ს, რომელიც უნდა გამოიყენოთ თქვენი ახლად შექმნილი აპლეტის გამოსაძახებლად. დააკოპირეთ ეს URL, შეცვალეთ ადგილის შემცველი {ღონისძიება} მოვლენის სახელით (მაგალითში PoolEvent)
  4. ჩამოტვირთეთ, დააინსტალირეთ და შედით IFTTT აპლიკაციაში თქვენი მობილური მოწყობილობისთვის
  5. გაუშვით ეს პითონის სკრიპტი თქვენს Raspberry Pi– ზე, რომ ნახოთ რომ მუშაობს (გაითვალისწინეთ, რომ შესაძლოა რამდენიმე წამი ან წუთი დასჭირდეს თქვენს მობილურ მოწყობილობაზე ჩართვას):

იმპორტის მოთხოვნები

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "გამარჯობა შეტყობინებები"})

ნაბიჯი 10: დაამატეთ სარელეო ქუდი ჟოლოს Pi და შეაერთეთ იგი სოლენოიდულ სარქველთან

დაამატეთ სარელეო ქუდი ჟოლოს Pi- ს და შეაერთეთ იგი სოლენოიდულ სარქველთან
დაამატეთ სარელეო ქუდი ჟოლოს Pi- ს და შეაერთეთ იგი სოლენოიდულ სარქველთან
დაამატეთ სარელეო ქუდი ჟოლოს Pi და შეაერთეთ იგი სოლენოიდულ სარქველთან
დაამატეთ სარელეო ქუდი ჟოლოს Pi და შეაერთეთ იგი სოლენოიდულ სარქველთან
დაამატეთ სარელეო ქუდი ჟოლოს Pi- ს და შეაერთეთ იგი სოლენოიდულ სარქველთან
დაამატეთ სარელეო ქუდი ჟოლოს Pi- ს და შეაერთეთ იგი სოლენოიდულ სარქველთან

ამ ნაბიჯის გადადგმამდე გამორთეთ თქვენი Raspberry Pi: ssh მასზე და ჩაწერეთ "sudo shutdown now", შემდეგ გათიშეთ იგი დენიდან

ჩვენი მიზანია ელექტროენერგიის მიწოდების ჩართვა და გამორთვა სოლენოიდის სარქველთან - სარქველთან, რომელსაც შეუძლია გახსნას ან დახუროს წყალმომარაგება 24V AC ენერგიაზე დაყრდნობით, რომელსაც იგი იღებს კვების წყაროდან. რელე არის ელექტრული კომპონენტი, რომელსაც შეუძლია გახსნას ან დახუროს წრე ციფრული სიგნალის საფუძველზე, რომელსაც ჩვენი Raspberry Pi უზრუნველყოფს. რასაც ჩვენ ვაკეთებთ, ეს არის სარელეო Raspberry Pi- ს ამ ციფრული სიგნალის ქინძისთავებთან დაკავშირება და მისი დახურვა 24V AC კვების ბლოკსა და სოლენოიდის სარქველს შორის.

Raspberry Pi- ს ქინძისთავებს, რომლებსაც შეუძლიათ ციფრული შეყვანის ან გამომავალი ფუნქციის შესრულება, ეწოდება GPIO - ზოგადი დანიშნულების შეყვანა/გამომავალი და ისინი Pi- ს მხარეს 40 ქინძის მწკრივია. Pi გამორთული და ჩადეთ რელე HAT მტკიცედ მასში. ჩემს მიერ არჩეულ ქუდს აქვს 3 რელე და ჩვენ მხოლოდ ერთ მათგანს გამოვიყენებთ. წარმოიდგინე, რისი გაკეთება შეგიძლია დანარჩენ ორთან:)

ახლა ისევ ჩართეთ Raspberry Pi. წითელი "დენის" LED რელეზე HAT უნდა ჩაირთოს, რაც მიუთითებს, რომ ის ენერგიას იღებს Pi- დან GPIO- ს საშუალებით. მოდით შევამოწმოთ, რომ ჩვენ შეგვიძლია მისი კონტროლი: ssh ისევ Pi- ში, შეიყვანეთ პითონი და ჩაწერეთ:

იმპორტი gpiozero

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

თქვენ უნდა მოისმინოთ ხმამაღალი "დაწკაპუნება", რაც მიუთითებს, რომ რელე ჩართულია და დაინახავთ LED- ს ჩართვას, რომელიც აჩვენებს, რომ პირველი რელე არის დაკავშირებულ მდგომარეობაში. ახლა შეგიძლიათ აკრიფოთ

dev.on ()

რაც სარელეო გადააქცევს "გამორთულ" პოზიციას (უცნაური, ვიცი …) და გამოვა () პითონიდან.

ახლა ჯუმბერის კაბელების გამოყენებით და უფრო გრძელი კაბელის საშუალებით დააკავშირეთ სარელეო 24V კვების ბლოკსა და სოლენოიდულ სარქველს შორის. იხილეთ დიაგრამა. დაბოლოს, დააკავშირეთ სოლენოიდული სარქველი ონკანთან გადამყვანების გამოყენებით და მოემზადეთ ამ ყველაფრის შესამოწმებლად ზემოთ მითითებული ბრძანებების გამეორებით - მათ უნდა ჩართონ და გამორთონ წყალი.

მიამაგრეთ შლანგი სოლენოიდის სარქველთან და მეორე ბოლო აუზის სიღრმეში ჩადეთ. ახლა თქვენ გაქვთ კომპიუტერის კონტროლირებადი აუზის დამთავრების სისტემა და დროა დაუკავშიროთ სენსორი, რომელიც გეტყვით როდის გაუშვებს.

ნაბიჯი 11: შეაერთეთ წყლის დონის სენსორი

შეაერთეთ წყლის დონის სენსორი
შეაერთეთ წყლის დონის სენსორი
შეაერთეთ წყლის დონის სენსორი
შეაერთეთ წყლის დონის სენსორი
შეაერთეთ წყლის დონის სენსორი
შეაერთეთ წყლის დონის სენსორი
შეაერთეთ წყლის დონის სენსორი
შეაერთეთ წყლის დონის სენსორი

წყლის დონის სენსორი არის უბრალოდ მცურავი, რომელიც აკავშირებს ელექტრულ წრეს, როდესაც ათწილადი ქვემოთაა და არღვევს მას ამოსვლისას. თუ მას აუზში ჩასვამთ სწორ სიმაღლეზე, წყლის დონე ადეკვატური იქნება მაშინ, როდესაც წყალი არ არის საკმარისი.

იმისათვის, რომ ჟოლოს პიმ იცოდეს წყლის დონის სენსორის სტატუსი, ჩვენ გვჭირდება პი, რომ შევიგრძნოთ ღია ან დახურული წრე. საბედნიეროდ, ეს ძალიან მარტივია: იგივე GPIO კონექტორები, რომლებსაც ჩვენ ვიყენებთ ციფრული გამომავალი რელეების გასაკონტროლებლად, შეუძლიათ შეასრულონ შეყვანის როლი (შესაბამისად, მე GPIO– ში). კერძოდ, თუ ჩვენ დავუკავშირებთ სენსორის ერთ მავთულს +3.3V- ზე GPIO კონექტორზე, ხოლო მეორე სენსორის მავთულს იმ პინზე, რომელსაც ჩვენ კონფიგურაციით ვაქცევთ შესასვლელად (იგულისხმება, რომ ის ჩვეულებრივ GND ძაბვის დონეზე იქნება), ეს პინი იზომება ციფრული "მაღალი" ან "ჩართული" ძაბვა მხოლოდ მაშინ, როდესაც წყლის დონის სენსორი დახურავს წრეს - როდესაც წყლის დონე დაბალია. შეყვანისთვის გამოვიყენე GPIO პინ 16, რომელიც აღვნიშნე ზემოთ მოცემულ სურათზე.

პითონის კოდი, რომ დააკონფიგურიროთ პინი შეყვანისთვის და შეამოწმოთ მისი ამჟამინდელი მდგომარეობა:

იმპორტი gpiozero

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

ერთი პოტენციური გამოწვევა ის არის, რომ როდესაც სენსორი უბრალოდ ცვლის მდგომარეობას, ის სწრაფად იცვლებოდა ჩართულ და გამორთულ მდგომარეობებს შორის. ამ პრობლემის გადაწყვეტა ცნობილია როგორც "დებონუსი" და ეძებს თანმიმდევრულ მდგომარეობის შეცვლას მოქმედების დაწყებამდე. GPIOZERO ბიბლიოთეკას აქვს კოდი ამის გასაკეთებლად, მაგრამ რატომღაც ეს კოდი ჩემთვის კარგად არ მუშაობდა. მე დავწერე მარტივი მარყუჟი IFTTT სიგნალების გასააქტიურებლად, როდესაც გამოვლენილია თანმიმდევრული მდგომარეობის ცვლილება, რომელიც შეგიძლიათ იხილოთ ჩემს საცავში აქ.

ნაბიჯი 12: დაწერეთ კოდი, რომ ეს ყველაფერი ერთმანეთთან დააკავშიროთ

დაწერეთ კოდი, რომ ეს ყველაფერი შეაკავშიროთ
დაწერეთ კოდი, რომ ეს ყველაფერი შეაკავშიროთ

Ის არის. ჩვენი დაყენება დასრულებულია. თქვენ შეგიძლიათ დაწეროთ თქვენი საკუთარი კოდი, რომ ყველაფერი ერთმანეთთან შეავსოთ სრულ სისტემაში, ან გამოიყენოთ კოდი, რომელსაც მე ვაძლევთ. ამისათვის უბრალოდ შექმენით დირექტორიის სტრუქტურა და მოახდინეთ საცავის კლონირება, მაგალითად:

მკდირ პულსპი

cd poolpi git კლონი

შემდეგი, შეცვალეთ ifttt_url.txt ფაილები motion_alert და water_level დირექტორიებში, რომ გქონდეთ URL თქვენი IFTTT ვებ -კვანძისათვის თქვენი საიდუმლო გასაღებით. თქვენ შეგიძლიათ გამოიყენოთ ორი განსხვავებული ვებ კაკალი სხვადასხვა მოქმედებისთვის.

დაბოლოს, ჩვენ გვსურს, რომ ეს კოდი ავტომატურად იმუშაოს. ამის განხორციელების უმარტივესი გზაა Linux crontab სერვისი. ჩვენ შეგვიძლია დავამატოთ crontab ხაზი ორი ძირითადი ამოცანისთვის:

  1. გაუშვით ჩვენი სამი პროგრამა: ობიექტის დეტექტორი, წყლის დონის სენსორი და ვებ სერვერი ყოველ გადატვირთვაზე
  2. გაასუფთავეთ გამომავალი დირექტორია, წაშალეთ ძველი სურათები და ძველი ვიდეო ფაილები (მე ვარჩიე 1 დღეზე ძველი ფაილების წაშლა და 7 დღეზე ძველი სურათები - მოგერიდებათ ექსპერიმენტი)

ამისათვის ჩაწერეთ crontab -e, რომელიც გახსნის თქვენს ნანო ტექსტურ რედაქტორს. დაამატეთ შემდეგი ხაზები ფაილის ბოლოში:

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

დაბოლოს, გადატვირთეთ თქვენი Raspberry Pi. ის ახლა მზად არის შეინარჩუნოს თქვენი აუზი სავსე და უსაფრთხო.

შეხედეთ პარამეტრებს, კოდს და არ დაგავიწყდეთ ვარსკვლავით მონიშნოთ ჩემი github საცავი და კომენტარი გააკეთოთ ინსტრუქციებზე, თუკი ეს თქვენთვის სასარგებლოა. მე ყოველთვის ვეძებ უფრო მეტის სწავლას.

ბედნიერი დამზადება!

IoT გამოწვევა
IoT გამოწვევა
IoT გამოწვევა
IoT გამოწვევა

მეორე ადგილი IoT გამოწვევაში

გირჩევთ: