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

محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk: 4 خطوات
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk: 4 خطوات

فيديو: محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk: 4 خطوات

فيديو: محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk: 4 خطوات
فيديو: Метеостанция на базе Интернета вещей с использованием NodeMCU [2022] 2024, شهر نوفمبر
Anonim
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk
محطة الطقس DIY باستخدام DHT11 ، BMP180 ، Nodemcu مع Arduino IDE عبر خادم Blynk

جيثب: DIY_Weather_Station

Hackster.io: محطة الطقس

هل رأيت تطبيق الطقس أليس كذلك؟ على سبيل المثال ، عندما تفتحه ، ستتعرف على ظروف الطقس مثل درجة الحرارة والرطوبة وما إلى ذلك. هذه القراءات هي القيمة المتوسطة لمنطقة كبيرة ، لذلك إذا كنت تريد معرفة المعلمات الدقيقة المتعلقة بغرفتك ، فلا يمكنك فقط الاعتماد على تطبيق الطقس. لهذا الغرض ، ننتقل إلى إنشاء محطة طقس فعالة من حيث التكلفة وموثوقة أيضًا وتعطينا القيمة الدقيقة.

محطة الطقس هي منشأة مزودة بأدوات ومعدات لقياس الظروف الجوية لتوفير معلومات للتنبؤات الجوية ودراسة الطقس والمناخ. يتطلب القليل من الجهد للتوصيل والتشفير. لذلك دعونا نبدأ.

حول Nodemcu:

NodeMCU هي منصة إنترنت الأشياء مفتوحة المصدر.

يتضمن البرنامج الثابت الذي يعمل على ESP8266 Wi-Fi SoC من أنظمة Espressif ، والأجهزة التي تعتمد على وحدة ESP-12.

يشير المصطلح "NodeMCU" افتراضيًا إلى البرامج الثابتة بدلاً من مجموعات المطورين. يستخدم البرنامج الثابت لغة البرمجة النصية Lua. يعتمد على مشروع eLua ، وهو مبني على Espressif Non-OS SDK لـ ESP8266. يستخدم العديد من المشاريع مفتوحة المصدر ، مثل lua-cjson و spiffs.

متطلبات أجهزة الاستشعار والبرامج:

1. Nodemcu (esp8266-12e v1.0)

2. DHT11

3. BMP180

4. اردوينو IDE

الخطوة 1: تعرف على أجهزة الاستشعار الخاصة بك

تعرف على أجهزة الاستشعار الخاصة بك
تعرف على أجهزة الاستشعار الخاصة بك

BMP180:

وصف:

يتكون BMP180 من مستشعر مقاوم للضغط ، ومحول تناظري رقمي ووحدة تحكم مع E2PROM وواجهة I2C تسلسلية. يوفر BMP180 القيمة غير المعوضة للضغط ودرجة الحرارة. قام E2PROM بتخزين 176 بت من بيانات المعايرة الفردية. يستخدم هذا لتعويض الإزاحة والاعتماد على درجة الحرارة والمعلمات الأخرى لجهاز الاستشعار.

  • UP = بيانات الضغط (من 16 إلى 19 بت)
  • UT = بيانات درجة الحرارة (16 بت)

المواصفات التقنية:

  • Vin: من 3 إلى 5VDC
  • المنطق: متوافق من 3 إلى 5 فولت
  • نطاق استشعار الضغط: 300-1100 hPa (9000m إلى -500m فوق مستوى سطح البحر)
  • دقة تصل إلى 0.03hPa / 0.25m-40 إلى + 85 ° C نطاق تشغيلي ، + -2 ° C دقة درجة الحرارة
  • تستخدم هذه اللوحة / الشريحة عنوان I2C 7 بت 0x77.

دهت 11:

وصف:

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

المواصفات التقنية:

  • من 3 إلى 5 فولت و I / O
  • جيد لقراءات درجة حرارة 0-50 درجة مئوية دقة ± 2 درجة مئوية
  • جيد لقراءات الرطوبة 20-80٪ بدقة 5٪
  • 2.5 مللي أمبير بحد أقصى للاستخدام الحالي أثناء التحويل (أثناء طلب البيانات)

الخطوة 2: الاتصال

الاتصال
الاتصال

DHT11 مع Nodemcu:

دبوس 1 - 3.3 فولت

دبوس 2 - D4

دبوس 3 - NC

دبوس 4 - Gnd

BMP180 مع Nodemcu:

فين - 3.3 فولت

Gnd - Gnd

SCL - D6

SDA - D7

الخطوة 3: إعداد Blynk

Image
Image
إعداد Blynk
إعداد Blynk

ما هو بلينك؟

Blynk عبارة عن نظام أساسي به تطبيقات iOS و Android للتحكم في Arduino و Raspberry Pi وما شابه ذلك عبر الإنترنت.

إنها لوحة معلومات رقمية حيث يمكنك إنشاء واجهة رسومية لمشروعك ببساطة عن طريق سحب وإسقاط الحاجيات. من السهل حقًا إعداد كل شيء وستبدأ في الترقيع في أقل من 5 دقائق. Blynk غير مرتبط بلوحة أو درع معين. بدلاً من ذلك ، فهو يدعم الأجهزة التي تختارها. سواء كان Arduino أو Raspberry Pi الخاص بك متصلاً بالإنترنت عبر Wi-Fi أو Ethernet أو شريحة ESP8266 الجديدة ، فإن Blynk سيوفر لك اتصالاً بالإنترنت وجاهزًا لإنترنت الأشياء الخاصة بك.

لمزيد من المعلومات في إعداد Blynk: إعداد Blynk التفصيلي

الخطوة 4: الكود

الشفرة
الشفرة

// التعليقات لكل سطر موجودة في ملف.ino أدناه

# تضمين # تعريف BLYNK_PRINT المسلسل # تضمين # تضمين # تضمين # تضمين # تضمين Adafruit_BMP085 bmp ؛ #define I2C_SCL 12 #define I2C_SDA 13 float dst، bt، bp، ba؛ char dstmp [20] ، btmp [20] ، bprs [20] ، balt [20] ؛ منطقية bmp085_present = صحيح ؛ char auth = "ضع مفتاح المصادقة الخاص بك من تطبيق Blynk هنا" ؛ char ssid = "WiFi SSID الخاص بك" ؛ char pass = "كلمة مرورك" ؛ #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht (DHTPIN ، DHTTYPE) ؛ // تحديد دبوس و dhttype توقيت BlynkTimer ؛ sendSensor () باطل {if (! bmp.begin ()) {Serial.println ("تعذر العثور على مستشعر BMP085 صالح ، تحقق من الأسلاك!") ؛ while (1) {}} float h = dht.readHumidity () ؛ تعويم t = dht.readTemperature () ، if (isnan (h) || isnan (t)) {Serial.println ("Failed to read from DHT sensor!")؛ إرجاع؛ } جاما مزدوجة = السجل (ح / 100) + ((17.62 * طن) / (243.5 + ر)) ؛ مزدوج dp = 243.5 * جاما / (17.62-جاما) ؛ تعويم bp = bmp.readPressure () / 100 ؛ تعويم ba = bmp.readAltitude () ، تعويم bt = bmp.readTemperature () ، تعويم dst = bmp.readSealevelPressure () / 100 ؛ Blynk.virtualWrite (V5 ، ح) ؛ Blynk.virtualWrite (V6، t) ؛ Blynk.virtualWrite (V10 ، BP) ؛ Blynk.virtualWrite (V11 ، ba) ؛ Blynk.virtualWrite (V12 ، BT) ؛ Blynk.virtualWrite (V13 ، dst) ؛ Blynk.virtualWrite (V14 ، موانئ دبي) ؛ } إعداد باطل () {Serial.begin (9600) ؛ Blynk.begin (auth ، ssid ، pass) ؛ dht.begin () ، Wire.begin (I2C_SDA، I2C_SCL) ؛ تأخير (10) ؛ timer.setInterval (1000L ، sendSensor) ؛ } حلقة فارغة () {Blynk.run ()؛ timer.run () ، }

موصى به: