Mundarija:

Aqlli uy termostati: 4 qadam
Aqlli uy termostati: 4 qadam

Video: Aqlli uy termostati: 4 qadam

Video: Aqlli uy termostati: 4 qadam
Video: Bunaqa uyda yashash hammani orzusi! Amerikadagi boylarning "AQLLI" uylari!!! 2024, Noyabr
Anonim
Aqlli uy termostati
Aqlli uy termostati

Bizning Smart Home Thermostat - bu odamning xohishiga ko'ra kommunal to'lovlar uchun uy pulini avtomatik ravishda tejash imkonini beradigan dastur.

1 -qadam: umumiy nuqtai

Smart Home Thermostat uy haroratini o'lchash uchun harorat sensori ishlatadi. Bu harorat ko'rsatkichi dasturga kiritiladi, u erda konditsioner tizim uyni xohlagan uy egasining harorati asosida isitishi yoki sovutishi kerakligini hal qiladi.

Termostatni ikkita rejimi mavjud: qo'lda va avtomatik. Foydalanuvchining xohlagan haroratiga uy haroratini moslashtiradigan qo'lda rejim. Va termostatni avtomatik rejimi uyning haroratini foydalanuvchi tomonidan oldindan belgilangan haroratga o'zgartiradi. Avtomatik rejim uchun ikkita harorat sozlamalari bo'ladi: ketish harorati va hozirgi harorat. Tashish harorati, foydalanuvchi uyda bo'lmaganida, termostatni oldindan belgilangan energiya tejaydigan haroratga o'zgartirish orqali energiyani tejash uchun ishlatiladi. Foydalanuvchi uyda bo'lsa va qulay haroratni xohlasa, hozirgi harorat ishlatiladi. Termostatni avtomatik rejimida, harakat sensorlar kimdir uyda yoki yo'qligini aniqlash uchun harakatni faol qidiradi. O'qish natijalariga ko'ra, uy harorati uzoqdagi yoki hozirgi haroratga o'rnatiladi.

2 -qadam: ehtiyot qismlar va materiallar

(15) o'tish simlari

(4) 220 Ohmli rezistorlar

(1) 10K Ohm qarshilik

(1) harorat sensori

(1) rasmga qarshilik

(1) DAGU Mini DC vites qutisi

(1) diod

(1) tranzistor

(1) Fotoresistor

(1) non paneli

(1) Arduino MKR

3 -qadam: O'chirish

O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish

1 -rasm = Katta chap rasm

2 -rasm = Yuqori o'ng

3 -rasm = O'rta o'ng

4 -rasm = Pastki o'ng

1 -rasm

Yuqoridagi diagramadan foydalanib, biz uchta LEDning har birini simli qildik. Biz katta non taxtasi bilan ishlaganimiz uchun har bir LEDni ajratib qo'ydik. Kichikroq non taxtalari uchun LEDlarni bir -biriga yaqinroq qo'yish kerak bo'lishi mumkin. Bundan tashqari, diodli panelni quvvatlantirishning hojati yo'q, chunki LEDlar juda kam quvvat sarflaydi. Biz LED uchun non panelidagi 5V ulanishdan foydalanmadik. LEDlarning bizning Arduino -ga har bir ulanishi yuqoridagi yashil sim singari amalga oshirildi. Bizning qizil, ko'k va yashil LED'larimiz mos ravishda raqamli pin 8, 9 va 10 ga ulangan bo'lib, ular bizning rasmimizda qizil, ko'k va yashil simlar bilan belgilangan.

2 -rasm

Yuqoridagi diagramma fotorezistorni ulash uchun ishlatilgan. Biz o'zimizga bir nechta tuzatishlar kiritdik; ammo tushunchalar hali ham bir xil. Fotorezistor A1 pinidagi analog pinga ulangan bo'lishi kerak. Fotorezistorga eng yaqin qarshilik uchun 10K ohmli rezistorni ishlatganingizga ishonch hosil qiling.

3 -rasm

Bu harorat sensori simini ulash uchun ishlatiladigan diagramma. Bu erda ishlatiladigan tranzistorni harorat sensori bilan xato qilmaslikka ishonch hosil qiling. Ular deyarli bir xil ko'rinadi. Harorat sensori, ehtimol, sensorning tekis tomonida TMP yoki boshqa skript yozilgan bo'lishi mumkin. Bu erdagi simlar juda oddiy, bizning harorat sensori oq simli A0 analog piniga ulangan.

4 -rasm

Yuqoridagi rasm DAGU Mini DC vites qutisini simlash uchun ishlatilgan. Vites qutisiga ulangan yashil sim - bu bizning rasmimizda unga ulangan qizil sim. Vites qutisi bizning modelimizda to'q sariq simli raqamli pin 11 ga ulangan. Bu erda ishlatiladigan tranzistorni harorat sensori bilan xato qilmaslikka ishonch hosil qiling. Ular deyarli bir xil ko'rinadi. Harorat sensori, ehtimol, sensorning tekis tomonida TMP yoki boshqa skript yozilgan bo'lishi mumkin. Bu erda harorat sensori emas, tranzistordan foydalanish kerak.

4 -qadam: Arduino kodi

Bu erda kodning eng muhim qismlari tushuntiriladi. Kod faqat bu erda berilganlar bilan ishlamaydi. Ish kodini to'liq olish uchun sahifaning pastki qismida havola mavjud.

Dasturlashtiriladigan termostatni kodini yaratishda, birinchi navbatda, sensorlar o'rnatiladi va harorat sensori harorat ko'rsatkichlari doimiy ravishda olinadigan, pastadir yaratiladi.

Harorat sensori va LEDni sozlash:

tempPin = 'A0';%kuchlanishni tempCfromVolts = @(volts) (volts-0,5)*100 ga o'zgartiradigan anonim funktsiyani aniqlaydi; namuna olish muddati: 5; %soniya. Namuna olish uchun qancha vaqt namuna olishni xohlaymizInterval = 1; %Harorat ko'rsatkichlari orasidagi necha soniya %namuna olish vaqtining vektorini o'rnatdi %namSamples = uzunlik va intervalga asoslangan namunalar sonini hisoblab chiqadi (samplelingTimes); %temp o'zgaruvchilari va o'qish soni uchun o'zgaruvchini oldindan ajratadi tempC = nollarni saqlaydi (numSamples, 1); tempF = tempC; %Biz bu safar oldindan belgilangan %harorat ko'rsatkichlarini olish uchun for loopidan foydalanamiz

For loopi:

indeks uchun = 1: numSamples %tempPin -dagi kuchlanishni o'qiydi va o'zgaruvchan voltsli voltsda saqlaydi = readVoltage (a, tempPin); tempC (indeks) = -1*tempCfromVolts (volt+0,3); tempF (indeks) = tempC (indeks)*(9/5) +32; %Joriy harorat o'qilishini bildiruvchi formatlangan chiqishni ko'rsatish fprintf (' %d soniyadagi harorat %5.2f S yoki %5.2f F. / n',… samplelingTimes (indeks), tempC (indeks), tempF (indeks)); %shuni esda tutingki, agar bu kodni oddiy skript mfile -ga nusxa ko'chirmasangiz/kodi bajarilgandan so'ng, bu displey chiqishi birdaniga ko'rinadigan bo'ladi. pauza (namuna olish oralig'i) %keyingi namuna oxirigacha kechikish

Keyinchalik, biz foydalanuvchi uchun termostatni qo'lda yoki avtomatik rejimga qo'yishni tanlashi uchun foydalanuvchi menyusini yaratamiz. Agar foydalanuvchi ikkita variantdan birini tanlamasa, biz xato kodini ham yaratamiz.

Manuel rejim menyusi foydalanuvchidan termostatni harorati uchun raqamni belgilashni talab qiladi, keyin u uyni isitadi, uyni sovutadi yoki o'qishga qarab bo'sh qoladi. Kodning bu qismini sozlash uchun siz harorat sensori yordamida harorat ko'rsatkichlarini ishlatdingiz va haroratni o'rnatish belgilangan haroratdan yuqori bo'lganda uyni sovutadigan kodni yaratdingiz va harorat ko'rsatkichi belgilangan haroratdan past bo'lganda uyni isitasiz.

Harorat ko'rsatkichlari bo'lgandan so'ng, siz termostatni uyni sovutish uchun aytadigan kodni yaratishingiz mumkin, agar harorat ko'rsatkichi belgilangan haroratdan yuqori bo'lsa, va harorat ko'rsatkichi belgilangan haroratdan past bo'lsa, uyni isitadi. Prototip uchun ko'k chiroq termostat soviganida, qizil chiroq esa termostat qizdirilganda yonadi.

Menyu sozlamalari:

choices = {'Avtomatik', 'Qo'lda'}; imode = menyu ('Rejim', tanlovlar), agar imode> 0 h = msgbox (['Siz tanlagan' tanlovlar {imode}]); else h = ogohlantirish ('Siz tanlov qilmasdan menyuni yopdingiz') end waitfor (h);

Manuel rejim foydalanuvchidan termostat uchun haroratni kiritishni talab qiladi, keyin harorat sensori ko'rsatkichlariga asoslanib, u uyni isitadigan uyni sovutishni boshlaydi. Agar harorat sensori ko'rsatkichi belgilangan haroratdan yuqori bo'lsa, u uyni sovutishni boshlaydi. Agar harorat sensori ko'rsatkichi belgilangan haroratdan past bo'lsa, u uyni isitadi.

Manuel rejim boshlanadi:

if imode == 2 dlg_prompts = {'Qaysi haroratni afzal ko'rasiz?'}; dlg_title = 'Harorat'; dlg_defaults = {'68'}; opts. Resize = "yoqilgan"; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warningdlg ('inputdlg buyrug'ini bekor qildingiz'); else temp_manual = str2double (dlg_ans {1}) %[Pastga Haroratni sozlash sozlamalarini qo'shing] oxiri

Qo'l rejimining if iborasi ichida siz foydalanuvchi xohlagan uy haroratini tanlashi uchun menyu interfeysini yozishingiz va keyin uy haroratini tartibga soluvchi vaqt iborasini kiritishingiz kerak.

Haroratni tartibga solish sozlamalari:

temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); end while temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); oxiri

Avtomatik rejim qo'lda rejimga qaraganda ko'proq kirishni talab qiladi. Avtomatik rejimga kirgandan so'ng, foydalanuvchi o'z termostatiga "Oddiy" va "Tashqarida" haroratini o'rnatadi, ularni tanlagandan so'ng, termostatni qaysi rejimda ekanligiga qarab, u yana haroratni tartibga solish rejimiga o'tadi.

Avtomatik rejimni sozlash:

elseif imode == 1 dlg_prompts = {'Oddiy', 'Tashqarida'}; dlg_title = 'Harorat sozlamalari'; dlg_defaults = {'68', '64'}; opts. Resize = "yoqilgan"; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = ogohlantirish ('inputdlg buyrug'ini bekor qildingiz'); else temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) kutishning oxiri (h); %[Harakat detektori qadamini quyida qo'shing]

Shuningdek, biz avtomatik rejim sozlamalari uchun harakat sensori o'rnatishimiz kerak. Harakat detektori harakatni qabul qilganda, u haroratni hozirgi haroratda ushlab turadi, aks holda u uzoqdagi haroratni o'rnatadi.

Run_Motion_Detector (a, inf) esa lightStr == 0 temp = temp_away, temp tempF writeDigitalPin (a, 'D6', 1), nima bo'lsa ham, qizil yozish moslamasi, fanDijitalPin (a, 'D9', 1); lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1) %, normal chiroq yonib turgan narsaga o'zgaradi, temp tempF writeDigitalPin (a, 'D6', 1) qizil chiroq nima bo'lsa fan yozish uchun dvigatelDigitalPin (a, 'D9', 1); oxiri oxiri

To'liq kodni bu erda topishingiz mumkin.

Tavsiya: