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

ترموستات المنزل الذكي: 4 خطوات
ترموستات المنزل الذكي: 4 خطوات

فيديو: ترموستات المنزل الذكي: 4 خطوات

فيديو: ترموستات المنزل الذكي: 4 خطوات
فيديو: How to Upgrade to a Smart Thermostat with Four Wires | This Old House: Live 2024, شهر نوفمبر
Anonim
ترموستات المنزل الذكي
ترموستات المنزل الذكي

Smart Home Thermostat هو برنامج يمكنه تلقائيًا توفير أموال الأسرة في فواتير الخدمات بناءً على تفضيلات الشخص.

الخطوة 1: نظرة عامة

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

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

الخطوة 2: الأجزاء والمواد

(15) أسلاك توصيل

(4) 220 أوم مقاومات

(1) 10 كيلو أوم المقاوم

(1) مستشعر درجة الحرارة

(1) مقاوم للصور

(1) علبة التروس DAGU Mini DC

(1) ديود

(1) الترانزستور

(1) مقاوم ضوئي

(1) اللوح

(1) اردوينو MKR

الخطوة 3: الدائرة

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

الشكل 1 = الصورة اليسرى الكبيرة

الشكل 2 = أعلى اليمين

الشكل 3 = وسط اليمين

الشكل 4 = أسفل اليمين

شكل 1

باستخدام الرسم البياني أعلاه ، قمنا بتوصيل كل من مصابيح LED الثلاثة الخاصة بنا. قمنا بتباعد كل مصباح LED لأننا كنا نعمل مع لوح خبز كبير. بالنسبة لألواح الخبز الأصغر ، قد يكون من الضروري تقريب مصابيح LED من بعضها. أيضًا ، ليس من الضروري تشغيل اللوح لأن مصابيح LED تستهلك القليل جدًا من الطاقة. لم نستخدم اتصال 5V على اللوح لمصابيح LED. تم إجراء كل اتصال من مصابيح LED إلى Arduino مثل السلك الأخضر أعلاه. يتم توصيل مصابيح LED باللون الأحمر والأزرق والأخضر الخاصة بنا بـ Digital Pin 8 و 9 و 10 على التوالي ، والمخصصة بسلك أحمر وأزرق وأخضر في صورتنا.

الشكل 2

تم استخدام الرسم البياني أعلاه لتوصيل المقاوم الضوئي. لقد قمنا ببعض التصحيحات الخاصة بنا ؛ لكن المفاهيم لا تزال هي نفسها. يجب توصيل المقاوم الضوئي بالدبوس التناظري الموجود في الدبوس A1. تأكد من استخدام مقاوم 10 كيلو أوم للمقاوم الأقرب إلى المقاوم الضوئي.

الشكل 3

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

الشكل 4

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

الخطوة 4: كود اردوينو

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

عند إنشاء رمز منظم الحرارة القابل للبرمجة ، فإن أول ما تفعله هو إعداد المستشعرات وإنشاء حلقة for التي ستحصل باستمرار على قراءات درجات الحرارة من مستشعر درجة الحرارة.

إعداد مستشعر درجة الحرارة و LED:

tempPin = 'A0' ؛٪ تحديد وظيفة مجهولة تقوم بتحويل الجهد إلى درجة حرارة درجة الحرارة CfromVolts = @ (فولت) (فولت -0.5) * 100 ؛ مدة أخذ العينات = 5 ؛ ٪ ثانية. كم من الوقت نريد أخذ عينات من أجل samplingInterval = 1 ؛ ٪ كم عدد الثواني بين قراءات درجة الحرارة٪ إعداد متجه لأوقات أخذ العينات samplingTimes = 0: samplingInterval: samplingDuration ؛ ٪ حساب عدد العينات على أساس المدة والفاصل numSamples = الطول (samplingTimes) ؛ ٪ تخصيص متغيرات درجة الحرارة مسبقًا والمتغير لعدد القراءات التي سيتم تخزينها tempC = الأصفار (numSamples ، 1) ؛ tempF = tempC ؛ ٪ سنستخدم حلقة for هذه المرة لأخذ عدد محدد مسبقًا من قراءات درجة الحرارة٪

حلقة for:

للمؤشر = 1: numSamples ٪ اقرأ الجهد عند tempPin وقم بتخزينه في فولت متغير فولت = readVoltage (a ، tempPin) ؛ tempC (index) = -1 * tempCfromVolts (فولت + 0.3) ؛ tempF (index) = tempC (index) * (9/5) +32 ؛ ٪ عرض إخراج منسق يتصل بقراءة درجة الحرارة الحالية fprintf ( درجة الحرارة عند٪ d ثانية هي٪ 5.2f C أو٪ 5.2f F. / n '، … samplingTimes (index) ، tempC (index) ، tempF (index)) ؛ ٪ لاحظ أن إخراج العرض هذا سيصبح مرئيًا جميعًا مرة واحدة فقط بعد اكتمال تنفيذ التعليمات البرمجية بنسبة٪ ما لم تقم بنسخ / لصق الكود إلى ملف نصي عادي. الإيقاف المؤقت (samplingInterval)٪ تأخير حتى نهاية العينة التالية

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

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

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

إعداد القائمة:

الاختيارات = {'Automatic'، 'Manual'}؛ imode = القائمة ('الوضع'، الاختيارات) إذا كان imode> 0 h = msgbox (['اخترت' اختيارات {imode}])؛ else h = warndlg ('لقد أغلقت القائمة دون اختيار') end waitfor (h)؛

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

سيبدأ الوضع اليدوي:

if imode == 2 dlg_prompts = {'ما درجة الحرارة التي تفضلها؟'}؛ dlg_title = "درجة الحرارة" ؛ dlg_defaults = {'68'} ، OPts. Resize = 'on' ؛ dlg_ans = inputdlg (dlg_prompts ، dlg_title ، 1 ، dlg_defaults ، خيارات) ؛ if isempty (dlg_ans) h = warndlg ('لقد ألغيت أمر inputdlg') ؛ else temp_manual = str2double (dlg_ans {1})٪ [أضف شريحة إعداد تنظيم درجة الحرارة أدناه] النهاية

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

إعداد تنظيم درجة الحرارة:

بينما temp_manual <tempF writeDigitalPin (a، 'D9'، 1) writeDigitalPin (a، 'D11'، 1) ؛ النهاية بينما temp_manual> tempF writeDigitalPin (a، 'D8'، 1) writeDigitalPin (a، 'D11'، 1) ؛ نهاية

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

قم بإعداد الوضع التلقائي:

elseif imode == 1 dlg_prompts = {'عادي'، 'Away'}؛ dlg_title = "إعدادات درجة الحرارة" ؛ dlg_defaults = {'68'، '64'} ، OPts. Resize = 'on' ؛ dlg_ans = inputdlg (dlg_prompts ، dlg_title ، 1 ، dlg_defaults ، خيارات) ؛ if isempty (dlg_ans) h = warndlg ('لقد ألغيت أمر inputdlg') ؛ else temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitfor (h)؛ ٪ [إضافة خطوة كاشف الحركة أدناه]

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

Run_Motion_Detector (a ، inf) بينما lightStr == 0 temp = temp_away بينما temp tempF writeDigitalPin (a، 'D6'، 1) أيا كان الضوء الأحمر الدبوس في المحرك أيضًا لكتابة المروحة DigitalPin (a ، 'D9' ، 1) ؛ end end بينما lightStr == 1 temp = temp_normal writeDigitalPin (a، 'D6'، 1)٪ تغيير إلى أي دبوس يوجد به الضوء العادي أثناء temp tempF writeDigitalPin (a، 'D6'، 1) أيًا كان الضوء الأحمر الدبوس موجودًا أيضًا محرك لكتابة المروحة DigitalPin (a، 'D9'، 1) ؛ نهاية النهاية

يمكن العثور على الكود الكامل هنا.

موصى به: