Пребарување код

ESP32 Упатство 29/55 - Читање на притисок на копче од IR далечински управувач со ESP32| SunFounder's ESP32 IoT Learning kit

ESP32 Упатство 29/55 - Читање на притисок на копче од IR далечински управувач со ESP32| SunFounder's ESP32 IoT Learning kit

Во ова упатство, ќе научиме како да детектираме инфрацрвени (IR) сигнали користејќи го ESP32 модулот и компатибилен IR приемник. Кога ќе притиснеме копче на далечинскиот управувач, ESP32 ќе го препознае сигналот и ќе изврши специфични дејства, како што е огласување на зумер за одредени притискања на копчиња. Овој проект е идеален за оние кои сакаат да интегрираат можности за далечинско управување во нивните ESP32 апликации (во видео на 02:15).

далечински управувач

ESP32 е моќен микроконтролер кој комбинира Wi-Fi и Bluetooth можности, што го прави погоден за широк опсег на IoT апликации. Во овој проект, ќе користиме IR приемник за да ги интерпретираме сигналите од далечинскиот управувач. Притискањата на копчињата ќе бидат обработени во кодот, овозможувајќи ни да преземеме дејства врз основа на примените команди.

Објаснување на хардверот

Главните компоненти за овој проект вклучуваат ESP32 микроконтролер, IR приемник модул и зумер. ESP32 служи како мозок на операцијата, обработувајќи ги сигналите примени од IR приемникот. IR приемникот ги детектира инфрацрвените сигнали од далечинскиот управувач и ги претвора во електрични сигнали кои ESP32 може да ги разбере.

ir_receiver_sl838

IR приемникот обично има три пина: VCC (напојување), GND (земја) и OUT (сигнал). VCC пинот е поврзан со извор на напојување (3.3V или 5V), додека GND се поврзува со земја. OUT пинот го испраќа декодираниот сигнал до ESP32, кој потоа може да се користи за активирање на различни дејства, како што е активирање на зумер кога ќе се притисне одредено копче.

Детали од податочен лист

Производител Sharp
Број на дел GP1UXC41
Логички/IO напон 3.3 - 5.0 V
Напон на напојување 3.3 V (тип.)
Излезна струја (по канал) 20 mA (макс.)
Врвна струја (по канал) 50 mA (макс.)
Насоки за PWM фреквенција 38 kHz
Влезни логички прагови 0.3 Vcc (висок), 0.2 Vcc (низок)
Пад на напон / RDS(on) / заситување 0.5 V (макс.)
Термички граници 85 °C (макс.)
Пакет TO-92
Белешки / варијанти Достапно во повеќе конфигурации

 

  • Осигурајте правилно напојување за да избегнете оштетување.
  • Користете кратки жици за да ја минимизирате интерференцијата на сигналот.
  • Проверете ја ориентацијата на IR приемникот пред поврзување.
  • Потврдете дека батеријата на далечинскиот управувач е функционална.
  • Користете pull-up отпорници ако е потребно за стабилност.

Инструкции за поврзување

ESP32-29-IR-remote-wiring

За да го поврзете IR приемникот со ESP32, започнете со идентификување на трите пина на IR приемникот: VCC, GND и OUT. Поврзете го VCC пинот со 3.3V извор на напојување на ESP32. Потоа, поврзете го GND пинот со еден од земјените (GND) пинови на ESP32. Конечно, поврзете го OUT пинот со GPIO пин 14 на ESP32, кој е назначен за IR приемникот во кодот.

ESP32-29-IR-remote-schematic

Откако ќе се направат врските, осигурете се дека жиците се цврсти. Ако користите breadboard, вметнете го IR приемникот така што рамната страна е свртена кон вас, а испакнувањето е на спротивната страна. Оваа ориентација ќе ви помогне правилно да ги идентификувате пиновите. Проверете ги врските пред да го вклучите ESP32.

Примери на код и објаснување

IR_receiver_lib

Инсталирајте ја IRremoteESP8266 библиотеката од David Conran, Sebastien.

Во кодот, го дефинираме пинот за IR приемник користејќи ја константата IR_RECEIVE_PIN, која е поставена на 14. Исто така, креираме инстанца од IRrecv за да ги обработуваме IR сигналите.

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

Оваа поставка ни овозможува да примаме сигнали од IR далечинскиот управувач. Во setup() функцијата, ја иницијализираме сериската комуникација и го овозможуваме IR приемникот.

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

Во рамките на loop() функцијата, проверуваме дали е примен IR сигнал. Ако е, го декодираме клучот и го печатиме на серискиот монитор.

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

Овој фрагмент од код покажува како го декодираме примениот сигнал и ја печатиме соодветната вредност на копчето на серискиот монитор. Функцијата decodeKeyValue() ги мапира примените сигнали на специфични вредности на копчиња, како што се "0", "1", "EQ" и други. Целосниот код можете да го најдете подолу во статијата.

Демонстрација / Што да очекувате

Откако жиците се поврзани и кодот е поставен, притискањето на копче на далечинскиот управувач треба да ја прикаже соодветната вредност на копчето на серискиот монитор. На пример, притискањето на копчето „2“ ќе испечати „2“ на мониторот. Ако копчето не е препознаено, ќе врати „ERROR“. Зумерот ќе се огласи кога ќе се притисне назначеното копче (на пр., „EQ“), обезбедувајќи непосредна повратна информација.

Бидете внимателни на вообичаени грешки, како што се обратен поларитет во вашите врски или користење на неточни нивоа на напон. Осигурете се дека далечинскиот управувач работи правилно и има функционална батерија пред да го тестирате вашето поставување (во видеото на 15:30).

Временски ознаки на видеото

  • 00:00 Почеток
  • 2:05 Вовед во IR приемник
  • 4:24 Објаснување на жиците
  • 6:08 Објаснување на Arduino кодот за IR приемник
  • 10:06 Избор на ESP32 плоча и COM порта во Arduino IDE
  • 11:48 Демонстрација на проектот
  • 13:09 Активен зумер директно поврзан на ESP32
  • 14:40 Преземање акција кога е притиснато копче
  • 15:30 Arduino код за преземање акција
  • 16:54 Демонстрација на притискање копче и зумер

Слики

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
Јазик: 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";
  }
}

Работи што можеби ќе ви требаат

Ресурси и референци

Датотеки📁

Технички лист (pdf)