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

محطة الطقس NaTaLia: محطة أردينو تعمل بالطاقة الشمسية نفذت بالطريقة الصحيحة: 8 خطوات (بالصور)
محطة الطقس NaTaLia: محطة أردينو تعمل بالطاقة الشمسية نفذت بالطريقة الصحيحة: 8 خطوات (بالصور)

فيديو: محطة الطقس NaTaLia: محطة أردينو تعمل بالطاقة الشمسية نفذت بالطريقة الصحيحة: 8 خطوات (بالصور)

فيديو: محطة الطقس NaTaLia: محطة أردينو تعمل بالطاقة الشمسية نفذت بالطريقة الصحيحة: 8 خطوات (بالصور)
فيديو: مذيعتا ال OTV تغرقان في نوبة ضحك طريفة مباشرة على الهواء 2024, يوليو
Anonim
محطة الطقس NaTaLia: تمت محطة الطقس Arduino التي تعمل بالطاقة الشمسية بالطريقة الصحيحة
محطة الطقس NaTaLia: تمت محطة الطقس Arduino التي تعمل بالطاقة الشمسية بالطريقة الصحيحة
محطة الطقس NaTaLia: تمت محطة الطقس Arduino التي تعمل بالطاقة الشمسية بالطريقة الصحيحة
محطة الطقس NaTaLia: تمت محطة الطقس Arduino التي تعمل بالطاقة الشمسية بالطريقة الصحيحة

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

الخطوة 1: تشغيل محطة الطقس

1 ، جهاز الإرسال: صندوق خارجي مثبت مع لوحة شمسية يرسل قياس الطقس عن بُعد (درجة الحرارة ، الرطوبة ، مؤشر الحرارة ، قوة الطاقة الشمسية) بشكل دوري إلى وحدة الاستقبال الداخلية.

2 ، جهاز الاستقبال: وحدة داخلية مصنوعة من Raspberry PI 2 + Arduino Mega بها مستقبل RF 433 ميجا هرتز متصل لاستقبال البيانات. في الإعداد الخاص بي ، لا تحتوي هذه الوحدة على أي وظائف شاشة LCD محلية. إنها تجري بلا مبالاة. يعتني برنامج C الرئيسي باستلام البيانات الواردة من Arduino من خلال المسلسل ، ثم تسجيل البيانات في ملف نصي وإتاحة آخر البيانات المستلمة من خلال telnet للأجهزة الأخرى للاستعلام عنها.

تتحكم المحطة في الأضواء في منزلي من خلال قراءة المقاوم الضوئي (الذي يحدد ما إذا كان النهار أو الليل بالخارج). جهاز الاستقبال بدون رأس في حالتي ولكن يمكنك بسهولة تعديل المشروع لإضافة شاشة LCD. أحد الأجهزة التي تستخدم بيانات الطقس من المحطة ويحللها ويعرضها هو مشروعي الآخر: Ironforge the NetBSD Toaster.

الخطوة 2: الإصدارات الأولى

الإصدارات الأولى
الإصدارات الأولى
الإصدارات الأولى
الإصدارات الأولى
الإصدارات الأولى
الإصدارات الأولى
الإصدارات الأولى
الإصدارات الأولى

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

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

إن استخدام جهاز كمبيوتر كبير مثل raspberry pi أو جهاز wifi متعطش للطاقة مثل ESP فقط لجمع ونقل بضع بتات من بيانات الطقس سيكون مبالغة ولكن كما سأعرضه في هذا البرنامج التعليمي حتى لو كانت لوحة Arduino صغيرة.

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

في الصورة الأولى ، يمكنك رؤية أول محطة (Arduino Nano Based) وثاني لوحة Arduino Barebone Atmega 328P.

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

كانت جميع الإصدارات تستخدم البطارية التالية:

18650 6000 مللي أمبير بطارية ليثيوم أيون محمية قابلة لإعادة الشحن لوحة حماية مدمجة

تحديث على بطاريات سكام فاير هذه. على الرغم من أن هذا أمر قديم إلى حد ما ، إلا أنني ما زلت أشعر بأنني مضطر لتصحيحه بسبب هذه البطارية الزائفة. لا تشتري البطارية المذكورة ، قم بأبحاثك الخاصة حول بطاريات LION / LIPO الأخرى ، ستعمل جميع البطاريات 3.7 فولت مع هذا المشروع.

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

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

مقال صغير عن بطاريات LION / LIPO: https://learn.adafruit.com/li-ion-and-lipoly-batte …

TLDR:

ما يعنيه هذا هو أن أقصى جهد للخلية هو 4.2 فولت وأن الجهد "الاسمي" (المتوسط) هو 3.7 فولت.

على سبيل المثال ، فيما يلي ملف تعريف للجهد لبطارية 3.7 فولت / 4.2 فولت "كلاسيكية". يبدأ الجهد عند 4.2 كحد أقصى وينخفض بسرعة إلى حوالي 3.7 فولت لمعظم عمر البطارية. بمجرد أن تصل إلى 3.4 فولت ، تكون البطارية ميتة وعند 3.0 فولت تقوم دائرة القطع بفصل البطارية.

قياساتي باستخدام الحمل الوهمي:

البطارية مشحونة: 4.1 فولت

ضبط القطع على: 3.4 فولت

محاكاة التحميل: 0.15A (كان جهازي يعاني من مشكلة في الانتقال إلى مستوى أقل من ذلك).

السعة المقاسة: 0.77Ah تمنحها 0.8 Ah مجانًا أي 800mAh بدلاً من 6000mAh المعلن عنها!

نظرًا لأن هذه البطارية لا تحتوي حتى على دائرة حماية ، يمكنني أن أخفضها بحرية ولكن عند 3.4 فولت بعد 10 دقائق ، فإنها تتعطل بالفعل إلى 3.0 فولت.

لذلك ، من خلال حسابات بسيطة ، توفر البطارية:

نظري

جهد البطارية = 3.7 فولت

الطاقة = 3.7x6000 = 22000 ميغاواط ساعة

حقيقة

جهد البطارية = 3.7VPower = 3.7x800 = 2960 mWh

الإصدار: 0.1 يعتمد على ARDUINO NANO

حتى مع مكتبة LowPower ، يستهلك Arduino nano حوالي 16 مللي أمبير (في وضع السكون) -> فشل.

نظري

Pavg = VxIavg = 5Vx16mA = 80 ميجاوات

عمر البطارية = 22000/80 = 275 ساعة = 11 يومًا تقريبًا

RealPavg = VxIavg = 5Vx16mA = 80 ميجاوات

عمر البطارية = 800/80 = 10 ساعات

الإصدار: 0.2 Atmega 328P Barebone

تعتمد الطاقة التي يستهلكها ATmega328 كثيرًا على ما تفعله به. بمجرد الجلوس هناك في الحالة الافتراضية ، يمكنه استخدام 16mA @ 5V أثناء التشغيل بسرعة 16 ميجا هرتز.

عندما يكون ATmega328P في الوضع النشط ، فإنه سينفذ باستمرار عدة ملايين من التعليمات في الثانية. علاوة على ذلك ، المحول التناظري إلى الرقمي على اللوحة (ADC) ، والواجهة الطرفية التسلسلية (SPI) ، والمؤقت 0 ، 1 ، 2 ، واجهة سلكية (I2C) ، USART ، Watchdog Timer (WDT) ، واكتشاف براون التدريجي (BOD) تستهلك الطاقة.

لتوفير الطاقة ، تدعم وحدة MCU ATmega328P عددًا من أوضاع السكون ويمكن إيقاف تشغيل الأجهزة الطرفية غير المستخدمة. تختلف أوضاع النوم في الأجزاء التي تظل نشطة ، حسب مدة النوم والوقت اللازم للاستيقاظ (فترة الاستيقاظ). يمكن التحكم في وضع السكون والأجهزة الطرفية النشطة من خلال مكتبات النوم والطاقة AVR أو ، بشكل أكثر إيجازًا ، من خلال مكتبة Low-Power الممتازة.

مكتبة Low Power سهلة الاستخدام لكنها قوية جدًا. العبارة LowPower.powerDown (SLEEP_8S، ADC_OFF، BOD_OFF) ؛ يضع MCU في SLEEP_MODE_PWR_DOWN لمدة 16 مللي ثانية إلى 8 ثوانٍ ، اعتمادًا على الوسيطة الأولى. يقوم بتعطيل ADC و BOD. يعني سكون خفض الطاقة أن جميع وظائف الرقاقة معطلة حتى المقاطعة التالية. علاوة على ذلك ، يتم إيقاف المذبذب الخارجي. يمكن فقط لمقاطعات المستوى على INT1 و INT2 أو مقاطعات تغيير الدبوس أو تطابق عنوان TWI / I2C أو WDT ، إذا تم تمكينها ، تنشيط MCU. لذلك باستخدام العبارة الواحدة ، ستقلل من استهلاك الطاقة. بالنسبة إلى 3.3 V Pro Mini بدون مؤشر LED للطاقة وبدون منظم (انظر أدناه) الذي يقوم بتشغيل البيان ، فإن استهلاك الطاقة هو 4.5 ميكرو أمبير. هذا قريب جدًا مما هو مذكور في ورقة بيانات ATmega328P للنوم مع خفض الطاقة مع تمكين WDT من 4.2 μA (ورقة بيانات مرتبطة بالمصادر). لذلك ، أنا واثق تمامًا من أن وظيفة powerDown تغلق كل ما هو ممكن بشكل معقول. باستخدام العبارة LowPower.powerDown (SLEEP_FOREVER، ADC_OFF، BOD_OFF) ؛ سيتم تعطيل WDT ولن تستيقظ حتى يتم تشغيل المقاطعة.

لذلك من خلال الإعداد المجرد ، يمكننا وضع الشريحة في وضع السكون لمدة 5 دقائق ، بينما تستهلك كمية قليلة جدًا من الطاقة (0.04 مللي أمبير بدون الأجهزة الطرفية). ومع ذلك ، هذه ليست سوى شريحة Atmega 328P المزودة بمذبذب بلوري ولا شيء آخر ، فإن معزز الجهد المستخدم في هذا التكوين لزيادة جهد البطارية من 3.7 فولت -> 5.0 فولت يستهلك أيضًا 0.01 مللي أمبير.

كان أحد استنزاف الجهد المستمر هو المقاوم الضوئي الإضافي الذي أدى إلى زيادة الاستهلاك في وضع السكون إلى إجمالي 1 مللي أمبير (وهذا يشمل جميع المكونات).

معادلة حساب الاستهلاك الدقيق للجهاز في وضعي السكون والاستيقاظ هي:

Iavg = (طن * أيون + تسليب * إيسليب) / (طن + تسليب)

أيون = 13 مللي أمبير

يأتي هذا في الغالب من جهاز الإرسال RF433 Mhz:

المرسل:

جهد العمل: 3 فولت - 12 فولت كحد أقصى. استخدام الطاقة 12 فولت تيار العمل: كحد أقصى أقل من 40 مللي أمبير كحد أقصى ، و 9 دقائق كحد أقصى وضع الرنين: (SAW) وضع التعديل: ASK تردد العمل: Eve 315 ميجا هرتز أو 433 ميجا هرتز قوة النقل: 25 ميجا واط (315 ميجا هرتز عند 12 فولت) خطأ التردد: + 150 كيلو هرتز (بحد أقصى) السرعة: أقل من 10 كيلو بت في الثانية

Isleep = 1mA

سيكون أقل بكثير بدون المقاوم الضوئي.

زمن الترونون طن = 250 مللي ثانية = 0.25 ثانية

وقت النوم Tsleep = 5 min = 300s

Iavg = (طن * أيون + تسليب * إيسليب) / (طن + تسليب)

Iavg = (0.25 ثانية * 13 مللي أمبير + 300 ثانية * 1 مللي أمبير) / (0.25 ثانية + 300 ثانية)

إيفج = 1.26 مللي أمبير

Pavg = VxIavg = 5Vx1.26mA = 6 ميجاوات

نظري

عمر البطارية = 22000 ميجا واط / 6 ميجا واط = 3666 ساعة = 152 يومًا تقريبًا

حقيقة

عمر البطارية = 800 ميجا واط / 6 ميجا واط = 133 ساعة = 5.5 يوم تقريبًا

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

لا تتردد في بناء المحطة وكتابة نتائجك وحساباتك في التعليقات وسوف أقوم بتحديث المقالة. سأكون ممتنًا أيضًا للنتائج مع وحدات MCU المختلفة وتعزيز المحولات.

الخطوة الثالثة: بناء محطة أرصاد جوية ناجحة

بناء محطة أرصاد جوية ناجحة
بناء محطة أرصاد جوية ناجحة
بناء محطة أرصاد جوية ناجحة
بناء محطة أرصاد جوية ناجحة
بناء محطة أرصاد جوية ناجحة
بناء محطة أرصاد جوية ناجحة
بناء محطة أرصاد جوية ناجحة
بناء محطة أرصاد جوية ناجحة

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

الوحدة الصغيرة الجديدة في الصورة التي لا تحتوي حتى على مؤشر أدى بالفعل إلى استنزاف 3mA (* FAIL *) من تلقاء نفسها ، لذلك بقيت مع لوحي القديم:

PFM Control DC-DC USB 0.9 فولت -5 فولت إلى 5 فولت تيار مستمر دفعة وحدة إمداد الطاقة

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

الخطوة 4: قائمة الأجهزة

قائمة الأجهزة
قائمة الأجهزة
  • 18650 6000 مللي أمبير بطارية ليثيوم أيون محمية قابلة لإعادة الشحن لوحة حماية مدمجة
  • Atmega 328P16M 5V مع محمل الإقلاع
  • مجموعة Adafruit DC Boarduino (متوافقة مع Arduino) (w / ATmega328) <سيكون هذا استثمارًا جيدًا إذا كنت تقوم بمشاريع مجردة في المستقبل
  • مقاوم للصور حساس للضوء مقاوم ضوئي Optoresistor 5mm GL5539
  • 1A 1000V ديود 1N4007 IN4007 DO-41 الثنائيات المعدل
  • PFM Control DC-DC USB 0.9 فولت -5 فولت إلى 5 فولت تيار مستمر دفعة وحدة إمداد الطاقة
  • 1.6 واط 5.5 فولت 266 مللي أمبير وحدة صغيرة للطاقة الشمسية نظام شاحن خلية الايبوكسي DIY
  • TP405 5V Mini USB 1A وحدة شاحن بطارية الليثيوم
  • 433Mhz RF الارسال والاستقبال مجموعة ل Arduino / ARM / MC التحكم عن بعد <مجموعة ، تحتوي على كل من جهاز الإرسال وجهاز الإحياء
  • IP65 التبديل حامي صندوق تقاطع الضميمة للماء في الهواء الطلق 150x110x70mm
  • وحدة استشعار درجة الحرارة والرطوبة النسبية الجديدة DHT22 لاردوينو
  • 1x220 أوم ، 2x10KOhm ، 1xLED ، 1xMini Switch ، 1x1N4007diode
  • مذبذب / مذبذب سيراميك Adafruit 16 ميجاهرتز [ADA1873]
  • Arduino UNO / Mega وما إلى ذلك لمحطة الاستقبال + Raspberry PI 1/2/3
  • صندوق بلاستيك أكريليك شفاف (اختياري)

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

ملاحظات حول قائمة الأجهزة:

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

يحتوي الشاحن الشمسي على مصباحي LED ملونين صغيرين يتم تشغيلهما فقط في حالة الشحن بالطاقة الشمسية ويشيران إلى (أحمر-> شحن ، أزرق-> حالات مشحونة بالكامل). يمكن أن تكون هذه غير ملحومة كذلك. بل إنه يعطي القليل من الطاقة الإضافية للبطارية أثناء الشحن.

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

لوحة شحن بطارية الليثيوم TP405 5V Mini USB 1A: للأسف لا تتضمن هذه اللوحة حماية التيار العكسي للوحة الشمسية ، لذلك ستحتاج إلى وضع صمام ثنائي إضافي بين ساق واحدة من اللوحة الشمسية ودائرة الشحن لإيقاف المحاولة الحالية لتتدفق مرة أخرى إلى الألواح الشمسية في الليل.

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

المجسم
المجسم
المجسم
المجسم
المجسم
المجسم

تحتوي هذه اللوحة على مكونات قليلة نسبيًا والعلامات الموجودة على اللوحة بسيطة إلى حد ما.

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

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

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

LED: تمت إضافة مؤشر LED الموجود في الجزء السفلي من الصندوق في الأصل ليومض عند وجود إرسال لاسلكي صادر ، لكنني اعتبرته لاحقًا مضيعة للطاقة ولا يومض إلا 3 مرات في عملية التمهيد.

TP: نقطة اختبار لقياس التيار للدائرة الكلية.

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

الخطوة 6: تصميم الحالة

تصميم الهيكل
تصميم الهيكل
تصميم الهيكل
تصميم الهيكل
تصميم الهيكل
تصميم الهيكل

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

يمكن استخدام صندوق خارجي اختياريًا لجعل المحطة أكثر مقاومة للماء في حالة تركيبها على عمود صحن مفتوح.

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

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

الخطوة 7: البرمجيات

برمجة
برمجة

سيتطلب رمز البرنامج 3 مكتبات خارجية (LowPower ، DHT ، VirtualWire). واجهت مشكلة في العثور على بعضها بسهولة عبر الإنترنت مؤخرًا ، لذا قمت بإرفاقها في ملف ZIP منفصل. بغض النظر عن نظام التشغيل الذي تستخدمه Linux / Windows ، ما عليك سوى العثور على مجلد مكتبة Arduino IDE واستخراجها هناك.

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

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

لقد وجدت أن خفض معدل البث بالباود سيزيد من استقرار البث اللاسلكي. ترسل المحطة كمية صغيرة جدًا من البيانات ، 300 بت في الثانية أكثر من كافية. لا تنس أيضًا أن جهاز الإرسال يعمل فقط من حوالي. 4.8V ، في الإصدار 3.3V المستقبلي ، قد يؤدي ذلك إلى جودة إرسال أسوأ (إرسال البيانات عبر الجدران والعقبات الأخرى). واجهت مشكلة في استخدام Arduino Mega المتصل بـ Raspberry PI 2 لتشغيل Mega من PI ، ولم أتلق أي إرسال. كان الحل هو تشغيل ميجا من مصدر خارجي منفصل بجهد 12 فولت.

الخطوة 8: الإصدار 2 (يعتمد على ESP32)

الإصدار 2 (يعتمد على ESP32)
الإصدار 2 (يعتمد على ESP32)
الإصدار 2 (يعتمد على ESP32)
الإصدار 2 (يعتمد على ESP32)
الإصدار 2 (يعتمد على ESP32)
الإصدار 2 (يعتمد على ESP32)

كل شيء يمكن أن ينكسر سوف ينكسر على حد تعبير مورفي العجوز الجيد ، وفي النهاية بعد سنوات فشلت المحطات بطرق غامضة. بدأ أحدهم في إرسال بيانات شمسية رطانة وصلت إلى عشرات الآلاف ، وهو أمر مستحيل بسبب: تحتوي لوحة Arduino على 6 قنوات (8 قنوات على Mini و Nano ، و 16 على Mega) ، ومحول تناظري إلى رقمي 10 بت. هذا يعني أنه سيعين الفولتية المدخلة بين 0 و 5 فولت في قيم عدد صحيح بين 0 و 1023. لذلك بعد استبدال الراديو ، LDR وإعادة برمجة Atmega 328P عدة مرات استسلمت وقررت أن الوقت قد حان للابتكار. دعنا نذهب ESP32.

اللوحة التي استخدمتها كانت: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

متحكم ESP-32

جهد التشغيل 3.3 فولت دبابيس إدخال / إخراج رقمية 19 دبابيس إدخال تناظرية 6 ساعات سرعة (حد أقصى) 240 ميجا هرتز فلاش 4 ميجا بايت طول 5 مللي متر عرض 2.54 مللي متر وزن 4 جرام

والتي على عكس الصورة لا تحتوي على شعار LOLIN (مزيف من الصين). كانت المفاجأة السارة الأولى لي أن pinout المطبوع على السبورة كان متطابقًا مع pinout Arduino! بعد التعامل مع العديد من اللوحات بدون اسم حيث كان عليّ البحث عن pinouts طوال اليوم ، متعبًا ميتًا وارتكب أخطاء أخيرًا لوحة حيث يكون pinout مستقيمًا إلى الأمام WoW!

لكن ها هو الجانب المظلم من القصة:

في البداية ، قمت بتوصيل LDR بـ A15 وهو رقم التعريف الشخصي 12 لأنه كان من الأسهل توصيل المسامير معًا. ثم حصلت على 4095 قراءة (وهو الحد الأقصى الذي يمكنك الحصول عليه باستخدام AnlogRead على ESP32) مما دفعني إلى الجنون لأن السبب الكامل وراء إعادة بناء المحطة كان قراءات LDR المكسورة من القديم (كان DHT لا يزال يعمل بشكل جيد). لذلك اتضح أن:

يدمج esp 32 اثنين من سجلات ACD ذات 12 بت. ADC1 مثقال ذرة 8 قنوات متصلة GPIOs 32-39 و ADC2 مثقال ذرة 10 قنوات في دبابيس أخرى.الشيء هو أن ESP32 يستخدم ADC2 لإدارة وظائف wifi ، لذلك إذا كنت تستخدم Wifi ، فلا يمكنك استخدام هذا التسجيل. تدعم واجهة برمجة تطبيقات برنامج تشغيل ADC ADC1 (8 قنوات متصلة بـ GPIOs 32-39) و ADC2 (10 قنوات متصلة بـ GPIOs 0 و 2 و 4 و 12-15 و 25-27). ومع ذلك ، فإن استخدام ADC2 له بعض القيود على التطبيق:

يتم استخدام ADC2 بواسطة برنامج تشغيل Wi-Fi. لذلك لا يمكن للتطبيق استخدام ADC2 إلا في حالة عدم بدء تشغيل برنامج تشغيل Wi-Fi. تُستخدم بعض دبابيس ADC2 كدبابيس ربط (GPIO 0 ، 2 ، 15) وبالتالي لا يمكن استخدامها بحرية. هذا هو الحال في مجموعات التطوير الرسمية التالية:

لذا ، فإن توصيل LDR من الدبوس 12 إلى A0 وهو VP حل كل شيء ولكني لا أفهم لماذا قاموا حتى بإدراج دبابيس ADC2 على أنها متاحة للصانعين. كم عدد الهووبيين الآخرين الذين أضاعوا أطنانًا من الوقت حتى اكتشفوا ذلك؟ على الأقل قم بتمييز الدبابيس غير القابلة للاستخدام باللون الأحمر أو شيء ما أو لا تذكرها في الدليل على الإطلاق حتى يتمكن المصنّعون الآخرون من التعرف عليها فقط إذا كانوا في حاجة إليها حقًا. الغرض الكامل من ESP32 هو استخدامه مع WIFI ، يستخدمه الجميع مع WIFI.

بداية جيدة لكيفية إعداد Arduino IDE لهذه اللوحة:

على الرغم من أنني وضعته في الكود هنا ، فإنه يذهب مرة أخرى:

قد لا يتم تجميع هذا الرمز لطرازات ESP32 الأخرى غير Weemos LOLIN 32!

إعدادات البناء: -استخدام التحميل / التسلسلي: 115200 -استخدام وحدة المعالجة المركزية / ذاكرة الوصول العشوائي: 240 ميجاهرتز (Wifi | BT) - استخدام تردد الفلاش: 80 ميجاهرتز

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

لقد كانت مفاجأة سارة مرة أخرى أن وضع النوم العميق يعمل كما هو معلن عنه. أثناء النوم العميق ، كان التيار منخفضًا جدًا لدرجة أن جهاز القياس المتعدد الرخيص الخاص بي لم يتمكن من قياسه (يعمل بالنسبة لي).

أثناء إرسال البيانات ، كان التيار حوالي 80 مللي أمبير (وهو حوالي 5 مرات أكثر مما كان عليه عندما كان Atmega 328P يستيقظ وينقل) ، ولكن لا تنس أنه مع V1 كان هناك استنزاف طاقة 1mA على LDR في وضع السكون (والتي اعتمدت أيضًا على مستويات الضوء وانتقلت من 0.5mA - 1mA) التي اختفت الآن.

الآن بعد أن تم الكشف عن بطارية UltraFire إذا كنت تستخدم نفس البطارية هنا ، هذا ما يمكنك توقعه:

Iavg = (طن * أيون + تسليب * إيسليب) / (طن + تسليب)

Iavg = (2s * 80mA + 300s * 0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 ميجاوات

نظري

عمر البطارية = 22000 ميجا واط / 2.5 ميجا واط = 8800 ساعة = 366 يومًا تقريبًا

حقيقة

عمر البطارية = 800 ميجا واط / 2.5 ميجا واط = 320 ساعة = 13 يومًا تقريبًا

لم يكن لدي مجال لقياس وقت التشغيل بدقة ، ولكن مع التعديلات التي أجريها ، يتم إيقاف تشغيله في حوالي ثانيتين.

لم أكن أرغب في قضاء فترة ما بعد الظهيرة في كل شيء مخصص للترميز ، لذلك بحثت عن بعض محطات الطقس الأخرى على Instructables استنادًا إلى ESP32 لمعرفة ما يفعلونه لتخزين البيانات. لاحظت للأسف أنهم يستخدمون مواقع غير مرنة ومحدودة مثل weathercloud. نظرًا لأنني لست من محبي "السحابة" وقد تعطلت الشفرة الخاصة بهم منذ فترة طويلة لأن الموقع قد غير واجهة برمجة التطبيقات الخاصة به منذ ذلك الحين ، فقد استغرقت 10 دقائق لعمل حل مخصص لأنه ليس بالصعوبة التي قد يظنها المرء. هيا بنا نبدأ!

بادئ ذي بدء ، لا توجد لوحة دوائر كهربائية الموافقة المسبقة عن علم بشكل منفصل لهذا المشروع ، لأنه يستخدم نفس المكونات بالضبط (آسف لذلك الملحوم في صورة اللوح القبيح) مثل V1 مع اختلاف أن كل شيء يعمل على 3.3V. تم توصيل DHT بسحب إلى VCC ، وتم سحب LDR لأسفل بـ 10 كيلو. المشكلة التي قد يراها المرء مع 18650 بطارية مثل المزيفة الصينية (6500 mAh ultra sun fire lol: D) هي أنها تبدأ منحنى التفريغ من حوالي 4.1V عصر جديد وتستمر حتى تبدأ دائرة القطع الخاصة بها لوقف تلف الخلايا (أولئك الذين يحالفهم الحظ في الحصول عليها). هذا ليس جيدًا بالنسبة لنا كمدخلات 3.3 فولت. على الرغم من أن لوحة LOLIN هذه تحتوي على موصل بطارية ليثيوم ودائرة شحن في هذا المشروع ، إلا أنني أردت تجديد معظم ما استطعت من المحطة القديمة ، لذلك مع 18650 القديم ، لا يمكنك استخدام هذا الشاحن المدمج. كان الحل بسيطًا للغاية: لقد قطعت كبل USB صغيرًا ملحومًا بجهد 5 فولت من معزز الجهد القديم وتم حل مشكلة فويلا ، نظرًا لأن اللوحة الموجودة على microUSB بها منظم.

لذا فإن الاختلاف بين الإصدارين القديم والجديد في البطارية القديمة يوفر 3.7 فولت -> مُعزز إلى 5 فولت -> يعمل ardu على 5 فولت -> تعمل جميع المكونات على 5 فولت.

في الجهاز الجديد: توفر البطارية 3.7 فولت -> معززة إلى 5 فولت -> يتم تنظيمها من خلال تسجيل داخلي على ESP32 -> تعمل جميع المكونات على 3.3 فولت.

من ناحية البرامج ، سنحتاج إلى مكتبة DHT أخرى أيضًا ، فإن DHT الخاص بـ Arduino غير متوافق مع ESP. ما نحتاجه يسمى DHT ESP.

لقد بدأت في تأسيس الكود الخاص بي حول مثال DHT الذي قدمه هذا الرمز. عمل الكود هو:

1 ، احصل على البيانات البيئية من بيانات DHT + الشمسية من الخلية الكهروضوئية

2 ، قم بالاتصال بشبكة wifi باستخدام IP ثابت

3 ، انشر البيانات إلى برنامج نصي PHP

4 ، اذهب للنوم لمدة 10 دقائق

كما ستلاحظ ، قمت بضبط الكود لتحقيق الكفاءة لتقليل وقت الاستيقاظ تمامًا نظرًا لأنه يستنزف 5 مرات من الطاقة مقارنة بالمشروع القديم عند تشغيله. كيف فعلت هذا؟ بادئ ذي بدء ، إذا كان هناك أي نوع من الخطأ ، فستعود وظيفة getTemperature () مع خطأ (مما يعني 10 دقائق من النوم مرة أخرى). يمكن أن يكون هذا مثل مستشعر DHT أو أن اتصال wifi غير متاح. كما تلاحظ ، تمت إزالة حلقة while () المعتادة لمواصلة تجربة ارتباط wifi إلى الأبد ، ولكن يجب ترك تأخير لمدة ثانية واحدة هناك وإلا فلن يتم الاتصال دائمًا ويعتمد أيضًا على نوع AP والتحميل وما إلى ذلك مدى سرعته سيحدث ، مع 0.5 ثانية حصلت على سلوك غير متناسق (في بعض الأحيان لا يمكن الاتصال). إذا كان أي شخص يعرف طريقة أفضل للقيام بذلك ، فيرجى تركه في التعليقات. فقط عندما تتم قراءة بيانات DHT ويكون اتصال wifi قيد التشغيل ، سيحاول إرسال البيانات إلى البرنامج النصي على خادم الويب. يتم تعطيل جميع أنواع وظائف إهدار الوقت مثل Serial.println () في وضع التشغيل العادي أيضًا. بصفتي خادمًا ، أستخدم IP أيضًا لتجنب البحث غير الضروري عن DNS ، في الكود الخاص بي ، تم تعيين كل من البوابة الافتراضية وخادم نظام أسماء النطاقات على 0.0.0.0.

لا أفهم سبب صعوبة إنشاء واجهة برمجة التطبيقات الخاصة بك عندما يكون كل ما يتطلبه الأمر هو:

sprintf (استجابة ، "temp =٪ d & hum =٪ d & hi =٪ d & sol =٪ d" ، temp ، hum ، hi ، sol) ؛

int httpResponseCode = http. POST (استجابة) ؛

يمكنك وضع رمز php الصغير هذا على أي raspberry pi ويمكنك القيام بمهام النظام () على الفور بناءً على القياس عن بُعد مثل تشغيل المراوح أو تشغيل الأضواء إذا كانت مظلمة بدرجة كافية.

بعض الملاحظات حول الكود:

WiFi.config (staticIP، gateway، subnet، dns) ؛ // يجب أن يبدأ بعد Wifi كم هو غبي …

WiFi.mode (WIFI_STA) ؛ // MUST وإلا فإنها ستنشئ نقطة وصول غير مرغوب فيها

حسنًا ، أنت تعلم الآن. يمكن أيضًا تغيير ترتيب تكوينات IP من خلال الأنظمة الأساسية ، لقد جربت أمثلة أخرى أولاً حيث تم تبديل قيم البوابة والشبكة الفرعية. لماذا يتم تعيين IP ثابت؟ حسنًا ، من الواضح تمامًا ، إذا كان لديك مربع مخصص على شبكتك مثل خادم linux يعمل على isc dhcpd ، فأنت لا تريد مائة مليون إدخال سجل من وقت تنشيط ESP والحصول على IP من DHCP. لا تقوم أجهزة التوجيه عادةً بتسجيل الارتباطات بحيث لا تتم رؤيتها. هذا هو ثمن توفير الطاقة.

لم يكن V2 قادرًا على الحفاظ على نفسه أبدًا بسبب البطارية ذات الجودة السيئة ، وقد قمت ببساطة بوضعه على محول ، لذلك إذا كنت ترغب في بناء V1 أو V2 ، فلا تشتري البطارية المذكورة ، فقم بإجراء البحث الخاص بك على البطاريات (أي 18650 أكثر من 2000mAh السعة المعلن عنها على Ebay هي عملية احتيال ذات احتمالية عالية).

موصى به: