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

محطة أرصاد جوية صغيرة مع Attiny85: 6 خطوات (بالصور)
محطة أرصاد جوية صغيرة مع Attiny85: 6 خطوات (بالصور)

فيديو: محطة أرصاد جوية صغيرة مع Attiny85: 6 خطوات (بالصور)

فيديو: محطة أرصاد جوية صغيرة مع Attiny85: 6 خطوات (بالصور)
فيديو: AtTiny85 based Mini Weather Station using DHT22 Sensor OLED Display & 16x2 I2C LCD 2024, يوليو
Anonim
محطة أرصاد جوية صغيرة مع Attiny85
محطة أرصاد جوية صغيرة مع Attiny85
محطة أرصاد جوية صغيرة مع Attiny85
محطة أرصاد جوية صغيرة مع Attiny85
محطة أرصاد جوية صغيرة مع Attiny85
محطة أرصاد جوية صغيرة مع Attiny85

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

في الواقع ، إذا قمت بدمج اثنين من التعليمات السابقة ، فقد كتبت:

واجهة LCD ثنائية الأسلاك لـ Arduino أو Attiny واستلام البيانات وإرسالها بين Attiny85 (Arduino IDE 1.06) ثم تم الانتهاء من معظم العمل بالفعل. تحتاج فقط إلى تكييف البرنامج قليلاً.

لقد اخترت حل LCD ثنائي الأسلاك مزود بسجل إزاحة ، بدلاً من شاشة I2C LCD لأنه في Attiny يكون سجل الإزاحة أسهل في التنفيذ من ناقل I2C. ومع ذلك … إذا كنت ترغب على سبيل المثال في قراءة مستشعر الضغط BMP180 أو BMP085 ، فأنت بحاجة إلى I2C لذلك على أي حال ، لذا يمكنك أيضًا استخدام شاشة I2C LCD أيضًا. TinyWireM هي مكتبة جيدة لـ I2C على Attiny (لكنها تتطلب مساحة إضافية).

BOM المرسل: وحدة الإرسال DHT11 Attiny85 10 كيلو المقاوم 433 ميجا هرتز

وحدة الاستقبال Attiny85 10k المقاوم 433 ميجا هرتز

العرض 74LS164 سجل التحول 1N4148 الصمام الثنائي 2x1k المقاوم 1x1k متغير المقاوم وشاشة LCD 2x16

الخطوة 1: محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال

محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الإرسال

جهاز الإرسال هو تكوين أساسي جدًا لـ Attiny85 مع مقاومة سحب على خط إعادة الضبط. يتم إرفاق وحدة إرسال بمسمار رقمي '0' ودبوس بيانات DHT11 متصل بالطرف الرقمي 4. (للحصول على هوائي أفضل بكثير انظر الخطوة 5) البرنامج كما يلي:

// سيعمل على Attiny // RF433 = D0 pin 5

// DHT11 = D4 pin 3 // مكتبات # تتضمن // من Rob Tillaart #include dht DHT11 ؛ #define DHT11PIN 4 #define TX_PIN 0 // pin حيث يتم توصيل جهاز الإرسال الخاص بك // المتغيرات float h = 0 ؛ تعويم ر = 0 ؛ int Transmit_t = 0 ؛ int Transmit_h = 0 ؛ int Transmit_data = 0 ؛ إعداد باطل () {pinMode (1، INPUT) ؛ man.setupTransmit (TX_PIN ، MAN_1200) ؛ } حلقة فارغة () {int chk = DHT11.read11 (DHT11PIN) ؛ ح = الرطوبة DHT11. ر = DHT11.temperature ؛ // أعلم ، أنا أستخدم 3 متغيرات أعداد صحيحة هنا // حيث يمكنني استخدام 1 // ولكن هذا فقط يسهل متابعة transmit_h = 100 * (int) h ؛ Transmit_t = (int) t ؛ Transmit_data = transmit_h + transmit_t ؛ رجل.إرسال (بيانات_إرسال) ؛ تأخير (500) ؛ }

يستخدم البرنامج كود مانشستر لإرسال البيانات. يقرأ DHT11 ويخزن درجة الحرارة والرطوبة في 2 عوامات منفصلة. نظرًا لأن رمز مانشستر لا يرسل عددًا صحيحًا ، فأنا أمتلك عدة خيارات: 1- قسم العوامات إلى عددين صحيحين لكل منهما وأرسلهما 2- أرسل كل عدد عشري كعدد صحيح 3- أرسل العوامين كعدد صحيح واحد ، مع الخيار 1 ، أحتاج إلى الجمع الأعداد الصحيحة إلى عدد عوامات مرة أخرى في المستقبل ويجب أن أحدد أي عدد صحيح هو ماذا ، مما يجعل الكود طويلًا مع الخيار 2 ما زلت بحاجة إلى تحديد أي عدد صحيح للرطوبة وأيها لدرجة الحرارة. لا يمكنني الذهاب بالتسلسل بمفرده في حالة فقد رقم صحيح واحد في الإرسال ، لذلك سأحتاج إلى إرسال معرف مرتبط بالعدد الصحيح. مع الخيار 3 ، يمكنني إرسال عدد صحيح واحد فقط. من الواضح أن هذا يجعل القراءات أقل دقة قليلاً - في حدود درجة واحدة - ولا يمكن للمرء إرسال درجات حرارة أقل من الصفر ، لكنه مجرد رمز بسيط وهناك طرق للتغلب على ذلك. في الوقت الحالي ، يتعلق الأمر بالمبدأ فقط. لذلك ما أفعله هو تحويل الأعداد العائمة إلى أعداد صحيحة وضرب الرطوبة في 100. ثم أضيف درجة الحرارة إلى الرطوبة المضاعفة. نظرًا لحقيقة أن الرطوبة لن تكون أبدًا بنسبة 100٪ الحد الأقصى للرقم الذي سأحصل عليه هو 9900. نظرًا لحقيقة أن درجة الحرارة لن تزيد أيضًا عن 100 درجة ، سيكون الحد الأقصى للرقم 99 ، وبالتالي فإن أعلى رقم سأرسله هو 9999 ومن السهل فصله من جانب المتلقي. إن حسابي الذي استخدم فيه 3 أعداد صحيحة مبالغ فيه لأنه يمكن إجراؤه بسهولة باستخدام متغير واحد. أردت فقط تسهيل متابعة الكود ، حيث يتم تجميع الكود الآن على النحو التالي:

حجم الرسم الثنائي: 2 ، 836 بايت (8 ، 192 بايت كحد أقصى) بحيث يتناسب مع Attiny 45 أو 85 ملاحظة ، مكتبة dht.h التي أستخدمها هي تلك الموجودة في Rob Tillaart. هذه المكتبة مناسبة أيضًا لـ DHT22. أنا أستخدم الإصدار 1.08. ومع ذلك ، قد يواجه Attiny85 مشاكل في قراءة DHT22 مع الإصدارات الأقل من المكتبة. لقد تأكد لي أن 1.08 و 1.14 - على الرغم من العمل على Arduino عادي - يواجهون مشكلة في قراءة DHT22 على Attiny85. إذا كنت تريد استخدام DHT22 على Attiny85 ، فاستخدم الإصدار 1.20 من هذه المكتبة. كل هذا يتوقف على التوقيت. النسخة 1.20 من المكتبة لديها قراءة أسرع. (شكرًا على تجربة المستخدم هذه ، Jeroen)

الخطوة 2: محطة أرصاد جوية صغيرة مع Attiny85: جهاز الاستقبال

محطة أرصاد جوية صغيرة مع Attiny85: جهاز الاستقبال
محطة أرصاد جوية صغيرة مع Attiny85: جهاز الاستقبال

مرة أخرى ، يتم استخدام Attiny85 في التكوين الأساسي مع سحب دبوس إعادة الضبط عالياً بمقاوم 10 ك. يتم توصيل وحدة الاستقبال بالدبوس الرقمي 1 (السن 6 على الشريحة). يتم توصيل شاشة LCD بالدبابيس الرقمية 0 و 2 ، قم بتوصيل سلك مقاس 17.2 سم كهوائي ، ويكون الرمز كما يلي:

#يشمل

# تتضمن LiquidCrystal_SR lcd (0، 2، TWO_WIRE) ؛ #define RX_PIN 1 // = إعداد باطل 6 دبوس مادي () {lcd.begin (16، 2)؛ lcd.home () ؛ man.setupReceive (RX_PIN ، MAN_1200) ؛ man.beginReceive () ، } حلقة باطلة () {if (man.receiveComplete ()) {uint16_t m = man.getMessage ()؛ man.beginReceive () ، lcd.print ("رطب:") ؛ lcd.print (م / 100) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("درجة الحرارة") ؛ lcd.print (م٪ 100) ؛ }}

الكود بسيط إلى حد ما: يتم استلام العدد الصحيح المُرسل وتخزينه في المتغير "m" ، وهو مقسوم على 100 لإعطاء الرطوبة ويعطي مقياس 100 درجة الحرارة ، لذلك لنفترض أن العدد الصحيح الذي تم استلامه كان 33253325/100 = 333325٪ 100 = 25 يُترجم هذا الكود إلى 3380 بايت وبالتالي لا يمكن استخدامه إلا مع attiny85 وليس 45

الخطوة 3: محطة الطقس المصغرة مع Attiny85 / 45: العرض

محطة طقس صغيرة مع Attiny85 / 45: الشاشة
محطة طقس صغيرة مع Attiny85 / 45: الشاشة
محطة طقس صغيرة مع Attiny85 / 45: الشاشة
محطة طقس صغيرة مع Attiny85 / 45: الشاشة

بالنسبة للعرض ، من الأفضل أن أشير إلى التعليمات الخاصة بي على شاشة عرض سلكية. باختصار ، تستخدم شاشة 16 × 2 الشائعة سجل تحويل حتى تتمكن من العمل مع اثنين من المسامير الرقمية. ممكن أيضًا ، ولكن بعد ذلك تحتاج إلى تنفيذ بروتوكول I2C على Attiny. يمكن لبروتوكول Tinywire القيام بذلك. على الرغم من أن بعض المصادر تقول أن هذا يتوقع ساعة 1 ميجا هرتز ، لم أواجه أي مشكلة (في مشروع آخر) لاستخدامها على 8 ميجا هرتز على أي حال لم أزعج نفسي هنا واستخدمت سجل التحول.

الخطوة 4: محطة أرصاد جوية صغيرة مع Attiny85 / 45: الاحتمالات / الاستنتاجات

محطة أرصاد جوية صغيرة مع Attiny85 / 45: الاحتمالات / الاستنتاجات
محطة أرصاد جوية صغيرة مع Attiny85 / 45: الاحتمالات / الاستنتاجات
محطة طقس صغيرة مع Attiny85 / 45: الاحتمالات / الاستنتاجات
محطة طقس صغيرة مع Attiny85 / 45: الاحتمالات / الاستنتاجات
محطة أرصاد جوية صغيرة مع Attiny85 / 45: الاحتمالات / الاستنتاجات
محطة أرصاد جوية صغيرة مع Attiny85 / 45: الاحتمالات / الاستنتاجات

كما قيل ، لقد جعلت هذا الأمر مفيدًا لإظهار أنه يمكن للمرء إنشاء محطة طقس صغيرة مع اثنين من attiny85 (حتى مع واحد attiny85 + 1 attiny45). يرسل فقط الرطوبة ودرجة الحرارة ، باستخدام DHT11 ، ومع ذلك ، يحتوي Attiny على 5 دبابيس رقمية للاستخدام ، 6 حتى مع بعض الخداع. لذلك من الممكن إرسال البيانات من المزيد من أجهزة الاستشعار. في مشروعي - كما هو موضح في الصور على لوحة الشريط وعلى PCB احترافي (OSHPark) - أرسل / أستقبل البيانات من DHT11 ومن LDR ومن PIR ، وكل ذلك باستخدام على الرغم من أن القيد في استخدام attiny85 كمستقبل هو عرض البيانات بأسلوب مبهرج. نظرًا لأن الذاكرة محدودة: نصوص مثل "درجة الحرارة ، الرطوبة ، مستوى الضوء ، اقتراب الموضوع" ستملأ مساحة ذاكرة قيمة بسرعة كبيرة ، ومع ذلك ، لا يوجد سبب لاستخدام اثنين من Arduino فقط لإرسال / استقبال درجة الحرارة والرطوبة. لجعل جهاز الإرسال ينام ولا يستيقظ إلا لإرسال البيانات كل 10 دقائق وبالتالي تغذيها من خلية زر. من الواضح أنه لا يمكن إرسال بيانات درجة الحرارة أو الرطوبة فقط ولكن يمكن للمرء أن يكون لديه مجموعة من أجهزة الإرسال الصغيرة التي ترسل قراءات رطوبة التربة كذلك ، أو إضافة مقياس شدة الريح ، أو مقياس المطر

الخطوة 5: محطة الطقس المصغرة: الهوائي

محطة الطقس المصغرة: الهوائي
محطة الطقس المصغرة: الهوائي

يعد الهوائي جزءًا مهمًا من أي إعداد 433 ميجاهرتز ، لقد جربت الهوائي القياسي 17.2 سم "قضيب" ولدي مغازلة قصيرة بهوائي ملف ، ويبدو أن أفضل ما يعمل هو هوائي محمل بملف يسهل صنعه. التصميم من Ben Schueler ويبدو أنه نُشر في مجلة "Elektor". من السهل متابعة ملف PDF مع وصف "هوائي 433 ميجاهرتز المبرد بالهواء". (اختفى الرابط ، تحقق هنا)

الخطوة 6: إضافة BMP180

إضافة BMP180
إضافة BMP180

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

موصى به: