قمت بتحسين ترموستات غرفتي ، الذي كتبت عنه سابقًا ، شرعت في استكماله بمستشعر درجة حرارة لاسلكي لقياس درجة حرارة الهواء في الهواء الطلق ، وتجميع منظم حرارة يعمل بالبطارية واستبدال وحدات مرسل / استقبال RF 433 ميجا هرتز مع زوج آخر من وحدات الراديو مع نطاق اتصال أطول بجهد إمداد لا أكثر من 3V. في سياق حل هذه المشاكل ، ظهرت محطة الطقس المستقلة ، والتي سيتم مناقشتها أدناه.
تتكون محطة الطقس من عقدتين ، دعنا نطلق عليهم محلل ومقياس حرارة للبساطة. التواصل بين العقد - اللاسلكية ، على الهواء.
يعتمد المحلل على وحدة التحكم ATMEGA328P ويقيس درجة الحرارة والرطوبة في الغرفة (مستشعر درجة الحرارة والرطوبة DHT22) وفولتية تزويد المحلل ، والتي يتم توفيرها بواسطة بطاريتي AA 1.5V. تستقبل وحدة التحكم إشارة من مستقبل LoRa ، والتي تستقبل معلومات من مقياس الحرارة (المستشعر عن بُعد) عبر الهواء. يتم عرض المعلومات من وحدة التحكم على شاشة LCD الخاصة بـ NOKIA 5110.
مقياس الحرارة ، الذي تم تجميعه أيضًا على وحدة التحكم ATMEGA328P ، يقيس درجة الحرارة في الهواء الطلق (مستشعر درجة الحرارة DS18B20) وجهد الإمداد للوحدة البعيدة ، المنظمة على بطاريتين بحجم 1.5 فولت AA ، ويقوم جهاز إرسال LoRa لهذه الوحدة بنقل درجة الحرارة وتزويد الجهد إلى المحلل.
يتم وضع وحدة التحكم ATMEGA328P وجهاز إرسال LoRa الخاص بمقياس الحرارة في وضع السكون لتوفير طاقة البطارية بعد القياسات وإرسال المعلومات. يتم تطبيق جهد تزويد الطاقة لجهاز استشعار DS18B20 برمجياً فقط لمدة قياس درجة الحرارة. يتم إجراء القياس وإرسال البيانات من ميزان الحرارة لمدة دقيقة تقريبًا.
في نفس وضع العمل والنوم ، يعمل المحلل أيضًا. مدة تحكم وجهاز الاستقبال محلل لعدة ثوان أكثر من دقيقة واحدة. يتم ذلك لتلقي الإشارة بثقة من مقياس الحرارة - لأن تشغيل مقياس الحرارة والمحلل غير متزامنين. ثم يتم وضع ATMEGA328P وجهاز الاستقبال LoRa في وضع السكون لمدة 14 دقيقة قبل الاستيقاظ وبدء الدورة التالية. يوفر DHT22 الطاقة فقط أثناء القياس.
لبرمجة وضع السكون لوحدات التحكم ATMEGA328P ، يتم استخدام مكتبة LowPower.h.
مع تفريغ البطاريات ، تنخفض قيمة الجهد عليها.
الحد الأدنى لجهد التشغيل لوحدة التحكم ATMEGA328P هو 1.8 فولت. في نفس الوقت ، تم إجراء التثبيت من المصنع من الصمامات ATMEGA328P لمراقبة عتبة امدادات التيار الكهربائي من 2.7V ، لذلك فمن الضروري تغيير إعدادات المصنع من الصمامات إلى عتبة المراقبة من 1.8V لضمان تشغيل وحدة تحكم عند تشغيل البطاريات الميتة.
قد لا يبدأ مولد وحدة التحكم الداخلية بتردد 16 MHz بجهد إمداد 3 فولت أو أقل قليلاً. تعمل كلتا المتحكمتين مع كوارتز 16 ميجا هرتز بجهد إمداد مخفض قدره 2.7 ... 2.8 فولت ، لذلك لم أغير كوارتز 16 ميجا هرتز إلى 8 ميجا هرتز.
لتجميع الجهاز ، ستحتاج إلى مكونات ، يتم عرض قائمة بها وتكلفتها المقدرة بأسعار موقع AliExpress في الجدول.
عنصر | السعر ، $ |
محلل |
تحكم ATMEGA328P-PU | 1.59 |
استشعار درجة الحرارة والرطوبة DHT22 | 2.34 |
لورا را - 01 الارسال | 3.95 |
LCD نوكيا 5110 | 1.91 |
لوح اللوح (التركيب) ، أسلاك التركيب ، بطاريات AA ، مرنان كوارتز 16 ميجا هرتز ، مقاومات ، إلخ. | 4.00 |
ميزان الحرارة |
تحكم ATMEGA328P-PU | 1.59 |
استشعار درجة الحرارة DS18B20 | 0.63 |
لورا را - 01 الارسال | 3.95 |
لوحة التطوير (الألياف الزجاجية) ، أسلاك التركيب ، بطاريات AA ، مرنان كوارتز 16 ميجا هرتز ، مقاومات ، إلخ. | 4.00 |
المجموع (تقريبًا): | 24 |
محلل
الدماغ محلل هو وحدة تحكم ATMEGA328P. يستقبل إشارات من جهاز استشعار DHT22 ويتواصل ، من خلال بروتوكول SPI ، مع مستقبل LoRa وشاشة نوكيا 5110.
هناك العديد من الشكاوى على الإنترنت حول دقة منخفضة من DHT22. يوجد اليوم بديل: أجهزة استشعار درجة الحرارة والرطوبة الحديثة HTU21 (GY21) ، (Vcc = 3 ... 5 V) ، Si7021 ، (Vcc = 1.9 ... 3.6 V) ، SHT21 ، (Vcc = 2.1 .... 3.6 فولت).
أستخدم DHT22 ، نظرًا لأن التباين بين قراءات الرطوبة لعيناتي لهذا المستشعر ومقياس الحرارة الحرارية المتوفر تجاريًا من LaCrosse WS-9024IT ، لا يزيد عن 8 وحدات ، وهو أمر مقبول تمامًا للأغراض المنزلية. يزداد التباين بين قراءات الرطوبة بشكل كبير إذا كان جهد تزويد DHT22 أقل من 3V. هذا أمر مفهوم ، لأن الجهد الكهربائي لل DHT22 يجب أن يكون ضمن 3 ... 5V. تلخيص - مثالي في هذه الظروف ، يلائم مستشعر Si7021 دائرة التحليل.
في الصورة أدناه - pinout لعناصر محطة الطقس.
يمكن قراءة الاندماج والمزيد من وحدات التحكم المختلفة ، بما في ذلك ATMEGA328P ، وتحريرها باستخدام الأداة المساعدة SinaProg. إذا كانت هذه هي المرة الأولى التي تواجه فيها هذا البرنامج ، فعلى الرغم من الواجهة البديهية ، لا تحاول البدء في العمل معه بعد تثبيت التطبيق. اقرئي أولاً هذه المقالة التي يوفر فيها HWman الوظائف الإضافية اللازمة لـ SinaProg عند استخدام لوحة Arduino UNO بمثابة أداة تحميل.
أنصحك أولاً بقراءة إعدادات المصنع الخاصة بالاندماج ATMEGA328P وحفظ قيمها من أجل العودة إليها في حالة الفشل. في وحدات التحكم الخاصة بي ، تكون إعدادات المصنع لبتة المصهر: LOW: 0xFF ، عالية: 0xDE ، ممدودة: 0x05 (Vcc = 2.7V ، BODLEVEL = 101). الصمامات الجديدة لمراقبة عتبة 1.8V التي تريد تعيينها: LOW: 0xFF ، HIGH: 0xDE ، ممدودة: 0x06 (Vcc = 1.8V ، BODLEVEL = 110).
رسم محلل للتحميل في ATMEGA328P تحت المفسد.
رسم محلل"حزب الشعب الكمبودي
/ *
محطة الطقس مستقلة على وحدة تحكم ATMEGA328P والبطارية بالطاقة مع جهاز استشعار لاسلكي عن بعد ، محلل
https://habr.com/ru/post/470381/
* /
# تضمين <SPI.h>
# تضمين <LoRa.h>
# تضمين <DHT.h>
#define DHTPIN 3 // ما هو الرقم الرقمي الذي نتصل به
#define DHTTYPE DHT22 // DHT 22 (AM2302)، AM2321
DHT DHT (DHTPIN ، DHTTYPE) ؛
تعويم القصدير = 0 ؛
int Hin = 0؛
تعويم BatteryInLevel. // قاعدة بطارية الجهد
سلسلة LoRaData ، Tout_str ، BatteryInLevel_str ، BatteryOutLevel_str؛
// النوم
# تضمين <LowPower.h>
#define PowerDHT (4) // DHT22 power pin
غير الموقعة int sleepCounter.
// نوكيا 5110
# تضمين <SPI.h>
#include <Adafruit_GFX.h> //https://esp8266.ru/forum/threads/esp8266-5110-nokia-lcd.1143/#post-16942
#include <Adafruit_PCD8544.h> //https://esp8266.ru/forum/threads/esp8266-5110-nokia-lcd.1143/#post-16942
// الموقت
# تتضمن <SimpleTimer.h>
SimpleTimer الموقت.
Adafruit_PCD8544 display = Adafruit_PCD8544 (5، 7، 6)؛
باطل sendSensor () {
digitalWrite (PowerDHT ، 1) ؛
تأخير (2000) ؛
Hin = dht.readHumidity () ؛
القصدير = dht.readTemperature () ؛
/ * if (isnan (Hin) || isnan (Tin)) {
// Serial.println ("فشل في القراءة من جهاز استشعار DHT!") ؛
العودة؛
} * /
digitalWrite (PowerDHT، 0)؛
// قياس الجهد البطارية:
التناظرية (الداخلي) ؛
int sensorValue = analogRead (A4)؛
BatteryInLevel = (sensorValue * 3.2 / 1024) ؛
}
قرعة باطلة ()
display.clearDisplay () ؛
// تين
{
display.setTextSize (2) ؛
display.setCursor (8، 0)؛
display.println (تين ، 1) ؛ // مكان عشري واحد
display.setCursor (68، 0)؛
display.println ("C") ؛
}
// هين
{
display.setTextSize (2) ؛
display.setCursor (8، 16)؛
display.println (String (Hin) + "٪")؛
}
// توت
{
char chr_Tout [12] ؛
Tout_str.toCharArray (chr_Tout، 5)؛
display.setTextSize (1) ؛
display.setCursor (50، 16)؛
display.println (String (chr_Tout) + "C")؛
}
// البطارية خارج المستوى
{
char chr_BatteryOutLevel [12]؛
BatteryOutLevel_str.toCharArray (chr_BatteryOutLevel، 4)؛
display.setTextSize (1) ؛
display.setCursor (2، 32)؛
display.println ("BAT Out:" + String (chr_BatteryOutLevel) + "V")؛
}
// البطارية في المستوى
{
display.setTextSize (1) ؛
display.setCursor (2، 40)؛
display.println ("BAT In:„)؛
display.setCursor (56، 40)؛
display.println (BatteryInLevel، 1)؛ // مكان عشري واحد
display.setCursor (74، 40)؛
display.println ("V") ؛
}
display.display () ؛
/ *
Serial.println ("Tin:" + String (Tin) + "* C") ؛
Serial.println ("Hin:" + String (Hin) + "٪")؛
Serial.println ("Tout:" + String (Tout_str) + "* C")؛
Serial.println ("BAT_In:" + String (BatteryInLevel) + "V")؛
Serial.println ("BAT_Out:" + String (BatteryOutLevel_str) + "V")؛
Serial.println ("......") ؛
* /
}
باطل sleepDevice () {
// sleepCounter = 65 - 10 دقيقة
// sleepCounter = 91 - 14 دقيقة
لـ (sleepCounter = 91 ؛ sleepCounter> 0 ؛ sleepCounter--) // 91 !!!
{
LoRa.sleep () ؛
LowPower.powerDown (SLEEP_8S، ADC_OFF، BOD_OFF)؛
}
LoRa.sleep () ؛
}
باطلة SignalReception () {
/ / حاول تحليل الحزمة
int packetSize = LoRa.parsePacket ()؛
if (packetSize) {
// قراءة الحزمة
بينما (LoRa.available ()) {
LoRaData = LoRa.readString () ؛
// Serial.println ("مقبول:" + (LoRaData)) ؛
}
int pos1 = LoRaData.indexOf ('#') ؛
Tout_str = LoRaData.substring (0 ، pos1) ؛
BatteryOutLevel_str = LoRaData.substring (pos1 + 1، LoRaData.length ())؛
}
}
إعداد باطل () {
//Serial.begin(9600)؛
pinMode (PowerDHT ، OUTPUT) ؛
// تهيئة ومسح الشاشة
display.begin ()؛
display.clearDisplay () ؛
display.display () ؛
display.setContrast (60) ؛ / / تعيين التباين
display.clearDisplay () ؛
display.setTextSize (2) ؛
display.setCursor (12، 16)؛
display.println (">>>>>")؛ // مؤشر على بداية العمل عند تشغيله
display.display () ؛
dht.begin ()؛
sendSensor () ؛
رسم () ؛
بينما (! LoRa.begin (433E6)) {
//Serial.println (".") ؛
تأخير (500) ؛
}
// نطاق كلمة المزامنة بين "0 - 0xFF".
LoRa.setSyncWord (0xF3) ؛
//Serial.println (wonLoRa Initializing ")؛
timer.setInterval (20000 ، sendSensor) ؛
timer.setInterval (5000 ، التعادل) ؛
timer.setInterval (65000 ، sleepDevice) ؛
}
حلقة باطلة () {
SignalReception () ؛
timer.run () ؛
}
`` ``
للعمل مع وحدات التحكم ATMEGA328P ، استخدم لوحة Arduino UNO كمبرمج. يوجد مقطع فيديو جيد على Youtube حول تثبيت محمل الإقلاع وتنزيل الرسومات على وحدة التحكم ATMEGA328 باستخدام لوحة Arduino UNO.
علق الرسم خارج الأوامر الخاصة بالإخراج إلى شاشة المنفذ التسلسلي (المسلسل). عدم الراحة إذا لزم الأمر.
تبدأ الدورة من خلال الاستماع إلى البث وتلقي المعلومات بواسطة مستقبل LoRa. ضبط الموقت وقت الاستماع - 65 ثانية. في هذا الوقت ، خلال فترة 5 ثوانٍ ، يتم تحديث المعلومات على شاشة NOKIA ، وخلال فترة 20 ثانية (3 مرات) ، يقوم جهاز استشعار DHT22 بقياس درجة الحرارة والرطوبة وأيضًا مستوى الجهد للبطاريات من خلال أحد المدخلات التناظرية لوحدة التحكم. لا يتم تطبيق جهد الإمداد بـ DHT22 إلا أثناء القياسات مع تأخير لا يقل عن ثانيتين ، حيث لا يزال المستشعر يعمل. يتم قياس ناتج ADC في الرسم إلى الجهد للبطاريات الجديدة ، والتي هي 3.2 فولت (1.6 فولت × 2). تم اختيار وقت الاستماع للهواء أكثر بقليل من دقيقة واحدة لاستلام حزمة واحدة بثقة من مقياس حرارة يعمل على الإرسال لمدة 1 دقيقة ، ولكن أكثر من ذلك أدناه. ثم ، في الثانية والستين ، يتم وضع وحدة التحكم والمتلقي في وضع السكون ، والذي يستمر حوالي 14 دقيقة ، أي مدة دورة "العمل / النوم" للمحلل حوالي 15 دقيقة. ألاحظ أن وضع السكون في المحلل هو إجراء قسري مصمم لتقليل الاستهلاك بشكل كبير.
للمقارنة ، يوضح الجدول أدناه خصائص جهاز قياس درجة الحرارة الحرارية LaCrosse WS-9024IT والمحلل من هذا المشروع.
معلمة | لاكروس WS-9024IT | Sadil_TM |
طعام | 2xAA ، 3B ، دوراسيل | 2xAA ، 3V ، GP Ultra + ، 1800 مللي أمبير في الساعة |
استهلاك النوم | | 350 (A (10 μA) |
مدة النوم | | 14 دقيقة |
الاستهلاك التشغيلي | <200 μA | 12-18 مللي أمبير |
مدة العمل | | حوالي 1 دقيقة |
العمل / فترة دورة النوم | | 15 دقيقة |
وقت التشغيل | حوالي 2 سنوات | حوالي 2.5 أشهر |
الاستهلاك الحالي للكروس يرقص كثيرا. في الجدول ، أعطيت القيمة القصوى المقاسة لإظهار ترتيب الاستهلاك: لا يزيد عن مائتي ميكروب.
أردت أن أكمل الجدول بنتائج تطورات مماثلة للهواة ، لكنني لم أجد شيئًا. ربما لأن معظم الهواة يخرجون المعلومات من أجهزة الاستشعار إلى جهاز كمبيوتر أو جهاز لوحي أو هاتف ذكي أو في طريقهم إلى إحدى الخدمات على الشبكة حيث توجد مشكلة توفير عمر البطارية ببساطة.
المساهم الرئيسي في نوم محلل (350 μA) هو LCD. إذا قمت بإيقاف تشغيله ، فسوف ينخفض الاستهلاك إلى 10 μA. يحدث استهلاك الذروة البالغ 18 مللي أمبير عندما يستقبل مستقبل LoRa الإشارة من جهاز الإرسال ، لكن الإشارة تأخذ بضع ميكروثانية. هذه المرة قصيرة جدًا مقارنة بالدقيقة التي يكون فيها جهاز الاستقبال في وضع الاستماع واستهلاك 10 مللي أمبير ، لذلك لم أضع هذه الذروة القصيرة الأجل في الاعتبار عند حساب وقت التشغيل على مجموعة واحدة من البطاريات.
حساب ساعات العمل.
متوسط الاستهلاك الحالي: 10 مللي أمبير / 15 + 0.35 مللي أمبير = 1.0 مللي أمبير ، حيث 15 هي دورة العمل. وقت التشغيل: 1800 مللي أمبير * ساعة / 1.0 مللي أمبير = 1800 ساعة (2.5 أشهر).
سأوضح:
- الحساب تقريبي للغاية.
- تعتمد ساعات عمل لاكروس على تجربتي الخاصة. لقد كان هذا الجهاز لفترة طويلة.
ميزان الحرارة
يتم تقليل السعة والجهد للبطاريات في الطقس البارد بشكل كبير . لذلك ، من أجل عدم تعريض البطاريات والجهاز ككل لمثل هذه الاختبارات القوية ، أخرجت فقط جهاز استشعار درجة الحرارة DS18B20 خارج الغرفة ، وكانت الوحدة والبطاريات في الغرفة. يتصل DS18B20 بلوحة المضيف بكابل رفيع من ثلاثة أسلاك. لقد رصدت هذا الحل في محطة الطقس التسلسلية الخاصة بي - حيث أن المطورين متأكدون من أنه ستكون هناك دائمًا فجوة في الشقة لوضع الأسلاك التي يبلغ قطرها عدة ملليمترات.
الصمامات في ميزان الحرارة ATMEGA328P هي نفسها بالنسبة للمحلل.
تم بناء مجموعة مقياس الحرارة أيضًا على وحدة التحكم ATMEGA328P. يستقبل الإشارة من جهاز استشعار DS18B20 ، ويقيس جهد التيار الكهربائي ويتحكم في جهاز إرسال LoRa.
رسم مقياس الحرارة تحت المفسد.
رسم مقياس الحرارة #include <OneWire.h> OneWire ds(7); //pin 13, Atmega328P #include <SPI.h> #include <LoRa.h> #include <LowPower.h> #define PowerDS18B20 (6) //pin 12 (Atmega328P), e DS18B20 unsigned int sleepCounter; // , float Tout; // int i; // (20 1 ) String messageTout; // LoRa- float batteryLevel; // const int batteryPin = A0; // pin 23 (Atmega328P), void Measurement () { // byte data[2]; digitalWrite(PowerDS18B20, 1); ds.reset(); ds.write(0xCC); // (1 ) ds.write(0x44); // delay(700); ds.reset(); ds.write(0xCC); ds.write(0xBE); // data[0] = ds.read(); data[1] = ds.read(); Tout = ((data[1] << 8) | data[0]) * 0.0625; // Serial.println("Tout= "+ String(Tout)); digitalWrite(PowerDS18B20, 0); // : analogReference(INTERNAL); int sensorValue = analogRead(A0); batteryLevel = (sensorValue * 3.2 / 1024); // Serial.println("BAT= "+ String(batteryLevel)); } void SetSynchLoRa () { int counter = 0; while (!LoRa.begin(433E6) && counter < 10) { // Serial.print("."); counter++; delay(500); } LoRa.setTxPower(4); // 2-20 /* if (counter == 10) { // Serial.println("Failed to initialize ..."); }*/ LoRa.setSyncWord(0xF3); } void SendMessage () { // (, ) messageTout = String(Tout) + "#" + String(batteryLevel); // Serial.println(messageTout); delay(250); LoRa.beginPacket(); LoRa.print(messageTout); LoRa.endPacket(); } void setup() { //Serial.begin(9600); // Serial.println("Initializing ..."); pinMode(PowerDS18B20, OUTPUT); SetSynchLoRa (); } void loop() { //Serial.println(""); //Serial.println("i = " + String(i)); if (i >= 30) { // i >= 30 (1 ) — (, — 1 /1 ) for (sleepCounter = 5; sleepCounter > 0; sleepCounter--) { LoRa.sleep (); LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); } Measurement (); SendMessage (); LoRa.sleep (); } else { // 1 , — 1 /2 Measurement (); SendMessage (); delay (1000); } i++; if (i >= 30) i = 30; // }
يوفر زوج من مرسل مستقبل LoRa اتصالًا مستقرًا على مسافة 1.5 كم مع إمكانية رؤية مباشرة وما يصل إلى 300 متر في المناطق الحضرية ، بالطبع ، بحد أقصى أو قريب من أقصى قدرة إرسال: dB 17-20. للاتصال مستقر داخل الشقة ، وكان 4 ديسيبل بما فيه الكفاية.
في البداية ، عند توصيل الطاقة ، يعمل مقياس الحرارة في وضع مكثف لمدة دقيقة واحدة. إنه يقيس درجة حرارة الجهد الكهربائي للبطاريات ويرسل قيمه على الهواء كل ثانيتين. هذا هو للراحة. افترض أنك لست مضطرًا للانتظار لمدة دقيقة عند استبدال البطاريات أو تصحيح الأخطاء. ستظهر المعلومات من المستشعر على شاشة محلل في الثواني الأولى بعد توصيل بطاريات مقياس الحرارة والمحلل. وبطبيعة الحال ، يجب عليك التعجيل وعدم ترك فجوة زمنية لأكثر من دقيقة واحدة بين توصيل البطاريات على كلا العقدتين.
ثم يذهب المستشعر عن بعد إلى الوضع العادي. بعد قياس وإرسال المعلومات التي تدوم أكثر بقليل من الثانية الأولى ، يتم وضع وحدة التحكم والارسال في وضع السكون للبرنامج لمدة دقيقة واحدة تقريبًا.
حساب ساعات العمل.
متوسط الاستهلاك الحالي: 14 مللي أمبير / 60 + 0.005 مللي أمبير = 0.24 مللي أمبير ، حيث 60 هو دورة العمل. وقت التشغيل: 1800 مللي أمبير * ساعة / 0.24 مللي أمبير = 7500 ساعة (10 أشهر).
تظل التوضيحات السابقة المتعلقة بدقة وقت التشغيل المحسوب من مجموعة واحدة من البطاريات صالحة.
وجدول المقارنة. أنه يحتوي على نتائج بضع مشاريع مماثلة من الإنترنت.
معلمة | لاكروس WS-9024IT | maniacbug | avs24rus | Sadil_TM |
طعام | 2xAAA ، 3B ، دوراسيل | 3V ، CR2450 ريناتا ، 540 مللي أمبير في الساعة | 3V ، CR2450 ، 550-610 مللي أمبير | 2xAA ، 3V ، GP Ultra + ، 1800 مللي أمبير في الساعة |
استهلاك النوم | | 0.14 مللي أمبير (؟) | 14 μA | 5 μA |
مدة النوم | | | | 1 دقيقة |
الاستهلاك التشغيلي | <700 μA | 13.57 مللي أمبير | 16 - 18 مللي أمبير | 14 مللي أمبير |
مدة العمل | | 0.027 ثانية | | 1 ثانية |
العمل / فترة دورة النوم | | 1 دقيقة | 10 دقيقة | 1 دقيقة |
وقت التشغيل | حوالي 2 سنوات | | أكثر من 0.5 سنة | حوالي 10 أشهر |
إذا تم تجميع العقد دون أخطاء ، فسوف نرى على الشاشة الصورة التالية:

من الجداول المقارنة ، يمكن ملاحظة أن ذروة استهلاك أجهزة الهواة أعلى من نظيرتها في الوظائف المماثلة لـ LaCrosse الصناعية. على سبيل المثال ، 14 مللي أمبير مقابل 700 ميكرولتر للمستشعر عن بعد و 10 ... 18 مللي أمبير مقابل 200 ميكروليتر للمحلل. هذا الفارق المذهل في الاستهلاك الأقصى يفسر ، في رأيي ، حقيقة أن وحدات التحكم في دوائر الهواة مبرمجة باستخدام منصة Arduino IDE والوظائف الثقيلة والمكتبات والمنتجات الصناعية - على الأرجح بإحدى اللغات منخفضة المستوى أو على سبيل المثال ، في لغة C ++ (بالمناسبة ، اللغة الأساسية لـ Arduino) أو C (C). إذا كنت تستخدم هذه اللغات ، فأنا متأكد من أنه يمكنك الوصول إلى استهلاك مماثل للتصميمات الصناعية. ومع ذلك ، فقد ظهر ذلك بشكل مقنع بشكل تجريبي بواسطة HWman في منشوره " لماذا لا يحب الكثيرون اردوينو ". يؤدي تنفيذ أبسط رسم يصل إلى أكثر من عشرة خطوط (Blink) ، يتم تنفيذها في Arduino IDE في حالة واحدة وفي حالة أخرى - "C بسيطة" ، كما يقول المؤلف في الفيديو ، تؤدي إلى فقدان أداء قدره 26 مرة. باختصار ، يمثل زيادة استهلاك الموارد دفعًا للراحة ومجهودًا بسيطًا من جانب المبرمج - وسيتم تنفيذ الجزء المتبقي له من خلال الوظائف "الشراهة" لبيئة التطوير. أتوقع أن تضطر إلى الضغط على أساسيات C / C ++ وإتقانها على الأقل ، والتي يتم تجميع وظائفها بواسطة Arduino IDE.
النتائج
• يحتوي المحلل المجمع والحرارة على قدر كبير من الاستهلاك الحالي مقارنةً بالتصاميم الصناعية.
• يقترح ثالث نفسه للبطاريتين في الدوائر ، ثم يتم حل المشاكل التالية تلقائيًا: ليست هناك حاجة لإعادة تثبيت الصمامات ، تعمل وحدة التحكم بتردد 16 ميجا هرتز ، وأجهزة الاستشعار DHT22 ، DS18B20 بعيدة عن الحد الأدنى لجهد الإمداد. هذا الأخير مهم ، حيث لا يتم تزويد التيار الكهربائي مباشرة إلى المستشعرات ، ولكن بشكل برمجي من خلال المفتاح من دبوس وحدة التحكم ، حيث يسقط حوالي 1 فولت.
• استخدام وحدات الراديو LoRa ، مع قدرة جهاز إرسال قابلة للبرمجة تبلغ 4 ديسيبل ، مكّن من إنشاء اتصال ثابت داخل الشقة مع مصدر طاقة للوحدات من بطاريتي AA.
روابط ذات صلة
انخفاض الطاقة الاستشعار اللاسلكية الجمعية
CR2450 اللاسلكية الإضاءة الاستشعار
درجة الحرارة والرطوبة اللاسلكية وأجهزة استشعار الضغط الجوي على nRF52832
ميزان الحرارة اللاسلكي
حول اردوينو إلى مبرمج AVRISP كامل
لورا والنوم
تعرف على بتات التكوين ATmega328P وكيفية استخدامها مع الكريستال الكوارتز الخارجي
AVR فيوجن حاسبة
لماذا كثير من الناس لا يحبون اردوينو
اختبار البطارية الكبرى
البطاريات في البرد