Სარჩევი:
- ნაბიჯი 1: გრანდიოზული გეგმა
- ნაბიჯი 2: საყიდლების სია
- ნაბიჯი 3: დააინსტალირეთ თქვენი Raspberry Pi
- ნაბიჯი 4: დააინსტალირეთ OpenCV
- ნაბიჯი 5: დააყენეთ TensorFlow
- ნაბიჯი 6: მოძრაობის გამოვლენა OpenCV გამოყენებით
- ნაბიჯი 7: ობიექტების გამოვლენა TensorFlow– ის გამოყენებით
- ნაბიჯი 8: შექმენით ვებ სერვერი Raspberry Pi– ზე
- ნაბიჯი 9: მობილური შეტყობინებები Raspberry Pi– დან IFTTT– ის გამოყენებით
- ნაბიჯი 10: დაამატეთ სარელეო ქუდი ჟოლოს Pi და შეაერთეთ იგი სოლენოიდულ სარქველთან
- ნაბიჯი 11: შეაერთეთ წყლის დონის სენსორი
- ნაბიჯი 12: დაწერეთ კოდი, რომ ეს ყველაფერი ერთმანეთთან დააკავშიროთ
ვიდეო: აუზი Pi Guy - AI მართული სიგნალიზაცია და აუზის მონიტორინგი ჟოლოს Pi გამოყენებით: 12 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
სახლში აუზის ქონა გართობაა, მაგრამ დიდი პასუხისმგებლობით. ჩემი ყველაზე დიდი საზრუნავი არის მონიტორინგი, თუ ვინმე აუზთან ახლოს არის (განსაკუთრებით მცირეწლოვანი ბავშვები). ჩემი ყველაზე დიდი გაღიზიანება იმაში მდგომარეობს, რომ აუზის წყლის ხაზი არასოდეს ჩავარდეს ტუმბოს შესასვლელთან ქვემოთ, რაც გამოაშრობს ტუმბოს და გაანადგურებს მას $ $ $ რემონტით.
მე ახლახანს გავარკვიე, თუ როგორ გამოვიყენო ჟოლო Pi OpenCV და TensorFlow, წყლის დონის სენსორთან და სოლენოიდულ სარქველთან ერთად ორივე საკითხის გადასაჭრელად - და გაერთეთ ამით!
ის ასევე არის შესანიშნავი სიგნალიზაციის სისტემა - მოძრაობა გააქტიურებულია, AI კონტროლირებადი, უსასრულოდ მორგებული.
მოდით ჩავყვინთოთ.
ნაბიჯი 1: გრანდიოზული გეგმა
ამ ინსტრუქციაში ჩვენ ვაჩვენებთ როგორ:
- დააინსტალირეთ Raspberry Pi OpenCV და TensorFlow– ით
- შეაერთეთ ვებკამერა გრძელი USB კაბელის საშუალებით
- დაწერეთ OpenCV ალგორითმი მოძრაობის გამოსავლენად
- გამოიყენეთ TensorFlow ობიექტების გამოვლენისთვის
- Raspberry Pi– ზე დააყენეთ ვებ სერვერი საინტერესო სურათების საჩვენებლად
- ინტეგრირება IFTTT– სთან, რათა გამოიწვიოს ადამიანის სიგნალიზაცია პირის გამოვლენის შემთხვევაში
- მიამაგრეთ რელე HAT Raspberry Pi– ს და შეაერთეთ იგი სოლენოიდულ სარქველთან, რომელიც წყალს აუზს დაამატებდა
- მიამაგრეთ წყლის დონის სენსორი Raspberry Pi– სთან და დაუკავშირდით მას Pi– ს GPIO– ს გამოყენებით
- დაწერეთ კოდი, რომ ეს ყველაფერი ერთმანეთზე დააკავშიროთ
ნაბიჯი 2: საყიდლების სია
ყველა კომპონენტი ადვილად ხელმისაწვდომია Amazon– დან. მოგერიდებათ ექსპერიმენტი და კომპონენტების გაცვლა - ეს არის სიამოვნების ნახევარი!
- ჟოლო პი
- Raspberry Pi კვების წყარო (არ დაზოგოთ აქ)
- მეხსიერების ბარათი (რაც უფრო დიდია უკეთესი)
- ქეისი (ეს არის საკმაოდ დიდი, რომ შეიცავდეს Pi და HAT)
- USB ვებკამერა (ნებისმიერი ვებკამერა გააკეთებს, მაგრამ თქვენ გინდათ ის, რომელიც იღებს კარგ სურათებს და კარგად აბალანსებს განათებას)
- USB გაფართოების კაბელი (საჭიროების შემთხვევაში - გაზომეთ მანძილი Pi- ს შორის და სად განათავსებთ კამერას)
- სარელეო დაფა HAT (ამ ერთს აქვს 3 რელე და ჩვენ მხოლოდ ერთი გვჭირდება, მაგრამ თქვენ მალე ნახავთ სხვათა გამოყენებას!)
- სოლენოიდი
- სოლენოიდის მორგება 1 და მორგება 2 (ეს ნამდვილად დამოკიდებულია იმაზე, თუ რას მოერგებით თქვენ სოლენოიდი, მაგრამ ეს ჩემზე მუშაობდა)
- ელექტროენერგიის მიწოდება (ნებისმიერი 24V AC გააკეთებს)
- საკაბელო (კიდევ ერთხელ, თითქმის ნებისმიერი 2 შტრიხიანი კაბელი გააკეთებდა - დენი მინიმალურია)
- წყლის დონის მცურავი გადამრთველი (ეს მხოლოდ მაგალითია, შეამოწმეთ რა შეიძლება ადვილად იყოს დაკავშირებული თქვენს აუზთან)
- ზოგიერთი ჯუმბერის მავთული და მავთულის კონექტორები
ნაბიჯი 3: დააინსტალირეთ თქვენი Raspberry Pi
Raspberry Pi არის შესანიშნავი პატარა კომპიუტერი. ღირს მხოლოდ $ 35, მუშაობს გამუდმებით და აქვს უამრავი თავსებადი პროგრამული უზრუნველყოფა და აპარატურა. მისი დაყენება საკმაოდ მარტივია:
- თქვენი SD ბარათის ფორმატირება. ამას განსაკუთრებული მოვლა სჭირდება - Raspberry Pi– ს ჩატვირთვა შეუძლია მხოლოდ FAT ფორმატირებული SD ბარათიდან. მიჰყევით ამ მითითებებს.
- შეაერთეთ Raspberry Pi USB კლავიატურასა და მაუსს, პლუს HDMI დისპლეი და მიჰყევით Raspberry Pi NOOBS სამეურვეო ინსტრუქციას. დარწმუნდით, რომ დააინსტალირეთ WiFi და ჩართეთ SSH წვდომა. არ დაგავიწყდეთ პაროლის დაყენება ნაგულისხმევი პი ანგარიშისთვის.
- თქვენს სახლის ქსელში შექმენით სტატიკური IP Raspberry Pi– სთვის - ეს გაადვილებს SSH– ში შესვლას.
- დარწმუნდით, რომ თქვენ გაქვთ ssh კლიენტი დაინსტალირებული თქვენს სამუშაო მაგიდაზე/ლეპტოპზე. კომპიუტერისთვის მე გირჩევთ Putty, რომელიც შეგიძლიათ დააინსტალიროთ აქედან.
- გათიშეთ 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 არის კომპიუტერის ხედვის გამოსახულების მანიპულირების ფუნქციების საოცარი კოლექცია. ეს საშუალებას მოგვცემს წავიკითხოთ სურათები ვებკამერიდან, ვამუშაოთ ისინი მოძრაობის სფეროების საპოვნელად, შენახვისთვის და სხვა. 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 არის მანქანათმცოდნეობის / 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 უკან დააბრუნოთ, რომ მიიღოთ რეალური სახე.
მოძრაობის გამოვლენის სტრატეგია საკმაოდ წინ არის:
- იმუშავეთ დაბალი რეზოლუციის ჩარჩოებზე - აქ არ არის საჭირო სრული HD რეჟიმში მუშაობა
- გარდა ამისა, დაბინდეთ სურათები რაც შეიძლება ნაკლები ხმაურის უზრუნველსაყოფად.
- შეინარჩუნეთ ბოლო N ჩარჩოების საშუალო მაჩვენებელი. ამ პროგრამისთვის, სადაც კადრების სიხშირეა დაახლოებით 1 FPS (მხოლოდ იმიტომ, რომ TensorFlow იღებს გარკვეულ დროს ჩარჩოზე), აღმოვაჩინე, რომ N = 60 კარგ შედეგს იძლევა. და რადგან ფრთხილად განხორციელებას არ სჭირდება მეტი CPU მეტი ჩარჩოებით, რაც ნორმალურია (ამას მეტი მეხსიერება სჭირდება - მაგრამ ეს უმნიშვნელოა, როდესაც ჩვენ ვმუშაობთ ქვედა რეზოლუციის ჩარჩოებით)
- გამოაკელით მიმდინარე გამოსახულებას გაშვებული საშუალოდან (უბრალოდ ფრთხილად იყავით აკრეფისას - თქვენ უნდა დაუშვათ დადებითი და უარყოფითი მნიშვნელობები [-255.. 255], ამიტომ ჩარჩო უნდა გადაკეთდეს int)
- თქვენ შეგიძლიათ შეასრულოთ გამოკლება ჩარჩოს ნაცრისფერ მასშტაბზე (და საშუალოზე), ან გააკეთოთ ცალკე თითოეული RGB არხისთვის და შემდეგ შეაერთოთ შედეგები (ეს არის სტრატეგია, რომელიც მე ავირჩიე, რაც მას მგრძნობიარე გახდის ფერის ცვლილებებზე)
- გამოიყენეთ ბარიერი დელტაზე და ამოიღეთ ხმაური ეროზიით და გაფართოებით
- დაბოლოს, მოძებნეთ დელტას მქონე ტერიტორიების კონტურები - ეს არის ადგილები, სადაც მოძრაობა მოხდა და ამჟამინდელი სურათი განსხვავდება წინა სურათების საშუალო მაჩვენებლისგან. საჭიროების შემთხვევაში, ჩვენ შეგვიძლია ვიპოვოთ ამ კონტურების შემოსაზღვრული ყუთები.
მე ჩავრთე კოდი ამის გასაკეთებლად DeltaFinder პითონის კლასში, რომელიც შეგიძლიათ ნახოთ ჩემს github– ში აქ
ნაბიჯი 7: ობიექტების გამოვლენა TensorFlow– ის გამოყენებით
თუ თქვენ მიჰყევით TensorFlow– ის ინსტალაციის პროცედურას, თქვენ უკვე შეამოწმეთ, რომ გაქვთ TensorFlow დაინსტალირებული და მუშაობს.
ზოგადი გარე სცენის ადამიანების გამოვლენის მიზნით, მოდელები, რომლებიც წინასწარ არის გაწვრთნილი COCO მონაცემთა ნაკრებში, საკმაოდ კარგად გამოდიან - რაც ზუსტად ის მოდელია, რომელიც ჩვენ გადმოწერილი გვაქვს TensorFlow ინსტალაციის ბოლოს. ჩვენ უბრალოდ უნდა გამოვიყენოთ დასკვნის სახით!
ისევ და ისევ, მე ჩავრთე მოდელის ჩატვირთვა და დასკვნა TFClassify პითონის კლასში, რათა საქმეები უფრო ადვილი იყოს, რასაც აქ ნახავთ.
ნაბიჯი 8: შექმენით ვებ სერვერი 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– ის გამოყენებით
მე ნამდვილად მსურს მობილური შეტყობინებების მიღება მოვლენების დროს. ამ შემთხვევაში, როდესაც ადამიანი გამოვლენილია და როდესაც წყლის დონე დაბალია. უმარტივესი გზა ვიპოვე ამის გასაკეთებლად, მობილური აპლიკაციის დაწერის გარეშე, არის IFTTT. IFTTT ნიშნავს "თუ ეს მაშინ ეს" და საშუალებას აძლევს მრავალი სახის ღონისძიებას გამოიწვიოს მრავალი სახის ქმედება. ჩვენს შემთხვევაში, ჩვენ დაინტერესებულნი ვართ IFTTT Maker Webhook გამომწვევით. ეს გვაძლევს საშუალებას გავაქტიუროთ IFTTT მოქმედება HTTP POST მოთხოვნით IFTTT სერვერზე ჩვენი ანგარიშისათვის მინიჭებული სპეციალური გასაღებით, ასევე მონაცემებით, რაც განსაზღვრავს რა მოხდა. ჩვენ მიერ განხორციელებული ქმედება შეიძლება იყოს ისეთივე მარტივი, როგორც შეტყობინების შექმნა ჩვენს მობილურ მოწყობილობაზე IFTTT მობილური აპლიკაციის გამოყენებით, ან რაიმე უფრო რთული, ვიდრე ეს.
აქ მოცემულია, თუ როგორ უნდა გავაკეთოთ ეს:
- შექმენით IFTTT ანგარიში ifttt.com– ზე
- სისტემაში შესვლისას გადადით Webhook სერვისის პარამეტრების გვერდზე და შეიყვანეთ URL თქვენს ბრაუზერში (მაგალითად, https://maker.ifttt.com/use/. ეს ვებ გვერდი გაჩვენებთ თქვენს გასაღებს და მისამართს, რომელიც უნდა გამოიყენოთ მოქმედებების დასაწყებად რა
-
შექმენით IFTTT აპლეტი, რომელიც გამოიმუშავებს მობილურ შეტყობინებას, როდესაც Webhook გააქტიურდება ღონისძიების დეტალებით:
- დააჭირეთ "ჩემი აპლეტები" და შემდეგ "ახალი აპლეტი".
- დააწკაპუნეთ "+ეს" და აირჩიეთ "webhooks". დააწკაპუნეთ "მიიღეთ ვებ მოთხოვნა" დეტალებზე გადასასვლელად
- მიეცით თქვენს ღონისძიებას სახელი, მაგ. "PoolEvent" და დააჭირეთ "შექმენით გამომწვევი"
- დააწკაპუნეთ "+ეს" და აირჩიეთ "შეტყობინებები". შემდეგ აირჩიეთ "გაგზავნეთ მდიდარი შეტყობინება IFTTT აპიდან"
- "სათაურისთვის" აირჩიეთ მსგავსი რამ "PoolPi"
- "შეტყობინებისთვის" დაწერეთ "აღმოჩენილია აუზი Pi:" და დააჭირეთ "დაამატეთ ინგრედიენტი".. "მნიშვნელობა 1".
- დაუბრუნდით თქვენს მიერ გადაწერილ URL– ს მე –2 საფეხურზე. ის აჩვენებს URL– ს, რომელიც უნდა გამოიყენოთ თქვენი ახლად შექმნილი აპლეტის გამოსაძახებლად. დააკოპირეთ ეს URL, შეცვალეთ ადგილის შემცველი {ღონისძიება} მოვლენის სახელით (მაგალითში PoolEvent)
- ჩამოტვირთეთ, დააინსტალირეთ და შედით IFTTT აპლიკაციაში თქვენი მობილური მოწყობილობისთვის
- გაუშვით ეს პითონის სკრიპტი თქვენს Raspberry Pi– ზე, რომ ნახოთ რომ მუშაობს (გაითვალისწინეთ, რომ შესაძლოა რამდენიმე წამი ან წუთი დასჭირდეს თქვენს მობილურ მოწყობილობაზე ჩართვას):
იმპორტის მოთხოვნები
request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "გამარჯობა შეტყობინებები"})
ნაბიჯი 10: დაამატეთ სარელეო ქუდი ჟოლოს 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 დღეზე ძველი ფაილების წაშლა და 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 გამოწვევაში
გირჩევთ:
როგორ განვახორციელოთ წყალდიდობის გამოვლენის ჭკვიანი სიგნალიზაცია ჟოლოს პი და ნაწილაკების არგონის გამოყენებით: 6 ნაბიჯი
როგორ განვახორციელოთ წყალდიდობის ჭკვიანი გამოვლენის სიგნალიზაცია ჟოლოს პი და ნაწილაკების არგონის გამოყენებით: სტანდარტული წყალდიდობის სენსორების არსებობა შესანიშნავია თქვენი სახლის ან სამუშაო ადგილის მასიური დაზიანების თავიდან ასაცილებლად. მაგრამ ეს ართულებს, თუ სახლში არ ხართ, რომ დაესწროთ სიგნალს. რა თქმა უნდა თქვენ შეგიძლიათ შეიძინოთ ის ჭკვიანი ეს წყალდიდობის სიგნალიზაციის სისტემა ამოიცნობს ნებისმიერ სითხეს და იწვევს ალარას
ტემპერატურისა და ტენიანობის მონიტორინგი SHT25 და ჟოლოს Pi გამოყენებით: 5 ნაბიჯი
ტემპერატურისა და ტენიანობის მონიტორინგი SHT25 და Raspberry Pi– ს გამოყენებით: ჩვენ ახლახანს ვიმუშავეთ სხვადასხვა პროექტზე, რომელიც მოითხოვდა ტემპერატურისა და ტენიანობის მონიტორინგს და შემდეგ მივხვდით, რომ ეს ორი პარამეტრი ფაქტობრივად გადამწყვეტ როლს ასრულებს სისტემის მუშაობის ეფექტურობის შეფასებაში. ორივე ინდუსტრიაში
IoT აუზის მონიტორინგი ThingsBoard– ით: 8 ნაბიჯი
IoT აუზის მონიტორინგი ThingsBoard– ით: ეს ინსტრუქცია აჩვენებს როგორ აკონტროლოთ აუზის ან სპა – ის pH, ORP და ტემპერატურა და ატვირთოთ მონაცემები ThingsBoard.io– ს ვიზუალიზაციისა და შენახვის სამსახურში
სახლში დამზადებული ავტომატური წყლის გამანაწილებელი სარეცხი აუზი არდუინოს გამოყენებით: 4 ნაბიჯი
სახლში დამზადებული ავტომატური წყლის გამანაწილებელი სარეცხი აუზი არდუინოს გამოყენებით: ამ დიზაინის მიზანია ონკანიდან წყლის დარიცხვა, როდესაც ხელი გაჭიმეთ აუზში დასაბანად ონკანისა და წყლის გაფუჭების გარეშე. Opensource Arduino - ნანო დაფა გამოიყენება ამის მისაღწევად. ეწვიეთ ჩვენს ვებ გვერდს წყარო C
Arduino საცურაო აუზი ღრუბლის მონიტორინგი: 7 ნაბიჯი (სურათებით)
Arduino Swimming Pool Cloud Monitoring: ამ პროექტის პირველადი მიზანია Samsung ARTIK Cloud- ის გამოყენება საცურაო აუზების pH და ტემპერატურის დონის მონიტორინგისთვის. ტექნიკის კომპონენტები: Arduino MKR1000 ან Genuino MKR1000 Jumper მავთულები (ზოგადი) SparkFun pH Sensor Kit 1 x Resistor 4.7