ESP32 - IR Afstandsbediening

U bent waarschijnlijk al eens een infrarood afstandsbediening (IR remote control) tegengekomen bij het bedienen van apparaten zoals televisies en airconditioners thuis. In deze handleiding gaan we leren hoe u een infrarood (IR) afstandsbediening en een IR ontvanger kunt gebruiken om de ESP32 te bedienen. Concreet leert u:

IR controller - IR ontvanger - ESP32

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×IR Afstandsbediening en Ontvanger Kit
1×CR2025 batterij
1×Breadboard (experimenteerprint)
1×Jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over IR Afstandsbediening

Een IR besturingssysteem bestaat uit twee onderdelen: een IR afstandsbediening en een IR ontvanger.

  • De IR afstandsbediening wordt gebruikt om commando's te versturen via infrarode signalen.
  • De IR ontvanger vangt deze signalen op en interpreteert ze om het apparaat te besturen.

Een IR kit bestaat normaal gesproken uit beide componenten zoals hierboven: een IR afstandsbediening en een IR ontvanger.

IR Afstandsbediening

De IR afstandsbediening is een draagbaar apparaat dat infraroodsignalen uitzendt. Het heeft een toetsenbord met meerdere knoppen:

  • Elke knop op de afstandsbediening is toegewezen aan een specifieke functie of opdracht.
  • Wanneer een knop wordt ingedrukt, zendt de afstandsbediening een infraroodsignaal uit met een unieke code of patroon dat correspondeert met de ingedrukte knop.
  • Deze infraroodsignalen vallen binnen het infrarode spectrum en zijn niet zichtbaar voor het menselijk oog.
IR controller
image source: diyables.io

IR Ontvanger

De IR ontvanger module is een sensor die de infraroodsignalen van de afstandsbediening detecteert en ontvangt.

De infraroodontvanger vangt inkomende infraroodsignalen op en zet deze om in de code (commando) die overeenkomt met de ingedrukte knop op de afstandsbediening.

De IR ontvanger kan een sensor of module zijn. U kunt de volgende opties gebruiken:

  • Alleen IR ontvanger module
  • Alleen IR ontvanger sensor
  • IR ontvanger sensor met adapter
IR ontvanger sensormodule
image source: diyables.io
IR ontvanger sensor adapter
image source: diyables.io

IR Ontvanger Pinout

De IR ontvanger module of sensor heeft drie pins:

  • VCC pin: Verbind deze pin met de 3.3V of 5V pin van de ESP32 of een externe voeding.
  • GND pin: Verbind deze pin met de GND pin van de ESP32 of een externe voeding.
  • OUT (Output) pin: Dit is de uitgangspin van de IR ontvanger module. Verbind deze met een digitale input pin op de ESP32.

Hoe Werkt Het

Wanneer de gebruiker een knop indrukt op de IR afstandsbediening:

  • De IR afstandsbediening codeert het commando dat bij de knop hoort in het infraroodsignaal via een specifiek protocol.
  • De IR afstandsbediening zendt het gecodeerde infraroodsignaal uit.
  • De IR ontvanger vangt dit signal op.
  • De IR ontvanger decodeert het signaal terug naar het commando.
  • De ESP32 leest het commando van de IR ontvanger.
  • De ESP32 koppelt het commando aan de ingedrukte knop.

Anders gezegd, de volgende stappen gebeuren als er een knop op de IR afstandsbediening wordt ingedrukt:

  • De afstandsbediening codeert het commando van de knop in een infraroodsignaal volgens een protocol.
  • Dit gecodeerde signaal wordt uitgezonden.
  • De IR ontvanger registreert het signaal.
  • Het signaal wordt gedecodeerd naar het originele commando.
  • De ESP32 leest dit commando van de ontvanger.
  • De ESP32 vertaalt het commando naar de bijbehorende knop op de afstandsbediening.

Hoewel het misschien complex lijkt, hoeft u zich geen zorgen te maken. Dankzij de gebruiksvriendelijke DIYables_IRcontroller bibliotheek wordt het heel eenvoudig.

Aansluitschema

Aansluitschema tussen ESP32 en IR Ontvanger Module

ESP32 IR Afstandsbediening Aansluitschema

This image is created using Fritzing. Click to enlarge image

Aansluitschema tussen ESP32 en IR Ontvanger Sensor

ESP32 IR Afstandsbediening Aansluitschema

This image is created using Fritzing. Click to enlarge image

Aansluitschema tussen ESP32 en IR Ontvanger Sensor en Adapter

Voordat u de IR ontvanger sensor aansluit op de ESP32, kunt u kiezen om de sensor eerst met de adapter te verbinden. Dit maakt de integratie en het opzetten van de IR ontvanger sensor met de ESP32 eenvoudiger.

ESP32 IR afstandsbediening ontvanger adapter
image source: diyables.io

Hoe Te Programmeren Voor IR Afstandsbediening

  • Voeg de bibliotheek toe:
#include <DIYables_IRcontroller.h> // Bibliotheek voor IR ontvanger
  • Declareer een DIYables_IRcontroller_17 of DIYables_IRcontroller_21 object voor respectievelijk 17-toetsen of 21-toetsen IR afstandsbedieningen:
DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debouncetijd is 200ms // OF DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debouncetijd is 200ms
  • Initialiseer de IR Controller.
irController.begin();
  • In de loop controleert u of een toets is ingedrukt. Zoniet, wacht; anders lees de toets:
Key17 key = irController.getKey(); // als u een 17-toets IR controller gebruikt // OF Key21 key = irController.getKey(); // als u een 21-toets IR controller gebruikt
  • Na het detecteren van een toetsindruk kunt u acties uitvoeren op basis van de ingedrukte toets.

ESP32 Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 19 // The ESP32 pin GPIO19 connected to IR controller DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key17 key = irController.getKey(); if (key != Key17::NONE) { switch (key) { case Key17::KEY_1: Serial.println("1"); // TODO: YOUR CONTROL break; case Key17::KEY_2: Serial.println("2"); // TODO: YOUR CONTROL break; case Key17::KEY_3: Serial.println("3"); // TODO: YOUR CONTROL break; case Key17::KEY_4: Serial.println("4"); // TODO: YOUR CONTROL break; case Key17::KEY_5: Serial.println("5"); // TODO: YOUR CONTROL break; case Key17::KEY_6: Serial.println("6"); // TODO: YOUR CONTROL break; case Key17::KEY_7: Serial.println("7"); // TODO: YOUR CONTROL break; case Key17::KEY_8: Serial.println("8"); // TODO: YOUR CONTROL break; case Key17::KEY_9: Serial.println("9"); // TODO: YOUR CONTROL break; case Key17::KEY_STAR: Serial.println("*"); // TODO: YOUR CONTROL break; case Key17::KEY_0: Serial.println("0"); // TODO: YOUR CONTROL break; case Key17::KEY_SHARP: Serial.println("#"); // TODO: YOUR CONTROL break; case Key17::KEY_UP: Serial.println("UP"); // TODO: YOUR CONTROL break; case Key17::KEY_DOWN: Serial.println("DOWN"); // TODO: YOUR CONTROL break; case Key17::KEY_LEFT: Serial.println("LEFT"); // TODO: YOUR CONTROL break; case Key17::KEY_RIGHT: Serial.println("RIGHT"); // TODO: YOUR CONTROL break; case Key17::KEY_OK : Serial.println("OK"); // TODO: YOUR CONTROL break; default: Serial.println("WARNING: undefined key:"); break; } } }
/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 19 // The ESP32 pin GPIO19 connected to IR controller DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key21 key = irController.getKey(); if (key != Key21::NONE) { switch (key) { case Key21::KEY_CH_MINUS: Serial.println("CH-"); // TODO: YOUR CONTROL break; case Key21::KEY_CH: Serial.println("CH"); // TODO: YOUR CONTROL break; case Key21::KEY_CH_PLUS: Serial.println("CH+"); // TODO: YOUR CONTROL break; case Key21::KEY_PREV: Serial.println("<<"); // TODO: YOUR CONTROL break; case Key21::KEY_NEXT: Serial.println(">>"); // TODO: YOUR CONTROL break; case Key21::KEY_PLAY_PAUSE: Serial.println(">||"); // TODO: YOUR CONTROL break; case Key21::KEY_VOL_MINUS: Serial.println("–"); // TODO: YOUR CONTROL break; case Key21::KEY_VOL_PLUS: Serial.println("+"); // TODO: YOUR CONTROL break; case Key21::KEY_EQ: Serial.println("EQ"); // TODO: YOUR CONTROL break; case Key21::KEY_100_PLUS: Serial.println("100+"); // TODO: YOUR CONTROL break; case Key21::KEY_200_PLUS: Serial.println("200+"); // TODO: YOUR CONTROL break; case Key21::KEY_0: Serial.println("0"); // TODO: YOUR CONTROL break; case Key21::KEY_1: Serial.println("1"); // TODO: YOUR CONTROL break; case Key21::KEY_2: Serial.println("2"); // TODO: YOUR CONTROL break; case Key21::KEY_3: Serial.println("3"); // TODO: YOUR CONTROL break; case Key21::KEY_4: Serial.println("4"); // TODO: YOUR CONTROL break; case Key21::KEY_5: Serial.println("5"); // TODO: YOUR CONTROL break; case Key21::KEY_6: Serial.println("6"); // TODO: YOUR CONTROL break; case Key21::KEY_7: Serial.println("7"); // TODO: YOUR CONTROL break; case Key21::KEY_8: Serial.println("8"); // TODO: YOUR CONTROL break; case Key21::KEY_9: Serial.println("9"); // TODO: YOUR CONTROL break; default: Serial.println("WARNING: undefined key:"); break; } } }

Snelle Stappen

  • Als dit de eerste keer is dat u ESP32 gebruikt, bekijk dan eerst hoe u de omgeving voor ESP32 instelt in de Arduino IDE.
  • Klik op het Libraries icoon in de linker zijbalk van de Arduino IDE.
  • Zoek op "DIYables_IRcontroller", en vind de DIYables_IRcontroller bibliotheek van DIYables.
  • Klik op de Installeren knop om de DIYables_IRcontroller bibliotheek te installeren.
ESP32 DIYables_IRcontroller bibliotheek
  • Er wordt gevraagd om afhankelijkheden van de bibliotheek te installeren, zie onderstaande afbeelding:
ESP32 IRremote bibliotheek afhankelijkheden
  • Klik op de Alles installeren knop om de afhankelijkheden te installeren.
  • Kopieer de bovenstaande code en open deze met de Arduino IDE.
  • Klik op de Upload knop in de Arduino IDE om de code naar de ESP32 te uploaden.
  • Druk één voor één op de toetsen van de afstandsbediening.
  • Bekijk het resultaat in de Seriële Monitor.
  • Bij het indrukken van de toetsen op een 21-toets IR controller krijgt u het volgende resultaat:
COM6
Send
9 8 7 6 5 4 3 2 1 0 200+ 100+ EQ + – || >> << CH+ CH CH-
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

U heeft nu de mogelijkheid om de code aan te passen en verschillende apparaten zoals LED’s, ventilatoren, pompen, actuatoren en meer te besturen met IR afstandsbedieningen. Dit betekent dat u de code kunt wijzigen zodat deze apparaten reageren op uw commando’s via de afstandsbediening.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap door de installatie en programmering van de IR afstandsbediening met ESP32.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!