- Arbeidsforklaring:
- Dekoding av IR-fjernkontrollsignaler ved hjelp av Arduino:
- Kretsbeskrivelse:
- Kode Beskrivelse:
Tidligere har vi dekket mange typer hjemmeautomatisering ved hjelp av forskjellige teknologier som DTMF-basert hjemmeautomatisering, PC-styrt hjemmeautomatisering ved hjelp av Arduino, Bluetooth-kontrollert hjemmeautomatisering. I dette prosjektet bruker vi IR-basert trådløs kommunikasjon for å kontrollere husholdningsapparater. I dette prosjektet brukes Arduino til å kontrollere hele prosessen. Vi sender noen kommandoer til kontrollsystemet ved å bruke IR TV / DVD / MP3-fjernkontroll for å kontrollere AC-husholdningsapparater. Etter å ha mottatt signal fra IR-fjernkontrollen, sender Arduino relatert signal til reléer som er ansvarlige for å slå PÅ eller AV husholdningsapparatene gjennom en relédriver.
Arbeidsforklaring:
Arbeidet med dette prosjektet er lett forståelig. Når vi trykker på en hvilken som helst knapp på IR Remote, sender fjernkontrollen en kode i form av tog med kodede pulser ved hjelp av 38 KHz moduleringsfrekvens. Disse pulser mottas av TSOP1738- sensoren og leses av Arduino, og deretter dekoder Arduino mottatt pulstog til en hex-verdi og sammenligner den dekodede verdien med den forhåndsdefinerte hex-verdien til den trykkte knappen. Hvis noen match forekommer, utfører Arduino relativ drift, og det tilsvarende resultatet vises også på 16x2 LCD ved hjelp av passende kommandoer. Her i dette prosjektet har vi brukt 3 pærer i forskjellige farger, for demonstrasjon som indikerer Vifte, Lys og TV.
Det er mange typer IR-fjernkontroll er tilgjengelig for forskjellige enheter, men de fleste av dem er arbeidet med rundt 38 KHz frekvenssignal. Her i dette prosjektet styrer vi husholdningsapparater ved hjelp av IR TV-fjernkontroll. For å oppdage IR-eksternt signal bruker vi TSOP1738 IR-mottaker. Denne TSOP1738-sensoren kan registrere 38 KHz frekvenssignal. Arbeidet til IR-fjernkontrollen og TSOP1738 kan dekkes i detalj i denne artikkelen: IR-sender og mottaker
Komponenter:
- Arduino UNO
- TSOP1738
- IR TV / DVD fjernkontroll
- ULN2003
- Reléer 5 volt
- Pære med holder
- Koble ledninger
- Brettbrett
- 16x2 LCD
- Strømforsyning
- PVT
- IC 7805
Her i dette prosjektet har vi brukt 7, 8 og 9 nummerknapp på IR-fjernkontrollen, for å styre henholdsvis Vifte, Lys og TV og PÅ / AV-knapp (Av / på-knapp) brukes til å slå PÅ og AV alle apparater samtidig.
Her har vi brukt byttemetode for ON og OFF det eneste hjemmet. Bytt metode er ingenting annet enn å få det til, enten knappen trykkes til og med antall ganger eller det rare antall ganger. Dette blir funnet ved å få påminnelsen etter å ha delt den med 2 (i% 2). Hvis det er noen påminnelse, blir enheten slått PÅ, og hvis påminnelsen er 0, blir den slått AV. Anta at tast 7 trykkes på fjernkontrollen, så sender fjernkontrollen et signal til Arduino gjennom TSOP IR-mottaker. Deretter dekoder Arduino den og lagrer den dekodede verdien i resultatvariabelen. Nå har resultatvariabelen en hex-verdi 0x1FE00FF, etter å ha matchet den med den forhåndsdefinerte hex-verdien til nøkkel 7 (se bildet ovenfor), slår Arduino på viften. Nå når vi trykker på samme tast (tast 7) igjen, sender IR samme kode. Arduino får samme kode og matches med samme kode som før, men denne gangen ble Fan slått AV på grunn av å bytte bit (i% 2).
Dekoding av IR-fjernkontrollsignaler ved hjelp av Arduino:
Her er en liste over en DVD NEC-type Eksterne dekodede utgangskoder:
Hvis du ikke kjenner dekodet utgang for IR-fjernkontrollen, kan den lett bli funnet, bare følg disse trinnene:
- Last ned IR-fjernbiblioteket herfra
- Pakk den ut, og legg den i Arduino 'Libraries' -mappen. Gi deretter den ekstraherte mappen navn til IRremote.
- Kjør programmet nedenfor fra Arduino og åpne vinduet Serial Monitor i Arduino IDE. Trykk nå på hvilken som helst IR Remote-knapp og se den tilsvarende dekodede sekskantutgangen i Serial Monitor-vinduet.
* IRremote: IRrecvDemo - demonstrerer mottak av IR-koder med IRrecv * En IR-detektor / demodulator må være koblet til inngangen RECV_PIN. * Versjon 0.1 juli 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Ovennevnte program er hentet fra IRremote biblioteks 'eksempler' -mappe, du kan sjekke ut flere eksempler for å lære mer om bruk av IR-fjernkontrollen. Så det er slik vi dekodet IR-fjernkontrollen.
Kretsbeskrivelse:
Tilkoblinger av denne kretsen er veldig enkle her. En flytende krystallskjerm brukes til å vise status for husholdningsapparater som er direkte koblet til arduino i 4-biters modus. Datapinner på LCD, nemlig RS, EN, D4, D5, D6, D7 er koblet til arduino digital pin nummer 6, 7, 8, 9, 10, 11. Og utgang pin på TSOP1738 er direkte koblet til digital pin nummer 14 (A) av Arduino. Og Vcc-pin er koblet til en +5 volt og GND-pin koblet til bakken på kretsen. En stafettfører, nemlig ULN2003, brukes også til å kjøre stafetter. 5 volt SPDT 3-reléer brukes til å kontrollere LYS, VIFTE og TV. Og reléer er koblet til arduino pin nummer 3, 4 og 5 gjennom relédriver ULN2003 for å kontrollere henholdsvis LIGHT, FAN og TV.
Kode Beskrivelse:
I programmering av en del av dette prosjektet inkluderer vi først og fremst innen programmering bibliotek for IR-fjernkontroll som er lett tilgjengelig på Google. Og definer pin og erklær variabler.
#inkludere
Og inkluder deretter en topptekst for flytende krystallvisning, og så definerer vi data og kontrollpinner for LCD og husholdningsapparater.
#inkludere
Etter det må vi initialisere LCD-skjermen og gi retning for pin som brukes til vifte, lys og TV.
ugyldig oppsett () {Serial.begin (9600); lcd.begin (16,2); pinMode (Fan, OUTPUT); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
Som allerede forklart, brukes nedenfor en del av koden til å sammenligne den mottatte hexverdien til den allerede definerte hex-koden til den knappen. Hvis det samsvarer, utføres en relativ operasjon ved å bruke passende funksjoner som er gitt i kode.
ugyldig sløyfe () {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);