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

محطة الطقس باستخدام Arduino UNO: 7 خطوات
محطة الطقس باستخدام Arduino UNO: 7 خطوات

فيديو: محطة الطقس باستخدام Arduino UNO: 7 خطوات

فيديو: محطة الطقس باستخدام Arduino UNO: 7 خطوات
فيديو: Arduino Weather Station - Ep3: Measuring UV Light 2024, يوليو
Anonim
محطة الطقس باستخدام Arduino UNO
محطة الطقس باستخدام Arduino UNO

صممه: Hazel Yang

هذا المشروع عبارة عن محطة طقس تستخدم لوحة Arduino UNO للتحكم في تدفق البيانات ، ومستشعر DHT22 لجمع البيانات وشاشة OLED لعرض البيانات.

الخطوة 1: قائمة العناصر

قائمة البند
قائمة البند

1. الشاشة: OLED ، مقاس 1.3 بوصة ، SH1106 ، I2C أبيض اللون ---- PID: 18283

2. المستشعر: حساس الرطوبة ودرجة الحرارة الرقمي DHT22 ---- PID: 7375

3. التوصيلات: Jumper Wires ---- PID: 10316 أو 10318 أو 10312 (يعتمد على الطول) أو يمكنك استخدام سلك صلب 22 AWG ---- PID: 22490

اللوح ---- PID: 10686 أو 10698 أو 103142 (يعتمد على الحجم)

4. الطاقة: لا يمكن توصيل هذا الكبل إلا بمنفذ USB للكمبيوتر ويستخدم الكبل أيضًا لنقل البيانات بين IDE ولوحة Arduino. كابل USB ، من A إلى B ، M / M ، 0.5 متر (1.5 قدم) ---- PID: 29862

أو يمكنك استخدام هذا لتشغيل اللوحة: 5V 2A AC / DC Adapter ---- PID: 10817.

الخطوة 2: المقدمة النسبية

مقدمة نسبية
مقدمة نسبية
مقدمة نسبية
مقدمة نسبية

مقدمة عن الشاشة: شاشة OLED مقاس 1.3 بوصة بيضاء

1. يمكنك العثور على المستند الذي يعرض الإعداد الأساسي والأوصاف:

مقدمة عن جهاز الاستشعار: مستشعر الرطوبة ودرجة الحرارة DHT22 1. يمكنك العثور على المستند الذي يعرض الأوصاف:

الخطوة 3: قم بتوصيل الدائرة

قم بتوصيل الدائرة
قم بتوصيل الدائرة

يرسل مستشعر DHT22 البيانات التسلسلية إلى الطرف 2. لذلك ، قم بتوصيل الدبوس الثاني من اليسار ، يجب توصيل دبوس "SDA" بالدبوس 2.

بالنسبة لشاشة SSH1106 ، فإنها تستخدم الدبوس التناظري للإرسال. ستكون دوائر الشاشة عبارة عن دبوس "SCL" إلى دبوس Arduino "A5" و "SDA" إلى "A4" الخاص بـ Arduino. أثناء نقل بيانات موضع البكسل بشكل مستمر ، تقوم وظيفة العرض في البرنامج بتشغيل الأمر مرة واحدة فقط في كل مرة يقرأ فيها البيانات من المستشعر.

يمكن لكل من المستشعر والشاشة استخدام 3.3 فولت لتشغيل Arduino كمدخل طاقة تيار مستمر. للتشغيل ، نحتاج إلى توصيل كل من دبابيس "VCC" بـ "3.3V" في Arduino. ويمكن توصيل دبابيس "GND" ببساطة بدبوس "GND" على لوحة Arduino.

استخدم كبل USB A إلى B ، وقم بتوصيل Arudino بالكمبيوتر.

الخطوة 4: التحضير للترجمة

"u8glib" لشاشة SSH1106 من Olikraus.

"مكتبة مستشعر DHT" لمستشعر DHT22 من Adafruit. يجب عليك تنزيل المكتبتين: مكتبة مستشعر DHT22:

U8glib:

واستخدم "إدارة المكتبة" في IDE لجعلها غير مضغوطة. تعليمات عبر الإنترنت لإدارة المكتبات:

الخطوة 5: اختبار الكود للمنفذ التسلسلي لمستشعر DHT22

اختبار coe للمنفذ التسلسلي لمستشعر DHT22 (الموجود داخل مكتبة DHT22 >> أمثلة):

(يمكنك تخطي هذا الجزء.)

إنه فقط لاختبار مستشعر DHT22 يقرأ البيانات بشكل طبيعي

#يشمل

#يشمل

#يشمل

#يشمل

#يشمل

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN ، DHTTYPE) ؛

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

Serial.begin (9600) ؛

Serial.println (F ("اختبار DHT22!")) ؛

dht.begin () ،

}

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

// انتظر بضع ثوان بين القياسات.

تأخير (2000) ؛

// قراءة درجة الحرارة أو الرطوبة تستغرق حوالي 250 مللي ثانية!

// قد يصل عمر قراءات المستشعر أيضًا إلى ثانيتين (وهو مستشعر بطيء جدًا)

تعويم h = dht.readHumidity () ؛

// قراءة درجة الحرارة على أنها مئوية (الافتراضي)

تعويم t = dht.readTemperature () ،

// قراءة درجة الحرارة على أنها فهرنهايت (isFahrenheit = true)

تعويم f = dht.readTemperature (صواب) ؛

// تحقق مما إذا كانت أي قراءات فشلت والخروج مبكرًا (للمحاولة مرة أخرى).

إذا (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("فشل القراءة من مستشعر DHT!")) ؛

إرجاع؛

}

// حساب مؤشر الحرارة بالفهرنهايت (الافتراضي)

تعويم hif = dht.computeHeatIndex (f، h) ؛

// حساب مؤشر الحرارة بالدرجة المئوية (isFahreheit = false)

تعويم hic = dht.computeHeatIndex (t، h، false) ؛

Serial.print (F ("الرطوبة:")) ؛

Serial.print (ح) ؛

Serial.print (F ("٪ Temperature:")) ؛

Serial.print (t) ؛

Serial.print (F ("° C")) ؛

Serial.print (f) ؛

Serial.print (F ("درجة فهرنهايت مؤشر الحرارة:")) ؛

Serial.print (hic) ؛

Serial.print (F ("° C")) ؛

Serial.print (hif) ؛

Serial.println (F ("° F")) ؛

}

// بعد تجميع البرنامج ، انقر فوق أدوات >> جهاز العرض التسلسلي للتحقق من البيانات.

// نهاية برنامج الاختبار.

الخطوة 6: رمز المشروع

#يشمل

#يشمل

#يشمل

#يشمل

#يشمل

#define DHTPIN 2

#define DHTTYPE DHT22

# تضمين "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE) ؛

مستشعر DHT (DHTPIN ، DHTTYPE) ؛

رسم باطل (باطل) {

u8g.setFont (u8g_font_unifont) ،

تعويم h = sensor.readHumidity () ؛

// قراءة درجة الحرارة بالدرجة المئوية (الافتراضي)

تعويم t = sensor.readTemperature () ؛

// تحقق مما إذا كانت أي قراءات فشلت والخروج مبكرًا (للمحاولة مرة أخرى).

إذا (isnan (h) || isnan (t)) {

u8g.print ("خطأ") ؛

ل(؛؛)؛

إرجاع؛

}

u8g.setPrintPos (4 ، 10) ؛

u8g.print ("درجة الحرارة (C):") ؛

u8g.setPrintPos (4 ، 25) ؛

u8g.print (ر) ؛

u8g.setPrintPos (4 ، 40) ؛

u8g.print ("الرطوبة (٪):") ؛

u8g.setPrintPos (4 ، 55) ؛

u8g.print (ح) ؛

}

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

u8g.setRot180 () ،

Serial.begin (9600) ؛

sensor.begin () ؛

}

حلقة باطلة (باطلة) {

// حلقة الصورة

u8g.firstPage () ،

فعل {

يرسم()؛

} while (u8g.nextPage ()) ؛

// إعادة بناء الصورة بعد بعض التأخير (2000) ؛

}

// نهاية البرنامج الرئيسي.

الخطوة 7: الوصف

وصف
وصف

بعد ذلك ، قم بتهيئة دائرة الدبوس للوحة Arduino. لأن مكتبة المستشعرات تتطلب البيانات للإعلان عن الكائن.

ويمكنك اختبار بيانات المستشعر من خلال مراقبة بيانات الإخراج من خلال الرقم 2 الرقمي باستخدام الوظيفة المسماة "Serial.print ()". نظرًا لأن معدل نقل البيانات يبلغ قراءة واحدة تقريبًا كل ثانيتين (أي 0.5 هرتز) ، عند برمجته في Arduino IDE ، نحتاج إلى ضبط التأخير داخل وظيفة الحلقة ليكون أكثر من ثانيتين. لذلك هناك "تأخير (2000)" داخل وظيفة الحلقة. هذا يضمن تحديث البيانات بشكل متكرر. في وظيفة "draw" ، احصل على البيانات من منفذ البيانات التسلسلي وضعها في الأرقام العائمة باستخدام وظيفتي "readHumidity" و "readTemperature".

اطبع الرطوبة ودرجة الحرارة باستخدام وظيفة الطباعة في ملف "u8glib". يمكنك ضبط الموضع عن طريق تغيير الرقم في وظيفة "setPrintPos". يمكن أن تظهر وظيفة الطباعة النص والأرقام مباشرة.

لإعداد الجهاز ، امنح المنفذ التسلسلي تأخيرًا لمدة 10 ثوانٍ. ثم اتصل بوظيفة البدء الخاصة بالمستشعر. وفقًا لدورتي ، كانت شاشتي مقلوبة رأسًا على عقب. لذلك قمت أيضًا بتضمين وظيفة "setRot180" لتدوير الشاشة.

وظيفة الحلقة للوحة Arduino هي الوظيفة الرئيسية. يستمر في استدعاء وظيفة السحب لعرض النص والبيانات في كل مرة يتم فيها تحديث المستشعر.

تبدو الشاشة كما يلي:

يمكنك فصل Arduino UNO عن جهاز الكمبيوتر الخاص بك وتشغيله باستخدام محول طاقة 5V DC متصل بمقبس الطاقة 2.1 مم الخاص به. يقوم بتخزين البرنامج داخل محرك الأقراص الخاص به ويمكنه تشغيل البرنامج باستمرار مرة أخرى بعد تشغيله.

موصى به: