تتم كتابة معظم المقالات على أساس مبدأ "أنا / فعلنا ذلك / و انظروا كم هو رائع!". نفس المنشور مخصص لمشروع فاشل. مرحبًا بكم في القطة ...
هذا استمرار لمنشورتي ، تطوير الأجهزة الذكية على سبيل المثال على وحدة تحكم أرضية ساخنة على ESP8266
لنبدأ من بعيد
أعيش في منزل صغير تم بناؤه وفقًا لمشروعي. تخطيط - شبكة يورو ، ممر ، غرفة معيشة مطبخ في الطابق الأرضي ، حمام ، غرفة أطفال وغرفة نوم في الثانية. من غير قياسي - جدران arbolit ، أساس UShP ، تدفئة حصرية TP. في الوقت نفسه ، الأرضيات خشبية ، في الطابق الثاني هناك أرضية عائمة ، TP - في لوحة GVL. يوجد في الطابق الأول 3 حلقات من أنابيب TP (في الواقع غرفة واحدة) ، وفي الثانية - أيضًا ثلاث ، ولكن كل حلقة مسؤولة عن غرفة واحدة (غرفة نوم ، حمام ، غرفة أطفال) .غلاية الغاز المثبتة على الحائط 14 كيلو وات مسؤولة عن الحرارة. يتم التحكم في المرجل بواسطة منظم حرارة لاسلكي أسبوعي صيني قابل للبرمجة. في كل يوم من أيام الأسبوع لديها أربع فترات ، في كل فترة يمكنك ضبط درجة الحرارة المطلوبة. العقول على البطارية ، التتابع مخفي. إنه يعمل بشكل رائع. لكنني غالبًا ما أحتاج أكثر مما أحتاج. كنت أرغب في التحكم في درجة حرارة الغرفة. نظرت إلى الحلول المقترحة ، لم يعجبني أي شيء. وكلمة "اردوينو" لفتت انتباهي. وبحسب المهنة أنا مبرمج. ونذهب بعيدا ...
حديد
لست قوية في الحديد. لحام لوح التنمية هو ارتفاع قدراتي. لكن Arduino هو شيء بسيط أدركته - حتى مع معرفتي بالإلكترونيات ، فأنا قادر على عمل جهاز تحكم في درجة الحرارة في المنزل الذي يناسبني.
أجهزة استشعار درجة الحرارة
ليس لدي حب الأسلاك في الداخل. أحاول استبعادهم أو إخفائهم ، إذا لم أستطع استبعادهم. وبطريقة متعرجة إلى حد ما ، جئت لاستخدام أجهزة الاستشعار اللاسلكية من محطات الطقس الصينية كمستشعرات لدرجة حرارة الغرفة. تعمل أجهزة الاستشعار على البطاريات لفترة طويلة ويتم بثها بتردد 433 ميجاهرتز. إنه أمر رائع جدًا ، يمكنك اختيار ألوان مختلفة ، مع شاشة أو بدونها. واستشرافا للمستقبل ، سأقول أن كل مصنع لمحطة الطقس يخترع البروتوكول الخاص به لإرسال البيانات باستخدام جهاز استشعار. خلال التجارب ، قمت بتحليل بروتوكولات 5 أنواع من أجهزة الاستشعار - جميعها لها تنسيقات مختلفة لنقل البيانات. طورت مكتبة تستقبل البيانات من 4 أنواع من أجهزة الاستشعار. لم أتصل بالبروتوكول الخامس - بروتوكوله ليس مماثلاً للبروتوكولات الأخرى بسبب عدم وجود حدود الحزمة. أصبحت الأداة الرئيسية لتحليل البيانات محلل منطق صيني. بدون هذه الأداة ، يكون تحليل البروتوكول مستحيلًا تقريبًا. إنه يكلف قليلاً ، إنه سهل الاستخدام - أوصي بأن تحصل عليه لجميع اردوينس.
نفذت المكتبة على مبدأ أخذ العينات ، تردد 10 كيلو هرتز. سمح لنا هذا النهج بضبط الضوضاء على الهواء وتقليل الحمل على المعالج ، مقارنة بالنهج مع الانقطاعات عندما يتغير المستوى على دبوس جهاز الاستقبال. للتصحيح ، تم استخدام محلل منطقي:
إشارة التصحيح
3 ... 6 قنوات - بيانات التصحيح
سأعطي أمثلة على أجهزة الاستشعار وميزاتها.
- النوع 1: نقل البيانات كل 35 ثانية. لا تتغير الفترة ، وهذه مشكلة عند استخدام 3 مستشعرات أو أكثر - تختلف الساعات في المستشعرات قليلاً ، ويمكن أن تتداخل الإشارات أحيانًا ، ويتوقف مستشعر واحد أو مستشعران لمدة ساعة أو مرتين أو ثلاث مرات في الأسبوع أو اثنتين. 6 حزم بيانات في 0.8 ثانية. يتغير معرف المستشعر في كل مرة يتم تشغيله. لا توجد بيانات حالة البطارية.
البيانات
أعلى - بيانات جهاز الاستقبال ، تشير الأسهم إلى التداخل
فيما يلي بيانات جهاز الإرسال.
- النوع 2: فترة إرسال البيانات - 40 ... 80 ثانية ، حسب القناة. أفضل بروتوكول في رأيي هو 15 رزمة بيانات في 0.6 ثانية ، هناك مجموع اختباري. يتغير معرف المستشعر عند تشغيله ، وهناك نقل لبيانات حالة البطارية. أضعف جهاز إرسال - عندما تضع جهاز الاستقبال في صندوق ، فإن جودة الاستقبال تزداد سوءًا بشكل ملحوظ. ربما تعامل مع هوائي خارجي لجهاز الاستقبال.
البيانات
لا تدخل
- النوع 3: فترة نقل البيانات 50..55 ثانية ، حسب القناة. 7 عبوات في 0.6 ثانية. يتغير المعرف عند تشغيله ، هناك نقل لبيانات حالة البطارية. اختيار جيد.
البياناتمطابق تقريبًا للنوع 1
- النوع 4: فترة إرسال البيانات 56 ... 76 ثانية ، حسب القناة. لا توجد شاشة. معرف قابل للتغيير عند تمكين لم يتم الكشف. هل هناك اختلافات في المعرّف بين الحالات المختلفة؟ لا أعرف ، لدي جهاز استشعار واحد. البيانات عن حالة البطارية -. إشارة قوية ، تخطي الإرسال لم يلاحظ أبدًا.
- النوع 5: لم أقم بقياس فترة الإرسال ، ولا يوجد تبديل للقناة ، ولم أقم بتحليل البروتوكول بعمق.
ونتيجة لذلك ، تم تنفيذ وحدة الاستقبال في Arduino Pro Mini مع نقل البيانات عبر i2c slave.
اردوينو ميجا
هذه هي المنصة الأولى التي صنعت عليها وحدة التحكم. كان لجهاز التحكم الخاص بي واجهة أوامر ، يتم التحكم فيها بواسطة أوامر تم إدخالها عبر UART. في تلك المرحلة ، خططت لإنشاء واجهة WEB على ESP8266 والتواصل بها مع Mega على UART. لديّ لوحة Robotdyn Mega مع ESP8266 وكنت أخطط لبناء هذا التطوير على هذا المنتدى. ميزة خاصة للوحة هي عدد كبير من المنافذ الخارجية. ولكن في عملية التعرف على ESP8266 ، أدركت أن هذه الشريحة الصغيرة قادرة تمامًا على الجمع بين وظائف وحدة التحكم والواجهة.
ESP8266
لقد استخدمت خيار اللوحة الصغيرة WeMos D1 ، ولها أبعاد صغيرة وعدد كافٍ من الدبابيس بالنسبة لي - مع مراعاة استخدام موسع المنفذ. هناك عدد كبير من المكتبات لهذا المنتدى. على سبيل المثال ، me-no-dev / ESPAsyncWebServer هي مكتبة خادم ويب رائعة تدعم مقابس الويب. جمعت وحدة التحكم في هذا المنتدى. تطوير واجهة ويب. كل شيء يعمل بشكل جميل. ولكن لسبب غير مفهوم بالنسبة لي - وقت التشغيل ليس أكثر من يوم واحد. إما أنني فعلت شيئًا معوجًا ، أو أن بعض المكتبات المستخدمة معوجة. بالإضافة إلى ذلك ، يوجد حد 5 اتصالات متزامنة. إذا تم تجاوزه - قم بإعادة التشغيل أو حتى التجميد (على الرغم من وجود الوكالة الحالية. لقد واجهت صعوبة في التوقف باستخدام أداة مراقبة خارجية). بالنظر إلى أن واجهة الويب الخاصة بي تتكون من ما يقرب من اثني عشر ملفًا ، وتقوم المتصفحات بتحميل الصفحات في 5 تدفقات متوازية ، فمن السهل تحقيق إعادة التشغيل. بالنسبة لي ، قررت - لا يمكن استخدام هذا المنتدى إلا كعميل. بدأت في البحث عن حلول أخرى.
ESP32
إنه مثل وريث ESP8266. يحتوي ESP32 على أكبر عدد - التردد والذاكرة والساقين ... ولكن المشكلة هي - لا تعمل مكتبة me-no-dev / ESPAsyncWebServer من حيث مآخذ الويب. إطلاقا. تحطم. شيء يتعلق بالتعددية. لم أجد مكتبة خادم ويب أخرى تدعم مقابس الويب.
شركة نفط الجنوب
في هذه المرحلة ، قررت استخدام اللوحة مع لينكس - لم أتوصل إلى أي شيء أكثر ملاءمة.
متطلبات مجلس بلدي. يبدو أنه ليس هناك الكثير منهم:
- لست بحاجة إلى شاشة.
- بسبب عدم وجود شاشة للإعداد الأولي ، يجب أن تكون اللوحة قادرة على العمل في وضع نقطة الوصول.
- أحتاج إلى الحد الأدنى من وظائف نظام التشغيل.
البرتقالي Pi i96
كانت هذه اللوحة مناسبة من جميع النواحي - لا يوجد إخراج فيديو ، WiFi ، ذاكرة فلاش مدمجة ، فتحة بطاقة SD. يمكنك وضع Ubuntu أو DietPi على الذاكرة الداخلية. لكن المشكلة مع هذه اللوحة هي برمجياتها. لا يمكنك إنشاء نقطة وصول. حسنًا ، المشكلة الأكبر - عند إعادة التشغيل ، يتغير عنوان MAC ولم يتم فعل شيء بهذا. في الفرن. (في وقت الكتابة ، على موقع w3bsit3-dns.com ، في الخيط المخصص للنظير في هذا المنتدى (2g IOT) ، ظهرت رسالة تقول أنه من الممكن هزيمة تحول MAC)
بصل أوميغا 2+
وثائق فاخرة. مع وجود البرامج الثابتة خارج الصندوق ، بدأ كل شيء ، لا حاجة للشاشة ، UART غير مطلوب. يتم تمكين SSH بشكل افتراضي. تم تسليم Node.js (الإصدار 4.x ، لكن هذا لا يهمني). تم تسليم مكتبات sqlite و i2c لـ Node.js (باستخدام الدف)
بخلاف i2c ، لم أعد بحاجة إلى أي واجهات أجهزة. مقارنةً بمتغير التطوير الخاص بي ، تمت إضافة وحدة تحكم Arduino Pro Mini منفصلة إلى ESP8266 لتحليل بيانات جهاز استقبال بيانات جهاز استشعار درجة الحرارة. يتم توصيل وحدة تحكم جهاز الاستقبال إلى أوميغا كعبد i2c. يتم توصيل أجهزة الاستشعار السلكية مع واجهة 1wire عبر جسر 1wire <-> i2c (DS2482-100). توجد مكتبة لـ node.js لهذا الجسر ، لكنها لم تعمل معي من حيث البحث عن أجهزة الاستشعار. لم أفهم ، استدرجت إلى شبيبة مكتبة DS2482 التي عملت على ESP8266.
لكن المشكلة هي أن WiFi على Omega-2 لا يعمل بثبات ، ولا يعيد الاتصال بعد إعادة تشغيل جهاز التوجيه. تم حل هذه المشكلة عن طريق إصدار البرامج الثابتة 2 ، وهي ليست في حالة الإصدار ، ولكنها تعمل. لقد أصبح أفضل بكثير. لكن المشكلة تحولت - في بعض الأحيان تسقط اللوحة من جهاز التوجيه Zyxel وتعيد الاتصال بعد إعادة تشغيل جهاز التوجيه أو بعد ساعة أو ساعتين أو ثلاث بدون إعادة تشغيل جهاز التوجيه. أو أنها بدأت تتضاءل بشكل رهيب - فقد اختفت هذه المشكلة بعد تغيير نظام الطاقة (يحب اللوحة حقًا 3.3 فولت أو أعلى قليلاً) وإضافة هوائي خارجي - كان أوميغا سعيدًا جدًا به. وبالتالي ، من حيث المبدأ ، أنا راضٍ عن اللوحة - حقيقة أنه في بعض الأحيان لا يوجد وصول لا يزعجني كثيرًا - حيث أن الواجهة الرئيسية ، استخدمت هاتفًا ذكيًا قديمًا في الرصيف متصل بنقطة وصول أوميغا. وسيكون الوصول عن بعد ضروريًا جدًا - يمكنني إعادة تشغيل جهاز التوجيه عن بُعد. يسبب سوء الفهم - أوميغا 2 لديه دبابيس RST - يجب تقديم واحدة + ، كما أفهمها ، يتم معالجة هذا برمجيًا. ما الذي يجب تقديمه للمرة الثانية وكيفية توصيل مراقب خارجي يغذي - لا أعرف حتى الآن.
منطق تحكم
لقد وصفت بالفعل بنية برنامج وحدة التحكم - لم تتغير (أي إدارة الأوامر النصية المرسلة عبر مقبس الويب). تم ترحيل واجهة الويب باستخدام ESP8266 مع تغييرات تجميلية. تم ترجمة العديد من الإجراءات / وظائف رمز وحدة التحكم ببساطة من C ++ إلى JS. شيء آخر هو أن وجود لينكس (OpenWRT) أعطاني الفرصة لاستخدام قاعدة بيانات SQL - sqlite. وهكذا ، قمت بتنظيم كل المنطق في استعلامات SQL. هذه في الواقع تجربتي الأولى مع sqlite. لقد أحببت بشكل خاص إمكانية استخدام قاعدة بيانات داخل الذاكرة - لقد وضعت جميع البيانات المؤقتة والحالية في قاعدة البيانات هذه (على سبيل المثال ، بيانات المستشعر ، بيانات درجة الحرارة الحالية المطلوبة ، ...).
كود المصدرعادة ما أشارك الأفكار ، وليس رموز المصدر. يبدو لي أن هذا يحفز النشاط العقلي ، والألغام والقراء. تريد الحصول على المصدر - اكتب بشكل شخصي.
التجمع
جمعت كل شيء في الحديد ، مرتبة في صندوق. علاوة على ذلك - اختبارات الموارد. بعد أسبوع من وقت التشغيل ، قررت اجتياز الاختبار. من الممكن التثبيت.
التثبيت
كانت هذه المرحلة ناجحة للغاية. قمت بتعليق الصندوق الموجود بجوار المجمع ، وقمت بتركيب وتوصيل الرؤوس الحرارية. لقد سررت جدًا بفكرتي لتخزين جميع البيانات والإعدادات والمعلمات في قاعدة بيانات - على الفور كنت قادرًا على تكوين المرحلات والمناطق بطريقة لم يتم التخطيط لها ، وهي ثلاث مرحلات لكل منطقة ، ونقل جميع المرحلات الأخرى (الأصل كانت الفكرة منطقة واحدة - تتابع واحد). تضمن المشروع استخدام مجموعة من مستشعرات الخدمة DS18B20 ، لرصد درجة حرارة وسط التسخين عند التدفق ، وفي عودة كل حلقة من الأرضية الدافئة ، ودرجة الحرارة الإجمالية للعودة - تم توصيل هذه المستشعرات وتكوينها بنجاح (الإعداد الكامل يشير إلى الاسم المفهوم للمستشعر).
قمت بتوصيل تتابع المرجل.
إطلاق
عملت وحدة التحكم كما هو مخطط لها.
للاختبار ، قررت زيادة درجة الحرارة قليلاً في إحدى غرف الطابق الثاني.
بدأت المرجل في ارتفاع درجة الحرارة وإيقاف تشغيله.
ثم جاءت أجهزة استشعار الخدمة في متناول اليدين. اتضح أن درجة حرارة الماء عند الخروج من حلقة هذه الغرفة هي فقط بضع أعشار درجة أقل من المدخل! الماء لا يبرد! هذا يعني أنها لا تتخلى عن الحرارة. والبيت كله دافئ عند أي درجة حرارة في البحر (كان الهدف هو خفض درجة الحرارة قليلاً في الطابق الثاني). لذا فإن الطابق الأول يعطي كل الحرارة ، و TP في الطابق الثاني بالكاد يسخن الأرض. ونتيجة لذلك ، لا يمكن تنظيم التسخين بالغرفة في مثل هذه الظروف.
الخلاصة
وهكذا ، وضع تأثير الفيزياء وميزات التصميم في منزلي حدا لتطورى. على الرغم من حقيقة أن وحدة التحكم نفسها تعمل بشكل مثالي ، لا يمكنني استخدامها في نظام التدفئة في منزلي. ربما سأجعله يخفض درجة الحرارة بحيث يتحكم في المناخ في المنزل مثل منظم الحرارة الصيني - وفقًا لأحد أجهزة الاستشعار ، ولكن حتى الآن لا أرى النقطة.
ومع ذلك ، فإن المشروع ككل غير ناجح ، خلال عملية التطوير تعرفت على العديد من التقنيات التي لم أكن معتادًا عليها من قبل:
- برمجة وحدة التحكم
- لقد علمت عن حافلات البيانات 1wire و i2c و uart و ...
- اكتسبت بعض المعرفة في جهاز خادم الويب
- يبدو أنه فهم جيد لتطوير واجهة الويب: html ، JavaScript ، vue.js
- أتقن تطوير خلفية الويب: node.js
وهكذا ، اكتسبت الكثير من الخبرة في مشروع فاشل ، والذي قد يكون مفيدًا في مشاريع أخرى.
أولئك الذين قرأوا على هذا المكان يمكنهم أن ينظروا إلى ما حدث .
(تم حظر الإعدادات الثلاثة الأخيرة)
PS لوحة مثالية ل DIY
في عملية كتابة المقال ، تم اكتشاف مشكلة أخرى مع أوميغا 2 - بدأت الوحدة في التجمد. من الصعب ، إعادة تعيين لا يساعد ، فقط افصل الطاقة. ما هي المشكلة - لا أعرف حتى الآن. ربما لا يحب القوة المتزايدة - الآن يتم إطعامه بجهد 3.8 فولت. سأحاول استبدال وحدة الطاقة. على الرغم من حقيقة أن المشروع لا يفي بوظائفه ، سأتركه الآن في وضع مقياس الحرارة (كما يقولون ، لا تفعل أي شيء على Arduino - ستحصل على محطة أرصاد جوية). ولكن على أي حال ، فإن الموضوع مثير للاهتمام بالنسبة لي ، وأريد تحقيق 100 ٪ من توفر النظام على مدار الساعة طوال أيام الأسبوع. إذا لم يساعد استبدال مصدر الطاقة ، فسأحاول استخدام نظام LinkIt Smart 7688. يبدو أنه مطابق للأجهزة لأوميغا. قد يكون أكثر استقرارا.
إضافة: بعد استبدال المثبت الخطي 5-> 3.3 فولت بنبضة ، لم يكن Onion Omega 2+ يعاني من مشاكل مع WiFi - تشغيل مستقر لمدة أسبوع. ثم كتب هذا الملحق.
بناءً على هذا - لم أجد بنفسي حتى الآن لوحة الخيار المثالي للمنتجات محلية الصنع :(
ربما كأدمغة المشروع التالي ، سأحاول استخدام هاتف ذكي على Android - سيكون عليك توصيل أجهزة الاستشعار به عبر شبكة wifi ، ولكن لا توجد أي مشاكل تقريبًا في استقرار الهواتف ذات العلامات التجارية. ويبدو أن node.js يتم وضعه على الهاتف.
سأكون ممتنا إذا شاركت رؤيتك في اختيار لوحة DIY.