- Arbejdsforklaring:
- Afkodning af IR-fjernbetjeningssignaler ved hjælp af Arduino:
- Beskrivelse af kredsløb:
- Kode Beskrivelse:
Vi har tidligere dækket mange typer af hjem automatiseringer ved hjælp af forskellige teknologier som DTMF Based Home Automation, PC Kontrolleret Home Automation bruger Arduino, Bluetooth Controlled Home Automation. I dette projekt bruger vi IR-baseret trådløs kommunikation til styring af husholdningsapparater. I dette projekt bruges Arduino til at kontrollere hele processen. Vi sender nogle kommandoer til det styrende system ved hjælp af IR TV / DVD / MP3-fjernbetjening til styring af AC-husholdningsapparater. Efter modtagelse af signal fra IR-fjernbetjeningen sender Arduino relateret signal til relæer, der er ansvarlige for at tænde eller slukke for husholdningsapparaterne via en relædriver.
Arbejdsforklaring:
Arbejdet med dette projekt er let forståeligt. Når vi trykker på en vilkårlig knap på IR Remote, sender fjernbetjeningen en kode i form af tog af kodede impulser ved hjælp af 38 KHz moduleringsfrekvens. Disse impulser modtages af TSOP1738- sensoren og læses af Arduino, og derefter afkoder Arduino det modtagne pulstog til en hex-værdi og sammenligner den dekodede værdi med den foruddefinerede hex-værdi på den trykte knap. Hvis der opstår nogen match, udfører Arduino relativ betjening, og det tilsvarende resultat vises også på 16x2 LCD ved hjælp af passende kommandoer. Her i dette projekt har vi brugt 3 pærer i forskellige farver til demonstration, der indikerer blæser, lys og tv.
Der findes mange typer IR-fjernbetjeninger til forskellige enheder, men de fleste af dem arbejdes på omkring 38 KHz frekvenssignal. Her i dette projekt styrer vi husholdningsapparater ved hjælp af IR TV-fjernbetjening. Til detektering af IR-fjernsignal bruger vi TSOP1738 IR-modtager. Denne TSOP1738-sensor kan registrere 38 KHz frekvenssignal. Arbejdet med IR-fjernbetjening og TSOP1738 kan dækkes detaljeret i denne artikel: IR-sender og modtager
Komponenter:
- Arduino UNO
- TSOP1738
- IR TV / DVD fjernbetjening
- ULN2003
- Relæer 5 volt
- Pære med holder
- Tilslutning af ledninger
- Brødbræt
- 16x2 LCD
- Strømforsyning
- PVT
- IC 7805
Her i dette projekt har vi brugt 7, 8 og 9 nummerknappen på IR-fjernbetjeningen til styring af henholdsvis blæser, lys og tv, og ON / OFF-knappen (tænd / sluk-knap) bruges til at tænde og slukke for alle apparater samtidigt.
Her har vi brugt skiftemetode til TIL og FRA det enkelte husholdningsapparat. Skift metode er intet andet end at få det, uanset om der trykkes på knappen, selv antallet af gange eller det ulige antal gange. Dette findes ved at få påmindelsen efter at have divideret den med 2 (i% 2). Hvis der er en påmindelse, bliver enheden tændt, og hvis påmindelsen er 0, vil den blive slukket. Antag, at der trykkes på tast 7 på fjernbetjeningen, så sender fjernbetjeningen et signal til Arduino gennem TSOP IR-modtager. Derefter afkoder Arduino det og gemmer den dekodede værdi i resultatvariablen. Nu har resultatvariablen en hex-værdi 0x1FE00FF, efter at have matchet den med den foruddefinerede hex-værdi på nøgle 7 (se billedet ovenfor), tænder Arduino ventilatoren. Nu når vi trykker på den samme tast (tast 7) igen, sender IR den samme kode. Arduino får samme kode og matches med den samme kode som før, men denne gang slukkede Fan for på grund af at skifte bit (i% 2).
Afkodning af IR-fjernbetjeningssignaler ved hjælp af Arduino:
Her er en liste over en DVD NEC-type Fjernkodede outputkoder:
Hvis du ikke kender det dekodede output til din IR-fjernbetjening, kan det let findes, følg bare disse trin:
- Download IR-fjernbiblioteket herfra
- Pak den ud, og placer den i din Arduino 'Libraries' mappe. Omdøb derefter den udpakkede mappe til IRremote.
- Kør nedenstående program fra din Arduino og åbn vinduet Serial Monitor i Arduino IDE. Tryk nu på en vilkårlig IR-fjernbetjeningsknap og se den tilsvarende dekodede hex-output i Serial Monitor-vinduet.
* IRremote: IRrecvDemo - demonstrerer modtagelse af IR-koder med IRrecv * En IR-detektor / demodulator skal være forbundet til indgangen RECV_PIN. * Version 0.1 juli, 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Ovenstående program er taget fra IRremote-biblioteks 'eksempler' -mappe, du kan tjekke flere eksempler for at lære mere om brug af IR-fjernbetjeningen. Så det er sådan, vi afkodede IR-fjernudgangen.
Beskrivelse af kredsløb:
Forbindelser til dette kredsløb er meget enkle her, en flydende krystalskærm bruges til at vise status for husholdningsapparater, der er direkte forbundet til arduino i 4-bit-tilstand. Datastifter på LCD, nemlig RS, EN, D4, D5, D6, D7, er forbundet til arduino digital pin nummer 6, 7, 8, 9, 10, 11. Og output pin fra TSOP1738 er direkte forbundet med digital pin nummer 14 (A) af Arduino. Og Vcc-pin er tilsluttet en +5 volt og GND-pin forbundet ved jordterminalen i kredsløbet. En relædriver, nemlig ULN2003, bruges også til at køre relæer. 5 volt SPDT 3-relæer bruges til styring af LYS, FAN og TV. Og relæer er forbundet til arduino pin nummer 3, 4 og 5 gennem relædriver ULN2003 til styring af henholdsvis LYS, FAN og TV.
Kode Beskrivelse:
I programmering af en del af dette projekt Først og fremmest inden for programmering inkluderer vi bibliotek til IR-fjernbetjening, som er let tilgængeligt på Google. Og definer pin og erklær variabler.
#omfatte
Og inkluder derefter et overskrift til display med flydende krystaller, og så definerer vi data og kontrolben til LCD og husholdningsapparater.
#omfatte
Efter det er vi nødt til at initialisere LCD'et og give retning af pin, der bruges til ventilator, lys og TV.
ugyldig opsætning () {Serial.begin (9600); lcd.begin (16,2); pinMode (Fan, OUTPUT); pinMode (lys, OUTPUT); pinMode (TV, OUTPUT);
Som allerede forklaret bruges nedenstående del af koden til at sammenligne den modtagne hex-værdi med den allerede definerede hex-kode for den pågældende knap. Hvis det matchede, udføres en relativ operation ved hjælp af passende funktioner, der er angivet i kode.
void loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); forsinkelse (100); lcd.setCursor (0,0); lcd.print ("Fan Light TV"); hvis (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Fan, x);