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

مستشعر درجة حرارة الشبكة المنزلية: 7 خطوات
مستشعر درجة حرارة الشبكة المنزلية: 7 خطوات

فيديو: مستشعر درجة حرارة الشبكة المنزلية: 7 خطوات

فيديو: مستشعر درجة حرارة الشبكة المنزلية: 7 خطوات
فيديو: أردوينو للمبتدئين - (27) مشروع جهاز استشعار درجة الحرارة والرطوبة 2024, شهر نوفمبر
Anonim
مستشعر درجة حرارة الشبكة المنزلية
مستشعر درجة حرارة الشبكة المنزلية

ما الذي تحتاج إلى معرفته لعمل هذا المشروع:

تحتاج إلى معرفة: - بعض مهارات الإلكترونيات (لحام)

- لينكس

- اردوينو 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

الجزء Arduino - ESP12
الجزء Arduino - ESP12
الجزء Arduino - ESP12
الجزء 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)

اختبار ESP كعميل بروتوكول وقت الشبكة (NTP)
اختبار ESP كعميل بروتوكول وقت الشبكة (NTP)
اختبار ESP كعميل بروتوكول وقت الشبكة (NTP)
اختبار ESP كعميل بروتوكول وقت الشبكة (NTP)

في Arduino IDE ، ضمن ملف ، أمثلة ، ESP8266WiFi ، قم بتحميل NTPClient.

هناك حاجة إلى تعديلات طفيفة لجعلها تعمل ؛ تحتاج إلى إدخال SSID وكلمة المرور لشبكة WiFi الخاصة بك.

الآن ضع الطائر ، واختصر GPIO0 إلى GND.

قم بتشغيل دورة ESP وتحميل المخطط إلى ESP.

بعد التجميع ، يجب أن يبدأ التحميل إلى برنامج ESP. سيومض مؤشر LED الأزرق الموجود على ESP بسرعة أثناء تنزيل الكود.

لقد لاحظت أنه كان عليّ أن ألعب قليلاً مع إعادة تشغيل IDE ، وإعادة تشغيل ESP قبل أن يعمل التحميل.

قبل أن تبدأ في تجميع / تحميل الرسم التخطيطي ، تأكد من إغلاق وحدة التحكم التسلسلية (= جهاز العرض التسلسلي) لأن هذا سيمنعك من القيام بالتحميل.

بمجرد نجاح التحميل ، يمكنك إعادة فتح الشاشة التسلسلية لرؤية ESP يحصل بشكل فعال على الوقت من الإنترنت.

رائع ، لقد قمت ببرمجة برنامج ESP الخاص بك ، والاتصال بشبكة WiFi الخاصة بك وحصلت على الوقت من الإنترنت.

الخطوة التالية سنختبر DHT22.

الخطوة الخامسة: اختبار مستشعر DHT22

اختبار مستشعر 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 مثالاً على برنامج نصي لإنشاء الرسوم البيانية. (أقوم بإنشاء البرامج النصية كجذر ، قد لا ترغب في القيام بذلك.)

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

موصى به: