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

مشروع مسجل حالة الباب ودرجة الحرارة: 21 خطوة
مشروع مسجل حالة الباب ودرجة الحرارة: 21 خطوة

فيديو: مشروع مسجل حالة الباب ودرجة الحرارة: 21 خطوة

فيديو: مشروع مسجل حالة الباب ودرجة الحرارة: 21 خطوة
فيديو: عرفتوا ليه المترو بيتقلب وبيعمل حوادث شاهد الفيديو للنهايه 2024, يوليو
Anonim
مشروع مسجل حالة الباب ودرجة الحرارة
مشروع مسجل حالة الباب ودرجة الحرارة

سيوضح لك هذا Instructable كيفية إنشاء باب بسيط ومسجل حالة درجة الحرارة بأقل من 10.00 دولارات باستخدام ESP8266 NodeMCU ، ومستشعر درجة الحرارة والرطوبة DHT11 ، ومفتاح باب / نافذة ريد ، ومقاوم 10 كيلو أوم وبعض الأسلاك الموصلة.

نشأ هذا المشروع من رغبتي في القيام بالمزيد من أتمتة المنزل باستخدام لوحة Arduino ، نظرًا لأنني كنت أقرأ كثيرًا عن EPS8266 NodeMCU المتوافق مع Arduino ، فقد قررت أن هذه اللوحة ستكون اللوحة المثالية منخفضة التكلفة للقيام ببعض التجارب. بعد البحث في الإنترنت عن مشاريع أتمتة المنزل باستخدام لوحات ESP8266 ، استقررت على الجمع بين درجة الحرارة ومسجل حالة الباب في محاولتي الأولى. في نهاية المطاف ، سيتم دمج هذا المشروع مع الماكينات وأجهزة استشعار الرطوبة وغيرها من الأجهزة الإلكترونية لأتمتة منزل أخضر صغير صممه وبناؤه جدي منذ 50 عامًا. سيتم استخدام مستشعر درجة الحرارة لتحديد ما إذا كان يجب تشغيل نظام التسخين أو فك ارتباطه وكذلك إرسال إشارة إلى الماكينات لفتح وإغلاق نظام التهوية عند الحاجة. سيتم مراقبة حالة نظام التهوية عن طريق استخدام مفاتيح القصب المغناطيسية. أخيرًا ، سيتم استخدام مستشعرات الرطوبة لأتمتة نظام الري.

الخطوة الأولى: إخلاء المسؤولية

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

الخطوة 2: قم بإعداد حساب IFTTT مجاني

قم بإعداد حساب IFTTT مجاني
قم بإعداد حساب IFTTT مجاني

إذا لم يكن لديك حساب بالفعل ، فقد حان الوقت الآن لإعداد حساب IFTTT مجاني من خلال الانتقال إلى صفحتهم الرئيسية.. IFTTT تعني If This Then That وهي عبارة عن منصة مجانية تتيح لك توصيل الخدمات المستندة إلى الإنترنت بطرق جديدة تمكنك من الاستفادة من تلك الخدمات بطرق جديدة. بالنسبة لهذا المشروع ، سنستخدم IFTTT للسماح لـ ESP8266 بتسجيل حالة الباب عبر مفتاح القصب ودرجة الحرارة والرطوبة عبر مستشعر DHT11 في مستند أوراق Google.

الخطوة 3: أنشئ تطبيق IFTTT الصغير

أنشئ تطبيق IFTTT الصغير
أنشئ تطبيق IFTTT الصغير

أثناء وجودك في IFTTT ، تابع إلى قسم "تطبيقاتي الصغيرة" وأنشئ تطبيقًا صغيرًا جديدًا بالنقر فوق الزر "تطبيق صغير جديد".

الخطوة 4: تكوين جزء "هذا" من التطبيق الصغير الخاص بك

تكوين
تكوين

انقر فوق كلمة "هذه" باللون الأزرق - كما هو موضح في الشكل أعلاه.

الخطوة 5: أضف خدمة WebHooks إلى التطبيق الصغير الخاص بك

أضف خدمة WebHooks إلى التطبيق الصغير الخاص بك
أضف خدمة WebHooks إلى التطبيق الصغير الخاص بك

في شريط البحث ، ابحث عن خدمة "Webhooks" وحدد رمز Webhooks.

بمجرد العثور على خدمة Webhooks ، انقر عليها.

الخطوة 6: قم بإعداد مشغل "تلقي طلب ويب"

قم بإعداد مشغل "تلقي طلب ويب"
قم بإعداد مشغل "تلقي طلب ويب"

اختر المشغل "تلقي طلب ويب".

الخطوة 7: أدخل اسم الحدث

أدخل اسم الحدث
أدخل اسم الحدث

في مربع النص ، قم بتوفير التطبيق الصغير الجديد الخاص بك باسم حدث. لقد اخترت "مسجل البيانات" ولكن يمكنك اختيار ما تريد.

الخطوة 8: تكوين "هذا" جزء من التطبيق الصغير الخاص بك

قم بتكوين ملف
قم بتكوين ملف

انقر فوق كلمة "تلك" باللون الأزرق - كما هو موضح في الشكل أعلاه.

الخطوة 9: إعداد خدمة الإجراء

قم بإعداد خدمة العمل
قم بإعداد خدمة العمل

في مربع البحث ، ابحث عن خدمة "جداول بيانات Google" ، وانقر على رمز جداول بيانات Google.

الخطوة 10: اتصل بجداول بيانات Google

اتصل بجداول بيانات Google
اتصل بجداول بيانات Google

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

الخطوة 11: اختر إجراء

اختيار إجراء
اختيار إجراء

انقر فوق "إضافة صف إلى جدول البيانات".

الخطوة 12: قم بإعداد الإجراء

قم بإعداد الإجراء
قم بإعداد الإجراء

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

الخطوة 13: مراجعة التطبيق الصغير وإنهائه

مراجعة وإنهاء التطبيق الصغير الخاص بك
مراجعة وإنهاء التطبيق الصغير الخاص بك

بمجرد أن تشعر بالرضا عن تكوين التطبيق الصغير الخاص بك ، اضغط على الزر "إنهاء".

الخطوة 14: استرجع معلومات التكوين المطلوبة لاحقًا

استرجع معلومات التكوين المطلوبة لاحقًا
استرجع معلومات التكوين المطلوبة لاحقًا

انقر على "Webhooks" كما هو موضح أعلاه.

الخطوة 15: تابع إلى وثائق Webhooks لمفتاح API

تابع إلى وثائق Webhooks لمفتاح واجهة برمجة التطبيقات
تابع إلى وثائق Webhooks لمفتاح واجهة برمجة التطبيقات

قد يبدو الأمر غريبًا ولكن انقر على رابط التوثيق في أعلى اليمين للمتابعة إلى الصفحة باستخدام مفتاح API الفريد الخاص بك.

الخطوة 16: احفظ مفتاح API

احفظ مفتاح API
احفظ مفتاح API
احفظ مفتاح API
احفظ مفتاح API

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

من الجيد أيضًا اختبار التطبيق الصغير هنا. تذكر تغيير {event} إلى Data_Logger أو أي شيء قمت بتسميته الحدث الخاص بك وإضافة بعض البيانات إلى القيم الفارغة الثلاث ثم انقر فوق الزر "Test It" في أسفل الصفحة. يجب أن ترى رسالة خضراء تقول "تم تشغيل الحدث". إذا كان الأمر كذلك ، فانتقل إلى محرر مستندات Google وتأكد من أن البيانات التي أدخلتها في صفحة الاختبار ظهرت في مستند جداول بيانات Google.

الخطوة 17: اجمع المكونات

اجمع المكونات
اجمع المكونات
اجمع المكونات
اجمع المكونات
اجمع المكونات
اجمع المكونات

ستحتاج فقط إلى أجزاء قليلة.

1) مجلس تطوير NodeMcu ESP8266

2) مستشعر درجة الحرارة / الرطوبة DHT11

3) باب / نافذة ريد التبديل

4) 10 كيلو أوم المقاوم

5) سلك التوصيل

الخطوة 18: قم بتجميع المكونات

1) قم بتوصيل أحد دبوس 3v3 الموجود على ESP8266 بالدبوس vcc على DHT11.

2) قم بتوصيل أحد المسامير الأرضية الموجودة على ESP8266 بالدبوس الأرضي على DHT11.

3) قم بتوصيل الدبوس D4 (المعروف أيضًا باسم الدبوس 2 في IDE) على ESP8266 بدبوس البيانات في DHT11.

4) قم بتوصيل دبوس 3v3 آخر على ESP8266 إلى جانب واحد من مفتاح الباب / النافذة.

5) قم بتوصيل الدبوس D5 (المعروف أيضًا باسم دبوس 14 في IDE) على ESP8266 بالجانب الآخر من مفتاح الباب / النافذة ، وقم أيضًا بتوصيله بجانب واحد من المقاوم 10 كيلو أوم.

6) قم بتوصيل الجانب الآخر من المقاوم 10 كيلو أوم بدبوس أرضي آخر على ESP8266.

لتحديدات ESP8266 pin ، يرجى الرجوع إلى هذا الرسم التخطيطي المفيد أو الفيديو المفيد للغاية.

الخطوة 19: اكتب كود اردوينو

اكتب كود اردوينو
اكتب كود اردوينو

انسخ والصق الكود أدناه في Arduino IDE الخاص بك.

# تضمين # تضمين # تضمين "DHT.h"

#define DHTPIN 2 // ما هو الدبوس الرقمي الذي نتصل به

#define DOORPIN 14 // ما هو الدبوس الرقمي الذي يعمل به مفتاح الباب.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN ، DHTTYPE) ؛

عدد كثافة العمليات = 1 ؛

const char * ssid = "some_ssid" ؛ // غيّر هذا لاستخدام ssid const char * password = "some_password" ؛ // قم بتغيير هذا لاستخدام كلمة المرور الخاصة بك int sleepTime = 100 ؛

// Maker Webhooks IFTTT

const char * server = "maker.ifttt.com" ؛

// مصدر عنوان URL الخاص بـ IFTTT

const char * Resource = "/ trigger / SOME_SERVICE_NAME / with / key / SOME_API_KEY" ؛ // تأكد من استخدام اسم الخدمة ومفتاح api الخاص بك.

String doorStatus = "مغلق" ؛

حالة منطقية متغيرة تغيرت = خطأ ؛

// إذا كنت تنام لساعات ، فاضبط الفاصل الزمني بالساعة * 60 دقيقة * 60 ثانية * 1000 مللي ثانية

فاصل زمني طويل = 1.0 * 60 * 60 * 1000 ؛ // 1 ساعة غير موقعة منذ فترة طويلة ميليس = 0 - (2 * فاصل زمني) ؛

الإعداد باطل () {

Serial.begin (115200) ؛ attachInterrupt (digitalPinToInterrupt (DOORPIN) أو eventTriggered أو أختر) ؛ pinMode (DOORPIN ، INPUT) ؛ // مستشعر الباب dht.begin () ؛ WiFi.begin (SSID ، كلمة المرور) ؛

Serial.print ("\ n اتصال..")؛

while (WiFi.status ()! = WL_CONNECTED) {delay (1000) ؛ Serial.print (".") ؛ } Serial.print ("\ n")؛ }

حدث باطل

stateChanged = صحيح ؛ Serial.println ("فحص الباب!") ؛ if (digitalRead (DOORPIN) == HIGH) // تحقق لمعرفة ما إذا كان الباب مفتوحًا {Serial.println ("الباب مغلق!")؛ doorStatus = "مغلق" ؛ } else {Serial.println ("الباب مفتوح!")؛ doorStatus = "مفتوح" ؛ }}

checkStatus () باطلة {

if (WiFi.status () == WL_CONNECTED) {// تحقق من حالة اتصال WiFi // تستغرق قراءة درجة الحرارة أو الرطوبة حوالي 250 مللي ثانية! // قد تكون قراءات المستشعر أيضًا "قديمة" حتى ثانيتين (مستشعر بطيء جدًا) تعويم h = dht.readHumidity () ؛ // قراءة درجة الحرارة على أنها مئوية (الافتراضي) float t = dht.readTemperature () ؛ // قراءة درجة الحرارة على أنها فهرنهايت (isFahrenheit = true) float f = dht.readTemperature (true) ؛ // تحقق مما إذا كانت أي قراءات فشلت والخروج مبكرًا (للمحاولة مرة أخرى). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Failed to read from DHT sensor!")؛ //Serial.print (".") ؛ // فشلت القراءة من مستشعر DHT! إرجاع؛ } // حساب مؤشر الحرارة بالفهرنهايت (الافتراضي) float hif = dht.computeHeatIndex (f، h)؛ // حساب مؤشر الحرارة بالدرجة المئوية (isFahreheit = false) float hic = dht.computeHeatIndex (t، h، false) ؛

Serial.print ("\ n") ؛

Serial.print ("درجة الحرارة:") ؛ Serial.print (f) ؛ Serial.print ("* F (") ؛ Serial.print (t) ؛ Serial.print ("* C)") ؛ Serial.print ("\ t") ؛ Serial.print ("مؤشر الحرارة:") ؛ Serial.print (hif) ؛ Serial.print ("* F (") ؛ Serial.print (hic) ؛ Serial.print ("* C)٪") ؛ Serial.print ("\ t") ؛ Serial.print ("الرطوبة:") ؛ Serial.println (ح) ؛

if (digitalRead (DOORPIN) == HIGH) // تحقق لمعرفة ما إذا كان الباب مفتوحًا

{Serial.println ("الباب مغلق!") ؛ doorStatus = "مغلق" ؛ } else {Serial.println ("الباب مفتوح!")؛ doorStatus = "مفتوح" ؛ } String jsonObject = String ("{" value1 / ": \" ") + f +" * F ("+ t +" * C) / "+ hif +" * F ("+ hic +" * C) "+" / "، \" value2 / ": \" "+ h +" / "، \" value3 / ": \" "+ doorStatus +" / "}"؛ HTTPClient http ؛ String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9" ؛ http.begin (completeUrl) ؛ // http.begin (الخادم) ؛ http.addHeader ("نوع المحتوى" ، "تطبيق / json") ؛ http. POST (jsonObject) ، http.writeToStream (& المسلسل) ؛ http.end () ، //اغلق الاتصال

stateChanged = خطأ ؛

int sleepTimeInMinutes = الفاصل الزمني / 1000/60 ؛ Serial.print ("\ n / n اذهب إلى وضع السكون لـ") ؛ Serial.print (sleepTimeInMinutes) ؛ Serial.println ("دقيقة (دقائق) …") ؛ }}

حلقة فارغة() {

تيار طويل بدون توقيع ميليس = ميلي () ؛ تأخير (4000) ؛ // إذا تجاوزنا الوقت المنقضي ، فقم بفحص الباب ودرجة الحرارة. إذا (currentMillis - previousMillis> = الفاصل الزمني) {stateChanged = true ؛ PreviousMillis = CurrentMillis ؛ Serial.print (العد ++) ؛ Serial.println (") فحص بسبب الوقت المنقضي!")؛ } else if (stateChanged) {Serial.print (count ++)؛ Serial.println (") التحقق بسبب تغيير الحالة!")؛ }

// إذا تغيرت الحالة ، فتحقق من الباب ودرجة الحرارة.

إذا (stateChanged) {checkStatus () ؛ }

تأخير (وقت النوم) ؛

}

الخطوة 20: النتائج

نتائج
نتائج

بمجرد تحميل شفرة المصدر في الخطوة السابقة ، يجب أن تحصل على نتائج مثل المثال الموضح أعلاه.

الخطوة 21: الاعتمادات

لقد وجدت الكثير من التلميحات والنصائح المفيدة من Random Nerd Tutorials ، وأود أن أشكرهم على كل ما قدموه من مساعدة. خاصةً برنامجهم التعليمي الممتاز على ESP32 ESP8266 نشر قراءات المستشعر إلى أوراق Google التي تعتمد عليها الأجزاء الرئيسية من Instructable.

بالإضافة إلى ذلك ، ساعدني DHT11 Instructable من TheCircuit في فهم كيفية استخدام هذا المستشعر الصغير غير المكلف للغاية ولكنه مثير للاهتمام.

علاوة على ذلك ، هناك العديد من البرامج التعليمية التي تتناول مراقبة أبوابك مثل Garage Door Monitor وآخر من Random Nerd Tutorials. لقد استخدمت أجزاءً وقطعًا منها لمساعدتي في فهم كيفية تشغيل مفتاح القصب الخاص بي بشكل صحيح.

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

موصى به: