- Nødvendige materialer:
- Arbeidsmetodikk:
- Forutsetninger:
- Arbeid med en fjernkontroll:
- Kretsdiagram og forklaring:
- Dekoding av AC-fjernkontrollsignaler:
- Hoved Arduino-program:
- Arbeid med automatisk AC temperaturkontrollsystem:
En AC (klimaanlegg) som en gang ble ansett for å være en luksusvare og bare var å finne i store hoteller, kinoer, restauranter osv… Men nå har nesten alle AC i vårt hjem for å slå ut sommeren / vinter og de som har det, bekymre deg for en vanlig ting. Det er deres høye strømforbruk og ladere på grunn av det. I dette prosjektet skal vi lage en liten automatisk temperaturkontrollkrets som kan minimere strømladere ved å variere AC-temperaturen automatisk basert på romtemperaturen. Ved å variere den innstilte temperaturen med jevne mellomrom, kan vi unngå å få vekselstrømmen til å arbeide med lavere temperaturverdier i lang tid og dermed få den til å forbruke mindre strøm.
De fleste av oss ville ha opplevd en situasjon der vi må endre klimaanleggets innstilte temperatur til forskjellige verdier i løpet av forskjellige tider på dagen, for å holde oss komfortable hele tiden. For å automatisere denne prosessen bruker dette prosjektet en temperatursensor (DHT11) som leser den nåværende temperaturen i rommet, og basert på denne verdien vil den sende kommandoer til AC gjennom en IR-blaster som ligner på AC-fjernkontrollen. AC vil reagere på disse kommandoene som om den reagerer på fjernkontrollen og justerer dermed temperaturen. Når rommets temperatur endres, vil Arduino også justere den innstilte temperaturen på AC for å opprettholde temperaturen akkurat slik du vil at den skal være. Høres kult ut?… La oss se hvordan du bygger en.
Nødvendige materialer:
- Arduino Mega 2560
- TSOP1738 (HS0038)
- IR ledet
- DHT11 temperatur- / fuktighetssensor
- Enhver fargediode og 1K motstand (valgfritt)
- Brettbrett
- Koble ledninger
Arbeidsmetodikk:
Alle fjernkontrollene i hjemmet som vi bruker til å kontrollere TV, hjemmekino, AC osv. Fungerer ved hjelp av IR Blasters. En IR-blaster er ikke noe annet enn en IR-LED som kan blaste et signal ved repeterende pulserende; dette signalet vil bli lest av mottakeren i elektronikkapparatet. For hver annen knapp på fjernkontrollen sprenges et unikt signal som etter lesing av mottakeren brukes til å utføre en bestemt forhåndsdefinert oppgave. Hvis vi er i stand til å lese dette signalet som kommer ut fra fjernkontrollen, kan vi etterligne det samme signalet ved hjelp av en IR-LED når det noen gang er nødvendig for å utføre den aktuelle oppgaven. Vi har tidligere laget en IR Blaster-krets for Universal IR Remote.
En TSOP er en IR-mottaker som kan brukes til å dekode signalet som kommer fra fjernkontrollene. Denne mottakeren vil være grensesnittet med Arduino for å signalisere for hver knapp, og deretter vil en IR-ledning brukes med Arduino for å etterligne signalet når det er nødvendig. På denne måten kan vi få kontroll over vekselstrømmen vår ved hjelp av Arduino.
Nå er det bare å lese temperaturverdien ved hjelp av DHT11 og instruere AC deretter ved hjelp av IR-signalene. For å gjøre prosjektet mer attraktivt og brukervennlig, har jeg også lagt til en OLED-skjerm som viser gjeldende temperatur, fuktighet og AC-temperatur. Lær mer om bruk av OLED med Arduino.
Forutsetninger:
Dette automatiske vekselstrømstemperaturregulatorprosjektet er litt avansert for nybegynnernivå, men ved hjelp av få andre opplæringsprogrammer kan noen bygge dette med spørsmål om tid. Så hvis du er en absolutt nybegynner for OLED, DHT11 eller TSOP, kan du gjerne vende tilbake til disse veiledningene nedenfor, der du kan lære det grunnleggende og hvordan du kommer i gang med disse. Listen kan se ut til å være litt lang, men stol på meg at den er enkel og verdt å lære, den vil også åpne dører for mange nye prosjekter.
- Grunnleggende krets som bruker TSOP og IR LED til under arbeid
- Grunnleggende grensesnittveiledning for DHT11 med Arduino
- Grunnleggende grensesnittveiledning for OLED med Arduino
- Grensesnitt TSOP med Arduino for å lese IR-fjernverdier
Forsikre deg om at du har en Arduino Mega og hvilken som helst annen versjon av Arduino, siden kodestørrelsen er tung. Sjekk også om du allerede har installert følgende Arduino-biblioteker hvis ikke installere dem fra lenken nedenfor
- IR Remote Library for TSOP og IR Blaster
- Adafruit Library for OLED
- GFX Grafikkbibliotek for OLED
- DHT11 sensorbibliotek for temperatursensor
Arbeid med en fjernkontroll:
Før vi går inn i prosjektet, må du ta litt tid og legge merke til hvordan AC-fjernkontrollen fungerer. AC-fjernkontroller fungerer på en litt annen måte sammenlignet med TV, DVD IR-fjernkontroller. Det kan bare være 10-12 knapper på fjernkontrollen, men de vil kunne sende mange forskjellige typer signaler. Betydning at fjernkontrollen ikke sender den samme koden hver gang for den samme knappen. For eksempel, når du senker temperaturen ved hjelp av ned-knappen for å gjøre den 24 ° C (grad Celsius) vil du få et signal med et sett med data, men når du trykker på det igjen for å stille 25 ° C, vil du ikke få det samme data siden temperaturen nå er 25 og ikke 24. Tilsvarende vil koden for 25 også variere for forskjellige viftehastigheter, søvninnstillinger osv. Så la oss ikke fikle med alle alternativene og bare konsentrere bare temperaturverdiene med en konstant verdi for andre innstillinger.
Et annet problem er mengden data som sendes for hvert knappetrykk, normale fjernkontroller med send enten 24 eller 48 bits, men en AC-fjernkontroll kan sende opptil 228 bits, siden hvert signal inneholder mye informasjon som Temp, Fan Speed, Sovetid, svingstil osv. Dette er grunnen til at vi trenger en Arduino Mega for bedre lagringsalternativer.
Kretsdiagram og forklaring:
Heldigvis er maskinvareoppsettet til dette automatiske AC-temperaturkontrollprosjektet veldig enkelt. Du kan bare bruke et brødbrett og lage tilkoblingene som vist nedenfor.
Følgende tabell kan også brukes til å bekrefte tilkoblingene dine.
S. nei: |
Komponentstift |
Arduino Pin |
1 |
OLED - Vcc |
5V |
2 |
OLED - Gnd |
Gnd |
3 |
OLED- SCK, D0, SCL, CLK |
4 |
4 |
OLED- SDA, D1, MOSI, Data |
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 - Signal |
1. 3 |
11 |
TSOP - Vcc |
5V |
12 |
TSOP - Gnd |
Gnd |
1. 3 |
IR Led - Anode |
9 |
14 |
IR Led - Katode |
Gnd |
Når tilkoblingene er gjort, bør det se ut som dette vist nedenfor. Jeg har brukt et brødbrett til å rydde ting, men du kan også bruke ledninger for menn til kvinner direkte for å koble til alle komponenter
Dekoding av AC-fjernkontrollsignaler:
Det første trinnet for å kontrollere vekselstrømmen din er å bruke TSOP1738 til å dekode IR-fjernkontroller for fjernkontroll. Gjør alle tilkoblingene som vist i kretsskjemaet og sørg for at du har installert alle de nevnte bibliotekene. Åpne nå eksempelprogrammet “ IRrecvDumpV2 ” som du finner på File -> Eksempler -> IRremote -> IRrecvDumpV2 . Last opp programmet til Arduino Mega og åpne Serial Monitor.
Pek fjernkontrollen mot TSOP og trykk på en hvilken som helst knapp. For hver knapp du trykker på, vil signalet bli lest av TSOP1738, dekodet av Arduino og vises i Serial Monitor. For hver endring i temperaturen på fjernkontrollen vil du få forskjellige data. Lagre disse dataene, for vi bruker dem i hovedprogrammet vårt. Seriell skjerm vil se ut som dette, jeg har også vist Word-filen som jeg har lagret de kopierte dataene på.
Skjermbildet viser koden for å stille temperaturen til 26 ° C for min fjernkontroll. Basert på fjernkontrollen vil du få et annet sett med koder. Kopier på samme måte kodene for alle forskjellige temperaturnivåer. Du kan sjekke alle IR-koder for klimaanlegg fjernkontroll i Arduino-koden gitt på slutten av denne opplæringen.
Hoved Arduino-program:
Hele Arduino-hovedprogrammet finner du nederst på denne siden, men du kan ikke bruke det samme programmet. Du må endre verdiene for signalkoden som vi nettopp har fått fra eksemplet på skissen ovenfor. Åpne hovedprogrammet på Arduino IDE, og bla ned til dette området vist nedenfor, der du må erstatte matriseverdiene med verdiene du fikk for fjernkontrollen.
Vær oppmerksom på at jeg har brukt 10 matriser, hvorav to pleide å slå PÅ og slå AV vekselstrømmen mens resten 8 ble brukt til å stille inn annen temperatur. For eksempel brukes Temp23 til å sette 23 ° C på vekselstrømmen din, så bruk den respektive koden i den matrisen. Når det er gjort, må du bare laste opp koden til Arduino og plassere den motsatt av AC og nyte Cool Breeze.
Forklaringen på koden går som følger, først må vi bruke DHT1-temperatursensoren til å lese temperatur og fuktighet og vise den på OLED. Dette gjøres med følgende kode.
DHT.read11 (DHT11_PIN); // Les Temp og fuktighet Measured_temp = DHT.temperature + temp_error; Målt_Humi = DHT. Luftfuktighet; // tekstvisning tester display.setTextSize (1); display.setTextColor (HVIT); display.setCursor (0,0); display.print ("Temperatur:"); display.print (Measured_temp); display.println ("C"); display.setCursor (0,10); display.print ("Fuktighet:"); display.print (Measured_Humi); display.println ("%");
Når vi vet temperaturen i rommet, må vi bare sammenligne den med ønsket verdi. Denne ønskede verdien er en konstant verdi som er satt til 27 ° C (Grad Celsius) i programmet mitt. Så basert på denne sammenligningen vil vi sette en tilsvarende vekselstrømstemperatur som vist nedenfor
if (Measured_temp == Desired_temperature + 3) // Hvis AC er PÅ og målt temp er veldig høy enn ønsket {irsend.sendRaw (Temp24, sizeof (Temp24) / sizeof (Temp24), khz); forsinkelse (2000); // Send signal for å sette 24 * C AC_Temp = 24; }
Her vil AC innstilles til 24 ° C når den målte temperaturen er 30 ° C (siden ønsket temp er 27). På samme måte kan vi opprette mange If- løkker for å stille forskjellige temperaturnivåer basert på den målte temperaturen som vist nedenfor.
if (Measured_temp == Desired_temperature-1) // Hvis AC er PÅ og målt temp er lav enn ønsket verdi {irsend.sendRaw (Temp28, sizeof (Temp28) / sizeof (Temp28), khz); forsinkelse (2000); // Send signal for å sette 28 * C AC_Temp = 28; } if (Measured_temp == Desired_temperature-2) // Hvis AC er PÅ og målt temp er veldig lav enn ønsket verdi {irsend.sendRaw (Temp29, sizeof (Temp29) / sizeof (Temp29), khz); forsinkelse (2000); // Send signal for å sette 29 * C AC_Temp = 29; } if (Measured_temp == Desired_temperature-3) // Hvis AC er PÅ og målt temp er veldig veldig lav ønsket verdi {irsend.sendRaw (Temp30, sizeof (Temp30) / sizeof (Temp30), khz); forsinkelse (2000); // Send signal for å sette 30 * C AC_Temp = 30; }
Arbeid med automatisk AC temperaturkontrollsystem:
Når koden og maskinvaren din er klar, laster du opp koden til styret ditt, og du bør legge merke til at OLED viser noe som ligner på dette.
Plasser nå kretsløpet motsatt av Klimaanlegget, og du merker at AC-temperaturen blir kontrollert basert på romtemperaturen. Du kan prøve å øke temperaturen nær DHT11-sensoren for å sjekke om vekselstrømstemperaturen er kontrollert som vist i videoen nedenfor.
Du kan tilpasse programmet for å utføre ønsket handling; alt du trenger er koden du fikk fra eksemplet. Håper du forsto dette Automatic Temperature Controller- prosjektet og likte å bygge noe som var veldig likt. Jeg vet det er mange steder her å sette seg fast, men ikke bekymre deg da. Bare bruk forumet eller kommentarseksjonen for å forklare problemet ditt, og folk her vil helt sikkert hjelpe deg med å få det løst.