Search Code

ESP32 Tutoriaal 29/55 - Lees IR-afstandbeheer sleuteldruk met ESP32| SunFounder se ESP32 IoT-leerkit

ESP32 Tutoriaal 29/55 - Lees IR-afstandbeheer sleuteldruk met ESP32| SunFounder se ESP32 IoT-leerkit

In hierdie tutoriaal sal ons leer hoe om infrarooi (IR) seine met behulp van die ESP32-module en 'n versoenbare IR-ontvanger op te spoor. Wanneer ons 'n knoppie op die afstandbeheer druk, sal die ESP32 die sein herken en spesifieke aksies uitvoer, soos om 'n gonser te laat klink vir spesifieke sleuteldrukke. Hierdie projek is ideaal vir diegene wat afstandbeheer-vermoëns in hul ESP32-toepassings wil integreer (in video by 02:15).

afstandbeheer

Die ESP32 is 'n kragtige mikrobeheerder wat Wi-Fi- en Bluetooth-vermoëns kombineer, wat dit geskik maak vir 'n wye reeks IoT-toepassings. In hierdie projek sal ons 'n IR-ontvanger gebruik om seine van 'n afstandbeheer te interpreteer. Die sleuteldrukke sal in die kode verwerk word, wat ons in staat stel om aksies te neem op grond van die ontvangde opdragte.

Hardeware Verduidelik

Die hoofkomponente vir hierdie projek sluit die ESP32-mikrobeheerder, 'n IR-ontvanger-module en 'n gonser in. Die ESP32 dien as die brein van die operasie en verwerk die seine wat van die IR-ontvanger ontvang word. Die IR-ontvanger bespeur die infrarooi seine van die afstandbeheer en skakel dit om in elektriese seine wat die ESP32 kan verstaan.

ir_ontvanger_sl838

Die IR-ontvanger het tipies drie penne: VCC (krag), GND (grond) en OUT (sein). Die VCC-pen word aan 'n kragbron (3.3V of 5V) gekoppel, terwyl die GND aan die grond koppel. Die OUT-pen stuur die gedekodeerde sein na die ESP32, wat dan gebruik kan word om verskeie aksies te aktiveer, soos om 'n gonser te aktiveer wanneer 'n spesifieke sleutel gedruk word.

Datablad Besonderhede

Vervaardiger Sharp
Deelnommer GP1UXC41
Logika/IO-spanning 3.3 - 5.0 V
Toevoerspanning 3.3 V (tip.)
Uitsetstroom (per kanaal) 20 mA (maks.)
Piekstroom (per kanaal) 50 mA (maks.)
PWM-frekwensie riglyn 38 kHz
Inset logika drempels 0.3 Vcc (hoog), 0.2 Vcc (laag)
Spanningval / RDS(on) / versadiging 0.5 V (maks.)
Termiese limiete 85 °C (maks.)
Pakket TO-92
Notas / variante Beskikbaar in verskeie konfigurasies

 

  • Verseker korrekte kragtoevoer om skade te vermy.
  • Gebruik kort drade om seininterferensie te minimaliseer.
  • Kontroleer die oriëntasie van die IR-ontvanger voordat jy koppel.
  • Bevestig dat die afstandbeheer-battery funksioneel is.
  • Gebruik optrekweerstande indien nodig vir stabiliteit.

Bedradingsinstruksies

ESP32-29-IR-remote-wiring

Om die IR-ontvanger aan die ESP32 te bedraad, begin deur die drie penne op die IR-ontvanger te identifiseer: VCC, GND en OUT. Koppel die VCC-pen aan 'n 3.3V-kragbron op die ESP32. Koppel dan die GND-pen aan een van die grond- (GND) penne op die ESP32. Koppel laastens die OUT-pen aan GPIO-pen 14 op die ESP32, wat in die kode vir die IR-ontvanger aangewys is.

ESP32-29-IR-afstandbeheer-skematies

Sodra die verbindings gemaak is, verseker dat die bedrading veilig is. As jy 'n broodbord gebruik, plaas die IR-ontvanger sodat die plat kant na jou wys en die bult aan die teenoorgestelde kant is. Hierdie oriëntasie sal jou help om die penne korrek te identifiseer. Maak seker dat jy die verbindings verifieer voordat jy die ESP32 aanskakel.

Kode Voorbeelde & Deurloop

IR_ontvanger_biblioteek

installeer die IRremoteESP8266-biblioteek deur David Conran, Sebastien.

In die kode definieer ons die IR-ontvanger-pen met behulp van die konstante IR_RECEIVE_PIN, wat op 14 gestel is. Ons skep ook 'n instansie van IRrecv om die IR-seine te hanteer.

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

Hierdie opstelling stel ons in staat om seine van die IR-afstandbeheer te ontvang. In die setup()-funksie initialiseer ons die serie-kommunikasie en aktiveer die IR-ontvanger.

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

Binne die loop()-funksie kontroleer ons of 'n IR-sein ontvang is. Indien wel, dekodeer ons die sleutelwaarde en druk dit na die serie-monitor.

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

Hierdie kode-fragment wys hoe ons die ontvangde sein dekodeer en die ooreenstemmende sleutelwaarde na die serie-monitor druk. Die decodeKeyValue()-funksie karteer die ontvangde sein na spesifieke knoppiewaardes, soos "0", "1", "EQ" en ander. Jy kan die volledige kode hieronder in die artikel vind.

Demonstrasie / Wat om te Verwacht

Sodra die bedrading voltooi is en die kode opgelaai is, sal die druk van 'n knoppie op die afstandbeheer die ooreenstemmende sleutelwaarde op die reeksmonitor vertoon. Byvoorbeeld, die druk van die "2"-knoppie sal "2" op die monitor druk. As die sleutel nie herken word nie, sal dit "ERROR" terugstuur. Die gonser sal klink wanneer die aangewese sleutel (bv. "EQ") gedruk word, wat onmiddellike terugvoer verskaf.

Wees versigtig vir algemene slaggate, soos omgekeerde polariteit in jou verbindings of die gebruik van verkeerde spanningsvlakke. Maak seker dat die afstandbeheer behoorlik werk en 'n funksionerende battery het voordat jy jou opstelling toets (in video by 15:30).

Video Tydstempels

  • 00:00 Begin
  • 2:05 Inleiding tot IR-ontvanger
  • 4:24 Bedrading verduidelik
  • 6:08 Arduino-kode vir IR-ontvanger verduidelik
  • 10:06 Kies ESP32-bord en COM-poort in Arduino IDE
  • 11:48 Projekdemonstrasie
  • 13:09 Aktiewe gonser direk aan ESP32 gekoppel
  • 14:40 Aksie neem wanneer 'n sleutel gedruk word
  • 15:30 Arduino-kode vir aksie neem
  • 16:54 Sleuteldruk- en gonserdemo

Beelde

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";
  }
}

Goedere wat jy dalk nodig het

Hulpbronne en verwysings

Lêers📁

Datasheet (pdf)