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

محطة طقس ذكية أخرى ، لكن : 6 خطوات (بالصور)
محطة طقس ذكية أخرى ، لكن : 6 خطوات (بالصور)

فيديو: محطة طقس ذكية أخرى ، لكن : 6 خطوات (بالصور)

فيديو: محطة طقس ذكية أخرى ، لكن : 6 خطوات (بالصور)
فيديو: مزايا رهيبة أغلبنا ما يعرف عنها في خرائط جوجل 2024, يونيو
Anonim
Image
Image
محطة طقس ذكية أخرى ، لكن …
محطة طقس ذكية أخرى ، لكن …
محطة طقس ذكية أخرى ، لكن …
محطة طقس ذكية أخرى ، لكن …
محطة طقس ذكية أخرى ، لكن …
محطة طقس ذكية أخرى ، لكن …

حسنًا ، أعلم أن هناك الكثير من محطات الطقس المماثلة المتاحة في كل مكان ، لكن استغرق بضع دقائق لترى الفرق …

  • طاقة منخفضة
  • عرضان للورق الإلكتروني …
  • لكن 10 شاشات مختلفة!
  • ESP32 مقرها
  • أجهزة استشعار التسارع ودرجة الحرارة / الرطوبة
  • تحديث واي فاي
  • حافظة مطبوعة ثلاثية الأبعاد

والكثير من الحيل المفيدة الأخرى …

الفكرة الرئيسية هي عرض معلومات مختلفة على كلا الشاشتين حسب اتجاه الصندوق. العلبة على شكل صندوق متوازي السطوح ، حجر رصف ، مع نوع من الحزام يعمل كقدم.

اللوازم

كما ترى ، يتكون النظام من شاشتين ورقيتين إلكترونيتين وصندوق طباعة ثلاثي الأبعاد. لكن هناك الكثير من الأشياء فيه:

  • ESP32
  • مقياس تسارع واحد MPU6050
  • مستشعر DHT22
  • بطارية LiPo
  • ثنائي الفينيل متعدد الكلور لتوصيل كل شيء
  • خيوط دوبونت محلية الصنع

واتصال Wi-Fi. في الواقع تم الإعلان عن 3 شبكات ، يقوم النظام باختبارها واحدة تلو الأخرى حتى ينجح في الاتصال.

الخطوة 1: لماذا محطة طقس أخرى؟

لماذا محطة طقس أخرى؟
لماذا محطة طقس أخرى؟
لماذا محطة طقس أخرى؟
لماذا محطة طقس أخرى؟
لماذا محطة طقس أخرى؟
لماذا محطة طقس أخرى؟
لماذا محطة طقس أخرى؟
لماذا محطة طقس أخرى؟

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

يكتشف مقياس التسارع الحركة والاتجاه ويطلق العروض.

لتوفير الطاقة ، اخترت الشاشات الورقية الإلكترونية (انظر المراجع أدناه) التي تحافظ على الشاشة حتى لو لم تعد تعمل بالطاقة. وبالمثل بالنسبة لـ ESP32 ، اخترت وحدة Lolin32 (المشهورة بالاقتصاد في استهلاكها) وكان علي أن أتعلم كيفية إدارة النوم العميق ، والاستيقاظ عند المقاطعة الناتجة عن مقياس التسارع.

تم توصيل الشاشات من خلال SPI ، لقد بحثت قليلاً قبل العثور على المسامير الصحيحة لتوصيلها بـ ESP32 ، مع العلم أنني بحاجة أيضًا إلى I2C لمقياس التسارع ، ودبوس لقراءة DHT22 و 2 آخرين لقياس جهد البطارية. يكاد يكون ESP32 مشحونًا بالكامل! مع العلم أن بعض المسامير للقراءة فقط (لقد استخدمت تلك الخاصة بمستشعر DHT) ، والبعض الآخر لا يمكن استخدامه مع Wifi ، فقد كان من الصعب بعض الشيء العثور على التكوين الصحيح.

يمكن توجيه الصندوق في 4 اتجاهات ، بالإضافة إلى أنه مسطح. كل هذا يجعل 4 * 2 + 2 = 10 أنواع ممكنة من المعلومات لعرضها في شاشتين فقط. لذلك يسمح لك بعرض الكثير من الأشياء:

  • التاريخ وقديس اليوم
  • الوقت الحالي
  • توقعات الطقس اليوم
  • توقعات الطقس للساعات القادمة
  • توقعات الطقس للأيام القادمة
  • مستوى شحن البطارية
  • وبما أنه لا يزال لدي مكان ، اقتباس عشوائي من موقع ويب متخصص.

الخطوة الثانية: ماذا تحتاج؟

ماذا تحتاج ؟
ماذا تحتاج ؟
ماذا تحتاج ؟
ماذا تحتاج ؟
ماذا تحتاج ؟
ماذا تحتاج ؟
  • ESP32: وحدة Lolin32 (طاقة منخفضة جدًا ، مزودة بموصل بطارية ، يمكنها شحن البطارية من خلال USB plus)
  • 2 شاشة epaper: 4.2 بوصة و 2.9 بوصة. اخترت النماذج من متجر Good Display.
  • مستشعر DHT22
  • MCU6050 مقياس التسارع - مستشعر الجيرومتر I2C
  • بطارية LiPo
  • لقياس جهد البطارية: 2 10 كيلو مقاومات ، 1100 كيلو المقاوم ، 1100nF مكثف ، 1 ترانزستور موسفيت
  • لحام الحديد ، لوحة الدوائر المطبوعة
  • الوصول إلى طابعة ثلاثية الأبعاد للحالة

تُظهر الصورة المرفقة موضع جميع المكونات الموجودة على PCB: كان علي توفير مساحة لتناسب العلبة ، والتي لا ينبغي أن تكون كبيرة جدًا.

من أجل الحصول على بيانات الطقس ، تحتاج أيضًا إلى التسجيل في واجهات برمجة تطبيقات الطقس ووضع مفاتيحك في الأماكن الصحيحة في ملف "Variables.h" (انظر أدناه).

مواقع الطقس:

  • ابيكسو
  • Accuweather

الخطوة 3: هذا المشروع جعلني أفكر وأتعلم الكثير …

جعلني هذا المشروع أفكر وأتعلم الكثير …
جعلني هذا المشروع أفكر وأتعلم الكثير …
جعلني هذا المشروع أفكر وأتعلم الكثير …
جعلني هذا المشروع أفكر وأتعلم الكثير …
جعلني هذا المشروع أفكر وأتعلم الكثير …
جعلني هذا المشروع أفكر وأتعلم الكثير …

كان من المفترض أن يكون هذا النظام منخفض الطاقة ، بحيث لا تحتاج إلى شحن البطارية كل ليلة … لتوفير الطاقة ، اخترت الشاشات الورقية الإلكترونية التي تحافظ على الشاشة حتى لو لم تعد تعمل. وبالمثل بالنسبة لـ ESP32 ، اخترت وحدة Lolin32 (المشهورة بالاقتصاد في استهلاكها) وكان علي أن أتعلم كيفية إدارة النوم العميق ، ونداء الاستيقاظ عند الانقطاع الناتج عن مقياس التسارع.

يمكن توجيه الصندوق في 4 اتجاهات ، أكثر مسطحة. كل هذا يجعل 4 * 2 + 2 = 10 أنواع ممكنة من المعلومات للعرض. لذلك فهي تتيح لك القيام بالعديد من الأشياء: التاريخ وقديس اليوم والوقت وتوقعات الطقس اليوم وتوقعات الطقس للساعات أو الأيام القادمة ومستوى شحن البطارية واقتباس عشوائي من موقع ويب متخصص.

هناك الكثير مما يجب البحث عنه على الإنترنت ، وكما تعلم: شبكة WiFi هي عدو توفير الطاقة …

لذلك يتعين علينا إدارة الاتصال ، لعرض أحدث المعلومات ولكن دون قضاء الكثير من الوقت في الاتصال. مشكلة أخرى معقدة نوعًا ما: الحفاظ على وقت دقيق إلى حد ما. لا أحتاج إلى RTC حيث يمكنني العثور على الوقت على الإنترنت ، لكن الساعة الداخلية لـ ESP32 تنجرف قليلاً ، خاصة أثناء فترات النوم. كان علي أن أجد طريقة للبقاء دقيقًا بدرجة كافية ، أثناء انتظار إعادة ضبط الساعة عن طريق الإنترنت. أقوم بإعادة مزامنته على الإنترنت كل ساعة.

لذلك هناك مفاضلة بين الاستقلالية (تكرار اتصالات الإنترنت) ودقة المعلومات المعروضة.

مشكلة أخرى يجب حلها هي الذاكرة. عندما يكون ESP32 في وضع السكون العميق ، يتم فقد الذاكرة ، باستثناء ما يسمى RTC RAM. يبلغ عرض هذه الذاكرة 4 ميغا بايت ، يمكن استخدام 2 منها فقط للبرنامج. في هذه الذاكرة ، يجب أن أقوم بتخزين متغيرات البرنامج المختلفة التي يجب الاحتفاظ بها من تنفيذ إلى آخر ، بعد مرحلة السكون: توقعات الطقس ، والوقت والتاريخ ، وأسماء ملفات الرموز ، والاقتباسات ، وما إلى ذلك ، كان علي أن أتعلم كيفية التعامل معها.

عند الحديث عن الرموز ، يتم تخزينها في SPIFFS ، نظام ملفات ESP32. بعد إغلاق واجهة برمجة تطبيقات الطقس Wunderground المجانية ، كان عليّ البحث عن موفري بيانات الطقس المجاني الآخرين. لقد اخترت اثنين: واحد لطقس اليوم الحالي ، مع توقعات لمدة 12 ساعة ، والآخر للتنبؤات متعددة الأيام. الأيقونات ليست هي نفسها ، لذلك تسبب لي في مشكلتين جديدتين:

  • اختر مجموعة أيقونات
  • طابق هذه الرموز مع أكواد التنبؤ الخاصة بالموقعين

تم تخزين هذه المراسلات أيضًا في ذاكرة الوصول العشوائي RTC بحيث لا يلزم إعادة تحميلها في كل مرة.

آخر مشكلة مع الرموز. من المستحيل تخزينها جميعًا في نظام SPIFFS. المساحة صغيرة جدًا لجميع ملفاتي. كان من الضروري القيام بضغط الصورة. لقد كتبت نصًا بلغة Python يقرأ ملفات الرموز الخاصة بي ويضغطها في RLE ، ثم قم بتخزين الملفات المضغوطة في SPIFFS. هناك عقدت.

لكن مكتبة عرض الورق الإلكتروني لا تأخذ سوى ملفات من نوع BMP ، وليس الصور المضغوطة. لذلك اضطررت إلى كتابة وظيفة إضافية لأتمكن من عرض أيقوناتي من هذه الملفات المضغوطة.

غالبًا ما تكون البيانات المقروءة على الإنترنت بتنسيق json: بيانات الطقس ، القديس اليوم. أستخدم مكتبة arduinoJson (العظيمة) لهذا الغرض. لكن الاقتباسات ليست كذلك. آخذها من موقع مخصص ، لذا لا بد لي من قراءتها من خلال النظر مباشرة في محتوى صفحة الويب. كان علي أن أكتب رمزًا محددًا لذلك. كل يوم ، حوالي منتصف الليل ، يذهب البرنامج إلى هذا الموقع ويقرأ حوالي عشرة عروض أسعار عشوائية ، ويخزنها في ذاكرة الوصول العشوائي RTC. يتم عرض أحدها عشوائيًا فيما بينها عندما يكون الغلاف موجهًا لشاشة كبيرة لأعلى.

أعبر لك عن مشكلة عرض الحروف المعلمة (آسف ، لكن الاقتباسات بالفرنسية)….

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

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

انظر خريطة الزرع: "المنطقة المحظورة" هي منطقة مخصصة لتوصيل كبل USB. تتيح لك وحدة Lolin32 إعادة شحن البطارية عبر USB: يتم شحن البطارية في حالة توصيل كبل USB ، وتعمل الوحدة في نفس الوقت.

النقطة الأخيرة: الخطوط. بأحجام مختلفة ، جريئة أم لا ، يجب إنشاؤها وتخزينها. تعتني مكتبة Adafruit GFX بهذا الأمر جيدًا ، بمجرد تثبيت ملفات الخطوط في الدليل الصحيح. لإنشاء الملفات ، استخدمت موقع Font Converter ، وهو مناسب جدًا!

تأكد من تحديد:

  • عرض المعاينة: TFT 2.4 بوصة
  • إصدار المكتبة: خط Adafruit GFX

إذن للتلخيص: مشروع كبير سمح لي بتعلم الكثير من الأشياء

الخطوة 4: استخدام شاشات عرض الورق الإلكتروني

استخدام عروض الورق الإلكتروني
استخدام عروض الورق الإلكتروني

العيب الرئيسي لهذه الشاشات واضح للعيان في الفيديو: يستغرق تحديث الشاشة ثانية أو ثانيتين ويتم عن طريق الوميض (عرض بديل للإصدارات العادية والمقلوبة للشاشتين). هذا مقبول لمعلومات الطقس لأنني لا أقوم بتحديثه كثيرًا (كل ساعة باستثناء تغيير اتجاه المربع). لكن ليس في ذلك الوقت. لهذا السبب (وللحد من الاستهلاك) ما زلت أستخدم شاشة HH: MM (وليس الثواني).

لذلك كان عليّ البحث عن طريقة أخرى لتحديث العرض. تدعم هذه الشاشات (بعضها) تحديثًا جزئيًا (يتم تطبيقه إما على منطقة من الشاشة ، أو على الشاشة بأكملها …) ولكنها لم تكن جيدة بالنسبة لي لأن شاشتي الكبيرة (التي تعرض الوقت) تحافظ على أشباح البكسل التي تم استبدالها. على سبيل المثال ، عند الانتقال من 10:12 إلى 10:13 ، يظهر الرقم "2" قليلاً داخل الرقم "3" ، ويصبح أكثر وضوحًا بعد "4" و "5" وما إلى ذلك. للإشارة إلى أن هذا هو الحال بالنسبة لشاشتي: لقد ناقشتها مع مؤلف مكتبة العرض الورقية الإلكترونية GxEPD2 الذي أخبرني أنه لم يلاحظ هذه الظاهرة بشاشاته الخاصة. حاولنا تغيير المعايير دون أن ننجح في اصطياد الأشباح.

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

الخطوة 5: صنعها

أصنعه
أصنعه
أصنعه
أصنعه
أصنعه
أصنعه
أصنعه
أصنعه

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

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

ربما سأكون مهتمًا أيضًا بالتحديث بواسطة OTA لإتقان كل شيء….

الخطوة 6: الكود والملفات

Image
Image

يتم توفير ثلاثة ملفات أرشيفية:

  • Weather station.zip: كود Arduino ، للتحميل باستخدام Arduino IDE
  • Boite ecran.zip: ملفات الطابعة CAD و 3D للحالة
  • data.zip: الملفات التي سيتم تحميلها في SPIFFS الخاص بـ ESP32.

إذا كنت لا تعرف كيفية تحميل الملفات إلى نظام SPIFFS الخاص بـ ESP32 ، فما عليك سوى قراءة هذا البرنامج التعليمي ، والذي يقدم مكونًا إضافيًا مفيدًا للغاية وكيفية استخدامه في Arduino IDE.

تختلف برمجة النوم العميق تمامًا عن البرمجة القياسية في Arduino. بالنسبة لـ ESP32 ، فهذا يعني أن ESP32 يستيقظ وينفذ الإعداد ، ثم ينتقل إلى وضع السكون. لذا ، فإن وظيفة الحلقة فارغة ، ولا يتم تنفيذها أبدًا.

يجب تشغيل بعض مراحل التهيئة مرة واحدة فقط عند التنفيذ الأول (مثل الحصول على الوقت ، وبيانات الطقس ، والاقتباسات ، وما إلى ذلك) ، لذلك يحتاج ESP32 إلى معرفة ما إذا كان التنبيه الحالي هو الأول أم لا: لذلك ، الحل هو تخزين متغير في ذاكرة الوصول العشوائي RTC (التي تظل نشطة حتى أثناء مراحل النوم العميق) والتي تزداد في كل إيقاظ. إذا كانت تساوي 1 ، فهذا هو أول تنفيذ ويقوم ESP32 بتشغيل مرحلة التهيئة ، وإلا يتم تخطي هذه المرحلة.

لإيقاظ ESP32 ، هناك عدة احتمالات:

  • استيقاظ الموقت: الكود يحسب مدة النوم العميق قبل النوم. يستخدم هذا لتحديث الوقت (كل 1 أو 2 أو 3 أو 5 دقائق) أو بيانات الطقس (كل 3 أو 4 ساعات) من اقتباسات وقديس اليوم (كل 24 ساعة)
  • تنبيه المقاطعة: يرسل مقياس التسارع إشارة تُستخدم لتنبيه ESP32. يستخدم هذا لاكتشاف تغيير الاتجاه وتحديث شاشات العرض
  • إيقاظ مستشعر اللمس: تم تجهيز ESP32 بعدة دبابيس تعمل كمستشعرات تعمل باللمس ، لكن لا يمكن استخدامها مع تنبيه المؤقت ، لذلك لم أستخدم هذا.

هناك حيل برمجة أخرى في مكان آخر في الكود ، للحفاظ على دقة الوقت مع توفير الطاقة (أي عدم توصيل خادم NTP كل دقيقة) ، لإزالة العلامات غير المدعومة من قبل مكتبة Adafruit GFX ، لتجنب تحديث العرض إذا ليس من الضروري ، لضبط معلمات مقياس التسارع خاصة لإيقاظ المقاطعة ، وحساب وقت النوم بدقة في حالة إيقاظ المؤقت ، وتجنب استخدام وحدة التحكم التسلسلية إذا لم تكن متصلة بـ IDE (لتوفير الطاقة مرة أخرى) ، افصل شبكة wifi عند عدم الحاجة إليها ، إلخ … والكود مليء بالتعليقات التي تساعد في فهم الوظائف.

شكرًا على قراءة هذا Instructable (أول واحد لي). أتمنى أن تعجبك وتستمتع بإنشاء محطة الطقس هذه

مسابقة أجهزة الاستشعار
مسابقة أجهزة الاستشعار

الوصيف في مسابقة أجهزة الاستشعار

موصى به: