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

محطة الطقس Inky_pHAT: 5 خطوات
محطة الطقس Inky_pHAT: 5 خطوات

فيديو: محطة الطقس Inky_pHAT: 5 خطوات

فيديو: محطة الطقس Inky_pHAT: 5 خطوات
فيديو: Tech Note 100 - ESP32 7.5” e-Paper Weather Display - 'Goes Large!' 2024, يوليو
Anonim
محطة الطقس Inky_pHAT
محطة الطقس Inky_pHAT
محطة الطقس Inky_pHAT
محطة الطقس Inky_pHAT
محطة الطقس Inky_pHAT
محطة الطقس Inky_pHAT
محطة الطقس Inky_pHAT
محطة الطقس Inky_pHAT

أود هنا أن أصف محطة طقس بسيطة للغاية ومضغوطة تستند إلى Raspberry Pi Zero ، والتي تعرض القيم التي تم قياسها بواسطة مستشعر درجة الحرارة / الضغط / الرطوبة BME280 على شاشة Pimoroni Inky pHAT e-paper / e-ink. للسماح بتوصيل المستشعرات و pHAT بـ GPIO الخاص بـ Pi ، قمت بوضع متسلل Pimorini Pico HAT برأسين أنثيين متصلان بين GPIO والشاشة. تم استخدام الجهاز لتوصيل العديد من أجهزة الاستشعار ، لذا فإن إصدار BME280 الموصوف هنا هو مجرد مثال.

على عكس شاشات LCD ، فإن شاشات الحبر الإلكتروني تحافظ على الصورة حتى في حالة انقطاع التيار الكهربائي. لذلك فهي حل جيد جدًا إذا كنت ترغب في عرض المعلومات التي يتم تحديثها من وقت لآخر ، خاصة لبناء أجهزة منخفضة الطاقة. الميزة الرئيسية للنسخة أحادية اللون / السوداء من Inky pHAT هي أن تحديث الشاشة يستغرق حوالي ثانية واحدة فقط ، بدلاً من 10 إلى 15 ثانية التي تتطلبها الإصدارات ثلاثية الألوان. شاهد الفيلم.

تتيح مكتبة Blinka في Adafruit تشغيل كود Circuit Python على Raspberry Pi ، وتتوفر عينات Circuit Python لمجموعة متنوعة من أجهزة الاستشعار من Adafruit. يمكن العثور على وصف تفصيلي لكيفية تثبيت رموز Blinka و Circuit Python على موقع Adafruit على الويب. كانت المكتبات التي اختبرتها حتى الآن (BMP280 ، BME280 ، TSL2591 ، TCS34785 ، VEML7065 ، …) تعمل بشكل جيد للغاية ، بينما كانت هناك مشكلات بسيطة في بعض نماذج الرموز.

BME280 هو جهاز استشعار لقياس درجة الحرارة والرطوبة والضغط الجوي. تتوفر اختراقات BMP280 من العديد من البائعين ، بما في ذلك Adafruit ، لكنني هنا كنت أستخدم نسخة صينية رخيصة. يرجى العلم أن هؤلاء يستخدمون عناوين i2c مختلفة (Adafruit: 0x77 ، والبعض الآخر: 0x76).

يتم توصيل الاختراق بـ Pi بواسطة i2c ، وقراءة المستشعر بسيطة للغاية باستخدام المكتبة وكود المثال.

الخطوة 1: المواد المستخدمة

المواد المستخدمة
المواد المستخدمة
المواد المستخدمة
المواد المستخدمة
المواد المستخدمة
المواد المستخدمة
المواد المستخدمة
المواد المستخدمة

A Raspberry Pi Zero ، مع رأس ذكر مرفق. لكن أي إصدار Raspberry Pi سيفي بالغرض.

Pimoroni Inky pHAT ، إصدار أسود / أحادي اللون ، 25 يورو | 22 جنيهًا إسترلينيًا | 20 دولارًا أمريكيًا ، في بيموروني.

قرصان Pimoroni Pico HAT ، 2.50 يورو | 2 جنيه إسترليني ، مع رأسيتين متصلتين ، أحدهما رأس معززة مع دبابيس أطول. لقد قمت ببناء نسختين مختلفتين ، انظر الوصف أدناه.

اختراق BME280 ، تسليم AZ عبر Amazon.de @ 7.50 € ، مع رأس مرفقة.

استطالة الكابلات العبور

اختياري:

حزمة طاقة USB لتطبيقات الهاتف المحمول

مبيت لـ Pi أو الجهاز (غير معروض هنا)

الخطوة 2: التجميع

المجسم
المجسم
المجسم
المجسم
المجسم
المجسم
  • جندى الرؤوس الأنثوية لقرصنة Pico HAT. قبل اللحام ، تحقق من الاتجاه الصحيح. لقد قمت ببناء نسختين من هذا ، لأغراض مختلفة. واحد مع رأس معزز متجه لأسفل يوضع في الصف الأمامي ورأس عادي ، أعلى / مواجه في الصف الخلفي ، وإصدار مع رأس معزز متجه لأسفل في الصف الخلفي ، ورأس أنثى بزاوية يمنى في الصف الأمامي. انظر الصور. يسمح الإصدار الأول بإرفاق المستشعرات والكابلات وتبادلها بسهولة بالغة ، بينما يسمح الإصدار ذو الرأس المواجه للداخل بتضمين Pi والمستشعر و Inky pHAT في غلاف. بدلاً من ذلك ، يمكنك لحام الكابلات التي تربط GPIO والمستشعر مباشرة بقراصنة Pico HAT و / أو لحام متسلل Pico HAT مباشرة إلى دبابيس GPIO. في أي حال ، استخدم الحد الأدنى من اللحام المطلوب.
  • لحام رأس جهاز الاستشعار ، إذا لزم الأمر.
  • قم بتكديس وحدة Pico HAT hacker المعدلة على Pi ، ثم أضف Inky pHAT. إذا لزم الأمر ، أدخل بعض الدعم ، على سبيل المثال كتلة رغوة أو حواجز ، للحبر pHAT.
  • قم بتوصيل الكابلات والمستشعر باستخدام منافذ 3V و GND و SDA و SCL. لن تصمد جميع المستشعرات بجهد 5 فولت ، لذا يرجى التحقق قبل توصيلها بمنافذ 5 فولت.
  • قم بتثبيت مكتبة Blinka ، ثم قم بتثبيت مكتبة Circuit Python BME280 من Adafruit.
  • قم بتثبيت مكتبة Inky pHAT من Pimoroni.
  • قم بتثبيت مثال كود Python الموضح في خطوة لاحقة وإرفاقه بهذا الدليل.
  • قم بتشغيل الكود.

الخطوة الثالثة: استخدام الجهاز

استخدام الجهاز
استخدام الجهاز

هناك خياران لاستخدام الجهاز.

يجب بدء تشغيل الكود كما هو موضح هنا باستخدام شاشة مرفقة ، ولكن بعد ذلك يمكن تشغيله بدون.

مع تعديلات طفيفة على الكود ، يمكنك استخدام crontab لإجراء قياسات في نقاط زمنية محددة. سيسمح هذا بتقليل استهلاك الطاقة بشكل أكبر. يمكن العثور على أوصاف ممتازة حول كيفية استخدام crontab في مكان آخر.

بالاقتران مع حزمة الطاقة ، يمكنك بناء جهاز محمول واستخدامه لقياس الظروف في الداخل أو الخارج ، في الثلاجة ، في الساونا ، صندوق الترطيب ، قبو النبيذ ، في الطائرة ،….

باستخدام Zero W ، لا يجوز لك عرض القيم على الشاشة فحسب ، بل يمكنك أيضًا إرسالها إلى خادم أو موقع الويب الخاص بك عبر WLAN ، كما هو موضح في مكان آخر.

الخطوة 4: البرنامج النصي BME280

البرنامج النصي BME280
البرنامج النصي BME280

كما ذكرنا سابقًا ، تحتاج إلى تثبيت مكتبات Adafruit Blinka و Circuit Python BME280 بالإضافة إلى مكتبة Pimoroni Inky pHAT.

يقوم الرمز أولاً بتهيئة المستشعر وقيمة pHAT الحبرية ، ثم يقرأ قيم درجة الحرارة والضغط والرطوبة من المستشعر ويعرضها على الشاشة وشاشة الحبر الإلكتروني. باستخدام الأمر time.sleep () ، يتم أخذ القياسات كل دقيقة. اضبط على النحو المطلوب. من خلال تعيين معلمة اللغة ، يمكنك تغيير اللغة المستخدمة لعرض النتائج.

باستخدام شاشة Inky pHAT e-ink ، تقوم أولاً ببناء الصورة ليتم عرضها في الذاكرة قبل أن يتم نقلها أخيرًا إلى الشاشة باستخدام الأمر inkyphat.show (). تعمل مكتبة Inky pHAT على تبسيط العملية ، حيث تقدم أوامر لرسم وتنسيق النص أو الخطوط أو المستطيلات أو الدوائر أو استخدام صور الخلفية.

بالإضافة إلى القيم المقاسة ، يتم عرض وقت القياس أيضًا.

يرجى أن تضع في اعتبارك أن البرنامج النصي وكذلك المكتبات مكتوبة بلغة Python 3 ، لذا افتحها وقم بتشغيلها باستخدام Py3 IDLE أو ما يعادلها.

# برنامج نصي لمستشعر درجة الحرارة / الضغط / الرطوبة bme280 (إصدار غير Adafruit) # و pHAT المحبر - الإصدار الأسود # # إصدار ديسمبر 01 2018 ، يتطلب الدكتور H # # مكتبات Adafruit Blinka و Circuit Python BME280 # و Pimoroni Inky مكتبة pHAT استيراد وقت استيراد تاريخ ووقت استيراد لوحة استيراد busio من adafruit_bme280 استيراد Adafruit_BME280 من adafruit_bme280 استيراد Adafruit_BME280_I2C استيراد نظام استيراد inkyphat من PIL استيراد ImageFont inkyphat.set_colour ("أسود") # لـ b / w inky_rot displayyphat 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne، 27) # حدد الخط القياسي font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne، 19) # حدد بيانات الخط القياسي # lang = "DE" # تعيين معلمة اللغة ، افتراضي ("") -> english lang = "EN" i2c = busio. I2C (board. SCL، board. SDA) bmp = Adafruit_BME280_I2C (i2c، address = 0x76) # عنوان i2c افتراضي (لـ Adafruit BMP280) 0x77 (افتراضي) ، 0x76 للاختراق الصيني) # مجموعة الضغط المرجعي # مطلوب لـ al حساب ، يرجى ضبط. القيمة القياسية 1013.25 hPa # إدخال يدوي: #reference_hPa = input ("أدخل الضغط المرجعي في hPa:") # أو # اضبط الضغط في وقت البدء كمرجع ، على سبيل المثال لقياسات الارتفاع النسبي time.sleep (1) # انتظر ثانية قبل القياس الأول j = 0 pres_norm_sum = 0 بينما j في النطاق (5): # خذ خمسة قياسات لتحديد القيمة المرجعية pres_norm_sum = pres_norm_sum + bmp.pressure j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum / j) # تعيين القياس الأولي كنقطة مرجعية لتمكين قياسات الارتفاع القيم t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # محسوبة بواسطة مكتبة adafruit من الضغط #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:٪ Y-٪ m-٪ d} '. format (ts) # timestamp - date، EN format ts0_DE =' {:٪ d.٪ m.٪ Y} '. format (ts) # timestamp - date، German format ts1 =' {: ٪ H:٪ M:٪ S} '. format (ts) # timestamp - time tmp = "{0: 0.1f}". format (t) pre = "{0: 0.1f}". format (p) hyg = "{0: 0.1f}". format (h) alt="{0: 0.1f}". format (a) tText = "Temp.:" pText_EN = "Pressure:" pText_DE = "Luftdruck:" h Text_EN = "الرطوبة:" hText_DE = "rel. LF: "aText_EN =" الارتفاع: "aText_DE =" Höhe üNN: "# exakt: ü. NHN ، über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText =: # default english ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # قيم طباعة لعرض print (ts) print (tText، tmp، "° C") print (pText، pre، "hPa") print (hText، hyg، "٪") print (aText، alt، "m") print () # قيم طباعة إلى Inky pHAT t1 = 5 # tab 1 ، العمود الأول ، يبسط تحسين التخطيط t2 = 110 # tab 2 ، العمود الثاني inkyphat. clear () inkyphat.text ((t1، 0)، ts0، inkyphat. BLACK، font2) # write timestamp date inkyphat.text ((t2، 0)، ts1، inkyphat. BLACK، font2) # write timestamp time inkyphat.line ((t1، 25، 207، 25)، 1، 3) # ارسم خط inkyphat.text ((t1، 30)، tText، inkyphat. BLACK، font2) inkyphat.text ((t2، 30)، (tmp + "° C")، inkyphat. BLACK، font2) inkyphat.text ((t1، 55)، pText، inkyphat. BLACK، font2) inkyphat.text ((t2، 55)، (pre + "hPa")، inkyphat. أسود ، font2) inkyphat.text ((t1، 80)، hText، inkyphat. BLACK، font2) inkyphat.text ((t2، 80)، (hyg + "٪")، inkyphat. BLACK، font2) # أو عرض الارتفاع المحسوب # inkyphat.text ((t1، 80)، aText، inkyphat. BLACK، font2) # inkyphat.text ((t2، 80)، (alt + "m")، inkyphat. BLACK، font2) inkyphat.show () time.sleep (51) # انتظر بضع ثوان قبل القياسات التالية ، +19 ثانية لكل دورة inkyphat.clear () # فارغ Inky pHAT إجراء عرض ، inkyphat.show () # silence for crontab-version

الخطوة 5: البرنامج النصي BMP280

إن BMP280 مشابه جدًا لمستشعر BME280 ، ولكنه يقيس درجة الحرارة والضغط فقط. البرامج النصية متشابهة جدًا ، لكنك تحتاج إلى مكتبات Circuit Python مختلفة. هنا بدلاً من الرطوبة ، يتم عرض ارتفاع محسوب ، بناءً على ضغط مرجعي.

تعلق تجد البرنامج النصي.

موصى به: