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

محطة أرصاد جوية باستخدام Raspberry Pi مع BME280 في Python: 6 خطوات
محطة أرصاد جوية باستخدام Raspberry Pi مع BME280 في Python: 6 خطوات

فيديو: محطة أرصاد جوية باستخدام Raspberry Pi مع BME280 في Python: 6 خطوات

فيديو: محطة أرصاد جوية باستخدام Raspberry Pi مع BME280 في Python: 6 خطوات
فيديو: Raspberry Pi DHT22 Weather Station Project 2024, شهر نوفمبر
Anonim
Image
Image
فاتورة المعدات الحتمية
فاتورة المعدات الحتمية

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

برمجة Raspberry Pi في Python
برمجة 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. تحقق من ذلك أيضًا واستمتع بالبناء والتعلم! يرجى إخبارنا برأيك في هذه التعليمات. نود إجراء بعض التحسينات إذا لزم الأمر.

موصى به: