Code zoeken

ESP32 Tutorial 29/55 - IR-afstandsbediening toetsaanslagen lezen met ESP32 | SunFounder's ESP32 IoT-leerkit

ESP32 Tutorial 29/55 - IR-afstandsbediening toetsaanslagen lezen met ESP32 | SunFounder's ESP32 IoT-leerkit

In deze tutorial leren we hoe we infrarood (IR) signalen kunnen detecteren met behulp van de ESP32-module en een compatibele IR-ontvanger. Wanneer we een knop op de afstandsbediening indrukken, zal de ESP32 het signaal herkennen en specifieke acties uitvoeren, zoals het laten klinken van een zoemer bij bepaalde toetsaanslagen. Dit project is ideaal voor degenen die op zoek zijn naar het integreren van afstandsbedieningsmogelijkheden in hun ESP32-toepassingen (in video op 02:15).

afstandsbediening

De ESP32 is een krachtige microcontroller die Wi-Fi- en Bluetooth-mogelijkheden combineert, waardoor deze geschikt is voor een breed scala aan IoT-toepassingen. In dit project gebruiken we een IR-ontvanger om signalen van een afstandsbediening te interpreteren. De toetsaanslagen worden in de code verwerkt, waardoor we acties kunnen ondernemen op basis van de ontvangen commando's.

Hardware uitgelegd

De belangrijkste componenten voor dit project zijn de ESP32-microcontroller, een IR-ontvangermodule en een zoemer. De ESP32 fungeert als het brein van de operatie en verwerkt de signalen die van de IR-ontvanger worden ontvangen. De IR-ontvanger detecteert de infraroodsignalen van de afstandsbediening en zet deze om in elektrische signalen die de ESP32 kan begrijpen.

ir_ontvanger_sl838

De IR-ontvanger heeft doorgaans drie pinnen: VCC (voeding), GND (aarde) en OUT (signaal). De VCC-pin wordt verbonden met een voedingsbron (3,3V of 5V), terwijl de GND wordt verbonden met de aarde. De OUT-pin stuurt het gedecodeerde signaal naar de ESP32, dat vervolgens kan worden gebruikt om verschillende acties te activeren, zoals het activeren van een zoemer wanneer een specifieke toets wordt ingedrukt.

Datasheet-details

Fabrikant Sharp
Onderdeelnummer GP1UXC41
Logica/IO-spanning 3,3 - 5,0 V
Voedingsspanning 3,3 V (typ.)
Uitgangsstroom (per kanaal) 20 mA (max)
Piekstroom (per kanaal) 50 mA (max)
PWM-frequentierichtlijn 38 kHz
Ingangslogische drempels 0,3 Vcc (hoog), 0,2 Vcc (laag)
Spanningsval / RDS(on) / verzadiging 0,5 V (max)
Thermische limieten 85 °C (max)
Behuizing TO-92
Opmerkingen / varianten Beschikbaar in meerdere configuraties

 

  • Zorg voor een correcte voedingsspanning om schade te voorkomen.
  • Gebruik korte draden om signaalinterferentie te minimaliseren.
  • Controleer de oriëntatie van de IR-ontvanger voordat u deze aansluit.
  • Bevestig dat de batterij van de afstandsbediening werkt.
  • Gebruik indien nodig pull-up-weerstanden voor stabiliteit.

Bedradingsinstructies

ESP32-29-IR-remote-wiring

Om de IR-ontvanger op de ESP32 aan te sluiten, begint u met het identificeren van de drie pinnen op de IR-ontvanger: VCC, GND en OUT. Verbind de VCC-pin met een 3,3V-voedingsbron op de ESP32. Verbind vervolgens de GND-pin met een van de aardingspinnen (GND) op de ESP32. Verbind ten slotte de OUT-pin met GPIO-pin 14 op de ESP32, die in de code is aangewezen voor de IR-ontvanger.

ESP32-29-IR-afstandsbediening-schema

Zodra de verbindingen zijn gemaakt, zorgt u ervoor dat de bedrading stevig is. Als u een breadboard gebruikt, plaatst u de IR-ontvanger zodanig dat de platte kant naar u toe is gericht en de bobbel aan de tegenoverliggende kant zit. Deze oriëntatie helpt u om de pinnen correct te identificeren. Controleer de verbindingen voordat u de ESP32 inschakelt.

Codevoorbeelden & uitleg

IR_ontvanger_bibliotheek

Installeer de IRremoteESP8266-bibliotheek van David Conran, Sebastien.

In de code definiëren we de IR-ontvangerpin met behulp van de constante IR_RECEIVE_PIN, die is ingesteld op 14. We maken ook een instantie van IRrecv om de IR-signalen te verwerken.

const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;

Deze opstelling stelt ons in staat om signalen van de IR-afstandsbediening te ontvangen. In de setup()-functie initialiseren we de seriële communicatie en schakelen we de IR-ontvanger in.

void setup() {
  Serial.begin(115200);
  irrecv.enableIRIn();
}

Binnen de loop()-functie controleren we of er een IR-signaal is ontvangen. Zo ja, dan decoderen we de toetswaarde en printen we deze naar de seriële monitor.

if (irrecv.decode(&results)) {
    String key = decodeKeyValue(results.value);
    Serial.println(key);
    irrecv.resume(); 
}

Dit codefragment laat zien hoe we het ontvangen signaal decoderen en de bijbehorende toetswaarde naar de seriële monitor printen. De decodeKeyValue()-functie koppelt het ontvangen signaal aan specifieke knopwaarden, zoals "0", "1", "EQ" en andere. U kunt de volledige code hieronder in het artikel vinden.

Demonstratie / Wat te verwachten

Zodra de bedrading compleet is en de code is geüpload, zou het indrukken van een knop op de afstandsbediening de bijbehorende sleutelwaarde op de seriële monitor moeten weergeven. Als u bijvoorbeeld op de knop "2" drukt, wordt "2" op de monitor afgedrukt. Als de sleutel niet wordt herkend, wordt "ERROR" geretourneerd. De zoemer zal klinken wanneer de aangewezen sleutel (bijv. "EQ") wordt ingedrukt, wat directe feedback geeft.

Wees voorzichtig met veelvoorkomende valkuilen, zoals omgekeerde polariteit in uw verbindingen of het gebruik van onjuiste spanningsniveaus. Zorg ervoor dat de afstandsbediening correct werkt en een werkende batterij heeft voordat u uw opstelling test (in video op 15:30).

Videotijdstempels

  • 00:00 Start
  • 2:05 Introductie tot IR-ontvanger
  • 4:24 Bedrading uitgelegd
  • 6:08 Arduino-code voor IR-ontvanger uitgelegd
  • 10:06 ESP32-board en COM-poort selecteren in Arduino IDE
  • 11:48 Projectdemonstratie
  • 13:09 Actieve zoemer direct aangesloten op ESP32
  • 14:40 actie ondernemen wanneer een sleutel wordt ingedrukt
  • 15:30 Arduino-code voor actie ondernemen
  • 16:54 Sleutelindruk en zoemerdemo

Afbeeldingen

IR_receiver_lib
IR_receiver_lib
ir_receiver_sl838
ir_receiver_sl838
remote
remote
ESP32-29-IR-remote-schematic
ESP32-29-IR-remote-schematic
ESP32-29-IR-remote-wiring
ESP32-29-IR-remote-wiring
830-ESP32 Tutorial 29/55- Arduino code for fading Infrared remote
Taal: C++
#include <IRremoteESP8266.h>
#include <IRrecv.h>

// Define the IR receiver pin
const uint16_t IR_RECEIVE_PIN = 14;

// Create an IRrecv object
IRrecv irrecv(IR_RECEIVE_PIN);

// Create a decode_results object
decode_results results;

void setup() {
  // Start serial communication
  Serial.begin(115200);

  // Start the IR receiver
  irrecv.enableIRIn();
}

void loop() {
  // If an IR signal is received
  if (irrecv.decode(&results)) {
    String key = decodeKeyValue(results.value);
    if (key != "ERROR") {
      // Print the value of the signal to the serial monitor
      Serial.println(key);
    }
    irrecv.resume(); // Continue to receive the next signal
  }
}

// Function to decode the value of the IR signal
String decodeKeyValue(long result)
{
  switch(result){
    case 0xFF6897:
      return "0";
    case 0xFF30CF:
      return "1"; 
    case 0xFF18E7:
      return "2"; 
    case 0xFF7A85:
      return "3"; 
    case 0xFF10EF:
      return "4"; 
    case 0xFF38C7:
      return "5"; 
    case 0xFF5AA5:
      return "6"; 
    case 0xFF42BD:
      return "7"; 
    case 0xFF4AB5:
      return "8"; 
    case 0xFF52AD:
      return "9"; 
    case 0xFF906F:
      return "+"; 
    case 0xFFA857:
      return "-"; 
    case 0xFFE01F:
      return "EQ"; 
    case 0xFFB04F:
      return "U/SD";
    case 0xFF9867:
      return "CYCLE";         
    case 0xFF22DD:
      return "PLAY/PAUSE";   
    case 0xFF02FD:
      return "BACKWARD";   
    case 0xFFC23D:
      return "FORWARD";   
    case 0xFFA25D:
      return "POWER";   
    case 0xFFE21D:
      return "MUTE";   
    case 0xFF629D:
      return "MODE";       
    case 0xFFFFFFFF:
      return "ERROR";   
    default :
      return "ERROR";
  }
}

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Bestanden📁

Datasheet (pdf)