جدول المحتويات:
- الخطوة 1: اذهب للتسوق
- الخطوة 2: الإعداد والخلفية
- الخطوة 3: الجزء Arduino - ESP12
- الخطوة 4: اختبار ESP كعميل بروتوكول وقت الشبكة (NTP)
- الخطوة الخامسة: اختبار مستشعر DHT22
- الخطوة 6: نضعها معًا …
- الخطوة 7: جانب الخادم من الأشياء
فيديو: مستشعر درجة حرارة الشبكة المنزلية: 7 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
ما الذي تحتاج إلى معرفته لعمل هذا المشروع:
تحتاج إلى معرفة: - بعض مهارات الإلكترونيات (لحام)
- لينكس
- اردوينو IDE
(ستحتاج إلى تحديث لوحات إضافية في IDE:
- تحديث / برمجة لوحة ESP عبر Arduino IDE.
(هناك بعض البرامج التعليمية الرائعة المتوفرة على الويب)
يمكن القيام بذلك باستخدام Arduino Uno أو باستخدام FTDI (محول USB إلى تسلسلي).
لقد استخدمت Uno لأنه لم يكن لدي أي منفذ تسلسلي على جهاز الكمبيوتر الخاص بي ولم يكن لدي FTDI
الخطوة 1: اذهب للتسوق
ما الذي ستحتاجه لتحقيق ذلك؟
بالنسبة لمستشعر درجة الحرارة والرطوبة الرقمي:
- إما لوحة توصيل أو بديل مثل النموذج الأولي ثنائي الفينيل متعدد الكلور ، لحام الحديد ، لحام الحديد …
- بعض الأسلاك
- اثنان لاعبا
- مقاوم 10 كيلو أوم
- ESP12F (قد تعمل الطرز الأخرى أيضًا …)
- DHT22 (أغلى قليلاً من DHT11 ولكن أكثر دقة)
- 3 بطاريات AA قابلة للشحن وحامل بطارية
- صندوق بلاستيكي صغير لوضع مشروعك فيه
- في مرحلة لاحقة ، أخطط لإضافة HT7333 مع مكثفين 10 فائق التوهج بين حزمة البطارية و ESP
لتثبيت جهد الدخل (VCC) إلى 3.3 فولت الموصى بها ولكن أيضًا لحماية ESP من الجهد الزائد.
بالنسبة لجزء الشبكة:
- شبكة WiFi المنزلية الخاصة بك
بالنسبة لجزء الخادم:
- أي نظام قائم على Linux (يعمل دائمًا!)
لقد استخدمت Raspberry Pi (والذي أستخدمه أيضًا كخادم لكاميرات IP الخارجية الخاصة بي.)
- مترجم دول مجلس التعاون الخليجي لتجميع كود الخادم الخاص بك
- حزمة rrdtool لتخزين البيانات وإنشاء الرسوم البيانية
- اباتشي (أو خادم ويب آخر)
جهاز الكمبيوتر الشخصي أو الكمبيوتر المحمول المفضل لديك مع Arduino IDE عليه.
الخطوة 2: الإعداد والخلفية
في هذا الإصدار من WiFi متصل - ناهيك عن IOT - مستشعر درجة الحرارة والرطوبة ، استخدمت ESP12F و DHT22 وحامل بطارية 3 AA مع بطاريات قابلة لإعادة الشحن.
كل 20 دقيقة يأخذ ESP قياسًا من DHT22 ويرسله إلى خادم (Raspberry Pi) عبر UDP على شبكة WiFi المنزلية. بعد إرسال القياسات ، يدخل جهاز ESP في نوم عميق. هذا يعني أن ساعة الوقت الحقيقي فقط للوحدة لا تزال تعمل بالطاقة ، مما يؤدي إلى توفير طاقة لا يصدق. لمدة 5 ثوانٍ تقريبًا ، تتطلب الوحدة حوالي 100 مللي أمبير ، ثم خلال 20 دقيقة من النوم العميق 150uA فقط.
لم أرغب في استخدام أي خدمة قائمة على الإنترنت لأن لدي Raspberry Pi الخاص بي والذي يعمل دائمًا على أي حال وبهذه الطريقة كان من دواعي سروري كتابة جزء الخادم أيضًا.
على الخادم (Raspberry Pi يعمل Raspbian) ، قمت بكتابة مستمع UDP بسيط (خادم) يخزن القيم في RRD بسيط. (قاعدة بيانات Round Robin باستخدام RRDtool بواسطة Tobias Oetiker.)
تتمثل ميزة RRDtool في أنك تقوم بإنشاء قاعدة بيانات مرة واحدة ويظل الحجم كما هو. لن تحتاج أيضًا إلى تشغيل خادم قاعدة بيانات (مثل mySQLd) في الخلفية. يمنحك RRDtool الأدوات اللازمة لإنشاء قاعدة البيانات وإنشاء الرسوم البيانية.
يقوم الخادم الخاص بي بإنشاء الرسوم البيانية على أساس دوري ويعرض كل شيء في صفحة http بسيطة للغاية. يمكنني الرجوع إلى قراءاتي باستخدام متصفح بسيط عن طريق الاتصال بخادم الويب Apache2 على Raspberry Pi!
أخيرًا ، لم يكن لدي FTDI (USB إلى Serial) لذلك استخدمت Arduino UNO الخاص بي ، فأنت بحاجة إلى توصيل TX و RX و GND الخاص بـ ESP و UNO. (أعلم أن غريزتك قد تخبرك بعبور RX و TX … جربتها أيضًا ، لا تعمل.)
لم أقم بتحويل المستوى (UNO: High = 5V لكن ESP هو في الأساس جهاز 3.3V … هناك بعض FTDI اللطيفة في السوق حيث يمكنك حتى تحديد المستوى العالي الخاص بك ليكون 5 أو 3.3V.
يتم تشغيل دائري بواسطة 3 بطاريات قابلة لإعادة الشحن AA - لذلك في الواقع 3 X 1.2V. في مرحلة لاحقة ، أنوي وضع HT7333 بين حزمة البطارية والدائرة من أجل السلامة ؛ يمكن أن تحتوي البطاريات المشحونة حديثًا على أكثر من 1.2 فولت ويجب أن يتم تشغيل ESP بحد أدنى. 3V و ماكس. 3.6 فولت. وأيضًا إذا قررت - في لحظة ضعف - وضع بطاريات قلوية (3 × 1.5 فولت = 4.5 فولت) لن يتم قلي المرساب الكهروستاتيكي الخاص بي!
لقد فكرت أيضًا في استخدام لوحة شمسية مقاس 10 سم × 10 سم ، لكنها لم تكن تستحق العناء. من خلال إجراء 3 قياسات في الساعة (بشكل أساسي 3 × 5 ثوانٍ عند 100 مللي أمبير كحد أقصى وبقية الوقت @ 100uA) ، آمل أن أقوم بتشغيل دائري لمدة عام واحد على نفس البطاريات القابلة لإعادة الشحن.
الخطوة 3: الجزء Arduino - ESP12
لقد قمت بهذا المشروع في خطوات مختلفة.
هناك العديد من الروابط التي تساعدك على استيراد ESP12 (المعروف أيضًا باسم ESP8266) إلى Arduino IDE. (اضطررت إلى استخدام الإصدار 2.3.0 بدلاً من الإصدار الأحدث بسبب خطأ ربما تم حله في الوقت نفسه …)
لقد بدأت بربط ESP ، عبر Arduino UNO (يستخدم فقط كجسر بين جهاز الكمبيوتر الخاص بي عبر USB إلى المسلسل) إلى واجهة ESP التسلسلية. هناك تعليمات منفصلة توضح ذلك.
في مشروعي النهائي ، تركت الأسلاك للاتصال بالمسلسل في حال احتجت إلى استكشاف الأخطاء وإصلاحها
ثم تحتاج إلى توصيل ESP12 الخاص بك على النحو التالي:
دبابيس ESP …
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
في البداية ، حاولت تشغيل المرساب الكهروستاتيكي الخاص بي من 3.3 فولت على UNO ، لكنني سرعان ما انتقلت إلى تشغيل المرساب الكهروستاتيكي الخاص بي باستخدام مصدر طاقة مقعد ولكن يمكنك استخدام حزمة البطارية أيضًا.
GPIO0 لقد قمت بتوصيل هذا مع وصلة إلى GND لتمكين وميض (= البرمجة) ESP.
الاختبار الأول: اترك العبور مفتوحًا وابدأ تشغيل شاشة تسلسلية في Arduino IDE (عند 115200 باود!).
دورة الطاقة في ESP ، يجب أن ترى بعض أحرف القمامة ثم رسالة مثل:
شركة Ai-Thinker Technology المحدودة جاهزة
في هذا الوضع ، يعمل المرساب الكهروستاتيكي مثل مودم قديم الطراز. تحتاج إلى استخدام أوامر AT.
جرب الأوامر التالية:
AT + RST
والأمرين التاليين
AT + CWMODE = 3
نعم
AT + CWLAP
يجب أن يمنحك هذا قائمة بجميع شبكات WiFi في المنطقة.
إذا كان هذا يعمل ، فأنت جاهز للخطوة التالية.
الخطوة 4: اختبار ESP كعميل بروتوكول وقت الشبكة (NTP)
في Arduino IDE ، ضمن ملف ، أمثلة ، ESP8266WiFi ، قم بتحميل NTPClient.
هناك حاجة إلى تعديلات طفيفة لجعلها تعمل ؛ تحتاج إلى إدخال SSID وكلمة المرور لشبكة WiFi الخاصة بك.
الآن ضع الطائر ، واختصر GPIO0 إلى GND.
قم بتشغيل دورة ESP وتحميل المخطط إلى ESP.
بعد التجميع ، يجب أن يبدأ التحميل إلى برنامج ESP. سيومض مؤشر LED الأزرق الموجود على ESP بسرعة أثناء تنزيل الكود.
لقد لاحظت أنه كان عليّ أن ألعب قليلاً مع إعادة تشغيل IDE ، وإعادة تشغيل ESP قبل أن يعمل التحميل.
قبل أن تبدأ في تجميع / تحميل الرسم التخطيطي ، تأكد من إغلاق وحدة التحكم التسلسلية (= جهاز العرض التسلسلي) لأن هذا سيمنعك من القيام بالتحميل.
بمجرد نجاح التحميل ، يمكنك إعادة فتح الشاشة التسلسلية لرؤية ESP يحصل بشكل فعال على الوقت من الإنترنت.
رائع ، لقد قمت ببرمجة برنامج ESP الخاص بك ، والاتصال بشبكة WiFi الخاصة بك وحصلت على الوقت من الإنترنت.
الخطوة التالية سنختبر DHT22.
الخطوة الخامسة: اختبار مستشعر DHT22
الآن مطلوب بعض الأسلاك الإضافية.
دبابيس DHT … قم بتوصيل السن 1 (على اليسار) من المستشعر بـ VCC (3.3 فولت)
قم بتوصيل دبوس 2 ESP GPIO5 (DHTPIN في الرسم)
قم بتوصيل السن 4 (على اليمين) من المستشعر بالأرض
قم بتوصيل المقاوم 10K من الطرف 2 (البيانات) إلى الطرف 1 (الطاقة) من المستشعر.
على غرار اختبار NTP ، ابحث عن مخطط DHTtester وقم بتعديله بالطريقة التالية:
#define DHTPIN 5 // اخترنا GPIO5 للاتصال بالمستشعر # حدد DHTTYPE DHT22 // نظرًا لأننا نستخدم DHT22 ولكن هذا الرمز / المكتبة مناسب أيضًا لـ DHT11
مرة أخرى ، أغلق الشاشة التسلسلية ، وقم بتشغيل دورة ESP وتجميع وفلاش ESP.
إذا سارت الأمور على ما يرام ، سترى القياسات تظهر في الشاشة التسلسلية.
يمكنك اللعب قليلا مع المستشعر. إذا استنشقته ، ستلاحظ ارتفاع نسبة الرطوبة.
إذا كان لديك مصباح مكتبي (غير LED) ، يمكنك تسليط الضوء على المستشعر لتسخينه قليلاً.
رائعة! يعمل الآن جزءان كبيران من المستشعر.
في الخطوة التالية سأعلق على الكود النهائي.
الخطوة 6: نضعها معًا …
مرة أخرى بعض الأسلاك الإضافية … هذا لجعل DeepSleep ممكنًا.
تذكر أن DeepSleep هي وظيفة رائعة لأجهزة إنترنت الأشياء.
ومع ذلك ، إذا كان المستشعر الخاص بك متصلًا بـ DeepSleep ، فقد يكون من الصعب إعادة برمجة ESP لذلك سنقوم بعمل اتصال موصل آخر بين
GPIO16-RST.
نعم ، يجب أن يكون GPIO16 ، لأن هذا هو GPIO الذي تم توصيله بإحكام لإيقاظ الجهاز عندما تنطلق ساعة Real Time Clock بعد DeepSleep!
أثناء الاختبار ، يمكنك أن تقرر القيام بنوم عميق لمدة 15 ثانية.
عندما كنت أقوم بتصحيح الأخطاء ، كنت أنقل العبور إلى GPIO0 حتى أتمكن من وميض البرنامج الخاص بي.
عند اكتمال التنزيل ، أود نقل العبور إلى GPIO16 حتى يعمل DeepSleep.
يسمى رمز ESP TnHclient.c
يجب عليك تغيير SSID وكلمة المرور وعنوان IP الخاص بخادمك.
هناك سطور إضافية من التعليمات البرمجية يمكنك استخدامها لاستكشاف أخطاء الإعداد أو اختبارها.
الخطوة 7: جانب الخادم من الأشياء
من سوء الفهم الشائع أن UDP غير موثوق وأن TCP …
هذا سخيف تمامًا مثل قول المطرقة أكثر فائدة من مفك البراغي. إنها ببساطة أدوات مختلفة مفيدة للغاية ولكل منهما استخداماتها.
بالمناسبة ، بدون UDP لن يعمل الإنترنت … يعتمد DNS على UDP.
لذلك ، اخترت UDP لأنه خفيف الوزن للغاية وسهل وسريع.
أميل إلى الاعتقاد بأن شبكة WiFi الخاصة بي موثوقة جدًا ، لذا سيرسل العميل 3 حزم UDP على الأكثر إذا كان الإقرار "موافق!" لم يتم استلامها.
رمز C لـ TnHserver موجود في ملف TnHServer.c.
هناك عدة تعليقات في الكود توضح ذلك.
سنحتاج إلى بعض الأدوات الإضافية على الخادم: rrdtool و apache وربما tcpdump.
لتثبيت rrdtool على Raspbian ، يمكنك ببساطة تثبيت الحزمة على النحو التالي: apt-get install rrdtool
إذا كنت بحاجة إلى تصحيح حركة مرور الشبكة ، فإن tcpdump يأتي في متناول يدي apt-get install tcpdump
كنت بحاجة إلى خادم ويب لأتمكن من استخدام متصفح من أجل الرجوع إلى الرسوم البيانية: apt-get install apache2
لقد استخدمت هذه الأداة: https://rrdwizard.appspot.com/index.php للحصول على أمر إنشاء قاعدة بيانات Round Robin. ما عليك سوى تشغيل هذا مرة واحدة (إذا قمت بذلك بشكل صحيح في المرة الأولى).
rrdtool إنشاء TnHdatabase.rrd - ابدأ الآن - 10s
- الخطوة "1200"
'DS: درجة الحرارة: GAUGE: 1200: -20.5: 45.5'
'DS: الرطوبة: GAUGE: 1200: 0: 100.0'
'RRA: متوسط: 0.5: 1: 720'
'RRA: متوسط: 0.5: 3: 960'
"RRA: متوسط: 0.5: 18: 1600"
أخيرًا ، أستخدم إدخال crontab لإعادة تشغيل TnHserver كل يوم في منتصف الليل. أقوم بتشغيل TnHserver كمستخدم عادي (أي ليس الجذر) كإجراء احترازي.
0 0 * * * / usr / bin / pkill TnHserver ؛ / home / user / bin / TnHserver> / dev / null 2> & 1
يمكنك التحقق من أن TnHserver يعمل عن طريق العمل
$ ps -elf | grep TnHserver
ويمكنك التحقق من أنه يستمع للحزم الموجودة على المنفذ 7777 من خلال القيام بذلك
netstat دولار -anu
اتصالات الإنترنت النشطة (الخوادم والمنشأة)
Proto Recv-Q Send-Q العنوان المحلي الحالة الخارجية
UDP 0 0 0.0.0.0:7777 0.0.0.0:*
أخيرًا ، يعد CreateTnH_Graphs.sh.txt مثالاً على برنامج نصي لإنشاء الرسوم البيانية. (أقوم بإنشاء البرامج النصية كجذر ، قد لا ترغب في القيام بذلك.)
باستخدام صفحة ويب بسيطة للغاية ، يمكنك مشاهدة الرسوم البيانية من أي متصفح على شبكتك المنزلية.
موصى به:
مفتاح كهربائي للأجهزة المنزلية -- تحكم في أجهزتك المنزلية دون الحاجة إلى أي مفتاح: 4 خطوات
مفتاح كهربائي للأجهزة المنزلية || تحكم في أجهزتك المنزلية دون الحاجة إلى أي مفتاح: هذا مفتاح لا مثيل له للأجهزة المنزلية. يمكنك استخدام هذا في أي مكان عام حتى يساعد في مكافحة أي فيروس. الدائرة على أساس دائرة مستشعر الظلام المصنوعة بواسطة Op-Amp و LDR. الجزء الثاني المهم من هذه الدائرة فليب فلوب SR مع تسلسل
مستشعر درجة حرارة الشواء واللحوم على ESP8266 مع شاشة عرض: 5 خطوات (بالصور)
مستشعر درجة حرارة الشواء واللحوم على ESP8266 مع شاشة العرض: في هذا Instructable ، سأوضح لك كيفية صنع نسختك الخاصة من أداة الشواء التي تقيس درجة الحرارة الحالية في المشوى وتقوم بتشغيل مروحة لإضاءةها إذا لزم الأمر. بالإضافة إلى ذلك ، يوجد أيضًا جهاز استشعار درجة حرارة اللحم الأساسية
IOT ThermoGun - ميزان حرارة ذكي لقياس درجة حرارة الجسم بالأشعة تحت الحمراء - Ameba Arduino: 3 خطوات
IOT ThermoGun - ميزان حرارة ذكي يعمل بالأشعة تحت الحمراء للجسم - Ameba Arduino: مع استمرار COVID-19 في إحداث فوضى على مستوى العالم ، مما تسبب في آلاف الوفيات ، والملايين في المستشفى ، فإن أي جهاز طبي مفيد مطلوب بشكل كبير ، خاصة الأجهزة الطبية المنزلية مثل ميزان الحرارة غير المتصل بالأشعة تحت الحمراء ؟؟ . عادة ما يكون مقياس الحرارة المحمول قيد التشغيل
ESP8266 مراقبة درجة حرارة Nodemcu باستخدام DHT11 على خادم ويب محلي - احصل على درجة حرارة الغرفة ورطوبتها على متصفحك: 6 خطوات
ESP8266 مراقبة درجة حرارة Nodemcu باستخدام DHT11 على خادم ويب محلي | احصل على درجة حرارة الغرفة ورطوبتها على متصفحك: مرحبًا يا شباب اليوم سنصنع الرطوبة & amp؛ نظام مراقبة درجة الحرارة باستخدام ESP 8266 NODEMCU & amp؛ جهاز استشعار درجة الحرارة DHT11. سيتم الحصول على درجة الحرارة والرطوبة من مستشعر DHT11 & amp؛ يمكن رؤيته على متصفح أي صفحة ويب ستتم إدارتها
ميزان حرارة للطهي بمسبار درجة الحرارة ESP32 NTP مع تصحيح Steinhart-Hart وإنذار درجة الحرارة: 7 خطوات (بالصور)
ميزان حرارة للطهي بمسبار درجة الحرارة ESP32 NTP مع تصحيح Steinhart-Hart وإنذار درجة الحرارة: لا يزال في رحلة لإكمال & quot؛ المشروع القادم & quot ؛، & quot؛ ESP32 NTP ميزان حرارة للطهي بمسبار درجة الحرارة مع تصحيح Steinhart-Hart وإنذار درجة الحرارة & quot؛ هو Instructable يوضح كيف يمكنني إضافة مسبار درجة حرارة NTP ، بيزو ب