الرطوبة ودرجة الحرارة والضغط هي ثلاث عوامل أساسية لبناء أي محطة طقس وقياس الظروف البيئية. لقد قمنا سابقًا ببناء محطة طقس صغيرة باستخدام Arduino وهذه المرة نقوم بتوسيع محطة الطقس باستخدام Raspberry Pi. يهدف هذا المشروع القائم على إنترنت الأشياء إلى إظهار معلمات الرطوبة ودرجة الحرارة والضغط الحالية على شاشة LCD وكذلك على خادم الإنترنت باستخدام Raspberry Pi ، مما يجعلها محطة طقس Raspberry Pi. يمكنك تثبيت هذا الإعداد في أي مكان ويمكنك مراقبة أحوال الطقس في ذلك المكان من أي مكان في العالم عبر الإنترنت ، ولن يعرض البيانات الحالية فحسب ، بل يمكنه أيضًا إظهار القيم السابقة في شكل رسوم بيانية.
لقد استخدمنا مستشعر الرطوبة ودرجة الحرارة DHT11 لاستشعار درجة الحرارة ووحدة استشعار الضغط BM180 لقياس الضغط الجوي. يعرض مقياس الحرارة مقياس مئوية ومقياس الرطوبة مقياس النسبة المئوية درجة الحرارة المحيطة والرطوبة من خلال شاشة LCD ويتم عرض الضغط الجوي بالملي بار أو hPa (هيكتوباسكال). يتم إرسال كل هذه البيانات إلى خادم ThingSpeak للمراقبة الحية من أي مكان في العالم عبر الإنترنت. قم بفحص الفيديو التوضيحي وبرنامج Python ، المقدمين في نهاية هذا البرنامج التعليمي.
العمل وإعداد ThingSpeak:
يتكون هذا المشروع القائم على إنترنت الأشياء من أربعة أقسام. أولاً ، يستشعر مستشعر DHT11 بيانات الرطوبة ودرجة الحرارة ويقيس مستشعر BM180 الضغط الجوي. ثانيًا ، يقرأ Raspberry Pi إخراج وحدة مستشعر DHT11 باستخدام بروتوكول السلك المفرد وإخراج مستشعر الضغط BM180 باستخدام بروتوكول I2C ويستخرج قيم المستشعرات إلى رقم مناسب بالنسبة المئوية (الرطوبة) ، مقياس درجة مئوية (درجة الحرارة) ، هيكتوباسكال أو مليبار (الضغط). ثالثًا ، يتم إرسال هذه القيم إلى خادم ThingSpeak باستخدام شبكة Wi-Fi المدمجة في Raspberry Pi 3. وأخيرًا ، يحلل ThingSpeak البيانات ويظهرها في شكل رسم بياني. تُستخدم شاشة LCD أيضًا لعرض هذه القيم محليًا.
يوفر ThingSpeak أداة جيدة جدًا للمشاريع القائمة على إنترنت الأشياء. باستخدام موقع ThingSpeak الإلكتروني ، يمكننا مراقبة بياناتنا والتحكم في نظامنا عبر الإنترنت ، باستخدام القنوات وصفحات الويب التي توفرها ThingSpeak. ThingSpeak "يجمع" البيانات من أجهزة الاستشعار، "تحليل وتصور" البيانات و 'أعمال' عن طريق إحداث رد الفعل. لقد أوضحنا مسبقًا حول إرسال البيانات إلى ThingSpeak بالتفصيل ، يمكنك التحقق من ذلك. نوضح هنا بإيجاز استخدام ThingSpeak لمحطة الطقس Raspberry Pi.
تحتاج أولاً إلى إنشاء حساب على موقع ThingSpeak الإلكتروني وإنشاء "قناة جديدة" فيه. في القناة الجديدة ، عليك تحديد بعض الحقول للبيانات التي تريد مراقبتها ، كما هو الحال في هذا المشروع ، سننشئ ثلاثة حقول لبيانات الرطوبة ودرجة الحرارة والضغط.
الآن انقر فوق علامة التبويب "API keys" واحفظ مفتاح الكتابة والقراءة API ، وهنا نستخدم مفتاح الكتابة فقط. تحتاج إلى نسخ هذا المفتاح في متغير "key" في الكود.
بعد ذلك ، انقر فوق "استيراد / تصدير البيانات" وانسخ عنوان URL لطلب GET لخلاصة القناة المحدثة ، وهو:
api.thingspeak.com/update؟api_key=30BCDSRQ52AOI3UA&field1=0
نحتاج الآن إلى "عنوان URL لطلب الحصول على الخلاصة" في كود Python لفتح "api.thingspeak.com" ثم إرسال البيانات باستخدام طلب الخلاصة هذا كسلسلة استعلام. وقبل إرسال البيانات ، يحتاج المستخدم إلى إدخال بيانات درجة الحرارة والرطوبة والضغط في سلسلة الاستعلام هذه باستخدام المتغيرات في البرنامج ، تحقق من الكود في نهاية هذه المقالة.
URL = 'https://api.thingspeak.com/update؟api_key=٪s'٪ key finalURL = URL + "& field1 =٪ s & field2 =٪ s"٪ (humi، temp) + "& field3 =٪ s"٪ (الضغط)
يعتمد عمل DHT11 على اتصال تسلسلي أحادي السلك لجلب البيانات من DHT11. استخدمنا هنا مكتبة AdaFruit DHT11 لربط DHT11 مع Raspberry Pi. يجمع Raspberry Pi هنا بيانات الرطوبة ودرجة الحرارة من DHT11 والضغط الجوي من مستشعر BMP180 ثم يرسلها إلى خادم 16x2 LCD وخادم ThingSpeak. يعرض ThingSpeak البيانات في شكل رسم بياني على النحو التالي:
يمكنك معرفة المزيد حول مستشعر DHT11 وتفاعله مع Arduino هنا.
مخطط الرسم البياني:
تكوين Raspberry Pi وبرنامج Python:
نحن نستخدم لغة Python هنا للبرنامج. قبل البرمجة ، يحتاج المستخدم إلى تكوين Raspberry Pi. يمكنك التحقق من البرامج التعليمية السابقة الخاصة بنا لبدء استخدام Raspberry Pi وتثبيت وتكوين Raspbian Jessie OS في Pi.
أولاً ، كل ما نحتاجه هو تثبيت ملفات مكتبة Adafruit Python DHT Sensor لتشغيل هذا المشروع على Raspberry Pi. للقيام بذلك ، نحتاج إلى اتباع أوامر معينة:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-basic python-dev sudo python setup.py install
بعد ذلك ، يحتاج المستخدم إلى تمكين Raspberry Pi I2C من خلال الانتقال إلى تكوين برنامج RPi أيضًا:
sudo raspi-config
ثم انتقل إلى "خيارات متقدمة" ، وحدد "I2C" و "تمكين".
يلعب جزء البرمجة في هذا المشروع دورًا مهمًا للغاية لأداء جميع العمليات. بادئ ذي بدء ، نقوم بتضمين جميع المكتبات المطلوبة ، وبدء المتغيرات وتحديد دبابيس LCD و DHT11.
استيراد النظام استيراد RPi.GPIO مثل GPIO استيراد نظام التشغيل استيراد Adafruit_DHT استيراد urllib2 وقت استيراد smbus من استيراد ctypes c_short # تسجيل العنوان regCall = 0xAA……………..
في def main (): الوظيفة ، يتم استخدام الكود أدناه لإرسال البيانات إلى الخادم وعرضها على شاشة LCD ، باستمرار في أثناء الحلقة.
def main (): طباعة 'System Ready…' URL = 'https://api.thingspeak.com/update؟api_key=٪s'٪ key print "Wait…." بينما True: (humi، temp) = readDHT () (الضغط) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '٪' + "٪ sC٪ s"٪ (temp، pressure)) finalURL = URL + "& field1 =٪ s & field2 =٪ s"٪ (humi، temp) + "& field3 =٪ s"٪ (الضغط) print finalURL s = urllib2.urlopen (finalURL) ؛ طباعة humi + "" + temp + "" + الضغط s.close () time.sleep (10)
بالنسبة لشاشات الكريستال السائل ، تُستخدم وظيفة def lcd_init () لتهيئة شاشة LCD في وضع أربعة بتات ، وتُستخدم وظيفة def lcdcmd (ch) لإرسال الأمر إلى شاشة LCD ، وتُستخدم وظيفة def lcddata (ch) لإرسال البيانات إلى LCD و def lcdstring (Str ) تستخدم وظيفة لإرسال سلسلة البيانات إلى شاشات الكريستال السائل. يمكنك التحقق من كل هذه الوظائف في التعليمات البرمجية المعطاة بعد ذلك.
يتم استخدام وظيفة def readDHT () لقراءة مستشعر DHT11:
def readDHT (): humi، temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11، DHTpin) العودة (str (int (humi)) ، str (int (temp)))
يتم استخدام وظيفة def readBmp180 لقراءة الضغط من مستشعر BM180. يمكن لمستشعر BM180 أيضًا أن يعطي درجة الحرارة ولكننا استخدمناها هنا فقط لحساب الضغط.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr، regCall، 22) # قراءة بيانات المعايرة # تحويل بيانات البايت إلى قيم كلمة AC1 = convert1 (value، 0) AC2 = convert1 (value، 2) AC3 = convert1 (قيمة ، 4) AC4 = تحويل 2 (قيمة ، 6)……………………..
هذه هي محطة الطقس الأساسية Raspberry Pi ، يمكنك تمديدها لقياس مختلف العوامل المتعلقة بالطقس مثل سرعة الرياح ودرجة حرارة التربة والإضاءة (لوكس) وهطول الأمطار وجودة الهواء وما إلى ذلك.