- Reikalingos medžiagos:
- Darbo metodika:
- Išankstinės sąlygos:
- Kintamosios srovės nuotolinio valdymo pulto veikimas:
- Grandinės schema ir paaiškinimas:
- Jūsų nuotolinio kintamosios srovės signalų dekodavimas:
- Pagrindinė „Arduino“ programa:
- Automatinės kintamosios temperatūros valdymo sistemos darbas:
Kintamosios srovės (oro kondicionierius), kuris kažkada buvo laikomas prabangos preke ir kurio buvo galima rasti tik didžiuosiuose viešbučiuose, kino salėse, restoranuose ir pan. Bet dabar beveik visi mūsų namuose turi kintamosios srovės tinklą, norėdami nugalėti vasarą / žiema ir tie, kurie ją turi, jaudinasi dėl vieno bendro dalyko. Tai yra jų didelis elektros energijos suvartojimas ir dėl to įkrovikliai. Šiame projekte mes padarysime nedidelę automatinę temperatūros valdymo grandinę, kuri galėtų sumažinti elektros įkroviklius, automatiškai keičiant kintamosios srovės temperatūrą pagal kambario temperatūrą. Periodiškai keisdami nustatytą temperatūrą, galime išvengti to, kad kintamosios srovės ilgą laiką veiktų žemesnės temperatūros vertės ir taip sunaudotų mažiau energijos.
Daugelis iš mūsų būtų patyrę situaciją, kai skirtingu paros metu turime pakeisti oro kondicionieriaus nustatytą temperatūrą į skirtingas vertes, kad būtume patogūs visam laikui. Norėdami automatizuoti šį procesą, šis projektas naudoja temperatūros jutiklį (DHT11), kuris nuskaito esamą patalpos temperatūrą ir, remdamasis ta verte, išsiųs komandas kintamajai srovei per IR blastą, panašų į kintamosios srovės nuotolinio valdymo pultą. AC reaguoja į šias komandas taip, tarsi reaguotų į savo nuotolinio valdymo pultą ir taip sureguliuos temperatūrą. Keičiantis kambario temperatūrai, „ Arduino“ taip pat sureguliuos jūsų kintamosios srovės nustatytą temperatūrą, kad jūsų temperatūra būtų tokia, kokia norite. Skamba gerai, tiesa?… Pažiūrėkime, kaip jį sukurti.
Reikalingos medžiagos:
- „Arduino Mega 2560“
- TSOP1738 (HS0038)
- IR lemputė
- DHT11 temperatūros / drėgmės jutiklis
- Bet koks spalvotas LED ir 1K rezistorius (pasirinktinai)
- Bandomoji Lenta
- Laidų sujungimas
Darbo metodika:
Visi mūsų namų nuotolinio valdymo pultai, kuriais mes valdome televizorių, namų kino teatrą, kintamosios srovės kompiuterį ir kt., Veikia naudojant „IR Blasters“. IR Blaster yra nieko, bet diodas, kuris galėtų Blaster šalutinis pasikartojantis pulsacijų signalą; šį signalą nuskaitys elektronikos prietaiso imtuvas. Kiekvienam skirtingam nuotolinio valdymo pulto mygtukui bus susprogdintas unikalus signalas, kurį gavėjui perskaičius bus naudojama tam tikra iš anksto nustatyta užduotis. Jei sugebėsime perskaityti šį signalą, išeinantį iš nuotolinio valdymo pulto, galime imituoti tą patį signalą naudodami IR šviesos diodą, kai to kada nors reikia atlikti tam tikrai užduočiai. Anksčiau mes sukūrėme „IR Blaster“ grandinę, skirtą „Universal IR Remote“.
Korpusas TSOP yra IR imtuvas, kad galėtų būti naudojamas iššifruoti signalą, ateinantį iš nuotolinio valdymo įrenginių. Šis imtuvas bus susietas su „Arduino“, kad signalizuotų kiekvienam mygtukui, o tada su „Arduino“ bus naudojamas IR šviesos diodas, kuris imituos signalą, kai to prireiks. Tokiu būdu mes galime įgyti savo kintamosios srovės kontrolę naudodami „Arduino“.
Lieka tik perskaityti temperatūros reikšmę naudojant DHT11 ir atitinkamai nurodyti kintamajai srovei naudojant IR signalus. Kad projektas atrodytų patraukliau ir patogiau vartotojui, aš taip pat pridėjau OLED ekraną, kuriame rodoma esama temperatūra, drėgmė ir kintama kintama temperatūra. Sužinokite daugiau apie OLED naudojimą su „Arduino“.
Išankstinės sąlygos:
Šis automatinio kintamosios srovės temperatūros valdiklio projektas yra šiek tiek patobulintas pradedančiųjų lygiui, tačiau naudodamas keletą kitų pamokų, kiekvienas gali tai sukurti laiku. Taigi, jei esate absoliutus OLED, DHT11 ar TSOP naujokas, maloniai grįžkite į šias žemiau pateiktas pamokas, kuriose galite sužinoti pagrindus ir kaip pradėti nuo jų. Atrodo, kad sąrašas yra šiek tiek ilgas, tačiau patikėkite, kad tai lengva ir verta išmokti, taip pat atvers duris daugeliui naujų projektų.
- Pagrindinė grandinė, naudojant TSOP ir IR šviesos diodus
- Pagrindinis DHT11 sąsajos vadovas su „Arduino“
- Pagrindinis OLED sąsajos vadovas su „Arduino“
- Sąveikaujant TSOP su „Arduino“, kad būtų galima skaityti IR nuotolines reikšmes
Įsitikinkite, kad turite „ Arduino Mega“ ir bet kurią kitą „Arduino“ versiją, nes kodo dydis yra didelis. Taip pat patikrinkite, ar jau įdiegėte šias „Arduino“ bibliotekas, jei jų neįdiegėte, formuodami žemiau esančią nuorodą
- IR nuotolinė biblioteka TSOP ir IR Blaster
- „Adafruit“ biblioteka, skirta OLED
- GFX grafikos biblioteka, skirta OLED
- DHT11 jutiklių biblioteka, skirta temperatūros jutikliams
Kintamosios srovės nuotolinio valdymo pulto veikimas:
Prieš pradėdami projektą, šiek tiek užtruksite ir pastebėkite, kaip veikia jūsų kintamosios srovės nuotolinio valdymo pultas. Kintamosios srovės pulteliai veikia šiek tiek kitaip, palyginti su TV, DVD IR pulteliais. Jūsų nuotolinio valdymo pultelyje gali būti tik 10–12 mygtukų, tačiau jie galės siųsti daug įvairių tipų signalų. Tai reiškia, kad nuotolinio valdymo pultas kiekvieną kartą nesiunčia to paties kodo tam pačiam mygtukui. Pvz., Kai sumažinsite temperatūrą naudodamiesi mygtuku žemyn, kad ji būtų 24 ° C (Celsijaus laipsniai), gausite signalą su duomenų rinkiniu, tačiau dar kartą paspaudę, kad nustatytumėte 25 ° C, to paties negausite. duomenys, nes temperatūra dabar yra 25, o ne 24. Panašiai 25 kodas taip pat gali skirtis priklausomai nuo ventiliatoriaus greičio, miego nustatymų ir pan. Taigi nesikuklinkime su visomis galimybėmis ir tiesiog sutelkime tik temperatūros vertes su pastovia kitų nustatymų verte.
Kita problema yra siunčiamų duomenų kiekis už kiekvieną mygtuko paspaudimą, įprasti nuotolinio valdymo pultai su 24 arba 48 bitų siuntimu, tačiau kintamosios srovės nuotolinio valdymo pultas gali siųsti iki 228 bitų, nes kiekviename signale yra daug informacijos, pvz., Temp, Fan Speed, Miego laikas, „Swing“ stilius ir kt. Tai yra priežastis, kodėl mums reikia „Arduino Mega“, kad galėtume geriau saugoti.
Grandinės schema ir paaiškinimas:
Laimei, šio automatinio kintamosios temperatūros valdymo projekto aparatinę įrangą labai lengva nustatyti. Galite tiesiog naudoti duonos lentą ir užmegzti jungtis, kaip parodyta žemiau.
Ši lentelė taip pat gali būti naudojama jūsų ryšiams patikrinti.
S.Ne: |
Komponento kaištis |
Arduino kaištis |
1 |
OLED - Vcc |
5V |
2 |
OLED - Gnd |
Gnd |
3 |
OLED- SCK, D0, SCL, CLK |
4 |
4 |
OLED- SDA, D1, MOSI, duomenys |
3 |
5 |
OLED- RES, RST, RESET |
7 |
6 |
OLED- DC, A0 |
5 |
7 |
„OLED- CS“, „Chip Select“ |
6 |
8 |
DHT11 - Vcc |
5V |
9 |
DHT11 - Gnd |
Gnd |
10 |
DHT11 - signalas |
13 |
11 |
TSOP - Vcc |
5V |
12 |
TSOP - Gnd |
Gnd |
13 |
IR lemputė - anodas |
9 |
14 |
IR lemputė - katodas |
Gnd |
Kai prijungsite, tai turėtų atrodyti taip, kaip parodyta žemiau. Aš naudoju „Breadboard“, kad sutvarkyčiau dalykus, bet jūs taip pat galite tiesiogiai iš vyro ir moters laidus, kad sukabintumėte visus komponentus
Jūsų nuotolinio kintamosios srovės signalų dekodavimas:
Pirmasis kintamosios srovės valdymo žingsnis yra TSOP1738 naudojimas kintamosios srovės nuotolinio valdymo IR kodų dekodavimui. Atlikite visas jungtis, kaip parodyta grandinės schemoje, ir įsitikinkite, kad įdiegėte visas paminėtas bibliotekas. Dabar atidarykite pavyzdinę programą „ IRrecvDumpV2 “, kurią galite rasti aplanke Failas -> Pavyzdžiai -> IRremote -> IRrecvDumpV2 . Įkelkite programą į „Arduino Mega“ ir atidarykite nuoseklųjį monitorių.
Nukreipkite nuotolinio valdymo pultą link TSOP ir paspauskite bet kurį mygtuką. Kiekvieną mygtuką, paspaudusį jo atitinkamą signalą, perskaitys TSOP1738, iššifruotas „Arduino“ ir rodomas nuosekliojo monitoriaus ekrane. Už kiekvieną nuotolinio valdymo pulto temperatūros pasikeitimą gausite skirtingus duomenis. Išsaugokite šiuos duomenis, nes juos naudosime pagrindinėje programoje. Jūsų serijinis monitorius atrodys maždaug taip, aš taip pat parodžiau „Word“ failą, kuriame išsaugojau nukopijuotus duomenis.
Ekrano ekrane rodomas kodas, kuriuo nustatomas 26 ° C temperatūros nustatymas kintamosios srovės nuotolinio valdymo pultui. Remdamiesi savo nuotolinio valdymo pultu, gausite kitokį kodų rinkinį. Panašiai nukopijuokite visų skirtingų temperatūrų kodus. Visus oro kondicionieriaus nuotolinio valdymo pulto IR kodus galite patikrinti „Arduino“ kode, pateiktame šios pamokos pabaigoje.
Pagrindinė „Arduino“ programa:
Baigtas pagrindinis Arduino programa galima rasti šio puslapio apačioje, bet jūs negalite naudoti tą pačią programą. Turite pakeisti signalo kodo vertes, kurias ką tik gavome iš aukščiau pateikto pavyzdžio eskizo. Atidarykite pagrindinę „Arduino IDE“ programą ir slinkite žemyn į šią žemiau parodytą sritį, kur masyvo reikšmes turite pakeisti vertėmis, kurias gavote savo nuotolinio valdymo pultui.
Atkreipkite dėmesį, kad aš naudojau 10 matricų, iš kurių dvi buvo naudojamos įjungti ir išjungti kintamąją srovę, o likusios 8 naudojamos skirtingai temperatūrai nustatyti. Pavyzdžiui, „Temp23“ naudojamas jūsų kintamajai srovei nustatyti 23 ° C, todėl naudokite atitinkamą masyvo kodą. Kai tai bus padaryta, jūs tiesiog turite įkelti kodą į savo „Arduino“ ir įdėti jį priešais savo AC ir mėgautis „Cool Breeze“.
Kodo paaiškinimas vyksta taip: pirmiausia turime naudoti DHT1 temperatūros jutiklį, norėdami nuskaityti temperatūrą ir drėgmę ir parodyti juos OLED. Tai daroma pagal šį kodą.
DHT.read11 (DHT11_PIN); // Perskaitykite temperatūrą ir drėgmę išmatuotas_temp = DHT.temperature + temp_error; Išmatuotas_Humi = DHT.drėgmė; // teksto rodymo testai display.setTextSize (1); display.setTextColor (BALTAS); display.setCursor (0,0); display.print ("Temperatūra:"); display.print (Measured_temp); display.println ("C"); display.setCursor (0,10); display.print ("Drėgmė:"); display.print (Measured_Humi); display.println ("%");
Kai žinome kambario temperatūrą, tiesiog turime jį palyginti su norima verte. Ši norima vertė yra pastovi vertė, kuri mano programoje nustatyta kaip 27 ° C (Celsijaus laipsniai). Taigi, remdamiesi šiuo palyginimu, nustatysime atitinkamą kintamosios srovės temperatūrą, kaip parodyta žemiau
if (Measured_temp == pageidaujama temperatūra + 3) // Jei AC yra ON ir išmatuota temperatūra yra labai aukšta, nei norima {irsend.sendRaw (Temp24, sizeof (Temp24) / sizeof (Temp24), khz); delsa (2000); // Siųsti signalą nustatyti 24 * C AC_Temp = 24; }
Čia kintamosios srovės vertė bus nustatyta 24 ° C, kai išmatuota temperatūra yra 30 ° C (nes norima temperatūra yra 27). Panašiai galime sukurti daug „ If“ kilpų, kad nustatytume skirtingą temperatūros lygį pagal išmatuotą temperatūrą, kaip parodyta žemiau.
if (Measured_temp == pageidaujama temperatūra-1) // Jei AC yra ĮJUNGTA ir išmatuota temperatūra yra žema, nei norima reikšmė {irsend.sendRaw (Temp28, sizeof (Temp28) / sizeof (Temp28), khz); delsa (2000); // Siųsti signalą nustatyti 28 * C AC_Temp = 28; } if (Measured_temp == pageidaujama_temperatūra-2) // Jei AC yra ĮJUNGTA ir išmatuota temperatūra yra labai maža, nei norima reikšmė {irsend.sendRaw (Temp29, sizeof (Temp29) / sizeof (Temp29), khz); delsa (2000); // Siųsti signalą nustatyti 29 * C AC_Temp = 29; } if (Measured_temp == Pageidaujama_temperatūra-3) // Jei AC yra ĮJUNGTA ir išmatuota temperatūra yra labai labai maža norima reikšmė {irsend.sendRaw (Temp30, sizeof (Temp30) / sizeof (Temp30), khz); delsa (2000); // Siųsti signalą nustatyti 30 * C AC_Temp = 30; }
Automatinės kintamosios temperatūros valdymo sistemos darbas:
Kai jūsų kodas ir aparatūra bus paruošti, įkelkite kodą į savo plokštę ir turėtumėte pastebėti, kad OLED rodo kažką panašaus į tai.
Dabar įdėkite grandinę priešingai nei jūsų oro kondicionierius ir pastebėsite, kad kintamosios srovės temperatūra reguliuojama atsižvelgiant į kambario temperatūrą. Galite pabandyti padidinti temperatūrą šalia DHT11 jutiklio, kad patikrintumėte, ar kintamosios srovės temperatūra yra valdoma, kaip parodyta toliau pateiktame vaizdo įraše.
Galite pakoreguoti programą, kad atliktumėte bet kokį norimą veiksmą; jums reikia tik kodo, kurį gavote iš eskizo pavyzdžio. Tikiuosi, kad supratote šį automatinio temperatūros valdiklio projektą ir patiko kurti kažką panašaus. Žinau, kad čia yra daugybė vietų, kur įstrigti, bet tada nesijaudink. Tiesiog naudokite forumą arba komentarų skyrių, kad paaiškintumėte savo problemą, o žmonės čia tikrai padės jums ją išspręsti.