جدول المحتويات:

Pool Pi Guy - نظام إنذار مدفوع بالذكاء الاصطناعي ومراقبة المسبح باستخدام Raspberry Pi: 12 خطوة (بالصور)
Pool Pi Guy - نظام إنذار مدفوع بالذكاء الاصطناعي ومراقبة المسبح باستخدام Raspberry Pi: 12 خطوة (بالصور)

فيديو: Pool Pi Guy - نظام إنذار مدفوع بالذكاء الاصطناعي ومراقبة المسبح باستخدام Raspberry Pi: 12 خطوة (بالصور)

فيديو: Pool Pi Guy - نظام إنذار مدفوع بالذكاء الاصطناعي ومراقبة المسبح باستخدام Raspberry Pi: 12 خطوة (بالصور)
فيديو: Part 1 - Lord Jim Audiobook by Joseph Conrad (Chs 01-06) 2024, شهر نوفمبر
Anonim
Pool Pi Guy - نظام إنذار مدفوع بالذكاء الاصطناعي ومراقبة المسبح باستخدام Raspberry Pi
Pool Pi Guy - نظام إنذار مدفوع بالذكاء الاصطناعي ومراقبة المسبح باستخدام Raspberry Pi

يعد الحصول على حمام سباحة في المنزل أمرًا ممتعًا ، ولكنه ينطوي على مسؤولية كبيرة. أكثر ما يقلقني هو مراقبة ما إذا كان أي شخص بالقرب من المسبح دون مراقبة (خاصة الأطفال الأصغر سنًا). أكثر ما يزعجني هو التأكد من أن خط مياه المسبح لا يذهب أبدًا إلى أسفل مدخل المضخة ، مما سيؤدي إلى تشغيل المضخة جافة وتدميرها بتكلفة $ $ في الإصلاحات.

لقد اكتشفت مؤخرًا كيفية استخدام Raspberry Pi مع OpenCV و TensorFlow ، جنبًا إلى جنب مع مستشعر مستوى الماء وصمام الملف اللولبي لحل كلتا المشكلتين - واستمتع بالقيام بذلك!

لقد اتضح أيضًا أنه نظام إنذار رائع أيضًا - تنشيط الحركة والتحكم في الذكاء الاصطناعي وقابل للتخصيص بشكل لا نهائي.

دعنا نتعمق.

الخطوة الأولى: الخطة الكبرى

سنوضح في هذا الدليل كيفية:

  1. قم بإعداد Raspberry Pi باستخدام OpenCV و TensorFlow
  2. قم بتوصيل كاميرا الويب عبر كبل USB طويل
  3. اكتب خوارزمية OpenCV لاكتشاف الحركة
  4. استخدم TensorFlow لاكتشاف الكائن
  5. قم بإعداد خادم ويب على Raspberry Pi لعرض الصور الشيقة
  6. تكامل مع IFTTT لتشغيل تنبيهات الهاتف المحمول في حالة اكتشاف شخص ما
  7. قم بتوصيل HAT مرحل بـ Raspberry Pi وقم بتوصيله بصمام الملف اللولبي الذي من شأنه أن يضيف الماء إلى المسبح
  8. قم بتوصيل مستشعر مستوى الماء بـ Raspberry Pi وتفاعل معه باستخدام GPIO من Pi
  9. اكتب بعض التعليمات البرمجية للصقها جميعًا معًا

الخطوة 2: قائمة التسوق

قائمة التسوق
قائمة التسوق

جميع المكونات متاحة بسهولة من Amazon. لا تتردد في تجربة المكونات وتبادلها - هذه نصف المتعة!

  1. فطيرة التوت
  2. مصدر طاقة Raspberry Pi (لا تبخل هنا)
  3. بطاقة الذاكرة (الأكبر هو الأفضل)
  4. علبة (هذه كبيرة بما يكفي لإيواء كل من Pi و HAT)
  5. USB Webcam (أي كاميرا ويب ستفي بالغرض ، لكنك تريد واحدة تحصل على صور جيدة وتوازن الإضاءة بشكل جيد)
  6. كابل تمديد USB (إذا لزم الأمر - قم بقياس المسافة بين Pi والمكان الذي ستضع فيه الكاميرا)
  7. لوحة الترحيل HAT (تحتوي هذه المرحلات على 3 مرحلات ونحتاج إلى واحدة فقط ، لكنك ستجد استخدامًا للأخرى قريبًا بما فيه الكفاية!)
  8. الملف اللولبي
  9. تركيب الملف اللولبي 1 والتركيب 2 (هذا يعتمد حقًا على ما يناسبك الملف اللولبي ، ولكن هذه تعمل بالنسبة لي)
  10. مصدر طاقة الملف اللولبي (أي 24 فولت تيار متردد سيفعل)
  11. كبل (مرة أخرى ، أي كبل جديدين تقريبًا سيفعل - التيار ضئيل)
  12. مفتاح تعويم مستوى الماء (هذا مجرد مثال ، تحقق مما يمكن توصيله بسهولة ببركة السباحة الخاصة بك)
  13. بعض أسلاك التوصيل وموصلات الأسلاك

الخطوة 3: قم بإعداد Raspberry Pi الخاص بك

قم بإعداد Raspberry Pi الخاص بك
قم بإعداد Raspberry Pi الخاص بك

Raspberry Pi هو كمبيوتر صغير رائع. يكلف 35 دولارًا فقط ، ويعمل باستمرار ، ويحتوي على الكثير من البرامج والأجهزة المتوافقة. إعداده سهل للغاية:

  1. قم بتهيئة بطاقة SD الخاصة بك. هذا يحتاج إلى عناية خاصة - لا يمكن لـ Raspberry Pi التمهيد إلا من بطاقة SD مهيأة بنظام FAT. اتبع هذه التعليمات.
  2. قم بتوصيل Raspberry Pi بلوحة مفاتيح USB وماوس ، بالإضافة إلى شاشة HDMI ، واتبع الإرشادات الموجودة في البرنامج التعليمي Raspberry Pi NOOBS. تأكد من إعداد WiFi وتمكين الوصول إلى SSH. لا تنس إعداد كلمة مرور لحساب pi الافتراضي.
  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

البرامج المضمنة في نظام دبيان جنو / لينكس هي برامج مجانية ؛ يتم وصف شروط التوزيع الدقيقة لكل برنامج في الملفات الفردية في / usr / share / doc / * / copyright. يتوفر Debian GNU / Linux بدون ضمان مطلقًا ، إلى الحد الذي يسمح به القانون المعمول به. آخر تسجيل دخول: الاثنين 13 مايو 10:41:40 2019 من 104.36.248.13 pi @ raspberrypi: ~ $

الخطوة 4: إعداد OpenCV

قم بإعداد OpenCV
قم بإعداد OpenCV

OpenCV عبارة عن مجموعة مذهلة من وظائف معالجة الصور لرؤية الكمبيوتر. سيسمح لنا بقراءة الصور من كاميرا الويب ، ومعالجتها للعثور على مناطق الحركة وحفظها والمزيد. الإعداد على Raspberry Pi ليس بالأمر الصعب ولكنه يتطلب بعض العناية.

ابدأ بتثبيت Virtaulenvwrapper: سنستخدم python للقيام بكل برمجتنا ، وسيساعدنا virtualenv في فصل التبعيات بين OpenCV و TensorFlow مقابل Flask أو GPIO:

pi @ raspberrypi: ~ $ sudo pip قم بتثبيت Virtualenvwrapper

يمكنك الآن تنفيذ "mkvirtualenv" لإنشاء بيئة جديدة و "workon" للعمل عليها والمزيد.

لذلك ، دعونا نخلق بيئة لمعالجة الصور لدينا ، مع Python 3 كمترجم افتراضي (إنه 2019 ، لا يوجد سبب للالتزام بـ python 2 الأقدم):

pi @ raspberrypi: ~ $ mkvirtualenv cv -p python3

… (cv) pi @ raspberrypi: ~

نحن الآن جاهزون لتثبيت OpenCV. سنتبع في الغالب البرنامج التعليمي الممتاز في Learn OpenCV. اتبع الخطوتين 1 و 2 على وجه التحديد:

sudo apt -y updatesudo apt -y Upgrade ## تثبيت التبعيات sudo apt-get -y install build-basic 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 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 - قم بتثبيت 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-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 -نقوم بتثبيت 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 install 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 مع روابط python داخل cv virtualenv (ما زلت فيها ، أليس كذلك؟) باستخدام

نقطة تثبيت opencv-Contrib-python

وهذا كل شيء! لدينا OpenCV مثبتًا على Raspberry Pi الخاص بنا ، وهو جاهز لالتقاط الصور ومقاطع الفيديو ومعالجتها والاستمتاع بها.

تحقق من ذلك عن طريق فتح مترجم Python واستيراد opencv وتحقق من عدم وجود أخطاء:

(السيرة الذاتية) pi @ raspberrypi: ~ $ python

Python 3.5.3 (افتراضي ، 27 سبتمبر 2018 ، 17:25:39) [GCC 6.3.0 20170516] على linux اكتب "help" أو "حقوق النشر" أو "الاعتمادات" أو "الترخيص" لمزيد من المعلومات. >>> استيراد السيرة الذاتية >>>

الخطوة الخامسة: إعداد TensorFlow

قم بإعداد TensorFlow
قم بإعداد TensorFlow

TensorFlow هو إطار عمل للتعلم الآلي / الذكاء الاصطناعي تم تطويره وصيانته بواسطة Google. يتمتع بدعم مكثف لنماذج التعلم العميق لمجموعة متنوعة من المهام بما في ذلك اكتشاف الكائنات في الصور ، وهو الآن سهل التثبيت إلى حد ما على Raspberry Pi. يبلغ أداء طرزها خفيفة الوزن على Pi الصغير حوالي إطار واحد في الثانية ، وهو مناسب تمامًا لتطبيق مثل تطبيقنا.

سوف نتبع بشكل أساسي البرنامج التعليمي الممتاز من 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 وسادة lxml jupyter matplotlib cython (cv) pi @ raspberrypi: ~ $ sudo apt-get install python-tk

الآن نحن بحاجة إلى تجميع ملف protobuf الخاص بـ Google. ما عليك سوى اتباع التعليمات الواردة في الخطوة 4 من نفس البرنامج التعليمي الممتاز

أخيرًا ، استنساخ وإعداد تعريفات نموذج TensorFlow - اتبع الخطوة 5 في البرنامج التعليمي Edje Electronics

لا تتردد في اتباع مثالهم في الخطوة 6 أيضًا ، فهي مقدمة رائعة لاكتشاف الكائنات على Raspberry Pi.

الخطوة 6: كشف الحركة باستخدام OpenCV

لنبدأ باختبار أن OpenCV يمكنه التفاعل مع كاميرا الويب الخاصة بنا: ssh في Raspberry Pi ، وانتقل إلى cv virtualenv (workon cv) ، وافتح مترجم python (اكتب python فقط) ، وأدخل أوامر python التالية:

استيراد السيرة الذاتية 2

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 {}'.format (frame.shape [1]، frame.shape [0])

مع أي حظ ستلاحظ أن OpenCV كان قادرًا على قراءة إطار HD من الكاميرا.

يمكنك استخدام cv2.imwrite (مسار ، إطار) لكتابة هذا الإطار على القرص وإعادة إرساله لإلقاء نظرة فعلية.

استراتيجية الكشف عن الحركة واضحة إلى حد ما:

  1. اعمل على إطارات منخفضة الدقة - ليست هناك حاجة للعمل بدقة عالية كاملة هنا
  2. علاوة على ذلك ، قم بطمس الصور لضمان أقل قدر ممكن من الضوضاء.
  3. احتفظ بالمتوسط الجاري لآخر إطارات N. بالنسبة لهذا التطبيق ، حيث يكون معدل الإطارات حوالي 1 إطارًا في الثانية (فقط لأن TensorFlow يستغرق بعض الوقت لكل إطار) ، وجدت أن N = 60 تُرجع نتائج جيدة. ونظرًا لأن التنفيذ الدقيق لا يتطلب المزيد من وحدة المعالجة المركزية مع المزيد من الإطارات التي لا بأس بها (يتطلب الأمر مزيدًا من الذاكرة - ولكن هذا لا يكاد يذكر عندما نعمل مع الإطارات ذات الدقة المنخفضة)
  4. اطرح الصورة الحالية من المتوسط الجاري (فقط كن حذرًا عند الكتابة - تحتاج إلى السماح بالقيم الموجبة والسالبة [-255.. 255] ، لذلك يجب تحويل الإطار إلى int)
  5. يمكنك إجراء الطرح على تحويل الإطار الرمادي (والمتوسط) ، أو القيام بذلك بشكل منفصل لكل قناة من قنوات RGB ثم دمج النتائج (وهي الاستراتيجية التي اخترتها ، مما يجعلها حساسة لتغيرات اللون)
  6. استخدم عتبة على الدلتا وقم بإزالة الضوضاء عن طريق التآكل والتوسع
  7. أخيرًا ، ابحث عن معالم المناطق ذات الدلتا - فهذه المناطق هي المكان الذي حدثت فيه الحركة والصورة الحالية مختلفة عن متوسط الصور السابقة. يمكننا أن نجد مربعات إحاطة لهذه الخطوط إذا لزم الأمر.

لقد قمت بتغليف الكود للقيام بذلك في فئة DeltaFinder Python التي يمكنك العثور عليها في جيثب الخاص بي هنا

الخطوة 7: اكتشاف الكائنات باستخدام TensorFlow

إذا كنت قد اتبعت إجراء تثبيت TensorFlow ، فقد اختبرت بالفعل أن TensorFlow مثبت ويعمل.

لغرض اكتشاف الأشخاص في مشهد خارجي عام ، تعمل النماذج التي تم تدريبها مسبقًا على مجموعة بيانات COCO جيدًا - وهو بالضبط النموذج الذي قمنا بتنزيله في نهاية تثبيت TensorFlow. نحتاج فقط إلى استخدامه للاستدلال!

مرة أخرى ، قمت بتغليف تحميل النموذج والاستدلال في فئة TFClassify python لتسهيل الأمور ، والتي يمكنك العثور عليها هنا.

الخطوة 8: قم بإعداد خادم الويب على Raspberry Pi

قم بإعداد خادم ويب على Raspberry Pi
قم بإعداد خادم ويب على Raspberry Pi

أسهل طريقة للوصول إلى نتائج اكتشاف الكائنات هي متصفح الويب ، لذلك دعونا نقوم بإعداد خادم ويب على Raspberry Pi. يمكننا بعد ذلك إعداده لتقديم الصور من دليل معين.

هناك خيارات متعددة لإطار عمل خادم الويب. اخترت Flask. إنه قابل للتكوين للغاية وسهل التوسيع باستخدام Python. نظرًا لأن "المقياس" الذي نحتاجه تافه ، فقد كان أكثر من كافٍ.

أقترح تثبيته في Virtualenv جديد ، لذلك:

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 إلى "If This Then That" ويمكّن العديد من أنواع الأحداث من إطلاق العديد من أنواع الإجراءات. في حالتنا ، نحن مهتمون بمشغل IFTTT Maker Webhook. يتيح لنا ذلك تشغيل إجراء IFTTT من خلال تقديم طلب HTTP POST إلى خادم IFTTT باستخدام مفتاح خاص مخصص لحسابنا ، إلى جانب البيانات التي تحدد ما حدث. يمكن أن يكون الإجراء الذي نتخذه بسيطًا مثل إنشاء إشعار على أجهزتنا المحمولة باستخدام تطبيق IFTTT للجوال ، أو أي شيء أكثر تعقيدًا من ذلك.

هنا تستطيع ان تعرف كيف تفعل ذلك:

  1. قم بإنشاء حساب IFTTT على ifttt.com
  2. أثناء تسجيل الدخول ، انتقل إلى صفحة إعدادات خدمة Webhook وأدخل عنوان URL في متصفحك (شيء مثل https://maker.ifttt.com/use/. ستظهر لك صفحة الويب هذه مفتاحك وعنوان URL المراد استخدامه لتشغيل الإجراءات.
  3. أنشئ تطبيق IFTTT الصغير الذي سينشئ إشعارًا على الهاتف المحمول عندما يتم تشغيل Webhook بتفاصيل الحدث:

    1. انقر فوق "تطبيقاتي الصغيرة" ثم "برنامج صغير جديد".
    2. انقر على "+ هذا" واختر "الخطافات على الويب". انقر فوق "تلقي طلب ويب" للانتقال إلى التفاصيل
    3. امنح الحدث الخاص بك اسمًا ، على سبيل المثال "PoolEvent" وانقر على "إنشاء مشغل"
    4. انقر على "+ ذلك" واختر "إشعارات". ثم اختر "إرسال إشعار منسق من تطبيق IFTTT"
    5. بالنسبة إلى "العنوان" ، اختر شيئًا مثل "PoolPi"
    6. بالنسبة إلى "الرسالة" ، اكتب "تم اكتشاف Pool Pi:" وانقر على "إضافة مكون".. "Value1".
    7. ارجع إلى عنوان URL الذي نسخته في الخطوة 2. سيعرض عنوان URL لاستخدامه لاستدعاء التطبيق الصغير الذي تم إنشاؤه حديثًا. انسخ عنوان URL هذا ، مع استبدال العنصر النائب {event} باسم الحدث (في مثال PoolEvent)
  4. قم بتنزيل وتثبيت وتسجيل الدخول إلى تطبيق IFTTT لجهازك المحمول
  5. قم بتشغيل نص python النصي على Raspberry Pi الخاص بك لرؤيته يعمل (لاحظ أنه قد يستغرق بضع ثوانٍ أو دقائق ليتم تشغيله على جهازك المحمول):

طلبات الاستيراد

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

الخطوة 10: أضف قبعة الترحيل إلى Raspberry Pi وقم بتوصيلها بصمام الملف اللولبي

أضف قبعة الترحيل إلى Raspberry Pi وقم بتوصيلها بصمام الملف اللولبي
أضف قبعة الترحيل إلى Raspberry Pi وقم بتوصيلها بصمام الملف اللولبي
أضف قبعة الترحيل إلى Raspberry Pi وقم بتوصيلها بصمام الملف اللولبي
أضف قبعة الترحيل إلى Raspberry Pi وقم بتوصيلها بصمام الملف اللولبي
أضف قبعة الترحيل إلى Raspberry Pi وقم بتوصيلها بصمام الملف اللولبي
أضف قبعة الترحيل إلى Raspberry Pi وقم بتوصيلها بصمام الملف اللولبي

قبل متابعة هذه الخطوة ، قم بإيقاف تشغيل Raspberry Pi: ssh إليه واكتب "sudo shutdown now" ، ثم افصله عن مصدر الطاقة

هدفنا هو تشغيل وإيقاف تشغيل مصدر الطاقة إلى صمام الملف اللولبي - وهو صمام يمكنه فتح أو إغلاق مصدر المياه استنادًا إلى طاقة التيار المتردد بجهد 24 فولت التي يحصل عليها من مصدر طاقة. المرحلات هي المكونات الكهربائية التي يمكنها فتح أو إغلاق دائرة بناءً على إشارة رقمية يمكن أن يوفرها Raspberry Pi الخاص بنا. ما نقوم به هنا هو توصيل مرحل بمسامير الإشارة الرقمية الخاصة بـ Raspberry Pi ، وجعله يغلق الدائرة بين مصدر طاقة التيار المتردد بجهد 24 فولت وصمام الملف اللولبي.

تسمى المسامير الموجودة على Raspberry Pi والتي يمكن أن تعمل كمدخل أو إخراج رقمي GPIO - إدخال / إخراج للأغراض العامة وهي عبارة عن صف مكون من 40 سنًا على جانب Pi. مع إيقاف تشغيل Pi وإدخال HAT التتابع فيه بإحكام. يحتوي HAT الذي اخترته على 3 مرحلات ، وسنستخدم واحدًا منهم فقط. تخيل كل ما يمكنك فعله مع الاثنين الآخرين:)

الآن أعد تشغيل Raspberry Pi. يجب أن يضيء مؤشر LED "الطاقة" الأحمر الموجود على مرحل HAT ، مما يشير إلى أنه يحصل على الطاقة من Pi عبر GPIO. دعنا نختبر أنه يمكننا التحكم فيه: ssh في Pi مرة أخرى ، أدخل python واكتب:

استيراد gpiozero

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

يجب أن تسمع "نقرة" مسموعة ، تشير إلى أن المرحل مشغول ، وترى مؤشر LED قيد التشغيل يوضح أن المرحل الأول في الموضع المتصل. يمكنك الآن الكتابة

dev.on ()

والذي من شأنه أن يحول التتابع إلى الوضع "off" (غريب ، أعرف …) ويخرج () من python.

الآن باستخدام كبلات التوصيل والكابل الأطول ، قم بتوصيل المرحل بين مصدر الطاقة 24 فولت وصمام الملف اللولبي. انظر الرسم التخطيطي. أخيرًا ، قم بتوصيل صمام الملف اللولبي بالصنبور باستخدام المحولات واستعد لاختبار كل ذلك عن طريق تكرار الأوامر أعلاه - يجب عليهم تشغيل الماء وإيقافه.

قم بتوصيل خرطوم بالصمام اللولبي وضع الطرف الآخر في عمق حوض السباحة. لديك الآن نظام أعلى للسباحة يتحكم فيه الكمبيوتر ، وقد حان الوقت لتوصيل جهاز استشعار لإخباره بموعد التشغيل.

الخطوة 11: قم بتوصيل مستشعر مستوى الماء

قم بتوصيل مستشعر مستوى الماء
قم بتوصيل مستشعر مستوى الماء
قم بتوصيل مستشعر مستوى الماء
قم بتوصيل مستشعر مستوى الماء
قم بتوصيل مستشعر مستوى الماء
قم بتوصيل مستشعر مستوى الماء
قم بتوصيل مستشعر مستوى الماء
قم بتوصيل مستشعر مستوى الماء

مستشعر مستوى الماء هو ببساطة عوامة تربط دائرة كهربائية عندما يكون العوامة لأسفل ، وتكسرها عندما تطفو. إذا قمت بإدخاله في حمام السباحة على الارتفاع الصحيح ، فسيكون العوامة لأعلى عندما يكون مستوى الماء مناسبًا ولكنه ينخفض عندما لا يكون هناك ما يكفي من الماء.

لكي يعرف Raspberry Pi حالة مستشعر مستوى الماء ، نحتاج إلى Pi لاستشعار دائرة مفتوحة أو مغلقة. لحسن الحظ ، هذا بسيط للغاية: يمكن أن تعمل موصلات GPIO نفسها التي نستخدمها كإخراج رقمي للتحكم في المرحلات كمدخلات (ومن هنا جاءت I في GPIO). على وجه التحديد ، إذا قمنا بتوصيل سلك واحد من المستشعر بـ + 3.3 فولت على موصل GPIO وسلك المستشعر الآخر بدبوس قمنا بتكوينه كمدخل منسدل (بمعنى أنه سيكون عادةً عند مستوى جهد 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.txt في مجلدي motion_alert و water_level للحصول على عنوان URL لربط ويب IFTTT الخاص بك باستخدام مفتاحك السري. يمكنك استخدام خطافين مختلفين للويب لإجراءات مختلفة.

أخيرًا ، نريد تشغيل هذا الرمز تلقائيًا. أسهل طريقة لتحقيق ذلك هي من خلال خدمة Linux crontab. يمكننا إضافة بعض سطور crontab لمهمتين رئيسيتين:

  1. قم بتشغيل برامجنا الثلاثة: كاشف الكائنات ومستشعر مستوى المياه وخادم الويب عند كل إعادة تشغيل
  2. قم بتنظيف دليل الإخراج وحذف الصور القديمة وملفات الفيديو القديمة (اخترت حذف الملفات الأقدم من يوم واحد والصور الأقدم من 7 أيام - لا تتردد في التجربة)

للقيام بذلك اكتب crontab -e والذي سيفتح محرر نصوص nano الخاص بك. أضف الأسطر التالية إلى أسفل الملف:

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 -deletereboot python3 /home/pi/poolpi/motion_alert/webserv/webserv.pyreboot python3 /home/pi/poolpi/motion_alert/motion_obj_alert.pyreboot python3 /home/pi/poolpi/water_level/test_water_level.py

أخيرًا ، أعد تشغيل Raspberry Pi. أصبح الآن جاهزًا للحفاظ على حمام السباحة الخاص بك ممتلئًا وآمنًا.

قم بالعبث في الإعداد ، والكود ، ولا تنس تمييز مستودع github الخاص بي بنجمة والتعليق على التعليمات إذا وجدت أنه مفيد. أنا دائما أتطلع لمعرفة المزيد.

صنع سعيد!

تحدي إنترنت الأشياء
تحدي إنترنت الأشياء
تحدي إنترنت الأشياء
تحدي إنترنت الأشياء

الوصيف في تحدي إنترنت الأشياء

موصى به: