جدول المحتويات:
- اللوازم
- الخطوة 1: قم بتوصيل مستشعر الماء بالجسيمات
- الخطوة 2: قم بتوصيل مصدر التنبيه بـ Raspberry
- الخطوة 3: تكوين خادم Apache
- الخطوة 4: تفعيل CGI على Apache
- الخطوة 5: قم بإعداد صفحة الويب
- الخطوة 6: إنشاء برنامج نصي لكاميرا Raspi
فيديو: كيفية عمل نظام إنذار ذكي للكشف عن الفيضانات باستخدام Raspberry Pi و Particle Argon: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:37
يعد وجود مستشعرات الفيضانات القياسية أمرًا رائعًا لمنع حدوث أضرار جسيمة لمنزلك أو مكان عملك.
لكنه يجعل من الصعب حضور المنبه إذا لم تكن بالمنزل.
بالطبع يمكنك شراء هؤلاء الأذكياء
يكتشف نظام إنذار الفيضانات هذا أي سائل ويطلق الإنذار ويقوم بتحديث صفحة الويب الخاصة بالفيضانات التي يمكن الوصول إليها في أي مكان في العالم ، سواء كنت تقضي عطلة مريحة أو في العمل وتريد معرفة حالة منزلك.
اللوازم
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
على لوح التجارب ، يمكنك توصيل Buzzer بدبوس GPIO الخاص بـ Raspberry
لقد قمت بتوصيل نهاية أصغر من الجرس بـ GND (PIN 6) وطرف أطول للدبوس 7 على التوت.
الآن قم بتشغيل الكود لترى. سنحتاج إلى تشغيل ملف python هذا طوال الوقت حتى يتمكن من تلقي المشغلات من خادم الويب والاستجابة وفقًا لذلك.
بدلاً من ذلك ، يمكنك تشغيل هذا الملف عند بدء التشغيل على Raspberry الخاص بك والذي يمكنك القيام به عن طريق تحرير / etc / systemd
وسيتم وضع هذا الملف في مجلد cgi لخادم اباتشي الخاص بك ،
لقد قمت بعمل مجلد جديد من Flow-cgi داخل / var / www / html / ووضعت ملف.py هذا والذي سيتواصل مع برنامج cgi النصي الخاص بي
الخطوة 3: تكوين خادم Apache
يمكنك تثبيت خادم اباتشي عن طريق كتابة sudo apt-get install apache2
عند تثبيته ، يمكنك التحقق من خلال كتابة اسم المضيف -I
وستحصل على عنوان IP المحلي الخاص بك ويمكنك التوجه إلى متصفحك ويجب أن ترى الخادم قيد التشغيل
الخطوة 4: تفعيل 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)
موصى به:
كيفية عمل دائرة إنذار للتدفق فوق الماء باستخدام Z44N MOSFET: 7 خطوات
كيفية عمل دائرة إنذار للتدفق فوق الماء باستخدام Z44N MOSFET: مرحبًا يا صديق ، سأقوم اليوم بعمل دائرة لإنذار تدفق المياه بشكل أساسي ، يمكننا استخدام هذه الدائرة لمعرفة التدفق الزائد للمياه لخزان المياه الخاص بنا. هذا المشروع باستخدام IRFZ44N MOSFET ، فلنبدأ ،
كيفية عمل دائرة إنذار للمطر باستخدام ترانزستور BC547: 10 خطوات
كيف تصنع دائرة إنذار المطر باستخدام الترانزستور BC547: مرحبًا يا صديق ، سأقوم اليوم بعمل دائرة من دارة إنذار المطر البسيط باستخدام ترانزستور BC547 ، هذه الدائرة سهلة جدًا ، فلنبدأ ،
نظام إنذار الحريق باستخدام Arduino [في بضع خطوات سهلة]: 3 خطوات
نظام إنذار الحريق باستخدام Arduino [في بضع خطوات سهلة]: هل تتطلع إلى إنشاء مشروع بسيط وممتع باستخدام Arduino والذي يمكن أن يكون مفيدًا حقًا ويمكن أن ينقذ الأرواح في نفس الوقت؟ شيء جديد ومبتكر. في هذا المنشور نذهب
البرنامج التعليمي: كيفية عمل إنذار للباب باستخدام إنذار مستشعر التبديل المغناطيسي MC-18: 3 خطوات
البرنامج التعليمي: كيفية عمل إنذار للباب باستخدام إنذار مستشعر التبديل المغناطيسي MC-18: مرحبًا يا رفاق ، سأقدم برنامجًا تعليميًا حول إنذار مستشعر التبديل المغناطيسي MC-18 الذي يعمل في وضع الإغلاق المعتاد ، ولكن أولاً ، دعني أشرح لك باختصار ، ما يعنيه عادة الإغلاق. هناك نوعان من الأوضاع ، عادةً ما تكون مفتوحة وغلقًا عادةً
كيفية عمل نظام ري آلي باستخدام Arduino: 5 خطوات
كيفية إنشاء نظام ري آلي باستخدام Arduino: في هذه التعليمات ، سأوضح لك كيفية بناء وتنفيذ نظام ري آلي يمكنه استشعار محتوى الماء في التربة وري حديقتك تلقائيًا. يمكن برمجة هذا النظام لمتطلبات المحاصيل المختلفة و