جدول المحتويات:
- الخطوة 1: فاتورة المعدات الحتمية
- الخطوة 2: توصيلات الأجهزة للدائرة
- الخطوة 3: برمجة Raspberry Pi في Python
- الخطوة 4: كود التشغيل
- الخطوة 5: الاستخدام في العالم العملي
- الخطوة السادسة: الخاتمة
فيديو: محطة أرصاد جوية باستخدام Raspberry Pi مع BME280 في Python: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
is maith an scéalaí an aimir (The Weather is a Good Storytoy)
مع قضايا الاحتباس الحراري وتغير المناخ ، أصبح نمط الطقس العالمي غير منتظم في جميع أنحاء عالمنا مما أدى إلى عدد من الكوارث الطبيعية المتعلقة بالطقس (الجفاف ودرجات الحرارة القصوى والفيضانات والعواصف وحرائق الغابات) ، يبدو أن محطة الطقس ضرورية الشر في المنزل. تتعلم الكثير عن الإلكترونيات الأساسية من مشروع محطة أرصاد باستخدام مجموعة من الأجزاء الرخيصة وأجهزة الاستشعار. من السهل جدًا إعداده ويمكنك الحصول عليه في لمح البصر.
الخطوة 1: فاتورة المعدات الحتمية
1. A Raspberry Pi
ضع يديك على لوحة Raspberry Pi. Raspberry Pi هو كمبيوتر لوحي واحد يعمل بنظام Linux. يعتبر Raspberry Pi رخيصًا حقًا ، وصغير الحجم ومتعدد الاستخدامات ، وهو مصمم من كمبيوتر سهل الوصول إليه وعملي ، ليتمكن المتعلمون من ممارسة أساسيات البرمجة وتطوير البرامج.
2. I2C Shield لـ Raspberry Pi
يوفر INPI2 (محول I2C) Raspberry Pi 2/3 منفذ I²C للاستخدام مع أجهزة I2C متعددة. إنه متوفر في متجر DCUBE.
3. حساس رقمي للرطوبة والضغط ودرجة الحرارة BME280
BME280 عبارة عن مستشعر للرطوبة والضغط ودرجة الحرارة يتمتع بوقت استجابة سريع ودقة إجمالية عالية. اشترينا هذا المستشعر من متجر DCUBE.
4. كابل توصيل I2C
استخدمنا كابل I²C المتوفر هنا DCUBE Store.
5. كابل USB الصغير
يعد مصدر طاقة كبل USB الصغير خيارًا مثاليًا لتشغيل Raspberry Pi.
6. تفسير الوصول إلى الإنترنت عبر محول EthernetCable / WiFi
يمكن تمكين الوصول إلى الإنترنت من خلال كبل Ethernet المتصل بشبكة محلية والإنترنت. بدلاً من ذلك ، يمكنك الاتصال بشبكة لاسلكية باستخدام دونجل USB لاسلكي ، الأمر الذي يتطلب التكوين.
7. كابل HDMI (الشاشة وكابل التوصيل)
يجب أن تعمل أي شاشة HDMI / DVI وأي تلفزيون كشاشة عرض لـ Pi. بدلاً من ذلك ، يمكنك الوصول عن بُعد إلى Pi من خلال SSH مما يلغي الحاجة إلى شاشة (المستخدمون المتقدمون فقط).
الخطوة 2: توصيلات الأجهزة للدائرة
اجعل الدائرة حسب المخطط الموضح ، بشكل عام ، تكون التوصيلات بسيطة للغاية. حافظ على هدوئك واتبع التعليمات والصور أعلاه ، ولن تواجه أي مشاكل. أثناء التعلم ، حصلنا تمامًا على أساسيات الإلكترونيات فيما يتعلق بمعرفة الأجهزة والبرامج. أردنا وضع مخطط إلكترونيات بسيط لهذا المشروع. الخطط الإلكترونية مثل المخططات. ارسم مخططًا واتبع التصميم بعناية. قد تكون بعض المفاهيم الأساسية للإلكترونيات مفيدة هنا!
اتصال Raspberry Pi و I2C Shield
أولاً ، خذ Raspberry Pi وضع I²C Shield عليه. اضغط على الدرع برفق وقد انتهينا من هذه الخطوة بنفس سهولة الفطيرة (انظر الصورة).
اتصال المستشعر و Raspberry Pi
خذ المستشعر وقم بتوصيل كابل I²C به. تأكد من أن I²C Output متصل دائمًا بإدخال I²C. يجب اتباع نفس الشيء بالنسبة لـ Raspberry Pi مع درع I²C المركب فوقه دبابيس GPIO. نوصي باستخدام كبلات I²C لأنها تلغي الحاجة إلى قراءة pinouts واللحام والضيق الناجم حتى عن أدنى انزلاق.. باستخدام كابل التوصيل والتشغيل البسيط هذا ، يمكنك تثبيت اللوحات أو تبديلها أو إضافة المزيد من اللوحات إلى أحد التطبيقات بسهولة.
ملاحظة: يجب أن يتبع السلك البني دائمًا الاتصال الأرضي (GND) بين خرج أحد الأجهزة ومدخل جهاز آخر
الاتصال بالإنترنت هو المفتاح
لديك خيارين هنا. إما يمكنك توصيل Raspberry Pi بالشبكة باستخدام كابل إيثرنت أو استخدام محول USB إلى WiFi لاتصال WIFI. في كلتا الحالتين ، طالما أنه متصل بالإنترنت.
تشغيل الدائرة
قم بتوصيل كابل Micro USB بمقبس الطاقة الخاص بـ Raspberry Pi. لكمة وفويلا! فريقنا هو المعلومات.
الاتصال بالشاشة
يمكننا إما توصيل كبل HDMI بجهاز عرض أو بجهاز تلفزيون. بالإضافة إلى ذلك ، يمكننا الوصول إلى Raspberry Pi دون توصيله بشاشة باستخدام الوصول عن بعد. SSH هي أداة مفيدة للوصول الآمن عن بعد. يمكنك أيضًا استخدام برنامج PUTTY لذلك. هذا الخيار للمستخدمين المتقدمين ، لذلك لن نغطيه بالتفصيل هنا.
إنها طريقة اقتصادية إذا كنت لا تريد إنفاق الكثير
الخطوة 3: برمجة Raspberry Pi في Python
كود Python لمستشعر Raspberry Pi و BME280. إنه متاح في مستودع Github الخاص بنا.
قبل الانتقال إلى الكود ، تأكد من قراءة التعليمات الواردة في ملف المستند التمهيدي وإعداد Raspberry Pi وفقًا لذلك. فقط القليل من الوقت سيجعلك جاهزًا للإعداد ، ومحطة الطقس هي مرفق ، سواء على الأرض أو البحر ، مع أدوات ومعدات لقياس الظروف الجوية لتوفير معلومات للتنبؤات الجوية ودراسة الطقس والمناخ.
من الواضح أن الكود أمامك وهو في أبسط شكل يمكنك تخيله ولن تواجهك أية مشاكل. ما زلت تسأل عما إذا كان هناك أي شيء (حتى لو كنت تعرف ألف شيء ، فلا يزال يسأل شخصًا يعرف).
يمكنك نسخ كود Python العامل لهذا المستشعر من هنا أيضًا.
# موزعة بترخيص الإرادة الحرة. # استخدمها بالطريقة التي تريدها ، أو الربح أو المجاني ، بشرط أن تتناسب مع تراخيص الأعمال المرتبطة بها. # BME280 # تم تصميم هذا الرمز للعمل مع وحدة BME280_I2CS I2C المصغرة المتوفرة من ControlEverything.com. #
استيراد smbus
وقت الاستيراد
# احصل على حافلة I2C
الحافلة = smbus. SMBus (1)
# عنوان BME280 ، 0x76 (118)
# قراءة البيانات مرة أخرى من 0x88 (136) ، 24 بايت b1 = bus.read_i2c_block_data (0x76، 0x88، 24)
# تحويل البيانات
# معاملات درجة الحرارة dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] if dig_T2> 32767: dig_T2 - = 65536 dig_T3 = b1 [5] * 256 + b1 [4] إذا dig_T3> 32767: dig_T3 - = 65536
# معاملات الضغط
dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] if dig_P2> 32767: dig_P2 - = 65536 dig_P3 = b1 [11] * 256 + b1 [10] إذا dig_P3 > 32767: dig_P3 - = 65536 dig_P4 = b1 [13] * 256 + b1 [12] if dig_P4> 32767: dig_P4 - = 65536 dig_P5 = b1 [15] * 256 + b1 [14] if dig_P5> 32767: dig_P5 - = 65536 dig_P6 = b1 [17] * 256 + b1 [16] if dig_P6> 32767: dig_P6 - = 65536 dig_P7 = b1 [19] * 256 + b1 [18] if dig_P7> 32767: dig_P7 - = 65536 dig_P8 = b1 [21] * 256 + b1 [20] if dig_P8> 32767: dig_P8 - = 65536 dig_P9 = b1 [23] * 256 + b1 [22] if dig_P9> 32767: dig_P9 - = 65536
# عنوان BME280 ، 0x76 (118)
# قراءة البيانات مرة أخرى من 0xA1 (161) ، 1 بايت dig_H1 = bus.read_byte_data (0x76 ، 0xA1)
# عنوان BME280 ، 0x76 (118)
# قراءة البيانات مرة أخرى من 0xE1 (225) ، 7 بايت b1 = bus.read_i2c_block_data (0x76 ، 0xE1 ، 7)
# تحويل البيانات
# معاملات الرطوبة dig_H2 = b1 [1] * 256 + b1 [0] if dig_H2> 32767: dig_H2 - = 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) if dig_H4> 32767: dig_H4 - = 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) if dig_H5> 32767: dig_H5 - = 65536 dig_H6 = b1 [6] if dig_H6> 127: dig_H6 - = 256
# عنوان BME280 ، 0x76 (118)
# حدد سجل رطوبة التحكم ، 0xF2 (242) # 0x01 (01) زيادة عينات الرطوبة = 1 bus.write_byte_data (0x76، 0xF2، 0x01) # عنوان BME280 ، 0x76 (118) # حدد سجل قياس التحكم ، 0xF4 (244) # 0x27 (39) الضغط ودرجة الحرارة معدل الإفراط في أخذ العينات = 1 # ناقل الوضع العادي (0x76 ، 0xF4 ، 0x27) # عنوان BME280 ، 0x76 (118) # حدد سجل التكوين ، 0xF5 (245) # 0xA0 (00) وقت الانتظار = 1000 مللي ثانية حافلة.write_byte_data (0x76، 0xF5، 0xA0)
وقت النوم (0.5)
# عنوان BME280 ، 0x76 (118)
# قراءة البيانات مرة أخرى من 0xF7 (247) ، 8 بايت # الضغط MSB ، الضغط LSB ، الضغط xLSB ، درجة الحرارة MSB ، درجة الحرارة LSB # درجة الحرارة xLSB ، الرطوبة MSB ، بيانات الرطوبة LSB = bus.read_i2c_block_data (0x76، 0xF7، 8)
# تحويل بيانات الضغط ودرجة الحرارة إلى 19 بت
adc_p = ((data [0] * 65536) + (data [1] * 256) + (data [2] & 0xF0)) / 16 adc_t = ((data [3] * 65536) + (data [4] * 256) + (البيانات [5] & 0xF0)) / 16
# تحويل بيانات الرطوبة
adc_h = بيانات [6] * 256 + بيانات [7]
# حسابات تعويض درجة الحرارة
var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32
# حسابات تعويض الضغط
var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / ضغط 32768.0 = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100
# حسابات تعويض الرطوبة
var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))) الرطوبة = var_H * (1.0 - dig_H1 * var_H / 524288.0) إذا كانت الرطوبة> 100.0: الرطوبة = 100.0 رطوبة أقل من 0.0: الرطوبة = 0.0
# إخراج البيانات إلى الشاشة
طباعة "درجة الحرارة بالدرجة المئوية:٪.2f C"٪ cTemp print "درجة الحرارة بالفهرنهايت:٪.2f F"٪ fTemp print "الضغط:٪.2f hPa"٪ الضغط طباعة "الرطوبة النسبية:٪.2f ٪٪"٪ الرطوبة
الخطوة 4: كود التشغيل
الآن ، قم بتنزيل (أو git pull) الكود وافتحه في Raspberry Pi.
قم بتشغيل الأوامر لتجميع وتحميل الكود على الجهاز وشاهد الإخراج على الشاشة. بعد بضع ثوانٍ ، سيعرض جميع المعلمات. بعد التأكد من أن كل شيء يعمل بشكل جيد ، يمكنك تطوير بعض الأشياء الأكثر إثارة للاهتمام.
الخطوة 5: الاستخدام في العالم العملي
يحقق BME280 أداءً عاليًا في جميع التطبيقات التي تتطلب قياس الرطوبة والضغط. هذه التطبيقات الناشئة هي الوعي بالسياق ، على سبيل المثال اكتشاف الجلد ، اكتشاف تغير الغرفة ، مراقبة اللياقة البدنية / الرفاهية ، تحذير بشأن الجفاف أو درجات الحرارة المرتفعة ، قياس الحجم وتدفق الهواء ، التحكم في أتمتة المنزل ، التحكم في التدفئة ، التهوية ، تكييف الهواء (HVAC) ، إنترنت الأشياء (IoT) ، تحسين نظام تحديد المواقع العالمي (مثل تحسين الوقت إلى الإصلاح الأول ، والحساب الميت ، واكتشاف المنحدر) ، والملاحة الداخلية (تغيير اكتشاف الأرضية ، واكتشاف المصعد) ، والملاحة الخارجية ، والتطبيقات الترفيهية والرياضية ، وتوقعات الطقس ، ومؤشر السرعة العمودية (الارتفاع / المغسلة) سرعة).
الخطوة السادسة: الخاتمة
نأمل أن يلهم هذا المشروع المزيد من التجارب. يمكن أن يتضمن إنشاء محطة طقس أكثر تطورًا بعض المستشعرات مثل مقياس المطر ومستشعر الضوء ومقياس شدة الرياح (سرعة الرياح) وما إلى ذلك. يمكنك إضافتها وتعديل الكود. لدينا فيديو تعليمي على YouTube يتضمن الوظائف الأساسية لمستشعر I²C مع Rasp Pi. إنه لأمر مدهش حقًا رؤية نتائج وعمل اتصالات I²C. تحقق من ذلك أيضًا واستمتع بالبناء والتعلم! يرجى إخبارنا برأيك في هذه التعليمات. نود إجراء بعض التحسينات إذا لزم الأمر.
موصى به:
محطة أرصاد جوية بسيطة باستخدام ESP8266: 6 خطوات (بالصور)
محطة طقس بسيطة باستخدام ESP8266: في هذا Instructable ، سأشارك كيفية استخدام ESP8266 للحصول على بيانات مثل درجة الحرارة والضغط والمناخ وما إلى ذلك ، وبيانات YouTube مثل Subscribers & amp؛ amp؛ إجمالي عدد المشاهدات. وعرض البيانات على الشاشة التسلسلية وعرضها على شاشة LCD. ستكون البيانات و
محطة أرصاد جوية صغيرة باستخدام Arduino و ThingSpeak: 4 خطوات
محطة طقس صغيرة باستخدام Arduino و ThingSpeak: مرحبًا بالجميع. في هذا Instructable ، سأوجهك خلال الخطوات لإنشاء محطة طقس صغيرة مخصصة. أيضًا ، سنستخدم ThingSpeak API لتحميل بيانات الطقس الخاصة بنا على خوادمهم ، أو ما هو الغرض من حالة الطقس
محطة أرصاد جوية بالطاقة الشمسية: 5 خطوات (بالصور)
محطة أرصاد جوية بالطاقة الشمسية المعيارية: أحد المشاريع التي أردت بناءها لبعض الوقت كان محطة أرصاد جوية معيارية. معياري بمعنى أنه يمكننا إضافة المستشعرات التي نريدها فقط عن طريق تغيير البرنامج. تنقسم محطة الطقس المعيارية إلى ثلاثة أجزاء. اللوحة الرئيسية بها W
برنامج MicroPython : محطة أرصاد جوية صغيرة: 7 خطوات
برنامج MicroPython : Mini Weather Station: إنه فصل الشتاء الآن ، لكنه لا يزال يشعر بالحرارة قليلاً ، على الرغم من أنني أرتدي قميصًا فقط ، مما يجعلني أرغب في معرفة درجة الحرارة الحالية ، لذلك أستخدم مستشعرات Micropython ESP32 و DHT11 ومحطة طقس بسيطة حتى تتمكن من الحصول على
محطة أرصاد جوية ESP32 تعمل بالطاقة الشمسية: 9 خطوات
ESP32 Weather Station بالطاقة الشمسية: في هذا البرنامج التعليمي سنقوم ببناء مشروع محطة طقس مزودة بتقنية WiFi ، الهدف هو تصميم محطة طقس تحتوي على جميع أنواع الريش الممكنة تقريبًا: عرض الظروف الحالية والوقت ودرجة الحرارة والرطوبة والضغط. دا