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

31.08.2023

محطة الطقس DIY.

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

(هناك الكثير من الصور تحت القطع!)

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

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

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

تم إغلاق الكيس المضاد للكهرباء الساكنة بحيث لا تهدد الرطوبة أثناء الرحلة المستشعر

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




كل شيء سيكون على ما يرام، ولكن يتم تطبيق علامات الاتصال في صورة معكوسة.
يتم توصيل المستشعر عبر ناقل I2C ويتم تشغيله بجهد 3.3 فولت. أي أنك تحتاج إلى 4 أسلاك (+، -، SDA، SCL) للتشغيل العادي.
يمكنك استجواب المستشعر بطريقتين: إما من خلال المكتبة، أو باستخدام الوظائف مباشرة في الرسم.
برنامج المثال:

#يشمل

#define BMP085_ADDRESS 0x77 // عنوان I2C لـ BMP085

Const unsigned char OSS = 0; // إعداد الإفراط في أخذ العينات

// قيم المعايرة
كثافة العمليات AC1؛
كثافة العمليات2؛
كثافة العمليات3؛
كثافة العمليات غير الموقعة AC4؛
كثافة العمليات غير الموقعة AC5؛
غير موقعة كثافة العمليات AC6؛
كثافة العمليات B1؛
كثافة العمليات B2؛
كثافة العمليات ميغابايت؛
كثافة العمليات مولودية.
كثافة العمليات MD؛

درجة حرارة قصيرة
ضغط طويل

الإعداد باطل()
{
Serial.begin(9600);
Wire.begin();
bmp085Calibration();
}

حلقة فارغة()
{
درجة الحرارة = bmp085GetTemperature(bmp085ReadUT());
الضغط = bmp085GetPressure(bmp085ReadUP());
Serial.print("درجة الحرارة: „);
Serial.print (درجة الحرارة / 10.0، ديسمبر)؛
Serial.println("C");
Serial.print("الضغط: „);
Serial.print(الضغط/133.322، ديسمبر)؛
Serial.println("مم زئبق");
println();
تأخير (1000)؛
}

باطل bmp085Calibration ()
{
ac1 = bmp085ReadInt(0xAA);
ac2 = bmp085ReadInt(0xAC);
ac3 = bmp085ReadInt(0xAE);
ac4 = bmp085ReadInt(0xB0);
ac5 = bmp085ReadInt(0xB2);
ac6 = bmp085ReadInt(0xB4);
b1 = bmp085ReadInt(0xB6);
b2 = bmp085ReadInt(0xB8);
mb = bmp085ReadInt(0xBA);
mc = bmp085ReadInt(0xBC);
md = bmp085ReadInt(0xBE);
}

قصير bmp085GetTemperature(unsigned int ut)
{
طويل ×1، ×2؛
x1 = (((طويل)ut - (طويل)ac6)*(طويل)ac5) >> 15;
x2 = ((طويل)mc<< 11)/(x1 + md);
b5 = x1 + x2;

إرجاع ((b5 + 8)>>4);
}

طويل bmp085GetPressure (طويل غير موقع)
{
طويل x1، x2، x3، b3، b6، p؛
b4 طويل غير موقع، b7؛
ب6 = ب5 - 4000؛
// احسب B3
x1 = (b2 * (b6 * b6)>>12)>>11;
x2 = (ac2 * b6)>>11;
x3 = x1 + x2;
b3 = (((((طويل)ac1)*4 + x3)<>2;
// احسب B4
x1 = (ac3 * b6)>>13;
x2 = (b1 * ((b6 * b6)>>12))>>16;
x3 = ((x1 + x2) + 2)>>2;
b4 = (ac4 * (طويل غير موقع)(x3 + 32768))>>15;
b7 = ((طويل غير موقع)(up - b3) * (50000>>OSS));
إذا (ب7< 0x80000000)
ع = (ب7<<1)/b4;
آخر
ع = (ب7/ب4)<<1;
x1 = (ع>>8) * (ع>>8);
x1 = (x1 * 3038)>>16;
x2 = (-7357 * ع)>>16;
ع += (x1 + x2 + 3791)>>4;
العودة ص؛
}

// قراءة بايت واحد من BMP085 في "العنوان"
char bmp085Read (عنوان char غير الموقع)
{
بيانات الحرف غير الموقعة؛

Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 1);
بينما(!Wire.available())
;
إرجاع Wire.read();
}

Int bmp085ReadInt (عنوان الحرف غير الموقع)
{
غير موقعة شار msb، lsb؛
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 2);
بينما (Wire.available())<2)
;
msb = Wire.read();
lsb = Wire.read();
العودة (كثافة العمليات) مللي ثانية<<8 | lsb;
}

// اقرأ قيمة درجة الحرارة غير المعوضة
كثافة العمليات غير الموقعة bmp085ReadUT()
{
كثافة العمليات غير الموقعة؛
// اكتب 0x2E في السجل 0xF4
// هذا يتطلب قراءة درجة الحرارة
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x2E);
Wire.endTransmission();
// انتظر 4.5 مللي ثانية على الأقل
تأخير (5)؛
// اقرأ وحدتي بايت من المسجلين 0xF6 و0xF7
ut = bmp085ReadInt(0xF6);
العودة؛
}

// اقرأ قيمة الضغط غير المعوض
bmp085ReadUP () طويل غير موقع
{
غير موقعة char msb، lsb، xlsb؛
فترة طويلة غير موقعة = 0؛
// اكتب 0x34+(OSS<<6) into register 0xF4
// طلب قراءة الضغط مع إعداد الإفراط في أخذ العينات
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x34 + (OSS<<6));
Wire.endTransmission();
// انتظر التحويل، يعتمد وقت التأخير على OSS
تأخير (2 + (3<// قراءة التسجيل 0xF6 (MSB)، 0xF7 (LSB)، و0xF8 (XLSB)
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF6);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 3);
// انتظر حتى تصبح البيانات متاحة
بينما (Wire.available())< 3)
;
msb = Wire.read();
lsb = Wire.read();
xlsb = Wire.read();
up = (((طويل غير موقع) msb<< 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb) >> (8-OSS)؛
ارجع للأعلى؛
}


بالإضافة إلى ذلك، يحتوي المستشعر على مستشعر حراري خاص به لتعويض الضغط ومقياس الارتفاع

اردوينو نانو v3.0
هذا هو قلب محطة الطقس بأكملها. ببساطة، وحدة التحكم صغيرة الحجم.
اشتريت
لن أتحدث بالتفصيل عن وحدة التحكم، حيث سبق أن تم ذلك قبلي:


كانت حزمة Lightake جاهزة مسبقًا، وجاءت وحدة التحكم في حزمة تحتوي على كابل USB وArduino في حقيبة محكمة الغلق مضادة للكهرباء الساكنة.

لتقدير الحجم، قمت بوضع عملة بقيمة 1 روبل بجانب الاردوينو.

لوحة التحكم عن قرب



كابل USB جيد، مع حلقة من الفريت. يتم تشغيل Arduino عبر كابل USB. يمكن تنزيل بيئة التطوير (صفحة التنزيل). اللغة تشبه لغة C، ولم تكن هناك مشاكل في إتقانها، حيث أنني أقوم بالكثير من البرمجة بها في العمل.

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

لكن بعد فترة قصيرة من الاستخدام، لاحظت أن هذه الشاشة ليست كافية بالنسبة لي ولن يكون من الممكن عرض المزيد من البيانات، حيث أنها تحتوي على سطرين فقط يتكون كل منهما من 16 حرفًا. في البداية يبدو أن هذه المعلمات كافية، ولكن عندما تبدأ البرمجة، تدرك أن الحد الأقصى الذي يمكنك الضغط عليه هو 3-4 معلمات. وإذا قمت بإنشاء قائمة (كنت أفكر في إنشاء قائمة على هذه الشاشة)، فلن يكون هناك سوى 1-2 معلمات متبقية في المساحة الحرة.
ونتيجة لذلك، بدأت أبحث عن شاشة أخرى. في البداية نظرت عن كثب إلى الشاشة الرسومية لجهاز Nokia 3310 وشاركت في مزاد eBay لشرائه، لكن الأمر لم ينجح (وهو ما أنا سعيد به جدًا)، لذلك اضطررت للتخلي عن هذه الشاشة. الآن أفهم أنه سيكون صغيرا جدا لأغراضي، لأن هناك ما يمكن مقارنته به.
أثناء البحث بشكل عشوائي عبر الدروع في Arduino، صادفت شاشة رسومية 12864 على وحدة التحكم ST7920. تتميز هذه الشاشة بالحجم المناسب والدقة الجيدة التي تناسب احتياجاتي (128 × 64). أي أنه يمكنك بسهولة وضع 6-7 أسطر مكونة من 20 حرفًا بخط يمكن قراءته بشكل طبيعي. نظرًا لأن الشاشة رسومية، بالإضافة إلى النص، يمكن وضع الرسومات بخطوط مختلفة. باختصار، هذا هو بالضبط ما كنت أحتاجه، كل شيء كان موجودًا على هذه الشاشة، لذلك لم أستطع المقاومة وطلبت ذلك.
وصل الطرد بسرعة وتم تعبئته بشكل قياسي: مظروف مغلف بالفقاعات، وكان بداخله طبقة أخرى من غلاف الفقاعات وشاشة في كيس مضاد للكهرباء الساكنة:






لتقدير الحجم، وضعت عملة معدنية بقيمة 1 روبل بجوار شاشة LCD.




لتوصيل الشاشة بسرعة بـ Arduino، قمت بلحام خط من نقاط الاتصال بمنافذ LCD. يمكن توصيل شاشة LCD عبر ناقل تسلسلي أو ناقل متوازي. لقد اخترت الخيار الأول، نظرًا لوجود عدد قليل بالفعل من جهات اتصال Arduino المجانية.
الاتصال (مأخوذ من الويب):

- يتم توصيل الدبوس 1 (GND) بالحافلة المشتركة
- يتم توصيل الدبوس 2 (VCC) بحافلة الطاقة +5 فولت، والاستهلاك الحالي صغير نسبيًا ويمكن تشغيل الشاشة من مثبت Arduino المدمج.
- تتصل الأطراف 4 و5 و6 بمخرجات Arduino الرقمية لتشكل الواجهة التسلسلية SPI:
الدبوس 4 – (RS) – يتوافق مع خط CS (على سبيل المثال 7)
الدبوس 5 – (RW) – يتوافق مع خط MOSI (على سبيل المثال 8)
الدبوس 6 – (E) – يتوافق مع خط SCK (على سبيل المثال 3)
يمكن أن تكون أرقام الاتصال بـ Arduino أي شيء، والشيء الرئيسي هو عدم نسيان الإشارة إليها بشكل صحيح في نص البرنامج عند تهيئة الشاشة.
- يتم توصيل الدبوس 15 (PSB) بالحافلة المشتركة.
- جهات الاتصال 19 (A) و 20 (K) هي مصدر طاقة الإضاءة الخلفية (+5V وGND، على التوالي). لضبط سطوع الإضاءة الخلفية، يمكنك استخدام مقاومة متغيرة تبلغ 10 كيلو أوم متصلة بين ناقل الطاقة وGND. يتم توفير الجهد من محركها إلى دبوس 19 من الشاشة.
وفقًا لهذه التعليمات، قمت بتوصيل كل شيء باستثناء الإضاءة الخلفية. لقد استخدمت Arduino PWM لتشغيل الإضاءة الخلفية.
من أجل توصيل شاشة LCD باردوينو برمجياً، يتم استخدام مكتبة u8glib. يمكنك تنزيله. إذا كانت هناك مشاكل في التنزيل، يمكنني تحميل المكتبة على narod.ru.
المكتبة نفسها ليست معقدة وتسمح لك بعرض النص بخطوط مختلفة، ورسم خط، ورسم أشكال هندسية بسيطة (مستطيل، دائرة)، وعرض صورك المعدة بطريقة خاصة. من حيث المبدأ، هذه الأداة كافية لمعظم المهام.
وهذه نتيجة برنامج بسيط:

البرنامج نفسه :

#تشمل "U8glib.h"

U8GLIB_ST7920_128X64 u8g(3, 9, 8, U8G_PIN_NONE); // SPI E = 3، RW = 9، RS = 8

// روتين فرعي لتحديد الذاكرة الحرة
إنت فري رام () (
extern int __heap_start, *__brkval;
في التلفاز؛
return (int) &v - (__brkval == 0? (int) &__heap_start: (int) __brkval);
}

إعداد باطل(باطل) (
u8g.setFont(u8g_font_6x10); // الخط
u8g.setRot180(); // اقلب الشاشة
تمثيلي(6, 115); // اضبط سطوع الشاشة (أنود الإضاءة الخلفية عند 6 سنون)
}

حلقة باطلة(باطلة)(
u8g.firstPage();
يفعل(

u8g.setPrintPos(1, 12); // موضع
u8g.print("مرحبا!!!"); // إخراج النص
u8g.drawBox(0,22,128,9); // قم بطلاء المستطيل باللون الأبيض
u8g.setColorIndex(0); // حبر أبيض، خلفية سوداء
u8g.setPrintPos(1, 30); // موضع
u8g.print("كلمة..."); // إخراج النص

U8g.setColorIndex(1); // حبر أبيض، خلفية سوداء
u8g.setPrintPos(1, 50); // موضع
u8g.print("بعد البدء ="); // إخراج النص
u8g.setPrintPos(85, 50); // موضع
u8g.print(ملي() / 1000); // إخراج عدد الثواني بعد البداية
u8g.setPrintPos(1, 64); // موضع
u8g.print(freeRam()); // إخراج مقدار الذاكرة المشغولة
) بينما(u8g.nextPage());

تأخير (200)؛
}

الوقت الحقيقي على مدار الساعة DS1307
عنصر آخر لمحطة الطقس الخاصة بي. يطبق هذا الدرع ساعة في الوقت الفعلي. لقد طلبتهم على موقع eBay. أرسل البائع وشاح الساعة في صندوق كبير بشكل غير واقعي


كان داخل الصندوق ورقتين من الإعلانات مقاس A4 ومنديل ساعة ملفوفًا بالسيلوفان


أود أن أشير إلى أن الرسوم لا تتجاوز 2 روبل. عملة معدنية، وقياس الصندوق 13x15x5 سم.
كانت اللوحة معبأة في كيس مضاد للكهرباء الساكنة

شال قريب



اضطررت إلى العبث بهذه الوحدة. أولاً، كانت هناك صعوبات في الاتصال. وثانيا، لا يوجد كوارتز في هذه اللوحة. إذا كنت أعرف أنني سأقضي الكثير من الوقت في الوحدة، فمن المرجح أن أقوم بتجميعها بنفسي، لأن الإنترنت مليء بالمخططات. أبسط دائرة تحتوي على 4-5 مكونات.
فيما يتعلق بالاتصال. لقد وجدت مكتبة تقول إن واجهة I2C لا يمكن توصيلها بمدخلات Arduino التناظرية المعتادة (A4 و A5)، ولكن بأي مدخلات منفصلة. لقد فعلت ذلك كما هو مكتوب. في البداية لم ينجح أي شيء، ولكن بعد رقصة طويلة مع الدف بدأت الساعة. حسنًا، اعتقدت أن كل شيء قد انتهى، ولكن بعد أن حاولت توصيل نفس الوحدة باردوينو آخر، استمر الرقص مع الدف. لقد قضيت الكثير من الوقت في البحث عن حل لهذه المشكلة وفي كل مكان تقريبًا تمت الإشارة إلى اتصال غير صحيح أو عدم وجود مقاومات سحب في جهات اتصال SCL وSDA. كنت أرغب بالفعل في الدخول إلى اللوحة باستخدام مكواة لحام، ولكن في أحد المنتديات صادفت بالصدفة رمزًا يُقال إنه يربط SCL وSDA بمنافذ I2C القياسية في Arduino. بعد اتصال قياسي، كل شيء يعمل على الفور.
الآن عن الكوارتز. لا أعرف نوع الكوارتز الذي وضعه الصينيون هناك، لكن الساعات التي تحتوي على مثل هذا الكوارتز هربت لمدة 10-11 ثانية يوميًا. هذا الخطأ هو 5 دقائق شهريًا، وساعة واحدة سنويًا. ليست هناك حاجة لساعة مثل هذه. اضطررت إلى الاتصال بالإنترنت مرة أخرى والبحث عن كيفية إصلاح هذا الخطأ. الحل الأول الذي يظهر هو أنك تحتاج إلى تأريض الكوارتز. لقد فعلت ذلك - وكانت النتيجة صفرًا. لقد وجدت أيضًا في مكان ما أنني بحاجة إلى العثور على اللوحة الأم القديمة وإزالة ساعة الكوارتز من هناك. لقد فعلت ذلك - هناك نتيجة. الآن تعمل الساعة ليس بمقدار 10-11 ثانية، ولكن بمقدار 1.5 ثانية في اليوم. دعنا نقول فقط أنه أصبح أفضل، لكنه أبعد ما يكون عن المثالية. نظرًا لأنني لم أعد أرغب في العبث بمكواة اللحام، فقد تقرر ضبط الساعة برمجيًا، أي ضبط الساعة على القيمة المطلوبة مرة واحدة يوميًا. وبعد 10 أيام، لم تتأخر الساعة بما لا يزيد عن ثانية واحدة. الطريقة جيدة ولكن فقط عندما يكون جهاز المزامنة Arduino متصلاً بالطاقة، وإلا فإن الساعة تعمل على طاقة البطارية ولا تزال تنفد.
برنامج اختبار صغير:

#تتضمن "Wire.h"
#تعريف DS1307_I2C_ADDRESS 0x68 // SDA A4، SCL A5

بايت decToBcd (بايت فال)
{
إرجاع ((val/10*16) + (val%10));
}

بايت bcdToDec (بايت فال)
{
إرجاع ((val/16*10) + (val%16));
}

باطلة setDateDs1307 (بايت ثانية، // 0-59
بايت دقيقة، // 0-59
ساعة البايت) // 0-99
{

Wire.write(0);
Wire.write(decToBcd(الثانية));
Wire.write(decToBcd(دقيقة));
Wire.write(decToBcd(hour));
Wire.endTransmission();
}

getDateDs1307 باطلة (بايت * ثانية،
بايت * دقيقة،
بايت * ساعة)
{

Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();

Wire.requestFrom(DS1307_I2C_ADDRESS, 3);

*sec = bcdToDec(Wire.read());
*دقيقة = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read());
}

الإعداد باطل()
{
بايت ثانية، دقيقة، ساعة؛
Wire.begin();
Serial.begin(9600);

الثانية = 45؛
دقيقة = 5؛
ساعة = 16؛

SetDateDs1307(ثانية، دقيقة، ساعة)؛
}

حلقة فارغة()
{
بايت ثانية، دقيقة، ساعة؛

GetDateDs1307(&ثانية، &دقيقة، &ساعة);
Serial.print (ساعة، ديسمبر)؛
Serial.print(":":);
Serial.print (دقيقة، DEC)؛
Serial.print(":":);
Serial.println(الثانية، ديسمبر)؛

تأخير (1000)؛
}


لا يتم استخدام المكتبة هنا، ويتم اقتطاع وظائف وقت القراءة والكتابة.

مستشعر درجة الحرارة والرطوبة DHT11
لا يوجد شيء يمكن قوله عن هذا المستشعر. لن أستخدمه حتى إذا لم تكن الرطوبة ضرورية. لسوء الحظ، لم ألتقط صورة لها عندما استلمتها، لذلك لن تكون هناك أي صور. يمكن رؤية صور المستشعر أدناه، حيث قمت بتوصيله بـ Arduino. اتصال المستشعر بسيط (+، الإخراج الرقمي، -). عادة ما تكون أجهزة الاستشعار مصنوعة من أربعة دبابيس. مع عامل الشكل هذا، فإن الدبوس الثالث غير متصل بأي شيء.
يمكنك استخدام المكتبة للاتصال بـ Arduino. يمكنك تنزيله.
برنامج اختبار صغير مع إخراج المعلومات على شاشة LCD 1602:

// تضمين رمز المكتبة:
#يشمل
#يشمل

// أعلن عن الكائنات
dht11 dht11;
شاشات الكريستال السائل السائل (12، 11، 6، 5، 4، 3)؛

#تعريف DHT11PIN 7
كثافة العمليات أنا؛

الإعداد باطل()
{
شاشات الكريستال السائل. تبدأ (16، 2)؛
شاشات الكريستال السائل.طباعة("الحالة: ');
أنا=0;
}

حلقة فارغة()
{
int chk = DHT11.read(DHT11PIN);
شاشات الكريستال السائل.setCursor(8, 0);
التبديل (الفصل)
{
الحالة 0: شاشات الكريستال السائل.طباعة("موافق"); استراحة؛//lcd.setCursor(11, 0); شاشات الكريستال السائل. طباعة (ملي () / 2000)؛ استراحة؛
الحالة -1: شاشة LCD.print("خطأ في المجموع الاختباري"); مير(); استراحة؛
الحالة -2: شاشة LCD.print("خطأ في المهلة"); مير(); استراحة؛
الافتراضي: شاشات الكريستال السائل.طباعة("خطأ غير معروف"); مير(); استراحة؛
}
تأخير (500)؛
شاشات الكريستال السائل.setCursor(15, 0);
التبديل (ط)
{
الحالة 0: شاشة LCD.print("^"); شاشات الكريستال السائل.setCursor(15, 1); شاشات الكريستال السائل.طباعة("");استراحة;
الحالة 1: شاشة LCD.print("v"); شاشات الكريستال السائل.setCursor(15, 1); شاشات الكريستال السائل.طباعة("");استراحة;
الافتراضي: LCD.setCursor(15, 1); شاشات الكريستال السائل. طباعة ("E")؛ استراحة؛
}
أنا=أنا+1;
إذا (i>1) i=0;
شاشات الكريستال السائل.setCursor(0, 1);
شاشات الكريستال السائل.طباعة("H =");
شاشات الكريستال السائل.setCursor(2, 1);
شاشات الكريستال السائل.طباعة ((تعويم)DHT11.الرطوبة، 0)؛
شاشات الكريستال السائل.setCursor(4, 1);
شاشات الكريستال السائل.طباعة("%");
شاشات الكريستال السائل.setCursor(8, 1);
شاشات الكريستال السائل.طباعة ("T =")؛
شاشات الكريستال السائل.setCursor(10, 1);
شاشات الكريستال السائل. طباعة ((تعويم) DHT11.درجة الحرارة، 0)؛
شاشات الكريستال السائل.setCursor(12, 1);
شاشات الكريستال السائل.طباعة("C");

باطلة مير ()
{
شاشات الكريستال السائل.setCursor(2, 1);
شاشات الكريستال السائل.طباعة("**");
شاشات الكريستال السائل.setCursor(10, 1);
شاشات الكريستال السائل.طباعة("**");
أنا = 5؛
}


يحتوي المستشعر على بعض العيوب - فالبيانات الواردة من المستشعر تكون بأعداد صحيحة فقط، والنطاق ضعيف.

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

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



في الواقع، اللون الأزرق للإضاءة الخلفية أكثر سطوعًا. حتى عند الحد الأدنى من السطوع (سطوع = 5)، يتم إضاءة الإطار.

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



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

اللوحة الأم مع الدروع المثبتة ولوحة Arduino.

هذا ما يبدو عليه الاتصال الكامل باللوحة الأم


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

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

هذا ما يبدو عليه من الخارج في الضوء الساطع (آسف بشأن بصمات الأصابع، لقد رأيتها عندما كنت أفرز الصور).

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

هذا ما يبدو عليه الوشاح ذو الأزرار:



هذا ما تبدو عليه لوحة الحامل:


هنا يمكنك رؤية الأدلة التي يتم فيها إدراج اللوحة ذات الأزرار. تم لحام بعض العناصر لإضفاء الصلابة على اللوحة.

الآن نضع كل شيء في الجسم
بدون أزرار الاتصال:


مع اتصال زر:

أغلق العلبة وقم بتشغيلها. كل شيء يعمل بشكل رائع، الأزرار تعمل كما ينبغي.

وفي النهاية أنشر فيديو قصير للجهاز وهو يعمل في أوضاع مختلفة:
http://www.youtube.com/watch?v=KsiVaUWkXNA&feature=youtu.be
لمن لم يشاهد الفيديو هنا هذا هو الرابط

لقد حان الوقت لإنهاء المراجعة.
سأكتب قليلا عن البرنامج، ثم بعض الاستنتاجات الموجزة. عندما كتبت البرنامج، لم أكن أعتقد أنني سأصل بسرعة إلى الحد الأقصى البالغ 30.720 بايت.


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

الآن بعض الاستنتاجات
السلبيات
1) السعر. مبرر هذا العيب هو أن الهواية ليست رخيصة أبدًا.

الايجابيات
1) الأداء الرائع للجهاز
2) تقتصر الوظائف المتزايدة فقط على وحدة التحكم المستخدمة ورغبتك الخاصة
3) المتعة الجمالية من التأمل والرضا المعنوي من حقيقة أنني قمت أخيرًا بتجميع هذا الجهاز وإكماله

أخطط لشراء +85 اضافة الى المفضلة اعجبني الاستعراض +137 +304
  • هذه "محطة الأرصاد الجوية التي تعمل بنفسك" مصممة للعمل في الظروف الميدانية، وليس في الداخل أو في الهواء الطلق، كما هو مذكور في بداية المقال. البطاريات، الشاشة الخاصة. سيكون من الأسهل والأكثر ملاءمة استخدام الكمبيوتر المحمول لهذا الغرض.
  • لا أستطيع تنزيل البرنامج الثابت:(هل يمكنك نشره في مكان آخر؟ أو إرساله إلى allmail@ mail.ru
  • الأمر كله معقد للغاية ومكلف بعض الشيء.
  • أوافق على أن الأمر صعب، ولكن يمكنك مقارنته (من حيث المال) مع المتنبئين بالطقس الصينيين، وأوصي بالنظر في الجهاز باعتباره أحد "مكعبات" المنزل الذكي عن طريق تصحيح البرامج الثابتة قليلاً، ويمكن للبيانات يمكن نقلها عبر RS232، على سبيل المثال، إلى جهاز كمبيوتر يستخدم كمركز تحكم في إطار الصورة بالمنزل أو المساعد الشخصي الرقمي (PDA).
  • بالمناسبة، يتم تنزيل البرامج الثابتة وكود المصدر بشكل طبيعي من صفحة المشروع باللغة الإنجليزية
  • لدي فكرة غامضة عن سبب وجود مثل هذا التعقيد في الحياة اليومية. لن تعطي المحطة الأروع توقعات مماثلة لتلك التي يوفرها التصوير الفضائي. ما لم يكن - في رحلات إلى مثل هذه البرية، حيث لا يوجد إنترنت عبر الهاتف المحمول أو الراديو. وهذا غير مرجح: جميع الشركات الجادة التي قد تعتمد حياتها على الطقس (طيارين الطائرات الشراعية، والمتسلقين) لديها ملاح عبر الأقمار الصناعية، مما يعني أن لديهم إمكانية الوصول إلى التوقعات.
  • لذا فإن هذا الجهاز لا يعطي توقعات، ولكنه يعرض القيم الحالية لمعلمات الطقس على الشاشة. والغرض الرئيسي منه ليس التخييم، ولكن، على سبيل المثال، قياس المعلمات في الدفيئة ونقلها إلى المنزل. وبالمناسبة يمكن ترجمة بداية المقال على النحو التالي: “محطة الأرصاد الجوية مع قياس الضغط والرطوبة النسبية وقياس درجة الحرارة الداخلية والخارجية عن بعد” والتي لا تتحدث عن الغرفة.
  • المخطط صعب بعض الشيء، ولكنه مثير للاهتمام وسيتم استخدامه في الحياة اليومية والإنتاج، لمراقبة معلمات المبنى، لأتمتة أي عمليات.
  • يوم جيد! إذا قام أي شخص بتنزيل ملفات الختم والبرامج الثابتة، فيرجى إرسالها إلى المنتدى أو إلى [البريد الإلكتروني محمي]. شكرا لك مقدما!
  • حسنا، إذا لم يكن أحد لديه البرامج الثابتة وملفات لوحة الدوائر المطبوعة، ثم قل لي - ما كريتين حذف كل هذه الملفات؟
  • أنصحك بالهدوء، فالعالم كله مدين لك بشيء حتى الموت. راجع صفحة المصدر http://www.elxproject.com/elx/news.php?readmore=36
  • لقد حصلت على واحدة منها مزودة بمستشعر لاسلكي لدرجة الحرارة والرطوبة لمدة عامين حتى الآن.
  • لا، لا أحد يدين لي بأي شيء. بالطبع، أعتذر عن القسوة - لقد كنت أتبع هذا الرابط للتو، وكان لدي انطباع بأنني ملزم بشكل قاطع بالتسجيل في Face Book، وكان هذا مزعجًا "جدًا" ولم أتمكن من تنزيله. من فضلك، إذا كان أي شخص لديه الأرشيف الذي تم تنزيله، يرجى إرساله إلى المنتدى، إن لم يكن صعبا. شكرا لكم مقدما. ملاحظة: أعتقد ذلك، المنتديات، بالإضافة إلى وظيفتها الرئيسية، موجودة أيضًا لإنقاذ الأشخاص من مثل هذه البواسير - عرض الإعلانات الغبية والتسجيل القسري على الشبكات الاجتماعية، وما إلى ذلك.
  • من فضلك، الأرشيف مرفق. المخططات والأختام والمصادر والبرامج الثابتة. لا ينبغي أن تأخذ الأمر "على محمل الجد"، ولكن بالنسبة للمستقبل، لا ينبغي أن تقسم على الفور وتغضب. أنا، مثل العديد من مستخدمي المنتدى، أفهم جيدًا أنك تحتاج إلى بعض المعلومات والملفات والرسوم البيانية، وربما تحتاج إليها بشكل عاجل للغاية، لكنك لا تحصل عليها دائمًا على الفور. لقد رأيت طلبك في رسالة بتاريخ 28 يوليو 2013، ولكن لم أتمكن من الرد أو المساعدة بأي شكل من الأشكال حتى اليوم (ربما يكون لمستخدمي المنتدى الآخرين موقف مماثل) إذا لم يتدخل المسؤول بسرعة، فمن الممكن أن البيانات و كانت الكلمات ستهطل عليك "من اتجاه معين"، ومن ثم يكون هناك "رد فعل متسلسل" مع الشتائم، ونتيجة لذلك، يتسع النقاش (الموضوع) إلى ما هو أبعد من النقطة ويبقى رأي سيء للغاية حول المنتدى كما هو كله... حظا سعيدا! إذا كنت بحاجة إلى أي شيء، اسأل، وسوف نساعدك بأي طريقة ممكنة!
  • مساء الخير فادز! شكرا لأرشيف!

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

ما هي موازين الحرارة GSM؟

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

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

لماذا يستحق شراء مقياس حرارة GSM ونظام إنذار مزود بأجهزة استشعار لدرجة الحرارة؟

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

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


مبدأ تشغيل التطبيق هو أننا نقوم بتشغيله على هاتف يعمل بنظام التشغيل Android، ونتصل بلوحة Arduino عبر البلوتوث، ومن خلال النقر على الرموز، نحصل على عرض للبيانات المختلفة.

مبدأ تشغيل محطة الأرصاد الجوية بسيط. عند الاستلام من الهاتف 1، نقوم باستقصاء مستشعر درجة الحرارة DS18B20 الموجود بالخارج وإرسال البيانات إلى الهاتف، عند الاستلام 2، نقوم باستقصاء مستشعر درجة الحرارة DS18B20 الموجود في الغرفة وإرسال البيانات إلى الهاتف. عندما نستقبل 3 نقوم باستقصاء مستشعر BMP085 وعندما نستقبل 4 نقوم باستقصاء مستشعر الرطوبة ونرسل البيانات أيضًا.

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

لقطات من شاشة الهاتف المحمول

قياس درجة الحرارة الخارجية بالدرجات المئوية:

قياس درجة حرارة الغرفة بالدرجة المئوية:

قياس الضغط الجوي الخارجي بالملليمتر. غ. فن.:

قياس رطوبة الهواء بنسبة %

حسنًا، الآن، بعد مراجعة قصيرة للعمل، دعنا ننتقل إلى الجزء الفني من المشروع.

مخططات اتصال أجهزة الاستشعار

مخطط اتصال لأجهزة استشعار درجة الحرارة DS18B20

يجب توصيل أجهزة استشعار درجة الحرارة بالتوازي.

مخطط اتصال جهاز الاستشعار BMP085:

مخطط اتصال جهاز الاستشعار DHT11:

مخطط اتصال لوحدة البلوتوث HC-05:


بعد الاتصال الناجح لجميع أجهزة الاستشعار، قم بتحميل المخطط،

رسم

#يشمل #يشمل #يشمل #يشمل #يشمل #يشمل #يشمل #define ONE_WIRE_BUS 4 OneWire oneWire(ONE_WIRE_BUS); أجهزة استشعار درجة الحرارة في دالاس (&oneWire)؛ DeviceAddress Thermometer1 = ( 0x28, 0x00, 0x54, 0xB6, 0x04, 0x00, 0x00, 0x92 ); DeviceAddress Thermometer3 = ( 0x28, 0x94, 0xAC, 0xDF, 0x02, 0x00, 0x00, 0xB5); BMP085 dps = BMP085(); درجة الحرارة الطويلة = 0، الضغط = 0، الارتفاع = 0؛ دهت دهت (8، DHT11)؛ شار واردة بايت؛ كثافة العمليات س=0; إعداد الفراغ () (sensors.begin ()؛ Sensors.setResolution (Thermometer1، 10)؛ Sensors.setResolution (Thermometer3، 10)؛ Wire.begin ()؛ dps.init (MODE_ULTRA_HIGHRES، 21000، صحيح)؛ dht.begin ( ); Serial.begin(9600);) void printTemperature(DeviceAddress devicesAddress) ( float tempC = Sensors.getTempC(deviceAddress); Serial.println(tempC,1); ) void Loop() (sensors.requestTemperatures(); dps. getPressure(&Pressure); int h = dht.readHumidity(); float t = dht.readTemperature(); if (Serial.available() > 0) ( incomingByte = Serial.read(); if(incomingByte == "1" ) ( x=2; ) إذا(incomingByte == "2") ( x=1; ) إذا(incomingByte == "3") ( x=3; ) إذا(incomingByte == "4") ( x=4 ؛ ) ) تأخير (100) ؛ التبديل (x) ( الحالة 1: درجة حرارة الطباعة (مقياس الحرارة 1) ؛ استراحة ؛ الحالة 2: درجة حرارة الطباعة (مقياس الحرارة 3) ؛ استراحة ؛ الحالة 3: Serial.println (الضغط / 133.3،1) ؛ استراحة ؛ حالة 4: Serial.println(h);


يعمل تطبيق الهاتف WSAB على نظام التشغيل Android OS 2.3 والإصدارات الأحدث،

تقدم هذه المقالة مشروعًا لمحطة أرصاد جوية مستقلة تعمل في الوقت الفعلي. يقوم الجهاز بجمع البيانات التناظرية أو الرقمية ويرسلها إلى خادم الويب عبر قناة اتصال GPRS. إذا كنت تستخدم لوحة شمسية وبطارية لها، فيمكن جعل المحطة مستقلة تمامًا. يدعم الجهاز 3 مدخلات تناظرية أو رقمية. قلب الدائرة هو المتحكم الدقيق PIC16F877A. يتفاعل المتحكم الدقيق أيضًا مع وحدة GSM/GPRS SIM900أو SIM300، الموجود في الجزء الخلفي من لوحة الدوائر المطبوعة.
في البداية، تم تصميم الجهاز لقياس تدفق الرياح من أجل جمع قاعدة بيانات لطاقة تدفق الرياح لمواقع مختلفة. في المستقبل، سيسمح لك ذلك باختيار الموقع الأمثل لمولد الرياح.

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

رسم تخطيطي لوحدة GSM:

لقد اخترت SIM900/300 المشهور كوحدة GSM. يتم توصيله باستخدام UART ويتم التفاعل معه باستخدام أوامر AT. جهد إمداد الوحدة هو 3.6 فولت. هوائي خارجي متصل بالوحدة. تحتوي الوحدة على وحدة تحكم مدمجة في الشاحن، وهي مفيدة جدًا عند استخدام البطاريات واللوحة الشمسية أو مولد الرياح لإعادة شحنها.
تستخدم الدائرة مؤشر LED LED1، الذي يوضح حالة GSM (يومض). يتم تشغيل/إيقاف الوحدة باستخدام الزر S3.

ملاحظة 1: أثناء تطوير المشروع، تم إيقاف وحدة SIM300 واستبدالها بوحدة SIM900 الأحدث. تم تصميم الرسم البياني أعلاه لبطاقة SIM300؛ وبالنسبة لوحدة SIM900، ستتم إزالة بعض العناصر بين الوحدة وبطاقة SIM (انظر أوراق البيانات).

ملاحظة 2. تم تصميم المحول S3 لتشغيل/إيقاف تشغيل وحدة GSM، ولكن يمكن استبداله بترانزستور متصل بمنفذ وحدة التحكم الدقيقة. سيسمح لك ذلك بتشغيل وحدة GSM أو إيقاف تشغيلها باستخدام أمر من MK. هذا هو الحل الصحيح لتصميم الدوائر.

ملاحظة 3: تعمل الوحدة بشكل صحيح عندما يتم تطبيق الجهد الكهربي> 4 فولت على طرف Vbat.

مخطط محطة الطقس مع MK PIC 16F877A:

لذا، فإن الشيء الرئيسي هو المتحكم الدقيق PIC 16F877A الذي يعمل بتردد 16 ميجاهرتز. يتم تشغيل MK بواسطة Vbat تمامًا مثل وحدة GSM. يتم استخدام الأطراف RA0,1,2 كمدخلات تناظرية. يتم تحويل جهد الدخل من هذه المسامير باستخدام داخلي. ADC مع Vref=3.1V، والذي يتم الحصول عليه باستخدام صمام ثنائي زينر 3.1V. تقوم موصلات الإدخال أيضًا بإخراج Vbat وGND لتشغيل أجهزة الاستشعار الخارجية (إذا لزم الأمر). يستخدم الترانزستور Q3 (BC547) للتحكم في سطوع PWM لشاشة LCD. يتم استخدام الزر S4 لإعادة ضبط وحدة التحكم الدقيقة، ويستخدم الزر R1 كمقاوم سحب. يستخدم الجهاز أيضًا موصل PIC-ICSP لتوفير إمكانيات البرمجة داخل الدائرة.

شاشة ال سي دي 16×2 HD44780:

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

بعض الصور للجهاز :

المشروع على github (أحدث إصدار من البرامج الثابتة، وملفات PCB، وPDF، وما إلى ذلك)