Arduino - IR Afstandsbediening

U bent waarschijnlijk de infrarood afstandsbediening (IR remote controller) wel eens tegengekomen bij het gebruik van elektronische apparaten thuis, zoals televisies en airconditioners... In deze tutorial gaan we leren hoe we een infrarood (IR) afstandsbediening en IR ontvanger kunnen gebruiken om een Arduino te besturen. We behandelen in detail:

Vervolgens kunt u de code aanpassen om LED’s, ventilatoren, pompen, actuatoren ... te bedienen via de IR afstandsbediening.

IR controller - IR receiver - Arduino

Hardware benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×IR Kit (Afstandsbediening en Ontvanger)
1×CR2025 batterij
1×Jumper Draden (male-male)
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

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 componenten:

  • IR afstandsbediening
  • IR ontvanger

Een IR kit bevat meestal deze twee componenten.

IR afstandsbediening

De IR afstandsbediening is een handzaam apparaat dat infraroodsignalen uitzendt. De IR afstandsbediening bestaat uit een toetsenbord met meerdere knoppen:

  • Elke knop op de afstandsbediening correspondeert met een specifieke functie of commando.
  • Wanneer een knop wordt ingedrukt, zendt de afstandsbediening een infraroodsignaal uit met een unieke code of patroon gekoppeld aan die knop.
  • Deze infraroodsignalen zijn voor het menselijk oog onzichtbaar omdat ze in het infraroodspectrum vallen.
IR controller
image source: diyables.io

IR Ontvanger

De IR ontvanger module is een sensor die de infraroodsignalen opvangt en detecteert die door de afstandsbediening worden uitgezonden.

De infraroodontvanger detecteert de binnenkomende infraroodsignalen en zet deze om in de code (het commando) dat overeenkomt met de ingedrukte knop op de afstandsbediening.

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

  • Alleen IR ontvanger module
  • Alleen IR ontvanger sensor
  • IR ontvanger sensor + adapter
IR Receiver sensor module
image source: diyables.io
IR Receiver sensor adapter
image source: diyables.io

IR Ontvanger Pinout

De IR ontvanger module of sensor heeft drie pinnen:

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

Hoe het werkt

Wanneer de gebruiker een knop op de IR afstandsbediening indrukt:

  • De IR afstandsbediening codeert het commando dat overeenkomt met de knop naar een infraroodsignaal volgens een specifieke protocol
  • De IR afstandsbediening zendt het gecodeerde infraroodsignaal uit
  • De IR ontvanger ontvangt het gecodeerde infraroodsignaal
  • De IR ontvanger decodeert het gevaarte infraroodsignaal tot het commando
  • De Arduino leest het commando van de IR ontvanger
  • De Arduino koppelt het commando aan de ingedrukte toets

Het klinkt misschien ingewikkeld, maar geen zorgen. Met de hulp van de DIYables_IRcontroller bibliotheek is het een fluitje van een cent.

Aansluitschema

Aansluitschema tussen Arduino en IR ontvanger module

Arduino IR Remote Control Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Het echte aansluitdiagram

Arduino IR remote control receiver module
image source: diyables.io

Aansluitschema tussen Arduino en IR ontvanger sensor

Arduino IR Remote Control Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Het echte aansluitdiagram

Arduino IR remote control receiver sensor
image source: diyables.io

Aansluitschema tussen Arduino en IR ontvanger sensor en adapter

U kunt ook de IR ontvanger sensor aan de adapter koppelen voordat u deze aansluit op de Arduino.

Arduino IR remote control receiver adapter
image source: diyables.io

Hoe programmeert u 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 afhankelijk van de 17-knops of 21-knops IR afstandsbedieningen:
DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce tijd is 200ms // OF DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debounce tijd is 200ms
  • Initialiseer de IR Controller:
irController.begin();
  • Controleer in de loop of er een toets wordt ingedrukt. Zo ja, lees de toets uit:
Key17 key = irController.getKey(); // bij gebruik van 17-knops IR controller // OF Key21 key = irController.getKey(); // bij gebruik van 21-knops IR controller
  • Zodra u een toetsdruk detecteert, kunt u specifieke acties uitvoeren gebaseerd op de toets.

Arduino Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 7 // The Arduino pin 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 Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 7 // The Arduino pin 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

  • Navigeer naar het Libraries icoon in de linker balk 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.
Arduino DIYables_IRcontroller library
  • U krijgt een melding om de afhankelijkheden van de bibliotheek te installeren zoals hieronder:
Arduino IRremote library
  • Klik op de Installeer alles knop om de afhankelijkheden te installeren
  • Kopieer de bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Druk op de knoppen van de afstandsbediening één voor één
  • Bekijk het resultaat in de Seriële Monitor.
  • Hieronder ziet u het resultaat wanneer u op de knoppen van de 21-knops IR afstandsbediening één voor één drukt:
COM6
Send
CH- CH CH+ << >> >|| – + EQ 100+ 200+ 0 1 2 3 4 5 6 7 8 9
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Nu kunt u de code aanpassen om LED’s, ventilatoren, pompen, actuatoren ... via IR afstandsbedieningen te besturen.

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.

※ 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!