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

كيفية عمل نظام إنذار ذكي للكشف عن الفيضانات باستخدام Raspberry Pi و Particle Argon: 6 خطوات
كيفية عمل نظام إنذار ذكي للكشف عن الفيضانات باستخدام Raspberry Pi و Particle Argon: 6 خطوات

فيديو: كيفية عمل نظام إنذار ذكي للكشف عن الفيضانات باستخدام Raspberry Pi و Particle Argon: 6 خطوات

فيديو: كيفية عمل نظام إنذار ذكي للكشف عن الفيضانات باستخدام Raspberry Pi و Particle Argon: 6 خطوات
فيديو: || Fingerprint and Alexa Door Lock System ||By|| Kalsi Robotics Pvt. Ltd.,Ropar || 2024, شهر نوفمبر
Anonim
Image
Image
كيفية عمل نظام إنذار ذكي للكشف عن الفيضانات باستخدام Raspberry Pi و Particle Argon
كيفية عمل نظام إنذار ذكي للكشف عن الفيضانات باستخدام Raspberry Pi و Particle Argon

يعد وجود مستشعرات الفيضانات القياسية أمرًا رائعًا لمنع حدوث أضرار جسيمة لمنزلك أو مكان عملك.

لكنه يجعل من الصعب حضور المنبه إذا لم تكن بالمنزل.

بالطبع يمكنك شراء هؤلاء الأذكياء

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

اللوازم

Raspberry Pi (أنا باستخدام نموذج 3 B +) تشغيل raspbian

جسيم أرجون

مستشعر مياه البستان

كاميرا Raspi

صفارة

أسلاك العبور

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

قم بتوصيل جهاز استشعار المياه بالجسيمات
قم بتوصيل جهاز استشعار المياه بالجسيمات
قم بتوصيل جهاز استشعار المياه بالجسيمات
قم بتوصيل جهاز استشعار المياه بالجسيمات

يحتوي مستشعر المياه على 4 دبابيس ، وهي GND و VCC و NC و SIG وسنستخدم ثلاثة منها فقط

أقوم بتوصيل SIG pin بـ D2 على Argon.

الآن ، يمكنك تشغيل Particle Web IDE لكتابة الكود والوميض إلى Argon

لذلك قمنا بتسجيل وظيفة الجسيم السائل وحددنا متغيرًا هو FloodPresent ، والذي يمكن استدعاؤه من Particle Console والحصول على القيمة المنطقية لـ isFloodPresent وأيضًا استدعاء سائل الوظيفة للاختبار الوهمي الذي يأخذ القيمة 1 كمدخل مما يعني صحيحًا للفيضان (الماء) الحالي.

تأكد من أنك قادر على رؤية هذه الوظيفة والمتغير من وحدة تحكم الجسيمات لجهاز الجسيمات.

الخطوة 2: قم بتوصيل مصدر التنبيه بـ Raspberry

قم بتوصيل مصدر التنبيه بـ Raspberry
قم بتوصيل مصدر التنبيه بـ Raspberry

على لوح التجارب ، يمكنك توصيل Buzzer بدبوس GPIO الخاص بـ Raspberry

لقد قمت بتوصيل نهاية أصغر من الجرس بـ GND (PIN 6) وطرف أطول للدبوس 7 على التوت.

الآن قم بتشغيل الكود لترى. سنحتاج إلى تشغيل ملف python هذا طوال الوقت حتى يتمكن من تلقي المشغلات من خادم الويب والاستجابة وفقًا لذلك.

بدلاً من ذلك ، يمكنك تشغيل هذا الملف عند بدء التشغيل على Raspberry الخاص بك والذي يمكنك القيام به عن طريق تحرير / etc / systemd

وسيتم وضع هذا الملف في مجلد cgi لخادم اباتشي الخاص بك ،

لقد قمت بعمل مجلد جديد من Flow-cgi داخل / var / www / html / ووضعت ملف.py هذا والذي سيتواصل مع برنامج cgi النصي الخاص بي

الخطوة 3: تكوين خادم Apache

تكوين خادم Apache
تكوين خادم Apache

يمكنك تثبيت خادم اباتشي عن طريق كتابة sudo apt-get install apache2

عند تثبيته ، يمكنك التحقق من خلال كتابة اسم المضيف -I

وستحصل على عنوان IP المحلي الخاص بك ويمكنك التوجه إلى متصفحك ويجب أن ترى الخادم قيد التشغيل

الخطوة 4: تفعيل CGI على Apache

قم بتمكين CGI على Apache
قم بتمكين CGI على Apache

يمكنك تمكين cgi بكتابة sudo a2enmod cgi

افتراضيًا ، يوجد cgi_bin الخاص بـ apache في / usr / lib / cgi-bin

هذا هو المكان الذي يمكنك فيه وضع نصوص CGI الخاصة بك بعد تمكين cgi

لتحقيق التأثير ، تحتاج إلى إعادة تشغيل خادم اباتشي

أردت دليلًا مخصصًا لنصوص CGI الخاصة بي ، لذلك قمت بإنشاء دليل في / var / www / html / يسمى Flood-cgi

لتمكين هذا الدليل ، كان علي إنشاء ملف conf عن طريق الكتابة

sudo nano /etc/apache2/conf-available/flood-cgi.conf

وإضافة الأوامر كما هو موضح في الصورة

ثم قم بتمكين هذا الدليل عن طريق كتابة

var / www / html $ sudo a2enconf Flood-cgi

يمكنك الآن إعادة تشغيل خادم apache مرة أخرى وستكون جميع cgi من هذا المجلد قابلة للقراءة بواسطة apache بعد الإذن.

الخطوة 5: قم بإعداد صفحة الويب

قم بإعداد صفحة الويب
قم بإعداد صفحة الويب

بالنسبة لخدمة الويب البسيطة هذه ، أستخدم HTML و Javascript و CSS و jquery و ajax.

لدي خمس تسميات تحكم قابلة للنقر ،

في حالة النقر فوق التقاط صورة من صفحة الويب ، سيؤدي ذلك إلى تشغيل وظيفة النقر فوق زر الصورة وتبدو هذه الوظيفة على هذا النحو

$ ("# photobutton"). انقر (الوظيفة () {var flowDate = new Date ()؛

var flowImageName = "Flood_IMG_" + flowDate.toLocaleTimeString () ،

.ajax $ ({

url: 'فلود-سي جي / فيضان_كجي.

الطريقة: "post"،

البيانات: {name_for_image: flowImageName} ،

نجاح: وظيفة (بيانات) {

تنبيه (بيانات ، حالة)

$ ("# recentpic"). attr ("src"، "flow-cgi /" + flowImageName + ".jpg")؛

}

})

});

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

في حالة الإنذار ، يمكننا استخدام هذه الوظيفة

وظيفة callAlarm (alarmType) {

.ajax $ ({

url: 'فلود- cgi / alarm.cgi'،

الطريقة: "post"،

البيانات: {alarm_type: alarmType} ،

نجاح: دالة (بيانات) {تنبيه (بيانات)

} ، خطأ: function (XMLHttpRequest، textStatus، throwError) {alert (throwError)}})؛

}

سيتم استدعاء وظيفة callAlarm عند النقر فوق تسمية الجرس ،

$ ("# buzzer"). click (function () {callAlarm ("test")؛

})

الكود أدناه هو عندما تريد النقر فوق فيضان وهمي ، أي استدعاء Particle API واستدعاء الوظيفة وتغيير القيمة السائلة 1 والتحقق من النظام إذا كان الكل يعمل كما هو متوقع من خلال إجراء حدث فيضان وهمي

$ ("# mockFlood"). انقر (الوظيفة () {console.log ("طلب الفيضان الوهمي")؛

فار فيضان فال = 1 ؛

$ ("# signal2"). css ("حجم الخط"، "صغير")؛

var varName = "isFloodPresent" ؛

var deviceID = "معرّف جهازك" ؛

var accessToken = "رمز الوصول الخاص بك" ؛

إذا (فلودفال) {

$.post ("https://api.particle.io/v1/devices/" + deviceID + "/ liquid؟ access_token =" + accessToken،

{سائل: فلودفال} ،

الوظيفة (البيانات ، الحالة) {

إذا (الحالة == "نجاح") {

تنبيه ("أجرى Mock Flood !!!") ؛

} آخر {

تنبيه ("عذرا ، حدثت مشكلة") ؛

}

});

}

});

هذه هي الوظائف الرئيسية التي تحتاجها لإجراء اتصال مع Particle Api وتوت العليق الخاص بك حتى يتمكن جهاز raspberry Pi وجهاز Argon من التواصل.

ملاحظة: أردت تحميل كل التعليمات البرمجية ، لكنها لا تسمح لي بتحميل ملف.html

الخطوة 6: إنشاء برنامج نصي لكاميرا Raspi

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

ثم سننشئ cgi script flow_cgi.py لذلك سيتم استدعاؤه من الويب وهذا سوف يأمر ملف.py لالتقاط الصورة.

تأكد من بدء نص cgi ب #! / usr / bin / env python

وأيضًا منح أباتشي الإذن لتشغيل هذه الملفات.

يعمل خادم apache على بيانات المستخدم www-data ، لذا بمجرد إنشاء ملف.py أو.cgi ، يجب أن يكون apache هو مالك الملف

sudo chown pi: www-dataflow-cgi.py

وإعطاء الإذن بالتنفيذ

sudo chmod a + x فيضان- cgi.py

سيكون عليك القيام بذلك لجميع الملفات التي تحتاج إلى تشغيل من خادم اباتشي.

ملاحظة: إن تعريض توت العليق للإنترنت وإعطاء كل هذه الأذونات يجعل التوت الخاص بك ضعيفًا للغاية لأسباب أمنية لذا يجب اتباع أذونات صارمة للمستخدم وتثبيت جدار الحماية مثل جدار الحماية غير المعقد (ufw)

موصى به: