Arduino Nano - IR Afstandsbediening

U bent waarschijnlijk al eens een infrarood afstandsbediening tegengekomen, ook wel IR afstandsbediening genoemd, bij het gebruik van apparaten zoals tv’s en airconditioners in huis... Deze handleiding legt uit hoe u een infrarood (IR) afstandsbediening en een infrarood ontvanger kunt gebruiken om de Arduino Nano te besturen. We gaan in detail leren:

IR controller - IR receiver - Arduino Nano

Hardware Benodigdheden

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×IR Afstandsbediening en Ontvanger Kit
1×CR2025 Batterij
1×Jumperdraden (man-man)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 de IR Afstandsbediening

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

  • De IR afstandsbediening wordt gebruikt om commando’s te verzenden via infraroodsignalen.
  • De IR ontvanger vangt deze signalen op en interpreteert ze om het apparaat te besturen.

Een IR kit bevat meestal de twee bovengenoemde componenten: een IR afstandsbediening en een IR ontvanger.

IR Afstandsbediening

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

  • Elke knop op de afstandsbediening heeft een specifieke functie of commando toegewezen.
  • Wanneer een knop wordt ingedrukt, zendt de afstandsbediening een onzichtbaar infraroodsignaal uit. Dit signaal bevat een unieke code of patroon gekoppeld aan de ingedrukte knop.
  • Deze infraroodsignalen behoren tot het infraroodspectrum 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 opvangt en ontvangt die door de afstandsbediening worden uitgezonden.

De infraroodontvanger detecteert het inkomende infraroodsignaal en zet dit 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 kiezen uit de volgende opties:

  • 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 Nano of een externe voedingsbron.
  • GND pin: Verbind deze pin met de GND pin van de Arduino Nano of een externe voedingsbron.
  • OUT (Output) pin: Dit is de uitgangspin van de IR ontvanger module. Verbind deze met een digitale ingangspin op de Arduino Nano.

Hoe Het Werkt

Wanneer een gebruiker een knop indrukt op de IR afstandsbediening, gebeuren de volgende stappen:

  • De IR afstandsbediening codeert het commando dat bij de knop hoort in een infraroodsignaal volgens een specifiek protocol.
  • De IR afstandsbediening zendt het gecodeerde infraroodsignaal uit.
  • De IR ontvanger vangt het gecodeerde infraroodsignaal op.
  • De IR ontvanger decodeert het signaal en zet het terug om in het oorspronkelijke commando.
  • De Arduino Nano leest het commando dat door de IR ontvanger is ontvangen.
  • De Arduino Nano koppelt het ontvangen commando aan de corresponderende knop die op de afstandsbediening werd ingedrukt.

Deze stappen leggen uit hoe het indrukken van een knop op de IR afstandsbediening wordt vertaald naar een herkenbaar commando door de Arduino Nano.

Het lijkt misschien ingewikkeld, maar u hoeft zich geen zorgen te maken. Dankzij de DIYables_IRcontroller bibliotheek wordt het heel eenvoudig.

Aansluitschema

Aansluitschema tussen Arduino Nano en IR Ontvanger Module

Arduino Nano IR Remote Control Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Aansluitschema tussen Arduino Nano en IR Ontvanger Sensor

Arduino Nano IR Remote Control Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Aansluitschema tussen Arduino Nano en IR Ontvanger Sensor en Adapter

Voordat u de IR ontvanger sensor aansluit op de Arduino Nano, kunt u deze eerst aansluiten op de adapter. Dit maakt de opstelling eenvoudiger en zorgt voor een juiste verbinding tussen de IR ontvanger sensor en de Arduino Nano.

U kunt de IR ontvanger sensor ook eerst op de adapter aansluiten voordat u deze aan de Arduino verbindt.

Arduino Nano IR remote control receiver 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, afhankelijk van een 17-knops of 21-knops IR afstandsbediening:
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 een knop is ingedrukt. Als dat zo is, lees dan de knop uit:
Key17 key = irController.getKey(); // als u een 17-knops IR controller gebruikt // OF Key21 key = irController.getKey(); // als u een 21-knops IR controller gebruikt
  • Wanneer een knop wordt gedetecteerd, kunt u specifieke acties uitvoeren die overeenkomen met elke knop.

Arduino Nano Code

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

  • Klik op het Bibliotheken-pictogram in de linkerzijbalk 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 Nano DIYables_IRcontroller library
  • U krijgt een melding om ook de afhankelijkheden te installeren, zoals in de onderstaande afbeelding:
Arduino Nano IRremote library
  • Klik op de knop Alles installeren om de afhankelijkheden te installeren.
  • Kopieer de bovenstaande code en open deze met de Arduino IDE.
  • Klik op de Uploaden-knop in de Arduino IDE om de code naar de Arduino Nano te uploaden.
  • Druk nu de knoppen op de afstandsbediening één voor één in.
  • Bekijk het resultaat in de Seriële Monitor.
  • Dit is het resultaat dat u kunt verwachten bij het indrukken van de knoppen op een 17-knops IR afstandsbediening, één voor één:
COM6
Send
1 2 3 4 5 6 7 8 9 - 0 # UP DOWN LEFT RIGHT OK
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

U kunt nu de code aanpassen om apparaten zoals LED’s, ventilatoren, pompen, actuatoren en meer te besturen met behulp van IR afstandsbedieningen.

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 praktijkvoorbeelden, zodat u stap voor stap kunt volgen.

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