विषयसूची:

पूल पाई गाय - रास्पबेरी पाई का उपयोग करके एआई संचालित अलार्म सिस्टम और पूल मॉनिटरिंग: 12 कदम (चित्रों के साथ)
पूल पाई गाय - रास्पबेरी पाई का उपयोग करके एआई संचालित अलार्म सिस्टम और पूल मॉनिटरिंग: 12 कदम (चित्रों के साथ)

वीडियो: पूल पाई गाय - रास्पबेरी पाई का उपयोग करके एआई संचालित अलार्म सिस्टम और पूल मॉनिटरिंग: 12 कदम (चित्रों के साथ)

वीडियो: पूल पाई गाय - रास्पबेरी पाई का उपयोग करके एआई संचालित अलार्म सिस्टम और पूल मॉनिटरिंग: 12 कदम (चित्रों के साथ)
वीडियो: कस्ट्रुप Λ वेरवेके: माइंड अपलोडिंग और शैडो इंटीग्रेशन 2024, जुलाई
Anonim
पूल पाई गाय - रास्पबेरी पाई का उपयोग करके एआई संचालित अलार्म सिस्टम और पूल मॉनिटरिंग
पूल पाई गाय - रास्पबेरी पाई का उपयोग करके एआई संचालित अलार्म सिस्टम और पूल मॉनिटरिंग

घर पर पूल बनाना मजेदार है, लेकिन बड़ी जिम्मेदारी के साथ आता है। मेरी सबसे बड़ी चिंता यह निगरानी है कि क्या कोई पूल के पास है (विशेषकर छोटे बच्चे)। मेरी सबसे बड़ी झुंझलाहट यह सुनिश्चित कर रही है कि पूल की पानी की लाइन कभी भी पंप प्रविष्टि से नीचे न जाए, जो पंप को सूखा देगी और मरम्मत में $$$ की लागत से इसे नष्ट कर देगी।

मैंने हाल ही में पता लगाया है कि दोनों मुद्दों को हल करने के लिए ओपनसीवी और टेंसरफ्लो के साथ रास्पबेरी पाई का उपयोग कैसे करें, साथ ही एक जल स्तर सेंसर और एक सोलनॉइड वाल्व के साथ - और इसे करने में मज़ा लें!

यह एक बेहतरीन अलार्म सिस्टम भी साबित होता है - गति सक्रिय, एआई-नियंत्रित, असीम रूप से अनुकूलन योग्य।

चलो गोता लगाएँ।

चरण 1: भव्य योजना

इस निर्देशयोग्य में हम दिखाएंगे कि कैसे:

  1. OpenCV और TensorFlow के साथ रास्पबेरी पाई सेटअप करें
  2. एक लंबे यूएसबी केबल के माध्यम से एक वेबकैम कनेक्ट करें
  3. गति का पता लगाने के लिए एक OpenCV एल्गोरिथम लिखें
  4. ऑब्जेक्ट डिटेक्शन के लिए TensorFlow का उपयोग करें
  5. दिलचस्प चित्र दिखाने के लिए रास्पबेरी पाई पर एक वेब सर्वर सेट करें
  6. किसी व्यक्ति का पता चलने की स्थिति में मोबाइल अलर्ट ट्रिगर करने के लिए IFTTT के साथ एकीकृत करें
  7. रास्पबेरी पाई के लिए एक रिले एचएटी संलग्न करें और इसे सोलनॉइड वाल्व से कनेक्ट करें जो पूल में पानी जोड़ देगा
  8. रास्पबेरी पाई में एक जल स्तर सेंसर संलग्न करें और पाई के GPIO का उपयोग करके इसके साथ इंटरफेस करें
  9. सभी को एक साथ चिपकाने के लिए कुछ कोड लिखें

चरण 2: खरीदारी की सूची

खरीदारी की सूची
खरीदारी की सूची

सभी घटक अमेज़न से आसानी से उपलब्ध हैं। बेझिझक प्रयोग करें और घटकों का आदान-प्रदान करें - यह आधा मज़ा है!

  1. रास्पबेरी पाई
  2. रास्पबेरी पाई बिजली की आपूर्ति (यहां कंजूसी न करें)
  3. मेमोरी कार्ड (बड़ा बेहतर है)
  4. मामला (यह पाई और एचएटी दोनों को रखने के लिए काफी बड़ा है)
  5. यूएसबी वेब कैमरा (कोई भी वेब कैमरा करेगा, लेकिन आप एक ऐसा चाहते हैं जो अच्छी छवियां प्राप्त करे और अच्छी तरह से प्रकाश व्यवस्था को संतुलित करे)
  6. यूएसबी एक्सटेंशन केबल (यदि आवश्यक हो - पाई के बीच की दूरी को मापें और जहां आप कैमरा रखेंगे)
  7. रिले बोर्ड एचएटी (इसमें 3 रिले हैं और हमें केवल एक की आवश्यकता है, लेकिन आप जल्द ही अन्य लोगों के लिए उपयोग पाएंगे!)
  8. solenoid
  9. सोलेनॉइड फिटिंग 1 और फिटिंग 2 (जो वास्तव में इस बात पर निर्भर करता है कि आप सोलनॉइड में क्या फिट करते हैं, लेकिन ये मेरे लिए काम करते हैं)
  10. सोलेनॉइड बिजली की आपूर्ति (कोई भी 24V एसी करेगा)
  11. केबल (फिर से, लगभग कोई भी 2 स्ट्रैंड केबल करेगा - करंट न्यूनतम है)
  12. जल स्तर फ्लोट स्विच (यह सिर्फ एक उदाहरण है, जांचें कि आपके पूल से आसानी से क्या जोड़ा जा सकता है)
  13. कुछ जम्पर वायर और वायर कनेक्टर

चरण 3: अपना रास्पबेरी पाई सेटअप करें

अपना रास्पबेरी पाई सेटअप करें
अपना रास्पबेरी पाई सेटअप करें

रास्पबेरी पाई एक बहुत छोटा कंप्यूटर है। इसकी कीमत सिर्फ $35 है, लगातार चलता है, और इसमें बहुत सारे संगत सॉफ्टवेयर और हार्डवेयर हैं। इसे सेट करना काफी आसान है:

  1. अपने एसडी कार्ड को प्रारूपित करें। इसके लिए विशेष देखभाल की आवश्यकता है - Raspberry Pi केवल FAT स्वरूपित SD कार्ड से बूट हो सकता है। इन निर्देशों का पालन करें।
  2. रास्पबेरी पाई को एक यूएसबी कीबोर्ड और माउस, साथ ही एक एचडीएमआई डिस्प्ले से कनेक्ट करें, और रास्पबेरी पाई एनओओबीएस ट्यूटोरियल में निर्देशों का पालन करें। वाईफाई सेटअप करना और एसएसएच एक्सेस को सक्षम करना सुनिश्चित करें। डिफ़ॉल्ट पीआई खाते के लिए पासवर्ड सेट करना न भूलें।
  3. आपके होम नेटवर्क पर रास्पबेरी पाई के लिए एक स्थिर आईपी सेटअप - यह एसएसएच को बहुत आसान बना देगा।
  4. सुनिश्चित करें कि आपके डेस्कटॉप/लैपटॉप पर एक एसएसएच क्लाइंट स्थापित है। एक पीसी के लिए मैं पुट्टी की सिफारिश करूंगा, जिसे आप यहां से इंस्टॉल कर सकते हैं।
  5. रास्पबेरी पाई से यूएसबी और एचडीएमआई को अनहुक करें, इसे रिबूट करें, और इसमें एसएसएच करें - अगर यह सब काम करता है तो आपको कुछ इस तरह देखना चाहिए:

Linux raspberrypi 4.14.98-v7+ #1200 SMP मंगल फ़रवरी 12 20:27:48 GMT 2019 armv7l

डेबियन जीएनयू/लिनक्स सिस्टम के साथ शामिल प्रोग्राम मुफ्त सॉफ्टवेयर हैं; प्रत्येक कार्यक्रम के लिए सटीक वितरण शर्तों को अलग-अलग फाइलों में /usr/share/doc/*/copyright में वर्णित किया गया है। लागू कानून द्वारा अनुमत सीमा तक डेबियन जीएनयू/लिनक्स पूरी तरह से बिना किसी वारंटी के आता है। अंतिम लॉगिन: सोम मई 13 10:41:40 2019 104.36.248.13 से pi@raspberrypi:~ $

चरण 4: ओपनसीवी सेटअप करें

सेटअप ओपनसीवी
सेटअप ओपनसीवी

OpenCV कंप्यूटर दृष्टि के लिए छवि हेरफेर कार्यों का एक अद्भुत संग्रह है। यह हमें वेबकैम से छवियों को पढ़ने, गति के क्षेत्रों को खोजने के लिए उनमें हेरफेर करने, उन्हें बचाने और बहुत कुछ करने की अनुमति देगा। रास्पबेरी पाई पर सेटअप मुश्किल नहीं है, लेकिन कुछ देखभाल की आवश्यकता है।

virtaulenvwrapper स्थापित करके प्रारंभ करें: हम अपनी सभी प्रोग्रामिंग करने के लिए अजगर का उपयोग करेंगे, और वर्चुअलएन्व हमें OpenCV और TensorFlow बनाम फ्लास्क या GPIO के लिए निर्भरता को अलग रखने में मदद करेगा:

pi@raspberrypi:~ $ sudo pip install virtualenvwrapper

अब आप एक नया वातावरण बनाने के लिए "mkvirtualenv" निष्पादित कर सकते हैं, उस पर काम करने के लिए "workon", और बहुत कुछ।

तो, आइए अपनी छवि हेरफेर के लिए एक वातावरण बनाएं, जिसमें डिफ़ॉल्ट दुभाषिया के रूप में अजगर 3 है (यह 2019 है, पुराने अजगर 2 के साथ रहने का कोई कारण नहीं है):

pi@raspberrypi:~ $mkvirtualenv cv -p python3

… (सीवी) pi@raspberrypi:~

अब हम ओपनसीवी स्थापित करने के लिए तैयार हैं। हम ज्यादातर लर्न ओपनसीवी में उत्कृष्ट ट्यूटोरियल का अनुसरण करेंगे। विशेष रूप से उनके चरण 1 और 2 का पालन करें:

sudo apt -y updatesudo apt -y उन्नयन ## निर्भरता स्थापित करें sudo apt-get -y बिल्ड-आवश्यक चेकइंस्टॉल 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 libxine2-dev libv4l-dev cd /usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0 इंस्टॉल करें। 10-देव सुडो उपयुक्त-प्राप्त करें -y स्थापित करें libgtk2.0-dev libtbb-dev qt5-डिफ़ॉल्ट sudo apt-get -y libatlas-base-dev sudo apt-get -y स्थापित करें libmp3lame-dev libtheora-dev sudo apt-get स्थापित करें -y 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 स्थापित करें -देव प्रोटोबफ-कंपाइलर sudo apt-get -y libgoogle-glog-dev libgflags-dev sudo apt-get -y स्थापित करें libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo apt-get install libqtgui4 sudo apt-get install libqt4- परीक्षण

अब हम सिर्फ cv virtualenv के अंदर अजगर बाइंडिंग के साथ OpenCV स्थापित कर सकते हैं (आप अभी भी इसमें हैं, है ना?)

पाइप स्थापित opencv-contrib-python

और बस! हमने अपने रास्पबेरी पाई पर ओपनसीवी स्थापित किया है, जो फ़ोटो और वीडियो कैप्चर करने, उनमें हेरफेर करने और शांत रहने के लिए तैयार है।

जांचें कि एक पायथन दुभाषिया खोलकर और ओपनसीवी आयात करके जांचें कि कोई त्रुटि नहीं है:

(सीवी) पीआई @ रास्पबेरीपी: ~ $ पायथन

पायथन 3.5.3 (डिफ़ॉल्ट, 27 सितंबर 2018, 17:25:39) [जीसीसी 6.3.0 20170516] लिनक्स पर अधिक जानकारी के लिए "सहायता", "कॉपीराइट", "क्रेडिट" या "लाइसेंस" टाइप करें। >>> आयात cv2 >>>

चरण 5: सेटअप TensorFlow

सेटअप TensorFlow
सेटअप TensorFlow

TensorFlow Google द्वारा विकसित और अनुरक्षित एक मशीन लर्निंग / AI फ्रेमवर्क है। छवियों में ऑब्जेक्ट डिटेक्शन सहित विभिन्न कार्यों के लिए डीप-लर्निंग मॉडल के लिए इसका व्यापक समर्थन है, और अब रास्पबेरी पाई पर स्थापित करना काफी सरल है। छोटे पाई पर इसके हल्के मॉडल का प्रदर्शन लगभग 1 फ्रेम प्रति सेकंड है, जो हमारे जैसे एप्लिकेशन के लिए पूरी तरह से पर्याप्त है।

हम मूल रूप से एडजे इलेक्ट्रॉनिक्स के उत्कृष्ट ट्यूटोरियल का अनुसरण करेंगे, जिसमें हाल ही के TensorFlow वितरणों द्वारा संशोधनों को संभव बनाया गया है:

pi@raspberrypi:~ $ वर्कऑन cv

(cv) pi@raspberrypi:~ $ pip install tensorflow (cv) pi@raspberrypi:~ $ sudo apt-get install libxml2-dev libxslt-dev (cv) pi@raspberrypi:~ $ pip install तकिया lxml jupyter matplotlib cython (cv)) pi@raspberrypi:~ $ sudo apt-get install python-tk

अब हमें Google के प्रोटोबफ को संकलित करने की आवश्यकता है। उसी उत्कृष्ट ट्यूटोरियल के चरण 4 में दिए गए निर्देशों का पालन करें

अंत में, TensorFlow की मॉडल परिभाषाओं को क्लोन और सेटअप करें - एडजे इलेक्ट्रॉनिक्स ट्यूटोरियल में चरण 5 का पालन करें

चरण 6 में भी उनके उदाहरण का अनुसरण करने के लिए स्वतंत्र महसूस करें, यह रास्पबेरी पाई पर ऑब्जेक्ट डिटेक्शन के लिए एक शानदार परिचय है।

चरण 6: OpenCV का उपयोग करके मोशन डिटेक्शन

आइए परीक्षण करके शुरू करें कि ओपनसीवी हमारे वेबकैम के साथ इंटरफेस कर सकता है: रास्पबेरी पाई में एसएसएच, सीवी वर्चुअलएन्व (वर्कऑन सीवी) पर जाएं, एक पायथन दुभाषिया खोलें (बस पायथन टाइप करें), और निम्नलिखित पायथन कमांड दर्ज करें:

आयात cv2

कैप = cv2. VideoCapture(0) cap.set(cv2. CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2. CAP_PROP_FRAME_HEIGHT, 1080) रेट, फ्रेम = कैप। रीड () प्रिंट ('फ्रेम साइज पढ़ें: {}x{}'.format(frame.shape[1], frame.shape[0])

किसी भी भाग्य से आप देखेंगे कि ओपनसीवी कैमरे से एचडी फ्रेम पढ़ने में सक्षम था।

आप उस फ्रेम को डिस्क पर लिखने के लिए cv2.imwrite (पथ, फ्रेम) का उपयोग कर सकते हैं और वास्तविक रूप लेने के लिए इसे वापस sftp कर सकते हैं।

गति का पता लगाने की रणनीति काफी सीधी है:

  1. कम रिज़ॉल्यूशन फ़्रेम पर काम करें - यहां पूर्ण HD पर काम करने की कोई आवश्यकता नहीं है
  2. इसके अलावा, जितना संभव हो उतना कम शोर सुनिश्चित करने के लिए छवियों को धुंधला करें।
  3. अंतिम N फ़्रेम का रनिंग एवरेज रखें। इस एप्लिकेशन के लिए, जहां फ्रेम दर लगभग 1 FPS है (सिर्फ इसलिए कि TensorFlow प्रति फ्रेम कुछ समय लेता है), मैंने पाया कि N=60 अच्छे परिणाम देता है। और चूंकि सावधानीपूर्वक कार्यान्वयन अधिक फ्रेम के साथ अधिक सीपीयू नहीं लेता है जो ठीक है (यह अधिक मेमोरी लेता है - लेकिन जब हम कम रिज़ॉल्यूशन फ्रेम के साथ काम करते हैं तो यह नगण्य होता है)
  4. वर्तमान छवि को चल रहे औसत से घटाएं (बस टाइपिंग से सावधान रहें - आपको सकारात्मक और नकारात्मक मानों की अनुमति देने की आवश्यकता है [-255.. 255], इसलिए फ्रेम को int में परिवर्तित करने की आवश्यकता है)
  5. आप फ्रेम (और औसत) के ग्रे-स्केल रूपांतरण पर घटाव का प्रदर्शन कर सकते हैं, या इसे प्रत्येक आरजीबी चैनल के लिए अलग से कर सकते हैं और फिर परिणामों को जोड़ सकते हैं (जो कि मैंने जो रणनीति चुनी है, वह रंग परिवर्तनों के प्रति संवेदनशील है)
  6. डेल्टा पर एक दहलीज का प्रयोग करें और क्षरण और फैलाव द्वारा शोर को दूर करें
  7. अंत में डेल्टा वाले क्षेत्रों की रूपरेखा देखें - ये वे क्षेत्र हैं जहां गति हुई है और वर्तमान छवि पिछली छवियों के औसत से अलग है। जरूरत पड़ने पर हम इन कंट्रोवर्सी के लिए बाउंडिंग बॉक्स भी ढूंढ सकते हैं।

मैंने डेल्टाफाइंडर अजगर वर्ग में ऐसा करने के लिए कोड को इनकैप्सुलेट किया है जिसे आप यहां मेरे जीथब में पा सकते हैं

चरण 7: TensorFlow का उपयोग करके वस्तुओं का पता लगाएं

यदि आपने TensorFlow स्थापना प्रक्रिया का पालन किया है, तो आप पहले ही परीक्षण कर चुके हैं कि आपके पास TensorFlow स्थापित है और काम कर रहा है।

एक सामान्य बाहरी दृश्य में लोगों का पता लगाने के उद्देश्य से, मॉडल जो COCO डेटा सेट पर पूर्व-प्रशिक्षित हैं, काफी अच्छा प्रदर्शन करते हैं - जो ठीक वैसा ही मॉडल है जिसे हमने TensorFlow स्थापना के अंत में डाउनलोड किया है। हमें इसे केवल अनुमान के लिए उपयोग करने की आवश्यकता है!

फिर से, मैंने चीजों को आसान बनाने के लिए TFClassify python वर्ग में मॉडल लोडिंग और अनुमान को इनकैप्सुलेट किया है, जिसे आप यहां पा सकते हैं।

चरण 8: रास्पबेरी पाई पर एक वेब सर्वर सेट करें

रास्पबेरी पाई पर एक वेब सर्वर सेट करें
रास्पबेरी पाई पर एक वेब सर्वर सेट करें

ऑब्जेक्ट डिटेक्शन परिणामों तक पहुँचने का सबसे आसान तरीका एक वेब ब्राउज़र है, तो चलिए रास्पबेरी पाई पर एक वेब सर्वर सेट करते हैं। फिर हम इसे किसी दी गई निर्देशिका से चित्रों की सेवा के लिए सेट कर सकते हैं।

वेब सर्वर ढांचे के लिए कई विकल्प हैं। मैंने फ्लास्क चुना। यह अत्यंत विन्यास योग्य है और पायथन के साथ विस्तार करना आसान है। चूंकि हमें जिस "पैमाने" की आवश्यकता है वह तुच्छ है, यह पर्याप्त से अधिक था।

मैं इसे एक नए वर्चुअलएन्व में स्थापित करने का सुझाव देता हूं, इसलिए:

pi@raspberrypi:~ $mkvirtualenv webserv

(webserv)pi@raspberrypi: ~ $ pip इंस्टाल फ्लास्क

ध्यान दें कि एक सामान्य नेटवर्क सेटअप के साथ यह केवल तभी उपलब्ध होगा जब आपका ब्राउज़र उसी वायरलेस LAN पर हो जिस पर आपका रास्पबेरी पाई है। बाहरी एक्सेस की अनुमति देने के लिए आप अपने इंटरनेट राउटर पर पोर्ट मैपिंग/एनएटी कॉन्फ़िगरेशन बना सकते हैं - लेकिन मैं इसके खिलाफ अनुशंसा करता हूं। मैंने जो कोड लिखा है, वह उस सुरक्षा को प्रदान करने का प्रयास नहीं करता है जिसकी आपको आवश्यकता होगी जब आपके रास्पबेरी पाई को सामान्य इंटरनेट एक्सेस की अनुमति हो।

फ्लास्क क्विक स्टार्ट गाइड का पालन करके अपने इंस्टॉलेशन का परीक्षण करें

चरण 9: IFTTT का उपयोग करके रास्पबेरी पाई से मोबाइल सूचनाएं

IFTTT का उपयोग करके रास्पबेरी पाई से मोबाइल सूचनाएं
IFTTT का उपयोग करके रास्पबेरी पाई से मोबाइल सूचनाएं

मैं वास्तव में घटनाओं के होने पर मोबाइल सूचनाएं प्राप्त करना चाहता हूं। ऐसे में जब किसी व्यक्ति का पता चल जाता है और जब जल स्तर कम हो जाता है। एक कस्टम मोबाइल ऐप लिखने के बिना, मुझे ऐसा करने का सबसे आसान तरीका आईएफटीटीटी का उपयोग करना है। IFTTT का अर्थ है "अगर यह तब है" और कई प्रकार की घटनाओं को कई प्रकार की क्रियाओं को ट्रिगर करने में सक्षम बनाता है। हमारे मामले में, हम IFTTT मेकर वेबहुक ट्रिगर में रुचि रखते हैं। यह हमें IFTTT सर्वर के लिए एक HTTP POST अनुरोध करके हमारे खाते को निर्दिष्ट एक विशेष कुंजी के साथ एक IFTTT कार्रवाई को ट्रिगर करने की अनुमति देता है, साथ ही डेटा जो निर्दिष्ट करता है कि क्या हुआ। हम जो कार्रवाई करते हैं, वह IFTTT मोबाइल ऐप का उपयोग करके हमारे मोबाइल डिवाइस पर एक अधिसूचना बनाने के समान सरल हो सकती है, या इससे अधिक जटिल कुछ भी हो सकता है।

यहाँ यह कैसे करना है:

  1. ifttt.com पर एक IFTTT खाता बनाएं
  2. लॉग इन करते समय, वेबहुक सेवा सेटिंग पृष्ठ पर जाएं और अपने ब्राउज़र में यूआरएल दर्ज करें (कुछ ऐसा https://maker.ifttt.com/use/ । वह वेब पेज आपको आपकी कुंजी और यूआरएल दिखाएगा जिसका उपयोग क्रियाओं को ट्रिगर करने के लिए किया जाएगा।.
  3. एक IFTTT एप्लेट बनाएं जो वेबहुक के ट्रिगर होने पर घटना के विवरण के साथ एक मोबाइल सूचना उत्पन्न करेगा:

    1. "माई एप्लेट्स" और फिर "न्यू एप्लेट" पर क्लिक करें।
    2. "+यह" पर क्लिक करें और "वेबहुक" चुनें। विवरण पर जाने के लिए "वेब अनुरोध प्राप्त करें" पर क्लिक करें
    3. अपने ईवेंट को कोई नाम दें, उदा. "पूलइवेंट" और "ट्रिगर बनाएं" पर क्लिक करें
    4. "+उस" पर क्लिक करें और "सूचनाएं" चुनें। फिर "IFTTT ऐप से रिच नोटिफिकेशन भेजें" चुनें
    5. "शीर्षक" के लिए "पूलपी" जैसा कुछ चुनें
    6. "संदेश" के लिए "पूल पाई का पता चला:" लिखें और "घटक जोड़ें" पर क्लिक करें। "मान 1"।
    7. चरण 2 में आपके द्वारा कॉपी किए गए URL पर वापस जाएं। यह आपके नए बनाए गए एप्लेट को लागू करने के लिए उपयोग किए जाने वाले URL को दिखाएगा। उस URL को कॉपी करें, प्लेसहोल्डर {event} को ईवेंट के नाम से बदलें (उदाहरण के लिए PoolEvent)
  4. अपने मोबाइल डिवाइस के लिए IFTTT ऐप डाउनलोड करें, इंस्टॉल करें और लॉगिन करें
  5. इसे काम करते हुए देखने के लिए अपने रास्पबेरी पाई पर इस पायथन स्क्रिप्ट को चलाएं (ध्यान दें कि आपके मोबाइल डिवाइस पर ट्रिगर होने में कुछ सेकंड या मिनट लग सकते हैं):

आयात अनुरोध

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

चरण 10: रास्पबेरी पाई में एक रिले हैट जोड़ें और इसे सोलेनॉइड वाल्व से कनेक्ट करें

रास्पबेरी पाई में एक रिले हैट जोड़ें और इसे सोलेनॉइड वाल्व से कनेक्ट करें
रास्पबेरी पाई में एक रिले हैट जोड़ें और इसे सोलेनॉइड वाल्व से कनेक्ट करें
रास्पबेरी पाई में एक रिले हैट जोड़ें और इसे सोलेनॉइड वाल्व से कनेक्ट करें
रास्पबेरी पाई में एक रिले हैट जोड़ें और इसे सोलेनॉइड वाल्व से कनेक्ट करें
रास्पबेरी पाई में एक रिले हैट जोड़ें और इसे सोलेनॉइड वाल्व से कनेक्ट करें
रास्पबेरी पाई में एक रिले हैट जोड़ें और इसे सोलेनॉइड वाल्व से कनेक्ट करें

इस चरण के साथ आगे बढ़ने से पहले अपने रास्पबेरी पाई को बंद करें: इसे एसएसएच करें और "सुडो शटडाउन नाउ" टाइप करें, फिर इसे बिजली से डिस्कनेक्ट करें

हमारा लक्ष्य सोलनॉइड वाल्व को बिजली की आपूर्ति चालू और बंद करना है - एक वाल्व जो बिजली की आपूर्ति से प्राप्त 24V एसी बिजली के आधार पर पानी की आपूर्ति को खोल या बंद कर सकता है। रिले विद्युत घटक हैं जो हमारे रास्पबेरी पाई द्वारा प्रदान किए जा सकने वाले डिजिटल सिग्नल के आधार पर एक सर्किट को खोल या बंद कर सकते हैं। हम यहां जो करते हैं वह रास्पबेरी पाई के इन डिजिटल सिग्नल पिन के लिए एक रिले को हुक करता है, और इसे 24V एसी बिजली की आपूर्ति और सोलनॉइड वाल्व के बीच सर्किट को बंद कर देता है।

रास्पबेरी पाई पर पिन जो डिजिटल इनपुट या आउटपुट के रूप में कार्य कर सकते हैं उन्हें जीपीआईओ - सामान्य प्रयोजन इनपुट / आउटपुट कहा जाता है और वे पीआई के किनारे 40 पिन की पंक्ति हैं। पाई बंद होने के साथ और इसमें रिले HAT को मजबूती से डालें। मैंने जो HAT चुना है उसमें 3 रिले हैं, और हम उनमें से केवल एक का उपयोग करेंगे। कल्पना कीजिए कि आप अन्य दो के साथ क्या कर सकते हैं:)

अब रास्पबेरी पाई को वापस चालू करें। रिले एचएटी पर लाल "पावर" एलईडी चालू होनी चाहिए, यह दर्शाता है कि यह जीपीआईओ के माध्यम से पीआई से बिजली प्राप्त कर रहा है। आइए परीक्षण करें कि हम इसे नियंत्रित कर सकते हैं: ssh फिर से पाई में, अजगर दर्ज करें और टाइप करें:

जीपीओजेरो आयात करें

देव = gpiozero. DigitalOutputDevice (26, प्रारंभिक_मान = सत्य) dev.off ()

आपको एक श्रव्य "क्लिक" सुनना चाहिए, यह दर्शाता है कि रिले लगी हुई है, और यह दिखाने पर एक एलईडी टर्न देखें कि पहला रिले कनेक्टेड स्थिति में है। अब आप टाइप कर सकते हैं

देव.ऑन ()

जो रिले को "ऑफ" स्थिति में बदल देगा (विषम, मुझे पता है …) और अजगर से बाहर निकलें ()।

अब जम्पर केबल और लंबी केबल का उपयोग करके 24V बिजली की आपूर्ति और सोलनॉइड वाल्व के बीच रिले को कनेक्ट करें। आरेख देखें। अंत में, एडेप्टर का उपयोग करके सोलनॉइड वाल्व को एक नल से कनेक्ट करें और ऊपर दिए गए आदेशों को दोहराकर यह सब परीक्षण करने के लिए तैयार हो जाएं - उन्हें पानी को चालू और बंद करना चाहिए।

सोलनॉइड वाल्व के लिए एक नली संलग्न करें और दूसरे छोर को पूल में गहरा रखें। अब आपके पास एक कंप्यूटर-नियंत्रित पूल टॉप-ऑफ सिस्टम है, और यह एक सेंसर को कनेक्ट करने का समय है, यह बताने के लिए कि कब चलना है।

चरण 11: जल स्तर सेंसर कनेक्ट करें

जल स्तर सेंसर कनेक्ट करें
जल स्तर सेंसर कनेक्ट करें
जल स्तर सेंसर कनेक्ट करें
जल स्तर सेंसर कनेक्ट करें
जल स्तर सेंसर कनेक्ट करें
जल स्तर सेंसर कनेक्ट करें
जल स्तर सेंसर कनेक्ट करें
जल स्तर सेंसर कनेक्ट करें

एक जल स्तर सेंसर केवल एक फ्लोट होता है जो फ्लोट के नीचे होने पर विद्युत सर्किट को जोड़ता है, और जब यह तैरता है तो इसे तोड़ देता है। यदि आप इसे सही ऊंचाई पर पूल में डालते हैं तो पानी का स्तर पर्याप्त होने पर फ्लोट ऊपर होगा लेकिन पर्याप्त पानी नहीं होने पर नीचे गिर जाएगा।

रास्पबेरी पाई के लिए जल स्तर सेंसर की स्थिति जानने के लिए हमें खुले या बंद सर्किट को समझने के लिए पीआई की आवश्यकता होती है। सौभाग्य से यह बहुत सरल है: वही GPIO कनेक्टर जो हम रिले को नियंत्रित करने के लिए डिजिटल आउटपुट के रूप में उपयोग करते हैं, इनपुट के रूप में कार्य कर सकते हैं (इसलिए GPIO में I)। विशेष रूप से, यदि हम GPIO कनेक्टर पर सेंसर के एक तार को +3.3V से और दूसरे सेंसर तार को एक पिन से जोड़ते हैं जिसे हम पुल-डाउन इनपुट के रूप में कॉन्फ़िगर करते हैं (जिसका अर्थ है कि यह सामान्य रूप से GND वोल्टेज स्तर पर होगा), तो वह पिन मापेगा एक डिजिटल "उच्च" या "चालू" वोल्टेज तभी होता है जब जल स्तर सेंसर सर्किट को बंद कर देता है - जब जल स्तर कम होता है। मैंने इनपुट के रूप में GPIO पिन 16 का उपयोग किया, जिसे मैंने ऊपर की छवि में चिह्नित किया है।

पिन को इनपुट के रूप में कॉन्फ़िगर करने और उसकी वर्तमान स्थिति का परीक्षण करने के लिए पायथन कोड है:

जीपीओजेरो आयात करें

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

एक संभावित चुनौती यह है कि जब सेंसर सिर्फ राज्य बदलता है तो यह चालू और बंद राज्यों के बीच तेजी से दोलन करेगा। इसका समाधान "डिबाउंसिंग" के रूप में जाना जाता है और कार्रवाई करने से पहले एक सुसंगत राज्य परिवर्तन की तलाश करता है। GPIOZERO लाइब्रेरी में ऐसा करने के लिए कोड है, लेकिन किसी कारण से वह कोड मेरे लिए अच्छा काम नहीं करता है। जब एक सुसंगत राज्य परिवर्तन का पता चलता है, तो मैंने IFTTT अलर्ट को ट्रिगर करने के लिए एक सरल लूप लिखा था, जिसे आप यहां मेरे भंडार में पा सकते हैं।

चरण 12: सभी को एक साथ जोड़ने के लिए कोड लिखें

सभी को एक साथ जोड़ने के लिए कोड लिखें
सभी को एक साथ जोड़ने के लिए कोड लिखें

बस, इतना ही। हमारा सेटअप पूरा हो गया है। आप चीजों को एक साथ एक पूर्ण प्रणाली में बाँधने के लिए अपना कोड लिख सकते हैं, या मेरे द्वारा प्रदान किए गए कोड का उपयोग कर सकते हैं। ऐसा करने के लिए बस निर्देशिका संरचना बनाएं और रिपॉजिटरी को क्लोन करें, जैसे:

एमकेडीआईआर पूलपी

सीडी पूलपी गिट क्लोन

इसके बाद, अपने स्वयं के IFTTT वेब हुक के लिए अपनी गुप्त कुंजी के साथ URL प्राप्त करने के लिए, Motion_alert और water_level निर्देशिकाओं में ifttt_url.txt नाम की फ़ाइलों को संपादित करें। आप अलग-अलग कार्यों के लिए दो अलग-अलग वेब हुक का उपयोग कर सकते हैं।

अंत में, हम चाहते हैं कि यह कोड स्वचालित रूप से चले। इसे पूरा करने का सबसे आसान तरीका Linux crontab सेवा है। हम दो मुख्य कार्यों के लिए कुछ क्रॉस्टैब लाइनें जोड़ सकते हैं:

  1. हमारे तीन प्रोग्राम चलाएं: ऑब्जेक्ट डिटेक्टर, जल स्तर सेंसर और वेब सर्वर प्रत्येक रिबूट पर
  2. पुराने चित्रों और पुरानी वीडियो फ़ाइलों को हटाने, आउटपुट निर्देशिका को साफ करें (मैंने 1 दिन से अधिक पुरानी फ़ाइलों और 7 दिनों से पुराने चित्रों को हटाना चुना - प्रयोग करने के लिए स्वतंत्र महसूस करें)

ऐसा करने के लिए crontab -e टाइप करें जो आपके नैनो टेक्स्ट एडिटर को खोल देगा। फ़ाइल के निचले भाग में निम्न पंक्तियाँ जोड़ें:

0 1 * * * खोजें / घर / पीआई / पूलपी / आउटपुट - प्रकार f -नाम "*.avi" -mtime +1 -delete

0 2 * * * ढूंढें /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

अंत में, अपने रास्पबेरी पाई को रिबूट करें। यह अब आपके पूल को पूर्ण और सुरक्षित रखने के लिए तैयार है।

सेटअप, कोड के साथ टिंकर करें, और मेरे जीथब रिपॉजिटरी को स्टार करना न भूलें और अगर आपको यह उपयोगी लगे तो इंस्ट्रक्शनल पर कमेंट करें। मैं हमेशा और अधिक सीखने की तलाश में रहता हूं।

हैप्पी मेकिंग!

आईओटी चुनौती
आईओटी चुनौती
आईओटी चुनौती
आईओटी चुनौती

IoT चैलेंज में उपविजेता

सिफारिश की: