ShIoTiny: تهوية الغرفة الرطبة (مثال على ذلك المشروع)


النقاط الرئيسية أو ماذا عن هذه المقالة؟


نواصل سلسلة المقالات على ShIoTiny - وحدة تحكم قابلة للبرمجة بصريًا تستند إلى شريحة ESP8266 .

توضح هذه المقالة مثالًا لمشروع التحكم في التهوية في الحمام أو في غرفة رطبة أخرى حول كيفية إنشاء برنامج لـ ShIoTiny .

المقالات السابقة في السلسلة.


ShIoTiny: أتمتة صغيرة ، إنترنت الأشياء ، أو "ستة أشهر قبل الإجازات"
ShIoTiny: العقد والروابط والأحداث أو ميزات برامج الرسم

مراجع


موقع مشروع ShIoTiny
البرامج الثابتة الثنائية ، دائرة التحكم والوثائق
تعليمات ووصف العقد
إعداد وسيط MQTT cloudmqtt.com
لوحة التحكم MQTT لوحة القيادة لالروبوت

مقدمة


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

دفعتني الأسئلة والرسائل من قراء المقالات السابقة إلى عمل مشروع صغير ، كمثال على التحكم في التهوية ، لإظهار كيفية عمل عقد ShIoTiny.

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

سأقول إن فكرة المشروع ليست فكرتي ، لكنني حصلت عليها من هنا ثم عدّلت إلى ShIoTiny .

أولا فهم ما تريد


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

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

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

باختصار ، نريد التحكم في المروحة: قم بتشغيلها وإيقافها ، على التوالي. بتعبير أدق ، نريد تشغيله وإيقافه عند الضرورة.

يبقى تحديد: تحت أي ظروف يجب تشغيل المروحة وتحت أي ظروف - إيقاف.

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

سوف يراقب القارئ اليقظ على الفور كلمة "معين". من هو المعطى؟ كيف مسبقا؟

هناك عدة طرق لتعيين الرطوبة العتبة. سننظر في اثنين منهم: الأول - بمساعدة المقاومة المتغيرة والثاني - عبر الشبكة عبر بروتوكول MQTT. كل من هذه الطرق لها مزايا وعيوب ، والتي سيتم مناقشتها لاحقًا.

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

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

لذلك ، فهمنا ما نريد وحتى قليلاً كيف ستعمل. نحن ندرج باختصار جميع وظائف نظام التحكم في التهوية لدينا:

  • تحديد مستوى الرطوبة عتبة (خياران) ؛
  • قياس الرطوبة ؛
  • إدراج التلقائي للمروحة.
  • الاغلاق التلقائي للمروحة.
  • التضمين اليدوي للمروحة (في لمسة زر واحدة).

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

مخطط كتلة الجهاز


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

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



إذن ماذا نرى في الصورة؟ المروحة متصلة بترحيل Relay1 بوحدة التحكم ShIoTiny . أود أن ألفت انتباهكم إلى حقيقة أن المروحة هي وسيلة منعشة تعيش تحت الجهد العالي. لذلك ، إذا كان أي شخص سوف يفعل هذا بنفسه - كن حذرا. هذا ، على الأقل ، قبل لصق أصابعك أو أدوات القياس في الدائرة - افصل المروحة على الأقل. والنقطة الثانية. إذا كانت المعجبين لديك أقوى من 250 واط ، فعليك عدم توصيلها مباشرة بـ ShIoTiny - فقط من خلال البداية.

اكتشفنا المروحة. الآن زر "التشغيل اليدوي" للمروحة. كان متصلا المدخلات Input1 . لا يوجد شيء أكثر لشرح.

استشعار درجة الحرارة والرطوبة DHT-11 (أو DHT-22 أو نظائرها). لتوصيله ، يتم توفير مدخلات خاصة على وحدة تحكم ShIoTiny . كما ترون في الشكل ، فإن توصيل مثل هذا المستشعر لا يمثل مشكلة أيضًا.

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

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

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

الخيار الأول ، أبسط


لنبدأ بتعبير بسيط: قم بتشغيل مرحل Relay1 عندما يتم تجاوز مستوى الرطوبة للعتبة لفترة معينة.



كما ترون ، لا يوجد شيء معقد: أربع عقد فقط ، وليس حساب نقاط التعليق. DHT11 هو في الواقع مستشعر درجة الحرارة والرطوبة (يمكن تغييره إلى DHT22 ).

ثابت CONST هو مستوى الرطوبة العتبة ، في المئة.

المقارنة - عقدة تقارن رقمين وتعيين الإخراج 1 إذا تم استيفاء الشرط المحدد و 0 إذا لم يتم استيفاء الشرط.

في حالتنا ، ستكون هذه الحالة A> B ، حيث A هو مستوى الرطوبة الذي يقاسه المستشعر ، و B هو المستوى الأدنى لنفس الرطوبة.

بمجرد أن يتجاوز مستوى الرطوبة المقاسة ( A ) مستوى الرطوبة ( B ) ، يظهر 1 على الفور عند إخراج المقارنة A> B وسيتم تشغيل التتابع. على العكس ، بمجرد عودة مستوى الرطوبة إلى طبيعته (أي ، <<B ) ، على الفور عند إخراج المقارنة A> B ، ستظهر 0 وسيتم إيقاف تشغيل التتابع.

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

ألاحظ أنه يتم تحديث البيانات من جهاز استشعار DHT11 مرة واحدة كل 10 ثوانٍ تقريبًا. لذلك ، لن يكون بإمكان التتابع تشغيله وإيقافه أكثر من مرة كل 10 ثوانٍ.

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



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

يختلف الجهد عند مدخل ADC من 0 إلى 1 فولت. لكن الرطوبة عند إخراج المستشعر - تتراوح من 0 إلى 100٪. كيف نقارنهم؟ كل شيء بسيط. العقدة ADC في ShIoTiny لا تقيس فقط جهد الدخل ، ولكنها تعرف أيضًا كيفية قياسه وتحويله .

أي عند إخراج عقدة ADC1 (ADC) سيكون هناك قيمة X تحسب بواسطة الصيغة

X=k cdotuin+b

حيث uin- الجهد عند مدخل ADC (من 0 إلى 1V) ؛ k - المدى (مدى ADC) والإزاحة ب (إزاحة ADC). وبالتالي ، إذا قمت بتعيين k = 100 و b = 0 ، فعند التغيير uinفي النطاق من 0 إلى 1 ، ستختلف قيمة X عند إخراج وحدة ADC في المدى من 0 إلى 100. وهذا يعني ، مساوياً عدديًا لنطاق الرطوبة يتغير من 0 إلى 100٪.

أو ، ببساطة ، عن طريق تشغيل محرك المقاومة المتغيرة ، يمكنك تعيين مستوى الرطوبة الحد من 0 إلى 100. الإزعاج الوحيد هو أنه لا توجد أجهزة عرض. لكن في الممارسة العملية ، إذا كان محرك المقاومة المتغيرة يجعل 6 أقسام 0٪ ​​، 20٪ ، 40٪ ، 60٪ ، 80٪ ، 100٪) ، فهذا يكفي لتعيين مستوى الرطوبة.

كيف يمكننا ضبط معاملات k -range (نطاق ADC) والإزاحة b (إزاحة ADC)؟ نعم ، إنه أسهل من اللفت على البخار! انقر بمؤشر الماوس في عقدة ADC1 وعلى الفور سترى نافذة الإعدادات. في ذلك يمكنك تعيين كل ما تحتاجه. بالنسبة لحالتنا ، ستكون هذه نافذة ، كما في الشكل.



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

الخيار الثاني ، قم بتوصيل الزر


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



يتم تمييز وحدة معالجة النقر فوق الزر بخط برتقالي. إنه عداد نقرات على زر تتم إعادة تعيينه إلى صفر عندما تتجاوز القيمة في ناتجها واحدًا (الخط الأخضر ، خرج العقدة CT ).

كل شيء يعمل هنا بشكل عادي كما كان من قبل: يحسب عداد CT نقرات الزر المتصل بـ Input1 . بمعنى أن القيمة في إخراج هذا العداد تزيد بمقدار 1 مع كل نقرة زر.

بمجرد أن تصبح هذه القيمة مساوية لاثنين (أي أكثر من 1) ، يظهر على الفور عند إخراج المقارنة A> B 1. وسيؤدي هذا 1 إلى إعادة تعيين العداد CT إلى صفر. وهذا يعني المقارنة ، واحدة أقل وفقا للمخطط!

وبالتالي ، يحتوي زرنا على حالتين - 0 و 1. إذا كنا بحاجة إلى المزيد من الحالات (3 أو 4 أو حتى أكثر) - فسيكون ذلك كافياً لتغيير ثابت CONST من قيمة إلى أخرى.

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

يمكنك بالطبع تعقيد الخوارزمية أكثر ، لكننا لن نفعل ذلك - سنترك مجالًا للإبداع لأولئك الذين يرغبون.

الخيار الثالث ، الاتصال بالإنترنت


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

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

بالطبع ، هناك الكثير من الاهتمام لبعض المعجبين - الكثير من الاهتمام. لكن هذا مجرد مثال.

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

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

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

بصفتي وسيطًا ، استخدمت www.cloudmqtt.com ، لكن المبدأ هو نفسه في كل مكان.

لذلك ، سوف نفترض أنك قمت بالتسجيل لدى وسيط MQTT . بشكل عام ، سيمنحك الوسيط (أو يطلب اختراع) اسم مستخدم وكلمة مرور (للترخيص) ، بالإضافة إلى منفذ للاتصال. هناك طريقتان لتوصيل ShIoTiny بسمسار MQTT - اتصال منتظم و TLS ( SSL ).

يتم إدخال جميع هذه المعلمات في ShIoTiny في علامة التبويب " الشبكة" ، قسم MQTT Connection to server .



إذا كان وسيط MQTT لا يحتاج إلى إذن ، فلا تدخل اسم المستخدم وكلمة المرور (اترك هذه الحقول فارغة).

تتطلب المعلمة بادئة موضوع MQTT شرحاً منفصلاً.

بادئة معلمات MQTT عبارة عن سطر يضاف إلى عنوان الموضوع عند النشر والاشتراك في وسيط MQTT. لتعيين بادئة MQTT لوحدة التحكم الخاصة بك ، تحتاج فقط إلى إدخالها في حقل الإدخال " بادئة موضوع MQTT " (" بادئة موضوع MQTT "). البادئة تبدأ دائمًا بشرطة مائلة ( "/" )! إذا لم تقم بإدخال شرطة مائلة في حقل الإدخال ، فستتم إضافته تلقائيًا. لا يمكن استخدام الأحرف "#" و "+" في البادئة. لا توجد قيود أخرى.

على سبيل المثال ، إذا نشرت المعلمة " الحالة " (أو اشتركت فيها) ، وتم تعيين البادئة على " / shiotiny / " ، فسيتم نشر هذه المعلمة على الوسيط تحت اسم " / shiotiny / status ". إذا كان لديك مجموعة بادئة فارغة ، فستبدأ جميع المعلمات على الوسيط بشرطة مائلة ( "/" ): سيتم نشر " الحالة " كـ " / الحالة ".

لذلك ، نعتقد أنك قمت بالتسجيل لدى وسيط MQTT وتلقيت معلومات تسجيل الدخول وكلمة المرور والمنفذ. ثم قمت بتعيين هذه المعلمات في علامة تبويب " الشبكة" ، قسم MQTT Connection بملقم وحدة تحكم ShIoTiny .

نعتقد أن البادئة مضبوطة على " / room / ".

بادئ ذي بدء ، سنقوم بنشر حالة جميع المعلمات الرئيسية: Realay1 relay ، دليل على الحالة ، تلقائي على الحالة ، وأخيراً ، مستويات الرطوبة الحالية والعتبة. حسنا ومكافأة - درجة الحرارة في الغرفة. كيفية القيام بذلك ، انظر الشكل.



كما ترون ، فإن الفرق عن الإصدار السابق هو فقط عقد نشر MQTT . بالنظر إلى البادئة ، يتم نشر المعلمات التالية:


كما ترون ، فإن حالة النظام بالكامل في مرأى ومسمع!

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



نقوم بإزالة عقدة ADC من الدائرة وتشمل ثلاث عقد جديدة هناك: متجر FLASH واستعادة FLASH ووصف MQTT .

إن وظيفة وصف العقدة MQTT واضحة: فهي تستقبل المعلمة / room / trigHset (مستوى رطوبة العتبة) من وسيط MQTT . لكن ماذا يفعل بالبيانات التالية؟ إنها ببساطة تمنحهم عقدة عقدة FLASH ، والتي بدورها تخزن هذه البيانات في ذاكرة غير متقلبة تحت اسم trigH . بعد ذلك ، تقوم عقدة استعادة FLASH بقراءة البيانات الموجودة تحت الاسم trigH من الذاكرة غير المتطايرة ، ونعلم بالفعل ما سيحدث بعد ذلك.

لماذا هذه الصعوبات؟ لماذا لا يمكنني على الفور إرسال البيانات المستلمة إلى إدخال المقارنة؟

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

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

استنتاج


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

كما هو الحال دائمًا ، الاقتراحات ، والرغبات ، والأسئلة ، والأخطاء المطبعية ، وما إلى ذلك ، عن طريق البريد الإلكتروني: shiotiny@yandex.ru

Source: https://habr.com/ru/post/ar464485/


All Articles