ذات مرة ، عندما كنت أرتاح مع الأصدقاء في معسكر طلابي في MEPhI ، أخبرني أحدهم أنه قرر مؤخرًا محاولة زراعة الفراولة على قطعة أرض. اشتريت الأواني ، وحفرت بعض التربة في مكان ما ، وجلبت خراطيم الري. وكل شيء سيكون على ما يرام ، المالك نائم - الفراولة تنمو ، ولكن يجب عليهم فقط الذهاب إلى البلاد بشكل مستقر مرة واحدة في الأسبوع أو حتى في كثير من الأحيان حتى لا تجف النباتات بدون ماء.تذكر زوجان من Arduino ملقاة في خزانة ذات أدراج ، بالإضافة إلى رغبة طويلة الأمد في إنجاز شيء ما أكثر من مجرد مصابيح LED الوامضة ، قررت على الفور تولي هذه المهمة والقيام بهذا الوقت ، إن أمكن ، حتى النهاية.
كواجهة إدارة النظام ، تقرر توفير التحكم اليدوي "من الزر" ، بالإضافة إلى تنفيذ التحكم عن بعد عبر الإنترنت. تم اختيار Arduino Mega ليكون وحدة التحكم في الرأس ، نظرًا لأن الدرع المزود بشاشة LCD والأزرار يمكن توصيله به بسهولة ، كما أنه يحتوي على ذاكرة كافية و GPIO لهذه المهمة.المخطط العام للنظام:
للتفاعل مع الشبكة العالمية ، تم اختيار اللوحة الأم ESP8266 ، التي اكتسبت شعبية كبيرة. يرجع اختيار بروتوكول نقل البيانات اللاسلكي ، بالإضافة إلى انخفاض تكلفة وحدة Wi-Fi ، إلى وجود جهاز توجيه Wi-Fi باستمرار في داشا العميل ، مما يتجنب سحب اتصال سلكي داخل المنزل.على الرغم من حقيقة أن ESP8266 ظهر في أفق مجتمع DIY مؤخرًا ، إلا أن موردًا من المطورين على هذه الشريحة يتطور بالفعل بنشاط في RuNet ، حيث يمكنك دائمًا البحث عن إجابة لسؤالك ، أو العثور على مثال لربط لوحة ESP محددة أو طلب المساعدة في مشكلة.تقدير المشروع
لمراقبة رطوبة التربة الحالية ، تم طلب مستشعر قياسي مع Ebay.لعرض وإدخال المعلومات ، تقرر استخدام درع لوحة مفاتيح LCD ، وهو عبارة عن وحدة إلكترونية مزودة بشاشة LCD و 6 أزرار متصلة بإدخال تناظري واحد.كجهاز تحكم لإمدادات المياه ، تم اختيار صنبور ميكانيكي 12 فولت مع سلكين ، يتم إغلاقها عن طريق تغيير علامات الجهد المجهز. لذلك ، بالإضافة إلى الصنبور ، تم طلب وحدة ترحيل ذات 4 قنوات (تغير مرحلتان القطبية المزودة ، وواحدة مسؤولة عن توفير الجهد ، وتبقى واحدة أخرى في الاحتياطي).مثل ESP8266 على Ebay ، تم طلب أبسط نسخة - ESP-01. الشيء الرئيسي هو أن تتذكر أن ESP8266 يتم تشغيله حصريًا من 3.3 فولت ، والذي يجب الاهتمام به مسبقًا.قائمة المعدات اللازمة:- رافعة آلية
- اردوينو ميجا
- وحدة WiFi (ESP8266)
- 4 قنوات التقوية
- أجهزة استشعار رطوبة التربة
- شاشة LCD مع أزرار
التكلفة الإجمالية (باستثناء تكلفة كل ما هو ضروري للحام والتجميع وكذلك مصدر الطاقة): 61.01 دولارًا. تم تقديم المساهمة الرئيسية في التكلفة النهائية لنظامي بواسطة رافعة تعمل بالطاقة (23.32 دولارًا) ومسؤول Arduino Mega 2560 (26.80 دولارًا).وظائف النظام
بعد القليل من التفكير ، قررت أن نظام الري التلقائي يجب أن يكون قادرًا على العمل في الأوضاع الثلاثة التالية:- دليل ("من الزر"). في هذا الوضع ، يقرر المستخدم وقت بدء الري بناءً على المعلومات المقدمة إليه من مستشعر رطوبة التربة أو بناءً على الخبرة الشخصية ؛
- الوضع المجدول. يقوم المستخدم بتعيين معلمات الري فقط وفقًا للجدول الزمني (التردد ، المدة) ، وبعد ذلك يقوم النظام نفسه بالري وفقًا للإعدادات المحددة ؛
- وضع الاستشعار. يتم الري تلقائيًا عند الوصول إلى حد الرطوبة المحدد مسبقًا. يحتاج المستخدم فقط إلى تعيين قيمة الرطوبة العتبة ومدة الري ؛
- بعيد (من الهاتف الذكي أو الكمبيوتر). يتضمن القدرة على التحكم في النظام عن بعد باستخدام منطق أي من الأوضاع الثلاثة المذكورة أعلاه.
من الصعب أن نتخيل تنفيذ مثل هذه الوظائف بدون قائمة أبسط ، والملاحة التي سيتم تنفيذها باستخدام أزرار درع لوحة المفاتيح LCD. يمكنك أن تقرأ عن تطبيق القائمة على Arduino ، على سبيل المثال ، هنا .Blynk
التفكير في تنفيذ التحكم في الري عن بعد ، صادفت مشروع Blynk المثير للاهتمام ، وجمع الأموال من أجل تنفيذه تم إطلاقه في Kickstarter في 16 يناير 2015 .لمدة شهر ، جمع المشروع 49.235 دولارًا بدلاً من 10000 دولار ، وهو ما يعكس ، على ما يبدو ، الاهتمام الكبير بمثل هذه المشاريع من مجتمع المهوس العالمي.الهدف الرئيسي من Blynk هو إنشاء منصة بأسعار معقولة للتحكم اللاسلكي في الأجهزة الإلكترونية محلية الصنع من الهاتف الذكي. كما خطط المؤلفون ، فإن الوصول إلى الإنترنت ليس شرطًا أساسيًا - يمكن تنزيل خادم Blynk ونشره على شبكتك المنزلية ، بعد حصولك على الاستقلال الذاتي الكامل داخل منزلك.القائمة الكاملة للمنصات المدعومة (من بينها ، بالطبع ، Arduino و Raspberry PI و Intel Edison) ، والتي من المقرر نقل Blynk إليها ، هنا .بشكل تخطيطي ، يتم عرض مبدأ تشغيل Blynk في الشكل التالي:
في قائمة ميزات الواجهة لبرنامج هاتف ذكي للتحكم في جهاز بعيد وعرض المعلومات الواردة منه ، تم الإعلان عن مجموعة متنوعة من العناصر ("عناصر واجهة المستخدم"). نحن نميز أهمها:- الأزرار
- سلايدر
- عصا تحكم أحادية المحور وثنائية المحور ؛
- الإدارة باستخدام جيروسكوب وأجهزة قياس تسارع الهاتف ؛
- أنواع مختلفة من مقابض التحكم ؛
- الرسوم البيانية
- مؤشرات الأسهم
- الإخطارات المنبثقة.
يمكن العثور على قائمة كاملة بالعناصر في صفحة مشروع Blynk على Kickstarter.وتجدر الإشارة إلى أن المشروع في مرحلة نشطة من التطوير ، وبالتالي ، لم يتم تنفيذ جميع الوظائف التي أعلن عنها المطورون حتى الآن. ومع ذلك ، وفقا لهم ، هذه مسألة وقت فقط. الوظائف المتاحة لمشروعنا ستكون كافية.التنفيذ الفني
رسم تخطيطي للجهاز:
كما يتبين من الرسم البياني المعروض ، سيتم تبادل المعلومات بين Arduino و ESP8266 من خلال UART. لكي لا تواجه مشاكل عند وميض وحدة التحكم ، نقوم بتوصيل وحدة Wi-Fi باتصالات D2 و D3 ، وترتيب جهاز UART (Serial3) على هذه الأرجل وتعيين السرعة على 11520 بود.يجب أن يكون لدى القارئ اليقظ سؤال منطقي - كيف سيتواصل اردوينو ، الذي يعمل على منطق 5 فولت ، و 3.3 فولت ESP8266؟ بعد دراسة هذه المشكلة على الإنترنت ، توصلت إلى استنتاج مفاده أن الأغلبية لا تعلق أي أهمية على الإطلاق على هذه المشكلة (كما اتضح لاحقًا - وليس عبثًا) من خلال ربط الأرجل المقابلة لهذين اللوحين مباشرة. اقترح عدد قليل فقط من المقالات استخدام أبسط مقسم الجهد ، أو محولات مصممة خصيصًا. بطبيعة الحال ، لم يكن لدي محول ، لذلك في البداية جرت محاولة لتنفيذ الاتصال باستخدام فاصل ، ولكن لم يؤد ذلك إلى أي نتائج ، وانضممت إلى المجموعة المذكورة أعلاه التي تغلق عيني على المشكلة الموصوفة (عملت المنفعة دون تنسيق المستويات المنطقية) .بضع كلمات حول قوة ESP8266
كما ذكرنا بالفعل في العديد من البرامج التعليمية ، للتشغيل العادي لـ ESP ، تحتاج إلى مصدر طاقة ثابت في نطاق 3.0-3.6 فولت. للقيام بذلك ، يمكنك استخدام العديد من المحولات الخطية ، على سبيل المثال ، AMS1117 3.3 الشائعة اليوم. تشير ورقة البيانات الموجودة على AMS1117 إلى أن جهد الدخل يمكن أن يصل إلى 15 فولت. ومع ذلك ، من أجل التشغيل المستقر في وضع التيار الناتج من حوالي 1 أمبير ، يوصى بخفض جهد الدخل (في الواقع ، 5-6 فولت يكفي). من تجربتي الخاصة ، سأقول أنه عند توصيل المحول بمصدر 12 فولت ، تبدأ AMS في التسخين بنشاط ، مما يؤدي بسرعة إلى انخفاض في جهد الخرج ، ونتيجة لذلك ، إعادة تشغيل ESP8266.تكوين ESP8266
يمكن تنفيذ تفاعل Arduino و ESP8266 عند استخدام Blynk بطريقتين مختلفتين:- «» ESP8266 AT-, Arduino (.. «ESP8266 as shield»);
- ESP Arduino IDE Blynk, , , Arduino , / (.. «ESP8266 as standalone»).
كلا الخيارين لهما إيجابيات وسلبيات ، لكن الخيار الأول أكثر ملاءمة لأنه لا توجد حاجة للعمل مع برنامجين ومراقبة توافق الجهازين باستمرار.للتحكم في استخدام Blynk ، يجب أن تكون قادرًا على تحميل البرنامج الثابت المطلوب إلى ESP8266. في حالتنا ، سيتم استخدام إصدار AT الثابتة v0.22 SDK v1.0.0 .لفلاش لوحات ESP8266 ، تحتاج إلى محول USB-TTL (على سبيل المثال ، واحد ) ، ومع ذلك ، يمكنك أيضًا استخدام Arduino عن طريق إغلاق أرجل RST و GND عليه وتوصيل وحدة RX Wi-Fi إلى Arduino RX leg ، على غرار TX إلى TX. بعد ذلك ، ضع ESP8266 في وضع الوميض (للقيام بذلك ، أغلق خرج GPIO0 على الأرض) ، واستخدم الأداة المساعدة XTCom Util ، املأ البرنامج الثابت ، كما هو موضح هنا. يبقى فقط لزيادة سرعة UART إلى 115200 باود مع AT-command AT + UART_DEF = 115200،8،1،0،0 ، وبعد ذلك سيتم الانتهاء من تكوين وحدة Wi-Fi.رسم لاردوينو
المكتبة الرئيسية للعمل مع Blynk تحت Arduino IDE هي مكتبة BlynkSimpleEsp8266.h. النظر في وظائفه الرئيسية.1) Blynk.begin (auth، "ssid"، "pass")كما توقعت ، تتلقى الوظيفة المعلمات للاتصال بنقطة Wi-Fi - SSID وكلمة المرور الخاصة بها ، بالإضافة إلى رمز المصادقة الخاص بجهازنا للاتصال بخادم Blynk.هام! تبدأ عملية الاتصال بخادم Blynk فقط بعد استدعاء أي من الوظائف التالية في البرنامج لأول مرة: Blynk.run () أو Blynk.connect ().لفصل / الاتصال بخادم Blynk ، يتم استخدام الدالتين Blynk.disconnect () و Blynk.connect () ، وإرجاع النتيجة بنوع منطقي. لإنشاء اتصال (المهلة بالثواني) ، يتم استخدام Blynk.connect (s) (افتراضيًا ، يتم ضبط المهلة على 30 ثانية).2) Blynk.run ()الوظيفة الرئيسية لمزامنة الجهاز مع خادم Blynk وتلقي الأوامر من الهاتف الذكي. يشيع استخدامها في حلقة. بالإضافة إلى ذلك ، تسمح لك هذه الوظيفة بالتحكم في مدخلات ومخرجات لوحة ESP (في وضع "مستقل") بدون استخدام وظائف مثل digitalRead و digitalWrite و analogRead و analogWrite في أي مكان في الكود. يكفي إضافة العناصر الضرورية إلى شاشة التحكم في التطبيق على الهاتف الذكي وربطها بـ GPIO ESP8266 الضروري.3) العمل مع جهات الاتصال الافتراضية ("الدبابيس الافتراضية")واحدة من ميزات Blynk هي استخدام جهات الاتصال الافتراضية. يشير هذا المصطلح إلى قناة منطقية لنقل معلومات مختلفة بين تطبيق محمول وجهاز ، سواء كانت متغيرات منطقية أو قيمًا رقمية (عدد صحيح أو طويل) أو بيانات نصية كسلسلة. لا تحتوي جهات الاتصال الافتراضية على اتصال مباشر بمخرجات الجهاز ويتم استخدامها بشكل أساسي للتفاعل مع مكتبات الوحدات الطرفية (شاشات LCD ، الماكينات ، وما إلى ذلك) أو واجهة تطبيق الهاتف المحمول.في رمز الرسم ، تتم معالجة المكالمة إلى جهة الاتصال الظاهرية بالرقم n باستخدام الكتل BLYNK_READ (Vn) {...} و BLYNK_WRITE (Vn) {...}. داخل الأقواس المتعرجة ، يشار إلى رمز المعالجة للوصول إلى جهة الاتصال الافتراضية. على سبيل المثال ، إذا طلبت أداة التطبيق أن يتم عرض قيمة رطوبة التربة للعرض الظاهري رقم 2 كرسم بياني ، فإننا نحتاج إلى كتابة شيء مثل هذا في الرسم التخطيطي:BLYNK_READ(V2)
{
Blynk.virtualWrite(2, humidity);
}
وبالمثل ، يمكنك مراعاة المعلمة المرسلة ، على سبيل المثال ، من خلال الاتصال الظاهري رقم 9 من مستخدم تطبيق Blynk:BLYNK_WRITE(V9)
{
int x = param.asInt();
}
يستخدم هذا تحويل متغير الإدخال إلى قيمة صحيحة باستخدام param.asInt (). يُسمح أيضًا بالتحويلات param.asStr () و param.asDouble ().هام! يجب تنفيذ إجراءات BLYNK_READ / BLYNK_WRITE بأسرع ما يمكن حتى يتمكن الجهاز من معالجة جميع الطلبات من التطبيق. لذلك ، يُنصح بشدة باستخدام وظائف sllep / delay داخل مثل هذه الإجراءات.يمكن العثور على معلومات أكثر تفصيلاً حول وظائف Blynk في صفحة github للمطور في مجلد الأمثلة أو على صفحة المستندات .الآن ، مسلحين بالمعرفة ، دعنا نعود إلى الغسيل الذاتي وكتابة رسم تخطيطي. سنوفر الإمكانيات التالية لتفاعل الهاتف مع النظام:- اختيار وضع تشغيل النظام: يدوي ، بواسطة جهاز استشعار ، حسب الجدول الزمني ؛
- عرض رطوبة التربة الواردة من النظام وإخراج البيانات التاريخية ؛
- تبادل المعلومات من خلال عنصر التطبيق النهائي.
حاولت التعليق على كل جزء من الكود المسؤول عن وظيفة معينة للنظام ، لذلك لن نتطرق إلى كود البرنامج بالتفصيل. ألاحظ فقط أنه لسهولة الاستخدام ، يتم تسجيل جميع الإعدادات التي تم إجراؤها بواسطة المستخدم في ذاكرة Arduino (EEPROM) غير المتطايرة.يمكن تنزيل Sketch على GitHub.إنشاء تطبيق Blynk للهاتف المحمول
تم ترك الخطوة الأخيرة - إعداد تطبيق الهاتف المحمول. في حالتي ، سيتم استخدام العناصر التالية:- 4 مؤشرات LED (الدبابيس الافتراضية 1 ، 29 ، 30 ، 31) ؛
- زرين (دبابيس افتراضية 2 ، 3) ؛
- محطة لتبادل المعلومات (Virtual Pin 4) ؛
- مؤشر رقمي "عرض القيمة" (Virtual Pin 8) ؛
- رسم بياني مع القدرة على عرض البيانات التاريخية "رسم بياني للتاريخ" (Virtual Pin 8) ؛
- القطعة لتفعيل العمل مع البريد ("البريد الإلكتروني") ؛
- القطعة لتفعيل الإخطارات المنبثقة ("دفع").
بعد تثبيت تطبيق Blynk للهاتف المحمول ، تحتاج إلى التسجيل واختيار الجهاز الذي تريد إدارته (في حالتنا ، هو ESP8266). علاوة على ذلك ، حتى لا نخسر ، نرسل لأنفسنا رمزًا فريدًا للمصادقة ، يُستخدم في الرسم التخطيطي للمصادقة على خوادم Blynk. فيما يلي لقطات شاشة توضح إعداد التطبيق.في النافذة المفتوحة للمشروع الذي تم إنشاؤه في الزاوية العلوية اليمنى يوجد 3 أزرار: إعدادات المشروع العامة ، إضافة عناصر (عناصر واجهة استخدام) إلى النموذج وبدء التشغيل:يبقى إضافة عناصر تحكم إلى نموذج الطلب وتكوينها. يتم عرض بعض عناصر واجهة المستخدم المتوفرة وقت كتابة التقرير أدناه:قائمة الأدوات لإضافتها إلى نموذج الطلب للتحكم في تشغيل النظام ، أضف زرين إلى النموذج: سيكون أحدهما مسؤولاً عن اختيار وضع التشغيل ، والثاني - لبدء الري في الوضع اليدوي. سيتم رسم الوضع الحالي للنظام باستخدام أربعة مؤشرات LED. سوف يضيء مؤشر واحد أثناء الري ، والأخرى الثلاثة ضرورية لعرض الوضع الحالي.يبقى اختيار ألوان العناصر وإضافة التسميات التوضيحية وربطها بجهات الاتصال الافتراضية المطلوبة.لعرض ديناميات رطوبة التربة ، أضف إلى الشكل رسمًا بيانيًا مع القدرة على عرض البيانات التاريخية ("الرسم البياني للتاريخ"). سنعرض القيمة الحالية للرطوبة على الشاشة الرقمية ("عرض القيمة").إضافة الرسم البياني للتاريخ وعناصر عرض القيمة من أجل راحة التكوين عن بعد لمعلمات النظام ، بالإضافة إلى الحصول على معلومات أكثر اكتمالاً حول الحالة الحالية ، نضيف محطة طرفية إلى التطبيق. ولتلقي الإخطارات بالبريد الإلكتروني والهاتف ، يجب عليك أيضًا وضع عنصري "Push" و "Email" في النموذج.إضافة عناصر المحطة الطرفية ، والدفع والبريد الإلكتروني يبقى أن نضع في النموذج جميع الأدوات الموضحة أعلاه وسنحصل على شيء مثل هذا:
النتيجة
فيما يلي بعض صور النظام في الحالة الحالية وفيديو لعمل الغسيل الذاتي وبلينك.سأحجز على الفور لأنني لم أربط صنبورًا ميكانيكيًا في الشقة وأزود الماء بوعاء الزهور ، وليس هناك حاجة ملحة - في وقت اختبار النظام ، تتم محاكاة عملية الري (عند فتح الصنبور) بنجاح من قبل زوجتي ويمكن لري عادي.صورة رقم 1:
صورة رقم 2:
فيديو:بدلا من الاستنتاج
تلخيص إنشاء نظام ري أوتوماتيكي باستخدام Blynk ، يمكننا أن نقول ما يلي:1. في حد ذاتها ، فإن خدمة Blynk هي أداة مريحة للغاية وسهلة التعلم والتي ، بفضل وفرة اللوحات والأجهزة المدعومة ، يمكن دمجها بسهولة في أي جهاز تقريبًا. إلى جانب السعر المنخفض لوحدة Wi-Fi ESP8266 ، تتيح لك هذه المزايا إضافة جهاز تحكم عن بعد إلى مشروع معين بأقل جهد.إن مساوئ استخدام مثل هذا الحل ، بالطبع ، هي مرونة أقل في تخصيص النظام لنفسك والاعتماد على مطوري التطبيقات ، والتي ، مع ذلك ، لا تقلل على الأقل من مزاياها عند استخدامها في مشاريع DIY الصغيرة.2. العيبان الرئيسيان لتنفيذ نظام الري الأوتوماتيكي أعلاه هما تكلفته وجودة مستشعر رطوبة التربة المستخدمة.العيب الأول هو ، كما ذكر أعلاه ، بسبب التكلفة العالية للصنبور الكهرومغناطيسي ولوحة Arduino Mega الرسمية. ومع ذلك ، يمكن تقليله بشكل كبير باستخدام ، على سبيل المثال ، نظائر Arduino أو من خلال تنفيذ الجزء الإلكتروني بالكامل على عضو آخر مناسب. لسوء الحظ ، لم يتم العثور على الرافعة أرخص بكثير ، وهذا لم يكن هدفي.بالنسبة لمستشعر الرطوبة ، من أجل زيادة عمر الخدمة وتقليل منتجات التحليل الكهربائي بين جهات الاتصال الخاصة به ، أولاً ، من الضروري تطبيق الجهد عليه مباشرة فقط قبل قياس الرطوبة (التي يتم تنفيذها في نظامي) ، وثانيًا ، من الأفضل استبدال إما على قضبان الجرافيت ، أو استخدام اتصالات الفولاذ المقاوم للصدأ.في المستقبل القريب ، من المخطط تجميع الجزء الإلكتروني معًا ووضعه في بعض المباني اللائقة ، وآمل في النهاية تثبيت كل شيء في البلد.شكرا لكم على اهتمامكم!