انا الاجمل

شاشة واقية محلية الصنع لجهاز استشعار محطة الطقس. مشروع "محطة الطقس بالمنزل". كيف يعمل البارومتر محلي الصنع

شاشة واقية محلية الصنع لجهاز استشعار محطة الطقس.  مشروع

تم بناء محطة الطقس على متحكم Picaxe من شركة Revolution Education Ltd وتتكون من جزأين رئيسيين: وحدة خارجية ترسل بياناتها كل ثانيتين باستخدام جهاز إرسال 433 ميجا هرتز. ووحدة داخلية تعرض البيانات المستلمة على شاشة عرض LCD مقاس 20 × 4 بالإضافة إلى الضغط الجوي الذي يتم قياسه محليًا في الوحدة الداخلية.

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

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

مجسات خارجية

تستخدم المستشعرات لقياس درجة الحرارة والرطوبة وهطول الأمطار واتجاه الرياح وسرعتها. المستشعرات هي مزيج من الأجهزة الميكانيكية والإلكترونية.

مستشعر درجة الحرارة والرطوبة النسبية

ربما يكون قياس درجة الحرارة هو الأسهل. لهذا ، يتم استخدام مستشعر DS18B20. تم استخدام HIH-3610 لقياس الرطوبة ، بإخراج جهد من 0.8 - 3.9 فولت عند رطوبة من 0٪ إلى 100٪

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

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

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

مثال على قطعة من برنامج يعمل على جهاز كمبيوتر.

درجة الحرارة

الرئيسي: readtemp B.6 ، b1 ؛ قراءة القيمة في b1 إذا كانت b1> 127 ثم neg ؛ اختبار sertxd السلبي (# b1 ، cr ، lf) ؛ إرسال القيمة إلى PE Terminal pause 5000 goto main neg: b1 = b1 - 128 ؛ ضبط قيمة neg sertxt ("-") ؛ إرسال الرمز السلبي sertxt (# b1 ، cr ، lf) ؛ إرسال القيمة إلى محطة PE وقفة 5000 الانتقال الرئيسي

رطوبة

الرئيسي: readadc B.7 ، b1 ؛ قراءة قيمة الرطوبة b1 = b1 - 41 * 100/157 ؛ التغيير إلى٪ RH sertxd (# b1، "٪"، cr، lf) وقفة 5000 ؛ انتظر 5 ثوان انتقل إلى الرئيسية

حساب حساس الرطوبة

الحسابات مأخوذة من وثائق مستشعر Honeywell HIH-3610. يوضح الرسم البياني المنحنى القياسي عند 0 درجة مئوية.

يتم قياس الجهد من المستشعر عند إدخال ADC (B.7) من متحكم Picaxe 18M2. في الكود الموضح أعلاه ، يتم تخزين القيمة ، التي يتم تمثيلها كرقم من 0 إلى 255 (أي 256 قيمة) ، في المتغير b1.

يتم تشغيل دارتنا بجهد 5 فولت ، لذلك فإن كل خطوة ADC هي:
5/256 = 0.0195 فولت.

يوضح الرسم البياني القيمة الأولية لـ ADC 0.8 V:
0.8 / 0.0195 = 41

بأخذ القيم من الرسم البياني ، يكون ميل الرسم البياني (مع مراعاة الإزاحة) تقريبًا:
جهد الإخراج /٪ RH أو
(2.65 - 0.8) / 60 = 0.0308 فولت في٪ RH
(في التوثيق 0.0306)

دعنا نحسب عدد خطوات ADC للرطوبة 1٪:
(V لكل٪ RH) / (خطوة ADC)
0.0308 / 0.0195 = 1.57

٪ RH = قيمة ADC - إزاحة ADC / (خطوات ADC في٪ RH) ، أو
٪ RH = قيمة ADC - 41 / 1.57

ستبدو صيغة الحساب النهائية للميكروكونترولر كما يلي: ٪ RH = قيمة ADC - 41 * 100/157

السكن الواقي

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

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

قم بقص إحدى القطع بحيث يكون جانب واحد كاملًا بحجمها وألصقها داخل أحد الجوانب. تأكد من لصق الألواح بحيث تشكل شكل "^" معًا. افعل هذا لجميع الجوانب.

سرعة الرياح ومقياس الاتجاه

ميكانيكي

مستشعرات سرعة الرياح والاتجاه هي مزيج من المكونات الميكانيكية والإلكترونية. الجزء الميكانيكي متطابق لكلا المستشعرين.

يتم وضع ملحق من الخشب الرقائقي 12 مم (طبقة بحرية) بين أنبوب PVC والقرص الفولاذي المقاوم للصدأ في الطرف العلوي من الأنبوب. يتم لصق المحمل على قرص من الفولاذ المقاوم للصدأ ويتم تثبيته في مكانه بواسطة لوحة من الفولاذ المقاوم للصدأ.

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

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

الجزء الإلكتروني

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

مقياس شدة الريح هو أحد أجهزة الاستشعار الثلاثة التي يجب معايرتها (المستشعران الآخران هما عداد الترسيب ومستشعر الضغط الجوي)

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

في الصورة أعلاه ، فحص المستشعر باستخدام محرك ذو سرعة قابلة للتعديل.

؛ تظهر الأوامر الخاصة بشاشات الكريستال السائل باللون الأزرق hsersetup B9600_4 ، 10000٪ ؛ استخدام LCD Pin 1 ، لا hserin hserout 0 ، (13): وقفة 100 ؛ تهيئة شاشة LCD hserout 0، (13): pause 100 hserout 0، (13): pause 100 pause 500 hserout 0، ("ac1"، 13)؛ مسح وقفة العرض 50 hserout 0، ("acc"، 13) hserout 0، ("ac81"، 13، "adcount:"، 13)؛ اطبع العناوين pause 10 hserout 0، ("ac95"، 13، "adpulsin:"، 13)؛ اطبع العناوين pause 10 do count C.2، 1000، w0؛ عد النبضات (اثنان لكل دورة) w1 = 0 لـ b8 = 1 إلى 2 ؛ قياس طول النبض مرتين النبض C.2 ، 1 ، w2 ؛ لكل دورة و ... w1 = w1 + w2 التالي w1 = w1 / 2 ؛ ... حساب متوسط ​​hserout 0، ("ac89"، 13، "ad"، # w0، ""، 13)؛ اطبع قيمة العد hserout 0، ("ac9d"، 13، "ad"، # w1، " "، 13) ؛ اطبع حلقة قيمة طول النبضة 100 حلقة

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

إذا كانت لدينا كفاءة بنسبة 100٪ وستدور الشفرات بسرعة الريح ، إذن:
نصف قطر الدوار = 3.75 بوصة
قطر الدوار = 7.5 بوصة = 0.625 قدم
محيط الدوار = 1.9642 قدم

1 قدم / دقيقة = 0.0113636 م / ساعة ،
1.9642 قدم / دقيقة = 1 دورة في الدقيقة = 0.02232 م / ساعة
1 م / ساعة = 1 / 0.02232 مراجعة

1 م / ساعة = 44.8 دورة في الدقيقة
؟ م / ساعة = مراجعة / 44.8
= (دورة في الدقيقة * 60) / 44.8

نظرًا لوجود نبضتين في كل دور
؟ م / ساعة = (نبضات في الثانية * 30) / 44.8
= (نبضات في الثانية) / 448

مستشعر اتجاه الرياح - الجزء الميكانيكي

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

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

مستشعر اتجاه الرياح - الجزء الإلكتروني

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

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

يحتوي على العديد من تنسيقات الإخراج المختلفة ، اثنان منها أكثر ملاءمة لغرضنا. يتم تحقيق أفضل دقة مع واجهة SSI. يسلم AS5040 نبضات من 1 µs عند 0 ° إلى 1024 s عند 359.6 °

فحص معايرة مستشعر اتجاه الرياح:

قم بقراءة ADC10 B.3 ، w0 ؛ اقرأ من توقف المحمل المغناطيسي AS5040 مؤقتًا 100 w0 = w0 * 64/182 ؛ تحويل إلى 0 - 360 درجة تصحيح ؛ العرض في Prog / Edit حلقة نافذة التصحيح

مقياس الهطول

قدر الإمكان ، صنعت مقياس المطر من البلاستيك والفولاذ المقاوم للصدأ ، القاعدة مصنوعة من الألومنيوم بسمك 3 مم للصلابة.

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

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

البصريات عن قرب:

الجزء الإلكتروني من مقياس المطر

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

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

معايرة

يتلقى Picaxe 18m2 العدد الحالي للجرافات في الساعة ويعرضه على الشاشة والكمبيوتر.

كنقطة انطلاق ، أستخدم البيانات التالية:
قطر القمع 120 مم ومساحة الحاوية 11.311 مم 2
1 ملم من المطر = 11.311 ملم 3 أو 11.3 ملم.
كل دلو 5.65 مل. وهكذا ، دلاء 2 × 5.65 = 11.3 مل (أو 1 مم) من الترسيب. دلو واحد = 0.5 مم من الأمطار.

للمقارنة ، اشتريت مقياس مطر رخيص.

تستخدم الدائرة المذكورة أعلاه ودائرة 08M Picaxe نفس تخطيط ثنائي الفينيل متعدد الكلور لجهاز الاستشعار. يعمل الجهاز ببطارية 12 فولت 7 أمبير من خلال مثبت 7805.
لقد استخدمت مجموعة RF Connect للشبكة اللاسلكية 433 ميجاهرتز. تحتوي المجموعة على زوج من وحدات التحكم PIC المبرمجة خصيصًا. أثبتت مجموعة من الوحدات اللاسلكية أثناء الاختبارات أنها موثوقة تمامًا.

تم تثبيت 08M Picaxe و 18m2 على PP. كل واحد منهم لديه موصل البرمجة الخاص به. تم تخصيص موصلات منفصلة لكل جهاز استشعار + 5 فولت خاص بها - باستثناء درجة الحرارة والرطوبة.

يرجى ملاحظة أنني قمت برسم الرسم في Paintshop Pro لذلك لا يمكنني ضمان دقة تباعد الدبوس.

الوحدة الداخلية

تستخدم الوحدة الداخلية Picaxe 18m2 ومستشعر الضغط وشاشة LCD. يوجد أيضًا منظم جهد 5 فولت.

مقياس الضغط

بعد عدة محاولات فاشلة ، استقرت على MPX4115A. على الرغم من أن أجهزة الاستشعار الأخرى لديها نطاق قياس أكبر قليلاً ، إلا أنه يصعب الوصول إليها. بالإضافة إلى ذلك ، تعمل المستشعرات الأخرى عادة بجهد 3.3 فولت وتتطلب منظمًا إضافيًا. يوفر MPX4115A جهدًا تناظريًا من 3.79 فولت إلى 4.25 فولت يتناسب مع الضغط. على الرغم من أن هذا يعد قرارًا كافيًا تقريبًا لاكتشاف 1 ملي بار من تغيير الضغط ، بعد بعض المناقشات في المنتدى ، أضفت MCP3422 ADC. يمكن تشغيله في وضع 16 بت (أو أعلى) مقارنة بوضع 10 بت في Picaxe. يمكن توصيل MCP3422 (كما هو الحال في دائرتنا) في الوضع التفاضلي بإدخال تناظري من جهاز استشعار. الميزة الرئيسية هي أنها تسمح بتصحيح خرج المستشعر ، وبالتالي تعويض أخطاء MPX4115A بسهولة وتوفير طريقة سهلة لمعايرة المستشعر.

يحتوي MPC3422 في الواقع على مدخلين تفاضليين ، ولكن نظرًا لعدم استخدام أحدهما ، يتم اختصارهما. الإخراج من MCP3422 يحتوي على واجهة I2C ويتصل بدبابيس SDA و SCL على 18m2 Picaxe - دبابيس B.1 و B.4 على التوالي. من وجهة نظري ، فإن العيب الوحيد لاستخدام MCP3422 هو أنه جهاز صغير مثبت على السطح ، لكنني قمت بلحامه بالمحول. بالإضافة إلى واجهة I2C ، يقوم MCP3422 18m2 بمعالجة البيانات الواردة من جهاز الاستقبال اللاسلكي 433 ميجا هرتز ، ويعرض البيانات على الشاشة ، وينقل البيانات إلى جهاز الكمبيوتر. لتجنب أخطاء الوحدة الداخلية عندما لا يعمل الكمبيوتر ، لا توجد استجابة من الكمبيوتر. تنقل الوحدة الداخلية البيانات وتتحرك. ينقل البيانات على فواصل زمنية 2 ثانية تقريبًا بحيث يتم تعويض فقدان البيانات بسرعة في المرة القادمة. لقد استخدمت المنافذ غير المستخدمة على مساحة 18 مترًا مربعًا لتوصيل الزر الموجود على اللوحة الأمامية. يستخدم المفتاح S1 (الإدخال C.5) لتشغيل الإضاءة الخلفية لشاشات الكريستال السائل. يقوم المحول S2 (الإدخال C.0) بإعادة تعيين قيمة الضغط (mbar) على شاشة LCD. يقوم المفتاح S3 (الإدخال C.1) بتبديل معدل الترسيب المعروض على شاشة LCD بين إجمالي الساعة السابقة والساعة الحالية. يجب الضغط باستمرار على الأزرار لأكثر من ثانية واحدة حتى تستجيب.

تجميع الوحدة الداخلية

كما هو الحال مع PCB للوحدة الخارجية ، قمت برسم التخطيط يدويًا باستخدام Paintshop Pro ، لذلك قد تكون هناك أخطاء في المسافات.

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

تظهر الصورة كل شيء مثبت بالفعل في العلبة.

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

الوحدة الخارجية - كود Picaxe

؛ =================================================== = =============== ؛ رمز 18M2 الرئيسي لوحدة Picaxe Weather Station الخارجية (المرسل) ؛ إجراءات الرطوبة ودرجة الحرارة ذات الدقة العشرية ، حقوق النشر ، Peter H Anderson، Baltimore، MD، Jan، "04 ؛ ================================= = =============================== #Picaxe 18M2 الرمز HValue = w0 الرمز HighWord = w1 الرمز LowWord = w2 الرمز RH10 = w3 الرمز HQuotient = b0 الرمز HFract = b1 الرمز X = b0 الرمز aDig = b1 الرمز TFactor = b2 الرمز Tc = b3 الرمز SignBit = b4 الرمز TValue = w4 الرمز TQuotient = b10 الرمز TFract = b11 الرمز TempC_100 = w6 الرمز MagDir = = b14 الرمز MagDirHi = b15 الرمز WindSpeed ​​= w8 الرمز WindSpeedLo = b16 الرمز WindSpeedHi = b17 الرمز ThisHour = b18 الرمز LastHour = b19 الرمز RainRequest = b20 رمز الجهاز HumidRaw = B.7 الرمز TempRaw = B.6 الرمز DirRaw = B. 3 سرعة الرمز = B.0 do ؛ قراءة الرطوبة قراءة ADC10 HumidRaw ، HValue ؛ الحصول على الرطوبة (HValue) HighWord = 1613 ** HValue ؛ حساب RH LowWord = 1613 * HValue RH10 = LowWord / 1024 LowWord = Highword * 64 RH10 = RH10 + LowWord RH10 = RH10 - 258 وقفة 100 ؛ Rea d درجة الحرارة Readtemp12 TempRaw ، TValue ؛ احصل على درجة الحرارة SignBit = TValue / 256/128 إذا كان SignBit = 0 ثم موجب ؛ إنها سلبية لذا TValue = TValue ^ $ ffff + 1 ؛ خذ اثنين من المركب موجب: TempC_100 = TValue * 6 ؛ TC = القيمة * 0.0625 TValue = TValue * 25/100 TempC_100 = TempC_100 + TValue TQuotient = TempC_100 / 100 TFract = TempC_100 ٪ 100/10 X = TQuotient / 10 ؛ احسب عامل تصحيح درجة الحرارة للرطوبة إذا كان SignBit = 0 ثم SignBit = "" else SignBit = "-" endif إذا SignBit = "-" ثم X = 4 - X else X = X + 4 endif GoSub TempCorrection ؛ تعويض RH HQuotient = RH10 / 10 ؛ حساب حاصل RH و ... HFract = RH10٪ 10 ؛ ... مكان عشري. ثم ؛ تحت النطاق HQuotient = 0 HFract = 0 endif ؛ اقرأ المشفر المغناطيسي AS540 لاتجاه الرياح readadc10 DirRaw ، MagDir ؛ اقرأ من AS5040 توقف المحمل المغناطيسي 100 ؛ اقرأ rpm من عداد سرعة الرياح السرعة ، 1000 ، WindSpeed ​​؛ كل 30 دورة ( حوالي دقيقة واحدة) ، اطلب بيانات مقياس المطر من 08M inc RainRequest إذا RainR equest> = 30 ثم ارتفاع C.1 سيرين ، C.0 ، N2400 ، ("r") ، LastHour ، ThisHour ؛ عدادات المطر منخفضة C.1 RainRequest = 0 endif ؛ إرسال البيانات إلى الوحدة الداخلية في كتل 8 بايت ؛ لا تحتاج المجموعة الأولى إلى معايرة ، لذا يتم إجراء الحسابات هنا أولاً. ؛ ستحتاج المجموعة الثانية إلى "التغيير والتبديل" - يتم إجراؤها بسهولة أكبر في النهاية الداخلية. serout C.2، N2400، ("t"، SignBit، TQuotient، TFract، HQuotient، HFract، "A"، "B") وقفة 100 serout C.2، N2400، ("m"، MagDirHi، MagDirLo، WindSpeedHi، WindSpeedLo، LastHour، ThisHour، "C") حلقة TempCorrection: Lookup X، (87، 89، 91، 93، 95، 97، 99، 101، 103، 106، 108، 110، 113، 116، 119، 122، 126 ) ، TFactor "-40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90100110120 إذا TFactor< 100 then aDig = TFactor / 10 RH10 = RH10 * aDig / 10 TFactor = TFactor % 10 aDig = TFactor RH10 = RH10 * aDig / 100 + RH10 else TFactor = TFactor % 100 aDig = TFactor / 10 RH10 = RH10 * aDig / 10 + RH10 TFactor = TFactor % 10 aDig = TFactor RH10 = RH10 * aDig / 100 + RH10 endif return

الذاكرة المستخدمة = 295 بايت من أصل 2048

عداد هطول الأمطار - كود 08M

#picaxe 08M الرمز ThisHour = b2؛ قم بتخزين عدد المستشعرات الحالية في b2 Symbol LastHour = b3 ؛ احفظ عدد الساعات السابقة في b3 ؛ تعريفات الأجهزة Symbol DataRequest = pin3 Symbol BucketSensor = pin4 setint٪ 00010000،٪ 00010000 ؛ pin4 هو مقاطعة pin main: لـ w0 = 1 إلى 60000 ؛ التكرار لمدة ساعة واحدة وقفة 60 ساعة LastHour التالية = ThisHour ؛ تحديث عدد الساعات الأخيرة باستخدام ThisHour = 0 ؛ الساعة الحالية وإعادة تعيين الساعة الحالية الانتقال إلى الرئيسي ؛ قم بمقاطعة الساعة التالية: setint٪ 00010000،٪ 00010000؛ إعادة المقاطعة إذا كانت DataRequest = 1 ثم ؛ هل كانت المقاطعة من 18M2؟ serout 2، N2400، ("r"، LastHour، ThisHour) ؛ نعم ، لذا أرسل عدد الساعات السابقة وعددها الحالي. do: loop while DataRequest = 1 ؛ انتظر حتى توقف 18M2 عن الطلب قبل متابعة endif إذا كان BucketSensor = 1 إذن ؛ هل كانت المقاطعة من مستشعر المطر؟ inc ThisHour ؛ نعم ، زيادة القيام بعدد طرف الجرافة: التكرار بينما BucketSensor = 1 ؛ تأكد من مسح العلم للمستشعر قبل متابعة عودة endif

الوحدة الداخلية - كود Picaxe

؛ ================================================= = =========================== ؛ البرنامج الداخلي الرئيسي (جهاز الاستقبال). ؛ ؛ يستقبل البيانات من الوحدة الخارجية ويعرضها على شاشة LCD ويمرر البيانات إلى جهاز الكمبيوتر ؛ يقيس أيضًا الضغط الجوي (بفضل "motherp") ؛ ==================================== = ======================================= #PICAXE 18M2 ؛ التعريفات المتغيرة (يعاد استخدام b2 إلى b5 لرمز mBar عندما تصبح متاحة) رمز الحاصل = رمز b2 الكسر = b3 الرمز SignBit = الرمز b4 الرطوبة = الرمز b5 HFract = الرمز b14 Dir = w5 الرمز DirLo = الرمز b10 DirHi = b11 رمز السرعة = w3 الرمز SpeedLo = b6 الرمز SpeedHi = b7 الرمز RainCountThisHour = b12 الرمز RainCountLastHour = b13 الرمز LCDRainWhole = b21 الرمز LCDRainFract = b22 رمز LastOrThis = b23؛ رمز المتغيرات MCP3422 ADC mb900 = 17429 ؛ قراءة ADC لـ 900Mbar ، ثم أضف 72.288 عددًا لكل mbar ، تستخدم لإضافة عدد واحد كل 4 ميغا بار تستخدم لإضافة عدد واحد كل رمز 24 ملي بار mBar = w4 ؛ رمز متغيرات التدبير المنزلي lastmbar = w8 ؛ تذكر رمز قراءة mBar السابق RiseFall = b18 ؛ مؤشر ارتفاع الضغط أو هبوطه (سهم لأعلى أو سهم لأسفل) رمز نشط = b19 ؛ يعرض Telltale نشاطًا على رمز شاشة LCD LCD_Status = b20 ؛ هل الإضاءة الخلفية لشاشة LCD مضاءة أم مطفأة (0 أو 1)؟ ؛ رمز تعريفات الأجهزة Wireless = C.7 ؛ اتصال وارد من جهاز الاستقبال اللاسلكي / رمز وحدة فك التشفير الكمبيوتر = C.2 ؛ اتصال تسلسلي صادر بجهاز الكمبيوتر رمز LCD = pinC.5 ؛ زر اللوحة الأمامية فارغ / غير فارغ لرمز الإضاءة الخلفية لشاشة LCD ClearRiseFall = pinC.0 ؛ زر اللوحة الأمامية لمسح ضغط رمز مؤشر "الارتفاع / الهبوط" LastOrThisSwitch = pinC.1 ؛ زر اللوحة الأمامية لعرض هطول الأمطار في الساعة الحالية أو السابقة: hsersetup B9600_4،٪ 10000؛ Use LCD Pin 1، no hserin؛ ByVac 20x4 IASI-2 Serial LCD hi2csetup i2cmaster،٪ 11010000، i2cfast، i2cbyte؛ تهيئة I2C لـ MCP3422 شريحة ADC.hi2cout (٪ 00011000) ؛ اضبط MCP3422 للإيقاف المؤقت للتحويل المستمر 16 بت 500 hserout 0، (13): pause 100؛ hserout 0، ("ac50"، 13) hserout 0، ("ad"، 32، 32، 32، 32، 49، 42، 36، 32، 13)؛ حدد حرف السهم لأسفل (char 10) hserout 0، (" ac1 "، 13)؛ Clear Display pause 50 hserout 0، (" acc "، 13)؛ إخفاء المؤشر hserout 0، (" ac81 "، 13،" ad "، $ df،" C "، 13)؛ طباعة العناوين hserout 0، ("ac88"، 13، "admBar"، 13) hserout 0، ("ac8e"، 13، "adRH٪"، 13) hserout 0، ("acd5"، 13، "ad"، "dir" ، 13)؛ طباعة القدم hserout 0، ("acdc"، 13، "ad"، "mph"، 13)؛ hserout 0، ("ace3"، 13، "ad"، "mm"، 13) lastmbar = 0 ؛ تهيئة المتغيرات LastOrThis = "c" ؛ ==== =================================================== = ==================== ؛ الحلقة الرئيسية =============================================== = =========================== رئيسي:؛ تحقق من الضغط على مفتاح اللوحة الأمامية. آلية مقاطعة Picaxe هي ؛ معطل بشكل دائم تقريبًا بسبب العدد الكبير من أوامر serin و serout ؛ لذا فإن رش البرنامج بـ "مفاتيح gosub" للتحقق من حالة التبديل هو أكثر ؛ فعالة أن المقاطعات. مفاتيح gosub احصل على المجموعة الأولى من القيم من الوحدة الخارجية عبر رابط راديو 433 ميجاهرتز. serin Wireless، N2400، ("t")، SignBit، Quotient، Fract، Humidity، HFract، b15، b15؛ فلاش "telltale" على شاشة LCD للإشارة إلى النشاط و "serin" الناجح من اللاسلكي. منبهة gosub. عرض المجموعة الأولى على شاشة LCD hserout 0، ("acc0"، 13) hserout 0، ("ad"، SignBit، #Quotient، "."، #Fract، ""، 13) hserout 0، ("acce"، 13) hserout 0، ("ad"، #Humidity، "."، #HFract، ""، 13) مفاتيح gosub ؛ إرسال المجموعة الأولى إلى منفذ COM للكمبيوتر ؛ تحتوي كل مجموعة على معرف بداية وبيانات ومعرف نهاية: ؛ البداية = "xS" ، النهاية هي "xE" ، مثال: بداية الرياح هي WS ، نهاية الرياح هي WE ؛ يتم فصل البيانات المتعددة بواسطة مسافة واحدة. serout Computer، N2400، ("TS"، SignBit، #Quotient، ""، #Fract، "TE")؛ درجة حرارة serout Computer، N2400، ("HS، #Humidity،" "، #HFract،" HE ") ؛ رطوبة ؛ تحقق من المفاتيح مرة أخرى وعلى فترات منتظمة طوال البرنامج. مفاتيح gosub احصل على المجموعة الثانية من القيم من رابط راديو الوحدة الخارجية. Serin Wireless ، N2400 ، ("m") ، DirHi ، DirLo ، SpeedHi ، SpeedLo ، RainCountLastHour ، RainCountThisHour ، b15 سرعة منبهة gosub = السرعة * 300/448 ؛ التحويل المقدر من نبضات / ثانية إلى ميل في الساعة Dir = Dir * 64/182 ؛ تحويل 0-1023 إلى 0-359 درجة ؛ للحفاظ على الدقة ، يجب معايرة مقياس المطر عن طريق ضبط ؛ توقف ميكانيكي على دلو القلب بحيث يكون طرف واحد 0.5 مم من المطر. إذا LastOrThis = "c" إذن ؛ حدد ما إذا كنت تريد عرض LCDRainWhole للساعة السابقة = RainCountThisHour / 2 ؛ هطول الأمطار أو الساعة الحالية. LCDRainFract = RainCountThisHour * 5 // 10 else LCDRainWhole = RainCountLastHour / 2 ؛ LCDRainFract = RainCountLastHour * 5 // 10 endif ؛ أرسل المجموعة الثانية إلى شاشة LCD hserout 0، ("ac95"، 13) hserout 0، ("ad"، #Dir، ""، 13) hserout 0، ("ac9c"، 13) hserout 0، ("ad"، # Speed، ""، 13) hserout 0، ("aca1"، 13) hserout 0، ("ad"، LastOrThis، ""، #LCDRainWhole، "."، #LCDRainFract، ""، 13)؛ إرسال المجموعة الثانية إلى كمبيوتر منفذ COM serout Computer، N2400، ("WS"، #Dir، ""، #Speed، "WE")؛ Wind serout Computer، N2400، ("RS"، #RainCountLastHour، ""، #RainCountThisHour، "RE") ؛ مفاتيح gosub المطر. بفضل "matherp" في منتدى Picaxe لحلقة التعليمات البرمجية mbar:؛ قياس الضغط الجوي باستخدام MPX4115A ؛ التناظرية إلى التحويل الرقمي باستخدام MCP3422 ؛ خرج MPX إلى V + ، 2. 5V إلى V- ؛ ADC في وضع 16 بت hi2cin (b1 ، b0 ، b2) ؛ اقرأ في قراءة ADC وبايت الحالة من MCP3422 المجاور 1 = 0 المجاور 2 = 0 w1 = mb900 mbar = 900 do بينما mBarADCValue> w1 ؛ mBarADCValue = w0 = b1: b0 inc mbar w1 = w1 + advent0 inc adjustment1 إذا كان منبهة. إرسال الضغط إلى الكمبيوتر منفذ COM serout الكمبيوتر ، N2400 ، ("PS:" ، #mbar ، "PE") ؛ قم بتهيئة قراءة الضغط السابقة (lastmbar) إذا لم تكن مضبوطة بالفعل إذا كان lastmbar = 0 ثم lastmbar = mbar RiseFall = "" endif؛ عرض سهم لأعلى أو سهم لأسفل إذا تغير الضغط إذا كان mbar> lastmbar ثم RiseFall = "^" ؛ ^ lastmbar = mbar endif إذا كان mbar< lastmbar then RiseFall = 10 ; Custom LCD character. Down arrow lastmbar = mbar endif hserout 0, ("acc7", 13) hserout 0, ("ad", RiseFall, #mbar, " ",13) gosub telltale goto main ; Check if one of the front panel buttons is pressed. switches: if LCD = 1 then ; LCD Backlight on/off Button is pressed if LCD_Status = 0 then ; Backlight is on so... hserout 0, ("ab0", 13) ; Turn it off LCD_Status = 1 else hserout 0, ("ab1", 13) ; Else turn it on. LCD_Status = 0 endif do: loop while LCD = 1 ; Don"t return while button is pressed endif if ClearRiseFall = 1 then ; Pressure rise/fall button is pressed RiseFall = " " ; Clear indicator and... hserout 0, ("acc7", 13) ; ... update display. hserout 0, ("ad", RiseFall, #mbar, " ",13) do: loop while ClearRiseFall = 1 endif if LastOrThisSwitch = 1 then ; Rain Previous Hour / Last Hour button. if LastOrThis = "c" then LastOrThis = "p" LCDRainWhole = RainCountLastHour / 2 ; Recalculate values and re-display to LCDRainFract = RainCountLastHour * 5 // 10 ; give visual confirmation of button-press else LastorThis = "c" LCDRainWhole = RainCountThisHour / 2 ; LCDRainFract = RainCountThisHour * 5 // 10 endif hserout 0, ("aca1", 13) hserout 0, ("ad", LastOrThis, " ", #LCDRainWhole, ".", #LCDRainFract, " ", 13) do: loop while LastOrThisSwitch = 1 endif return ; Flash "tell-tale" on LCD display to show activity telltale: if active = "*" then active = " " else active = "*" endif hserout 0, ("ac80", 13, "ad", active, 13) return

الذاكرة المستخدمة = 764 بايت من أصل 2048

برامج الكمبيوتر

تمت كتابة البرنامج الذي يتم تشغيله على جهاز الكمبيوتر باستخدام Borland Delphi 7. إنه بدائي للغاية في شكله الحالي ، لكنه على الأقل يُظهر الاتصال بين Picaxe والكمبيوتر.

يمكن اختيار الرسوم البيانية ليتم عرضها في فترة ساعة أو 12 ساعة. يمكن تمرير الرسوم البيانية ذهابًا وإيابًا باستخدام الماوس. يمكن حفظهم. للقيام بذلك ، انقر بزر الماوس الأيمن عليها وحدد الاسم وملف القيمة. يمكنك إعداد مجموعة محدودة من بيانات APRS التي تتم كتابتها مرة واحدة في الدقيقة لكل سطر من ملف APRS.TXT وتخزينها في نفس المجلد مثل Weather.exe. لاحظ أن درجات الحرارة بالدرجات فهرنهايت وهطول الأمطار في 1/100 في البوصة.

قائمة عناصر الراديو

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

DS18B20

1 إلى المفكرة
جهاز استشعار الرطوبةHIH-36101 إلى المفكرة
المقاوم

4.7 كيلو أوم

1 إلى المفكرة
سرعة الرياح ومقياس الاتجاه
الترانزستور الضوئيIR1 إلى المفكرة
الصمام الثنائي الباعث للضوءIR1 إلى المفكرة
المقاوم

220 أوم

1 إلى المفكرة
المقاوم

4.7 كيلو أوم

1 إلى المفكرة
جهاز تشفير مغناطيسي1 إلى المفكرة
مكثف كهربائيا10 فائق التوهج4 إلى المفكرة
مكثف100 نف1 إلى المفكرة
المقاوم

4.7 كيلو أوم

1 إلى المفكرة
المقاوم

10 كيلو أوم

1 إلى المفكرة
مقياس الهطول
عضو الكنيست بيكاكسي

بيككس -08 م

1 إلى المفكرة
المعدل الصمام الثنائي

1N4148

2 إلى المفكرة
مكثف100 نف1 إلى المفكرة
المقاوم

4.7 كيلو أوم

1 إلى المفكرة
المقاوم

10 كيلو أوم

4 إلى المفكرة
المقاوم

22 كيلو أوم

1 إلى المفكرة
المقاوم

220 أوم

2 إلى المفكرة
الصمام الثنائي الباعث للضوءIR1

(مقياس كرونو-ترمو-هيجرو-بارومتر)

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

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

يظهر مظهر المحطة في الأشكال (الشكل 1 والشكل 2).

الصورة 1.
مظهر المحطة

الشكل 2.
المنظر الخارجي للمحطة (الجانب الخلفي)

ويرد أدناه شريط فيديو يوضح كيفية عمل المحطة:


الدائرة الكهربائية.

يظهر مخطط الدائرة الكهربائية في الشكل 3.

الشكل 3
الدائرة الكهربائية التخطيطية.

يتم تجميع المحطة على متحكم ATmega8. توفر سلسلة R1C1 إعادة تعيين أولية (إعادة تعيين) للميكروكونترولر عند تشغيله. يتم توفير البرمجة داخل الدائرة لـ MK من خلال موصل "SPI programmer" XP3.
الصمامات MK ATmega8: عالية = 0xD9 ، منخفضة = 0xE4.

تستخدم الشاشة مؤشرًا مكونًا من أربعة أرقام مكون من 7 مقاطع CL5642BN مع أنود مشترك وفاصل من نقطتين (":") للساعات والدقائق. ترتبط كاثودات مقاطع المؤشر بـ MC من خلال المقاومات المحدودة. يوفر MK إشارة ديناميكية عن طريق تشغيل مفاتيح الترانزستور VT3… VT6.

يتم تجميع الكرونومتر على شريحة DS1307 وفقًا لدائرة التبديل القياسية. يتم توفير دقة الساعة بواسطة مرنان الكوارتز Y1 بتردد 32768 هرتز. في حالة عدم وجود مصدر طاقة رئيسي (5 فولت) ، يتم توفير استمرارية الساعة من خلال مصدر طاقة احتياطي على خلية كلفانية CR2032 (3 فولت). يتم تنفيذ تفاعل MK مع شريحة DS1307 عبر ناقل TWI (I2C). يتم "سحب" خطوط ناقل TWI إلى مصدر VCC2 بواسطة مقاومات R20 و R21. يتم توفير ضبط الساعات والدقائق بواسطة الأزرار SA1 ("الساعات +") ، SA2 ("الدقائق +") ، SA3 ("التثبيت"). في الوقت نفسه ، من الضروري الضغط مع الاستمرار على زر "الإعداد" في لحظة بداية دورة عرض البيانات على الشاشة. بالضغط أو الضغط مع الاستمرار على أزرار "Hours +" أو "Minutes +" ، يتم ضبط وقت الكرونومتر. عند تحرير الزر "Set" ، ستتم كتابة قيم الساعات والدقائق المعروضة على الشاشة إلى الخلايا المقابلة في شريحة DS1307 ، وستتم كتابة القيمة 0 في خلية الثواني. بهذه الطريقة ، يمكنك مزامنة الوقت بدقة مع المصادر المرجعية الخارجية للوقت الدقيق (على سبيل المثال ، من محطات الراديو أو التلفزيون).

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

يتم قياس درجة الحرارة بواسطة مستشعر DHT11. يتحكم MK في المستشعر عبر واجهة ثنائية الاتجاه أحادية الاتجاه. يتم "سحب" خط الواجهة إلى مصدر VCC2 بواسطة المقاوم R19.

للحفاظ على طاقة البطارية ، يقضي المتحكم الدقيق معظم وقته في حالة نوم عميق ("انقطاع التيار الكهربائي"). في الوقت نفسه ، قبل النوم ، يقوم MC بإلغاء تنشيط جميع مستشعرات القياس المتصلة بـ VCC2 (الكرونومتر ، مستشعر الضغط الجوي ، مستشعر الرطوبة ودرجة الحرارة). يتم توفير إلغاء تنشيط أجهزة الاستشعار بواسطة مفاتيح على الترانزستورات VT1 و VT2.

لإيقاظ MK ، يتم تضمين مستشعر الحركة HC-SR501 في دائرة المحطة. مهمتها هي إخراج عضو الكنيست من حالة النوم. عند التشغيل ، يرسل المستشعر إشارة إلى MK ، والتي تستيقظ وتزود الطاقة لـ VCC2 إلى المستشعرات الطرفية (الكرونومتر ، ومستشعر الضغط الجوي ، ومستشعر الرطوبة ودرجة الحرارة). يوفر المفتاح الموجود على الترانزستور VT7 انعكاس إشارة مستشعر الحركة للتنسيق مع MK. يسمح لك مفتاح "Motion" بتعطيل مستشعر الحركة لتوفير طاقة أكبر للبطارية. في هذه الحالة ، يمكن إعطاء أمر بديل لتنبيه MK بالضغط على زر "تثبيت".

يتم تشغيل المحطة من نوعين بديلين من المصادر: من ثلاث بطاريات AA أو من مصدر طاقة 5 فولت عبر ناقل USB. للتبديل بين مصادر الطاقة ، يجب عليك ضبط مفتاح "الطاقة" على أحد المواضع: "USB" أو "البطارية". عند تشغيلها بالبطاريات ، لا يزيد الاستهلاك الحالي للمحطة في وضع السكون عن 200 ميكرو أمبير ، والتي ، بسعة بطارية 2000 مللي أمبير ، تتوافق مع 10000 ساعة (أكثر من عام) من التشغيل المستمر.

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

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

لوحات الدوائر المطبوعة.

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

الشكل 4
لوحة الدوائر المطبوعة (منظر من جانب مكونات الراديو).

الشكل 5
ثنائي الفينيل متعدد الكلور (منظر سفلي ، صورة معكوسة).

يتم تثبيت الأزرار والمفاتيح الخاصة بلوحة تحكم المحطة على لوحة دائرة مطبوعة منفصلة (الشكل 6 والشكل 7).

الشكل 6
لوحة الدوائر المطبوعة بلوحة التحكم (منظر علوي).

الشكل 7
لوحة الدوائر المطبوعة بلوحة التحكم (منظر من جانب المسارات).

يتم تثبيت مقبس توصيل كبل USB على لوحة منفصلة تم شراؤها من AliExpress (الشكل 8).

الشكل 8
لوحة مع مقبس USB.

تصاعد.

يتم تركيب المحطة في علبة عالمية لقنوات الكابل "Promrukav" - IP42 ؛ 400 فولت البوليسترين GOST R 50827.1-2009 TU 3464-001-97341529-2012 المادة 40-0460.

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

البطارية - ثلاث خلايا AA 1.5 فولت كل واحدة موضوعة في حامل خاص - "سرير".

يظهر وضع مكونات الراديو على لوحة الدوائر المطبوعة في الشكل (الشكل 9).

الشكل 9
ظهور وضع الأجزاء على السبورة.

أرشيف المقال "CTBH.rar" يحتوي على:

1. مجلد CTBH - ملفات مشروع C في بيئة Atmel Studio 7.
2. CTBH.dch - مخطط الدائرة الكهربائية بتنسيق Dip Trace.
3. CTBH.dip - لوحة الدوائر المطبوعة للجهاز بتنسيق Dip Trace.
4. CTBH_Buttons.dip - لوحة الدوائر المطبوعة للوحة التحكم بتنسيق Dip Trace.
5. CTBH.hex - ملف التمهيد لـ MK.

حظا سعيدا في عملك وكل التوفيق!

تحميل الأرشيف.

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

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

تم تجميع المحطة على لوح التجارب ، لذلك لا تطلب رسم ثنائي الفينيل متعدد الكلور.

تم استخدام المكونات الرئيسية التالية:
ATMega8 - تحكم
MPX4115A - مستشعر الضغط
HIH-4000 - مستشعر الرطوبة
DS18B20 - مستشعر درجة الحرارة
WH1602A - العرض

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

الاتصال بجهاز كمبيوتر

يتطلب التوصيل بمنفذ USB وصفًا منفصلاً.

من حيث المبدأ ، كان من الممكن الاتصال بمنفذ COM ، إنه أسهل. ولكن أنا مشغول. لا يوجد خيار - USB. منذ أن تم تجميع المحطة مما كانت عليه ، تم استخدام كعب من كبل CA-42 لتوصيل هاتف محمول بجهاز كمبيوتر. دخل الموصل إلى الهاتف المحمول في العمل ، لكن النهاية التي تتصل بالكمبيوتر بقيت. يحتوي هذا الموصل نفسه بالفعل على دائرة كهربائية صغيرة لمنفذ USB ، والإخراج هو UART قياسي ، وهو المستخدم في الهواتف المحمولة وهو مناسب تمامًا لوحدة التحكم ، لذلك نقوم بلحام الأسلاك مباشرة ، دون أي محولات إشارة. بعد تثبيت برامج تشغيل هذا الكبل ، يظهر منفذ COM افتراضي. بعد ذلك ، يمكننا الاتصال بمحطة الطقس الخاصة بنا بأي برنامج ، على سبيل المثال HyperTerminal. لا أذكر على وجه التحديد إزالة لحام الكابلات ، نظرًا لأن الكابلات مختلفة ، فقد تختلف. تحتاج إلى استخدام 3 أسلاك TX ، RX ، GND. على الأرجح ، لن يعمل تشغيل الجهاز من الكبل. أخذت موصل USB الخاطئ وقمت بتشغيله من منفذ USB آخر.

لكي تتمكن من إرسال أوامر من سطر الأوامر وتلقي استجابة من محطة الطقس ، تمت كتابة برنامج getfromcom.exe.

لا تفهم محطة الطقس سوى أمرين:

AGOV - إرجاع قراءات المستشعر الحالية.

SETTIME [الوقت بالثواني منذ بداية اليوم] - يضبط الأمر الوقت في محطة الطقس

للحصول على البيانات ، قم بتشغيل getfromcom.exe COM6 AGOV

لتعيين الوقت ، قم بتنفيذ getfromcom.exe COM6 "SETTIME 72565"

COM6 - المنفذ.
72565 - عدد الثواني منذ بداية اليوم.

أتمتة العمليات

يمكنك الآن قراءة البيانات ومعالجتها باستخدام أي برنامج وإرسالها حيثما تريد ومزامنة وقت محطة الطقس. لقد فعلت ذلك بلغة البرمجة النصية PHP. أولاً ، إنه سريع ويمكنك دائمًا تصحيح البرنامج النصي بسرعة وعدم البحث عن المكان الذي ذهبت إليه شفرة المصدر. ثانيًا ، أنا أعمل مع PHP طوال الوقت. ولكن يمكنك كتابة برنامجك بأي لغة تريدها. بالطبع ، لكي تعمل PHP ، يجب عليك تنزيلها (http://www.php.net/downloads.php) وتثبيتها على جهاز الكمبيوتر الخاص بك. تحت Windows ، يتم ذلك بشكل أساسي. يتم تشغيل البرنامج النصي getfromcom.php من ملف get_data.bat ، ويستطلع محطة الطقس ويعالج البيانات ويرسل البرنامج النصي get_data.php إلى خادم HTTP. سنتحدث عن البرامج النصية على الخادم بعد قليل.

إسبات الكمبيوتر العامل

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

تم وضع الكمبيوتر في وضع الإسبات باستخدام fShutdown.exe / hibernate
الآن في الوقت المحدد ، سوف يستيقظ الكمبيوتر وينفذ get_data.bat

ميزات get_data.bat

فرق:

يقوم devcon.exe بتمكين PCIVEN_10EC
بينغ 127.0.0.1
RASPHONE-d Setilite

ابدأ اتصال الشبكة وقم بإحضار VPN إلى مزود خدمة الإنترنت الخاص بي.

ping 127.0.0.1 - لذلك قمت بالتوقف المؤقت اللازم.

وفقًا لذلك ، قم بتعطيل الأوامر:

RASPHONE -h Setilite
devcon.exe تعطيل PCIVEN_10EC

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

بعد الاستيقاظ من حالة الإسبات ، بدأ الكمبيوتر يعتقد أن منفذ COM مشغول بواسطة برنامج آخر. اضطررت إلى إعادة تشغيل منفذ COM الظاهري باستخدام الأمر devcon.exe إعادة تشغيل "USBVid_6547 & PID_0232"
سيكون لديك معرف جهاز مختلف.

البرامج النصية للخادم:

الآن حول البرامج النصية على الخادم. البرنامج النصي الذي يتلقى البيانات: get_data.php
البرنامج النصي يحفظ البيانات في ملف pogoda.log. في الواقع ، يتم إرسال البيانات إلى قاعدة بيانات MySQL أيضًا. ولكن من أجل البساطة ، سننظر في العمل مع ملف فقط. عند قبول البيانات ، يتحقق البرنامج النصي من تطابق عنوان IP الخاص بالمرسل. يتم سرد العناوين المسموح بها في ملف ip_allow.lst البيانات غير مقبولة من مرسل "أجنبي".

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



نظرًا لأن الظروف الجوية هنا متغيرة تمامًا ، وتتقلب درجة الحرارة في حدود 30-40 درجة مئوية ، فقد قررت إنشاء محطة طقس منزلية.

ما هي وظائف محطة الطقس المنزلية؟
محطة الطقس في Arduino المزودة بشاشة هي جهاز يجمع البيانات عن الطقس والظروف البيئية باستخدام مجموعة متنوعة من أجهزة الاستشعار.

عادة ما تكون هذه هي المستشعرات التالية:

  • ريح
  • رطوبة
  • مطر
  • درجة الحرارة
  • الضغط
  • مرتفعات

هدفي هو إنشاء محطة طقس محمولة على سطح المكتب بيدي.

يجب أن يكون قادرًا على تحديد المعلمات التالية:

  • درجة الحرارة
  • رطوبة
  • الضغط
  • ارتفاع

الخطوة 1: شراء المكونات الصحيحة







  • DHT22 ، مستشعر درجة الحرارة والرطوبة.
  • BMP180 ، مستشعر الضغط.
  • جندى
  • موصل صف واحد 40 مخرجات

من المعدات سوف تحتاج:

  • لحام حديد
  • كماشة وسادة الأنف
  • الأسلاك

الخطوة 2: مستشعر درجة الحرارة والرطوبة DHT22







تستخدم أجهزة استشعار مختلفة لقياس درجة الحرارة. DHT22 و DHT11 و SHT1x شائعة

سأشرح كيف يختلفون عن بعضهم البعض ، ولماذا استخدمت DHT22.

يستخدم مستشعر AM2302 إشارة رقمية. يعمل هذا المستشعر على نظام تشفير فريد وتقنية مستشعر ، لذلك يمكن الاعتماد على بياناته. يتم توصيل عنصر المستشعر الخاص به بجهاز كمبيوتر ذي شريحة واحدة 8 بت.

يتم تعويض كل مستشعر من هذا النموذج حراريًا ومعايرته بدقة ، ويتم تخزين معامل المعايرة في ذاكرة قابلة للبرمجة لمرة واحدة (ذاكرة OTP). عند قراءة القراءة ، سيتذكر المستشعر المعامل من الذاكرة.

الحجم الصغير والاستهلاك المنخفض للطاقة ومسافة النقل الطويلة (100 متر) تجعل AM2302 مناسبًا لجميع التطبيقات تقريبًا ، كما أن 4 مخرجات على التوالي تجعل التثبيت أمرًا سهلاً للغاية.

لنلقِ نظرة على إيجابيات وسلبيات نماذج المستشعرات الثلاثة.

دهت 11

الإيجابيات: لا يتطلب لحام ، أرخص النماذج الثلاثة ، إشارة ثابتة سريعة ، مدى يزيد عن 20 متر ، تداخل قوي.
السلبيات: مكتبة! لا توجد خيارات دقة ، خطأ قياس درجة الحرارة +/- 2 درجة مئوية ، خطأ قياس مستوى الرطوبة النسبية +/- 5٪ ، النطاق غير الكافي لدرجات الحرارة المقاسة (0-50 درجة مئوية).
التطبيقات: البستنة والزراعة.

دهت 22

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

SHT1x

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

مُجَمَّع

  • Vcc - 5V أو 3.3V
  • Gnd - مع Gnd
  • البيانات - إلى دبوس Arduino الثاني

الخطوة 3: مستشعر الضغط BMP180



BMP180 هو مستشعر ضغط جوي مع واجهة I2C.
تقيس مستشعرات الضغط الجوي القيمة المطلقة للهواء المحيط. يعتمد هذا المؤشر على الظروف الجوية المحددة وعلى الارتفاع فوق مستوى سطح البحر.

كانت وحدة BMP180 تحتوي على منظم 3.3V 662k أوم ، والذي ، بسبب غبائي ، انفجرت عن طريق الخطأ. كان علي أن أقوم بضربة قوية مباشرة على الشريحة.

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

مخطط اتصال المستشعر وناقل I2C مع Arduino (نانو أو أونو)

  • SDA-A4
  • SCL-A5
  • VCC - 3.3 فولت
  • GND-GND

لنتحدث قليلاً عن الضغط وكيف يرتبط بدرجة الحرارة والارتفاع.

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

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

يتغير الضغط الجوي أيضًا مع الارتفاع. الضغط المطلق في معسكر القاعدة في إيفرست (5400 متر فوق مستوى سطح البحر) أقل من الضغط المطلق في دلهي (216 مترًا فوق مستوى سطح البحر).

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

قياس الارتفاع

متوسط ​​الضغط عند مستوى سطح البحر هو 1013.25 جيجا باسكال (أو مليبار). إذا ارتفعت فوق الغلاف الجوي ، ستنخفض هذه القيمة إلى الصفر. منحنى هذا الخريف مفهوم تمامًا ، لذا يمكنك حساب الارتفاع بنفسك باستخدام المعادلة التالية: alti = 44330 *

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

تدابير وقائية

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

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

يحفظ بعيداً عن الرطوبة. حساس BMP180 حساس لمستويات الرطوبة ، حاول منع تسرب المياه المحتمل إلى المستشعر.

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

الخطوة 4: تجميع الجهاز







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

قم بتثبيت المقاوم 10kΩ من إخراج البيانات إلى الأرض (Gnd). نحن نلحم كل شيء.
ثم ، بالطريقة نفسها ، نقوم بتثبيت موصل أحادي الصف لمستشعر BMP180 ، ونصنع مصدر الطاقة 3.3 فولت. نقوم بتوصيل كل شيء بحافلة I2C.

أخيرًا ، نقوم بتوصيل شاشة LCD بنفس ناقل I2C مثل مستشعر BMP180.
(أخطط لاحقًا لتوصيل وحدة RTC (ساعة الوقت الحقيقي) بالموصل الرابع بحيث يعرض الجهاز الوقت أيضًا).

الخطوة 5: التشفير




تحميل المكتبات

لتثبيت مكتبات على Arduino ، اتبع الرابط

#تضمن
# تضمين # تضمين # تضمين "DHT.h" # تضمين

ضغط SFE_BMP180 ؛

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 //<<- Add your address here. #define Rs_pin 0 #define Rw_pin 1 #define En_pin 2 #define BACKLIGHT_PIN 3 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7

#define DHTPIN 2 // ما هو الدبوس الرقمي الذي نرتبط به

// Uncomment أيًا كان النوع الذي تستخدمه! // # حدد DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302) ، AM2321 DHT dht (DHTPIN ، DHTTYPE) ؛ LiquidCrystal_I2C lcd (I2C_ADDR ، En_pin ، Rw_pin ، Rs_pin، D4_pin، D5_pin، D6_pin، D7_pin)؛ تعويم t1، t2؛

إعداد باطل () (Serial.begin (9600) ؛ lcd.begin (16،2) ؛ //<<-- our LCD is a 20x4, change for your LCD if needed // LCD Backlight ON lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // go home on LCD lcd.print("Weather Station"); delay(5000); dht.begin(); pressure.begin(); } void loop() { char status; double T,P,p0,a; status = pressure.startTemperature(); if (status != 0) { delay(status);

الحالة = pressure.getTemperature (T) ؛ if (status! = 0) (Serial.print ("1")؛ lcd.clear ()؛ lcd.setCursor (0،0)؛ lcd.print ("Baro Temperature:")؛ lcd.setCursor (0،1 ) ؛ lcd.print (T ، 2) ؛ lcd.print ("deg C") ؛ t1 = T ؛ تأخير (3000) ؛

الحالة = pressure.startPressure (3) ؛ إذا (الحالة! = 0) (// انتظر حتى يكتمل القياس: تأخير (الحالة) ؛

الحالة = pressure.getPressure (P ، T) ؛ if (status! = 0) (lcd.clear ()؛ lcd.setCursor (0،0)؛ lcd.print ("ضغط abslt:")؛ lcd.setCursor (0،1)؛ lcd.print (P، 2 ) ؛ lcd.print ("mb") ؛ تأخير (3000) ؛

p0 = pressure.sealevel (P ، ALTITUDE) ؛ // نحن على ارتفاع 1655 مترًا (بولدر ، أول أكسيد الكربون)

أ = pressure.altitude (P ، p0) ؛ lcd.clear () ؛ lcd.setCursor (0،0) ؛ lcd.print ("الارتفاع:") ؛ lcd.setCursor (0،1) ؛ lcd.print (أ ، 0) ؛ lcd.print ("متر") ؛ تأخير (3000) ؛ )))) تعويم h = dht.readHumidity () ؛ // قراءة درجة الحرارة على أنها مئوية (الافتراضي) float t = dht.readTemperature () ؛ t2 = ر ؛ lcd.clear () ؛ lcd.setCursor (0،0) ؛ // اذهب إلى بداية السطر الثاني lcd.print ("الرطوبة:") ؛ lcd.setCursor (0،1) ؛ lcd.print (ح) ؛ lcd.print ("٪") ؛ تأخير (3000) ؛ lcd.clear () ؛ lcd.setCursor (0،0) ؛ // انتقل إلى بداية السطر الثاني من شاشات الكريستال السائل. print ("DHT Tempurature:") ؛ lcd.setCursor (0،1) ؛ طباعة شاشات الكريستال السائل (ر) ؛ lcd.print ("degC") ؛ تأخير (3000) ؛ lcd.clear () ؛ lcd.setCursor (0،0) ؛ // اذهب إلى بداية السطر الثاني lcd.print ("متوسط ​​درجة الحرارة:") ؛ lcd.setCursor (0،1) ؛ lcd.print ((t1 + t2) / 2) ؛ lcd.print ("degC") ؛ تأخير (3000) ؛ )

لقد استخدمت الإصدار 1.6.5 من Arduino ، الكود يناسبه تمامًا ، ويمكن أن تعمل الإصدارات اللاحقة أيضًا. إذا لم يكن الرمز مناسبًا لسبب ما ، فاستخدم الإصدار 1.6.5 باعتباره الرمز الأساسي.



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

مقدمة

ماذا ، محطة أردينو أخرى للطقس ؟! نعم ، مرة أخرى ، وهذا ما يخبرني به شيء ، ليس الأخير في إنترنت الأشياء.


تمامًا كما يُطلب من كل مبرمج كتابة برنامج "Hello World!" ، كذلك يجب أن يتمتع كل أردويني بخبرة في بناء محطة طقس بسيطة أو ليست محطة طقس.
تم وصف عدد كبير من مشاريع محطات الطقس التي تم إنشاؤها بالفعل على الإنترنت ، ويمكن للقارئ اختيار أي منها للتنفيذ. بصراحة ، لقد درست بعناية حوالي عشرة مشاريع مماثلة ومجموعة من المشاريع ذات الصلة. لذلك ، لا يمكن القول أنني خلقت كل شيء من الصفر ، بالطبع أنا "وقفت على أكتاف العمالقة".


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


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



تم تنفيذ هذا المشروع مرة أخرى في عام 2016 ، لكنني آمل أن يظل مناسبًا.

مجموعة التكنولوجيا

سوف ندرس ونعمل بأشياء بسيطة ومعقدة:

  • مستشعرات درجة الحرارة والرطوبة من النوع DHT22 ، DHT11
  • نوع مستشعر الضغط الجوي BMP180
  • وحدة WiFi ESP8266
  • نوع وحدة الراديو nRF24 2.4 جيجا هرتز
  • عائلة اردوينو برو ميني ، اردوينو ميجا
  • الألواح الشمسية والبطاريات
  • لغة البرمجة C / C ++
  • لغة برمجة PHP
  • نظام إدارة قواعد البيانات MySQL
  • لغة برمجة Java وإطار عمل Android (إنشاء تطبيق لـ Adnroid لعرض بيانات الطقس على هاتف ذكي).

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


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

النماذج

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


لكن هذا في صناعة حيث يتم توظيف العمال بدوام كامل.


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


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


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


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

متطلبات

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


لذلك ، يجب على محطة الطقس لدينا:

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

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


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

حديد. اختيار المكونات

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


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


الحلقة المفرغة؟ لكن الدوائر المفرغة موجودة من أجل كسرها.


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


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


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


ستكون الوحدة المركزية الرئيسية في الداخل. من المهم تحديد هذا في المرحلة الأولية ؛ مثل الخصائص المهمة مثل نظام درجة حرارة التشغيل و "الرقص" من هذا.


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


للتواصل مع العالم الخارجي ، تم اختيار الإنترنت بشكل لا لبس فيه بواسطة وحدة ESP8266 WiFi بدون أي بديل تقريبًا (ملاحظة ، ربما ظهرت هذه البدائل الآن). تتوفر لوحات توسيع Ethernet لـ Arduino ، لكنني لم أرغب في ربط كابل على الإطلاق.



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


هل تستخدم ESP8266 مرة أخرى؟


سلبيات هذا الحل:

    يتطلب شبكة WiFi مستقرة خارج المنزل

    لن يكون نطاق الاتصال رائعًا

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

    المزيد من استهلاك الطاقة.

    استهلاك الطاقة ESP8266:

    عند نقل 120-170 مللي أمبير

    عند تلقي 50-56 مللي أمبير

    في وضع السكون العميق 10 µA (µA)

    خارج الدولة 5 (µA).

في النهاية ، لتوصيل أجهزة الاستشعار عن بعد بالوحدة الرئيسية الرئيسية ، تم اختيار شريحة nRF24L01 + بجهاز إرسال واستقبال 2.4 جيجا هرتز في زجاجة واحدة ، مع هوائي خارجي إضافي ، من أجل "اختراق" الجدران بالتأكيد.



استهلاك الطاقة nRF24L01 + 2.4 جيجا هرتز:

  • عند استقبال 11 مللي أمبير
  • عند الإرسال بسرعة 2 ميجابت في الثانية - 13 مللي أمبير
  • في وضع الاستعداد- I - 26 μA (μA)
  • 900 nA (غير متوفر).

يتمتع كل من ESP8266 و nRF24L01 + بنطاق درجة حرارة تشغيل مناسب: من -40 ℃ إلى + 80.


يمكنك شراء nRF24L01 + مقابل دولار واحد أو بهوائي خارجي مقابل 3 دولارات. يمكنك شراء ESP8266-01 مقابل حوالي 4 دولارات. اقرأ وصف المنتج بعناية! خلاف ذلك ، شراء هوائي واحد.


ظهر جوهر النظام. دعنا ننتقل إلى المستشعرات نفسها.


في الشارع ، كما تعلم ، يمكن أن تصل درجة الحرارة إلى قيم سالبة ، لذا فإن مستشعر DHT11 غير مناسب ، لكن DHT22 مناسب تمامًا.



مواصفات DHT22 / AM2302:

  • 3.3 فولت إلى 5 فولت ، يوصى بـ 5 فولت
  • استهلاك 2.5mA كحد أقصى ، في وقت القياس ونقل البيانات
  • نطاق قياس الرطوبة 0-100٪ مع خطأ 2-5٪
  • نطاق قياس درجة الحرارة من -40 إلى + 125 درجة مئوية مع خطأ ± 0.5 درجة مئوية
  • طلب قياس لا يزيد عن 0.5 هرتز - مرة كل ثانيتين.

داخل المنزل ، آمل ألا تكون هناك درجات حرارة سلبية ، لذا يمكنك استخدام DHT11 ، خاصةً وأنني حصلت عليه بالفعل.


ميزات DHT11:

  • 3.3V إلى 5V العرض
  • استهلاك 2.5 مللي أمبير كحد أقصى وقت القياس ونقل البيانات
  • نطاق قياس الرطوبة 20-80٪ مع خطأ 5٪
  • نطاق قياس درجة الحرارة من 0 إلى + 50 درجة مئوية مع خطأ ± 2 درجة مئوية
  • طلب القياس لا يزيد عن 1 هرتز - مرة واحدة في الثانية.

يمكنك شراء DHT22 بحوالي 3 دولارات. تكلف DHT11 أقل - 1 دولار ، لكنها أيضًا أقل دقة.


عد الآن إلى Arduino مرة أخرى. أي لوحة تختار؟


لقد اختبرت أجزاء فردية من النظام على Arduino UNO. أولئك. لقد قمت بتوصيل وحدة ESP بـ uno ودرستها ، وقمت بإيقاف تشغيلها ، ثم قمت بتوصيل nRF24 ، إلخ. من أجل التنفيذ النهائي لمستشعر النافذة ، اخترت Arduino Pro Mini كأقرب صورة مصغرة إلى Uno.



من حيث استهلاك الطاقة ، يبدو Arduino Pro Mini جيدًا أيضًا:

  • لا يوجد محول USB-TTL ، وهو نفسه "يأكل" كثيرًا ،
  • الصمام متصل من خلال المقاوم 10 كيلو.

للحفاظ على الطاقة بشكل متقدم ، تم التخطيط:

  • قم بإزالة مؤشر LED - مؤشر الطاقة على Arduino Pro Mini (ندمت على عدم إفساد اللوحة)
  • أو استخدم مجموعة "عارية" على معالج دقيق Atmel ATmega328 (لم تستخدمه)
  • استخدم مكتبة الطاقة المنخفضة أو JeeLib.

من المكتبات التي اخترتها Low Power Library ، إنها بسيطة وتحتوي فقط على ما تحتاجه.


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


يمكنك شراء Arduino Mega مقابل 8 دولارات تقريبًا.

استهلاك الطاقة والطاقة

الآن عن استهلاك الغذاء والطاقة.


هناك نوعان من Arduino Pro Mini:

  • لإمداد الجهد 5 فولت والتردد 16 ميجا هرتز
  • لجهد إمداد 3.3 فولت وتردد 8 ميجا هرتز.

نظرًا لأن وحدة الراديو nRF24L01 + تتطلب 3.3 فولت لإمداد الطاقة ، والسرعة ليست مهمة هنا ، فقم بشراء Arduino Pro Mini بسرعة 8 ميجاهرتز و 3.3 فولت.


في هذه الحالة ، يكون نطاق جهد إمداد Arduino Pro Mini هو:

  • 3.35-12 فولت لنموذج 3.3 فولت
  • 5-12 فولت لنموذج 5 فولت.

كان لدي بالفعل 5V Arduino Pro Mini ، ولهذا السبب استخدمته. يمكنك شراء Arduino Pro Mini مقابل 4 دولارات تقريبًا.


سيكون مصدر الطاقة للوحدة المركزية من شبكة 220 فولت من خلال وحدة إمداد طاقة صغيرة ، مما يعطي ناتجًا يبلغ 12 فولت ، 450 مللي أمبير ، 5 واط. شيء من هذا القبيل مقابل 5 دولارات. يوجد أيضًا مخرج منفصل لـ 5V.



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


لذلك ، سيتم تشغيل وحدة الراديو Arduino Pro Mini و nRF24 بواسطة حزمة من 4 بطاريات Ni-Mh.


و تذكر السعة القصوى للبطارية الحديثةحوالي 2500-2700 مللي أمبير في الساعة ، أي شيء آخر هو وسيلة للتحايل التسويقي (Ansmann 2850) أو خدعة (UltraFire 3500).


لا أستخدم بطاريات Li-Ion لعدة أسباب:

  • غالي جدا
  • عندما تنخفض درجة الحرارة المحيطة عن 0 درجة مئوية ، تنخفض طاقة بطارية الليثيوم أيون إلى 40-50٪
  • تلك الرخيصة المصنوعة بدون حماية وغير آمنة (خلال ماس كهربائى أو تفريغ ، يمكن أن تنفجر وتحترق ، شاهد مجموعة من مقاطع الفيديو على YouTube)
  • تتقدم في العمر ، حتى لو لم يتم استخدامها (ومع ذلك ، يمكن قول ذلك عن جميع العناصر الكيميائية) ، بعد عامين تفقد بطارية Li-Ion حوالي 20 ٪ من سعتها.

للحصول على نموذج أولي ، من الممكن تمامًا الحصول على بطاريات Ni-MH AA أو AAA عالية الجودة. علاوة على ذلك ، لا نحتاج إلى تيارات كبيرة. العيب الوحيد لبطاريات Ni-MH هو وقت الشحن الطويل.

المخطط العام لمحطة الطقس

دعونا نلخص. هنا رسم تخطيطي عام لكيفية عمل كل شيء.



يتبع.