لفترة طويلة كنت أرغب في إنشاء محطة صغيرة للطقس ، تعبت من النظر من النافذة للنظر إلى مقياس حرارة خلف الزجاج. سيحل هذا الجهاز محل مقياس الرطوبة والبارومتر وميزان الحرارة ويظهر الوقت الحالي. في هذا المنشور ، سأخبرك بكيفية تجميع محطة أرصاد جوية صغيرة بسرعة وسهولة استنادًا إلى Arduino. سيكون الأساس هو المجلس اردوينو يمكن استخدام نانو لوحات أخرى - Arduino Uno، Arduino Pro mini). سوف نتلقى بيانات الضغط الجوي ودرجة الحرارة من مستشعر BMP180 والرطوبة ودرجة الحرارة الخارجية من مستشعر DHT11. ستشير ساعة الوقت الفعلي DS1302 إلى الوقت الحالي. يتم عرض جميع المعلومات على شاشة LCD1602 من سطرين.
ينقل DHT11 المعلومات عبر سلك واحد إلى اردوينو. تعمل بجهد 5 فولت. تقيس الرطوبة في النطاق من 20 إلى 80٪. مقاييس درجة الحرارة في نطاق 0 إلى 50عنج.
يقيس جهاز استشعار BMP180 الضغط الجوي في نطاق 300-1100 هبأ ، ودرجة الحرارة في نطاق -40 +85عنج. جهد الإمداد هو 3.3 فولت. وهو متصل عبر بروتوكول اتصالات I2C.
تعمل ساعة الوقت الفعلي DS1302 بقوة 5 فولت ومتصلة عبر بروتوكول اتصال I2C. عند تركيبها في الفتحة المناسبة ، تدعم بطاريات CR2032 الساعة عند إيقاف تشغيل الطاقة الرئيسية.
يتم تشغيل شاشة LCD1602 بجهد 5 فولت ويتم توصيلها أيضًا عبر بروتوكول اتصالات I2C.
هذا محلية الصنع مصنوعة على أساس لوحات وأجهزة استشعار جاهزة ، بحيث يمكن تكرارها لأي محب مبتدئ للعمل مع مكواة لحام. في نفس الوقت ، يمكنك الحصول على أساسيات برمجة Arduino. قمت ببرمجة محطة الطقس هذه في برنامج البرمجة المرئية FLPROG في 15 دقيقة. لا حاجة للرسم يدويًا لساعات ، يساعد هذا البرنامج المبتدئين (وليس فقط) على تعلم أساسيات أجهزة البرمجة بسرعة استنادًا إلى منصة Arduino.
من هو كسول جدًا للتلاعب بالبرنامج - رسم تخطيطي (فقط سيكون من الضروري ضبط الوقت الحالي للساعة):
# تشمل
# تضمين "DHT_NEW.h"
# تتضمن
# تتضمن
# تتضمن
BMP085 _bmp085 = BMP085 () ،
_bmp085P = 0 طويلة ؛
_bmp085T = 0 طويلة ؛
_bmp085A = 0 طويلة ؛
LiquidCrystal_I2C _lcd1 (0x3f، 16، 2) ؛
int _dispTempLength1 = 0 ؛
منطقي _isNeedClearDisp1 ؛
DHT _dht1 ؛
iarduino_RTC _RTC1 (RTC_DS1302، 7، 5، 6) ؛
طويل بدون توقيع _dht1LRT = 0UL ؛
طويلة غير موقعة _dht1Tti = 0UL ؛
int _disp1oldLength = 0 ؛
طويلة غير موقعة _bmp0852Tti = 0UL ؛
السلسلة _RTC1_GetTime2_StrOut ؛
int _disp2oldLength = 0 ؛
إعداد باطل ()
{
Wire.begin () ؛
تأخير (10) ؛
_bmp085.init (MODE_ULTRA_HIGHRES، 116، true) ،
_RTC1.begin () ؛
_RTC1.period (1) ؛
_lcd1.init () ؛
_lcd1.backlight () ؛
_dht1.setup (4) ؛
_dht1LRT = ملي () ؛
_dht1Tti = ملي () ،
}}
حلقة فارغة ()
{if (_isNeedClearDisp1) {_lcd1.clear () ؛ _isNeedClearDisp1 = 0 ؛}
if (_isTimer (_bmp0852Tti، 1000)) {
_bmp0852Tti = ملي () ؛
_bmp085.getAltitude (& _ bmp085A) ؛
_bmp085.getPressure (& _ bmp085P) ؛
_bmp085.getTemperature (& _ bmp085T) ؛
}}
// الرسوم: 1
إذا (1) {
_dispTempLength1 = ((((((String ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00)، 1))) + (String ("*")))) + (((String ( "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3)، 0))) + (String ("*"))) + (((String ("")) + ((_floatToStringWitRaz (_dht1 .humidity ، 0))) + (سلسلة ("٪"))))). length () ؛
if (_disp1oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1؛}
_disp1oldLength = _dispTempLength1 ؛
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2)، 0) ؛
_lcd1.print ((((((سلسلة ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00)، 1))) + (سلسلة ("*")))) + (((سلسلة ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3)، 0))) + (String ("*")))) + (((String ("")) + ((_floatToStringWitRaz ( _dht1.humidity، 0))) + (سلسلة ("٪"))))) ؛
} آخر {
if (_disp1oldLength> 0) {_isNeedClearDisp1 = 1 ؛ _disp1oldLength = 0؛}
}}
if (_isTimer (_dht1Tti، 2000)) {
if (_isTimer (_dht1LRT، (_dht1.getMinimumSamplingPeriod ())))) {
_dht1.readSensor () ؛
_dht1LRT = ملي () ؛
_dht1Tti = ملي () ،
}}
}}
إذا (1) {
_dispTempLength1 = ((((((String ("t:")) + ((_floatToStringWitRaz (_dht1.temperature، 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut))). الطول ( ) ؛
if (_disp2oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1؛}
_disp2oldLength = _dispTempLength1 ؛
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2)، 1) ؛
_lcd1.print ((((((String ("t:")))) + ((_floatToStringWitRaz (_dht1.temperature، 0))) + (String ("*")))) + (_RTC1_GetTime2_StrOut)))) ؛
} آخر {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1 ؛ _disp2oldLength = 0 ؛}
}}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD") ؛
}}
String _floatToStringWitRaz (القيمة العائمة ، int raz)
{
سلسلة الإرجاع (القيمة ، raz) ؛
}}
bool _isTimer (وقت طويل غير موقّع ، فترة طويلة غير موقعة)
{
الوقت الحالي الطويل غير الموقّع ؛
currentTime = ملي () ؛
if (currentTime> = startTime) {return (currentTime> = (startTime + period)) ؛} آخر {return (currentTime> = (4294967295-startTime + period)) ؛}
}}
يمكنك استخدام مثل هذا الجهاز في أي مكان أو في المنزل أو في الطبيعة أو في مكان سيارة. من الممكن تشغيل الدائرة من البطاريات ، باستخدام لوحة شحن ، في النهاية ستكون محمولة النموذج محطات الطقس.
يمكن الحصول على جميع المعلومات من خلال النظر إلى الفيديو:
قائمة المواد والأدوات
اردوينو نانو بورد
شاشة LCD من سطرين ؛
- ساعة الوقت الحقيقي DS1302 ؛
- جهاز استشعار الضغط ودرجة الحرارة BMP180 ؛
- مستشعر درجة الحرارة والرطوبة DHT11 ؛
-حظر شحن من الهاتف.
- أي سكن مناسب
ملاقط
مقص.
لحام الحديد
كامبريدج
اختبار
- توصيل الأسلاك ؛
أربعة أسلاك لجهاز الاستشعار عن بعد.
الخطوة الأولى. إنشاء مبنى لمحطة الطقس
التقطت صندوقًا بلاستيكيًا من متجر Fix Price (إجمالي 17p). نافذة قطع مسبقة للعرض في الغطاء. ثم قام بتقطيع الأجزاء الموجودة في الصندوق جزئيًا ، وقام بعمل فتحات لموصل USB الخاص بلوحة Arduino ، وافتتاح مستشعر BMP180 سيكون مستشعر BMP180 موجودًا خارج العلبة لمنع التسخين المفرط من ه الطبقة بالداخل. بعد أن رسمت جسم المنتج منزلي الصنع لأن البلاستيك شفاف. يغلق الصندوق بمزلاج وفيه تتناسب جميع العناصر بشكل جيد.
الخطوة الثانية مخطط التجميع للجهاز.
مخطط الصورة
بعد ذلك ، تحتاج إلى توصيل جميع لوحات وأجهزة استشعار محطة الطقس وفقًا للمخطط. نقوم بذلك باستخدام أسلاك التركيب مع الموصلات المناسبة. لم أقوم بإجراء اتصال لحام ، لذلك في المستقبل ، عندما تفشل الوحدة (أو لأسباب أخرى) ، يمكنك استبدالها بسهولة. على موصل المسمار ، يتم توصيل كابل جهاز استشعار DHT11 المتجه إلى الشارع. يمكن توفير الطاقة من موصل USB للوحة Arduino إلى جهاز كمبيوتر ، أو عن طريق توفير جهد 7-12V إلى VIN ودبوس GND.
أولاً ، قمت بتجميع الدائرة خارج العلبة وبرمجتها وتصحيحها في برنامج FLPROG.
مخطط كتلة الصورة في برنامج FLPROG.
عندما برمجت لأول مرة وقمت بتشغيل دائرة محطة الطقس ، نجحت. الآن أصبح من الممكن وجود بيانات الطقس في الغرفة. بشكل عام ، تحولت محطة طقس منزلية مثيرة للاهتمام مع العديد من الوظائف المختلفة.
اكتملت الصورة
تم تجميع تصميم جيد محلي الصنع في عطلة نهاية الأسبوع. كان من المثير أن تصنع بنفسك جهاز مثير للاهتمام ومفيد. لتصنيع مثل هذا الجهاز بنفسك ، أعتقد أنه حتى المبتدئ يمكنه القيام بذلك ، ولا يتطلب الكثير من الوقت والمال. يمكنك تطبيقه أينما تريد في منزل في منزل ريفي. بالنسبة للعمل بأكمله ، ذهبت ليلتان في نهاية الأسبوع ، أخذت كل الإلكترونيات إلى Aliexpress. باقي المواد التي وجدتها على المروحية. استنادًا إلى منصة Arduino ، يمكنك تجميع مجموعة متنوعة من الأجهزة المفيدة.
شكراً لكم جميعاً على اهتمامكم ، أتمنى لكم التوفيق والتوفيق في حياتك وفي عملك!