- Werkende uitleg:
- IR-afstandsbedieningssignalen decoderen met Arduino:
- Circuit Beschrijving:
- Code Beschrijving:
Eerder hebben we vele soorten huisautomatisering behandeld met behulp van verschillende technologieën, zoals DTMF-gebaseerde huisautomatisering, pc-gestuurde huisautomatisering met Arduino, Bluetooth-gestuurde huisautomatisering. In dit project gebruiken we IR-gebaseerde draadloze communicatie voor het besturen van huishoudelijke apparaten. In dit project wordt Arduino gebruikt om het hele proces te besturen. We sturen een aantal commando's naar het besturingssysteem door de IR TV / DVD / MP3-afstandsbediening te gebruiken voor het bedienen van AC-huishoudelijke apparaten. Na ontvangst van een signaal van de IR-afstandsbediening, stuurt Arduino een gerelateerd signaal naar relais die verantwoordelijk zijn voor het in- of uitschakelen van de huishoudelijke apparaten via een relaisstuurprogramma.
Werkende uitleg:
De werking van dit project is gemakkelijk te begrijpen. Wanneer we op een knop van de IR-afstandsbediening drukken, verzendt de afstandsbediening een code in de vorm van een reeks gecodeerde pulsen met behulp van een modulatiefrequentie van 38 kHz. Deze pulsen worden ontvangen door de TSOP1738- sensor en gelezen door Arduino en vervolgens decodeert Arduino de ontvangen reeks pulsen in een hexadecimale waarde en vergelijkt die gedecodeerde waarde met de vooraf gedefinieerde hexadecimale waarde van de ingedrukte knop. Als er een overeenkomst optreedt, voert Arduino een relatieve bewerking uit en het bijbehorende resultaat wordt ook weergegeven op een 16x2 LCD met behulp van de juiste opdrachten. Hier in dit project hebben we 3 lampen van verschillende kleuren gebruikt, voor demonstratie die Fan, Light en TV aangeeft.
Er zijn veel soorten IR-afstandsbedieningen beschikbaar voor verschillende apparaten, maar de meeste werken op een frequentie van ongeveer 38 kHz. Hier in dit project bedienen we huishoudelijke apparaten met behulp van een IR-tv-afstandsbediening. Voor het detecteren van IR-afstandsbedieningssignalen gebruiken we TSOP1738 IR-ontvanger. Deze TSOP1738-sensor kan een 38Khz-frequentiesignaal detecteren. De werking van de IR-afstandsbediening en de TSOP1738 kan in detail worden behandeld in dit artikel: IR-zender en -ontvanger
Componenten:
- Arduino UNO
- TSOP1738
- IR-tv / dvd-afstandsbediening
- ULN2003
- Relais 5 volt
- Lamp met houder
- Draden aansluiten
- Broodplank
- 16x2 LCD
- Stroomvoorziening
- PVT
- IC 7805
Hier in dit project hebben we de 7, 8 en 9 cijferknoppen van de IR-afstandsbediening gebruikt voor het bedienen van respectievelijk ventilator, licht en tv en de AAN / UIT-knop (aan / uit-knop) wordt gebruikt om alle apparaten tegelijkertijd AAN en UIT te zetten.
Hier hebben we de omschakelmethode gebruikt voor AAN en UIT van het enkele huishoudelijke apparaat. Wisselmethode is niets anders dan om dat te krijgen, of de knop nu zelfs maar een keer wordt ingedrukt of af en toe. Dit wordt gevonden door de herinnering op te halen nadat deze door 2 is gedeeld (i% 2). Als er een herinnering is, wordt het apparaat ingeschakeld en als de herinnering 0 is, wordt het uitgeschakeld. Stel dat toets 7 op de afstandsbediening wordt ingedrukt, dan stuurt de afstandsbediening een signaal naar Arduino via TSOP IR-ontvanger. Vervolgens decodeert Arduino het en slaat de gedecodeerde waarde op in de resultaatvariabele. Nu heeft de resultaatvariabele een hexadecimale waarde 0x1FE00FF, na het matchen met de vooraf gedefinieerde hexadecimale waarde van sleutel 7 (zie bovenstaande afbeelding), zet Arduino de ventilator AAN. Als we nu opnieuw op dezelfde toets (toets 7) drukken, verzendt IR dezelfde code. Arduino krijgt dezelfde code en gekoppeld aan dezelfde code als voorheen, maar deze keer is de ventilator uitgeschakeld vanwege het wisselen van de bit (i% 2).
IR-afstandsbedieningssignalen decoderen met Arduino:
Hier is een lijst met op afstand gedecodeerde uitvoercodes van het type DVD NEC:
Als u de gedecodeerde uitgang voor uw IR-afstandsbediening niet kent, kan deze gemakkelijk worden gevonden, volg gewoon deze stappen:
- Download de IR-afstandsbedieningsbibliotheek van hier
- Pak het uit en plaats het in de map Arduino 'Libraries'. Hernoem vervolgens de uitgepakte map naar IRremote.
- Start het onderstaande programma vanaf uw Arduino en open het Serial Monitor-venster in Arduino IDE. Druk nu op een willekeurige IR Remote-knop en zie de overeenkomstige gedecodeerde hexadecimale output in het Serial Monitor-venster.
* IRremote: IRrecvDemo - toont het ontvangen van IR-codes met IRrecv * Een IR-detector / demodulator moet worden aangesloten op de ingang RECV_PIN. * Versie 0.1 juli 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Het bovenstaande programma is afkomstig uit de map 'voorbeelden' van de IRremote-bibliotheek. U kunt meer voorbeelden bekijken voor meer informatie over het gebruik van de IR-afstandsbediening. Dus zo hebben we de IR-afstandsbedieningsuitgang gedecodeerd.
Circuit Beschrijving:
Verbindingen van dit circuit zijn heel eenvoudig, hier wordt een liquid crystal display gebruikt voor het weergeven van de status van huishoudelijke apparaten die rechtstreeks is aangesloten op arduino in 4-bit-modus. Datapinnen van LCD, namelijk RS, EN, D4, D5, D6, D7 zijn verbonden met Arduino digitale pin nummer 6, 7, 8, 9, 10, 11. En output pin van TSOP1738 is direct verbonden met digitale pin nummer 14 (A) van Arduino. En Vcc-pin is verbonden met een +5 volt en GND-pin die is aangesloten op de aardingsklem van het circuit. Een relaisstuurprogramma namelijk ULN2003 wordt ook gebruikt voor het aansturen van relais. 5 volt SPDT 3 relais worden gebruikt voor het regelen van LICHT, VENTILATOR en TV. En relais zijn verbonden met arduino-pin nummer 3, 4 en 5 via relaisstuurprogramma ULN2003 voor het besturen van respectievelijk LIGHT, FAN en TV.
Code Beschrijving:
Bij het programmeren van een deel van dit project Allereerst hebben we bij het programmeren een bibliotheek voor IR-afstandsbediening die gemakkelijk beschikbaar is bij Google. En definieer pin en declareer variabelen.
# omvatten
En voeg dan een header toe voor liquid crystal display en dan definiëren we gegevens en controlepennen voor LCD- en huishoudelijke apparaten.
# omvatten
Hierna moeten we het LCD-scherm initialiseren en de richting aangeven van de pin die wordt gebruikt voor ventilator, licht en tv.
void setup () {Serial.begin (9600); lcd.begin (16,2); pinMode (Fan, OUTPUT); pinMode (Licht, OUTPUT); pinMode (TV, OUTPUT);
Zoals reeds uitgelegd, wordt hieronder een deel van de code gebruikt om de ontvangen hexadecimale waarde te vergelijken met de reeds gedefinieerde hexadecimale code van die knop. Als het overeenkomt, wordt een relatieve bewerking uitgevoerd met behulp van de juiste functies die in de code worden gegeven.
void loop () {if (irrecv.decode (& resultaten)) {Serial.println (results.value, HEX); vertraging (100); lcd.setCursor (0,0); lcd.print ("Fan Light TV"); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Fan, x);