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 приемникот обично има три пина: 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 отпорници ако е потребно за стабилност.
Инструкции за поврзување

За да го поврзете IR приемникот со ESP32, започнете со идентификување на трите пина на IR приемникот: VCC, GND и OUT. Поврзете го VCC пинот со 3.3V извор на напојување на ESP32. Потоа, поврзете го GND пинот со еден од земјените (GND) пинови на ESP32. Конечно, поврзете го OUT пинот со GPIO пин 14 на ESP32, кој е назначен за IR приемникот во кодот.
Откако ќе се направат врските, осигурете се дека жиците се цврсти. Ако користите breadboard, вметнете го IR приемникот така што рамната страна е свртена кон вас, а испакнувањето е на спротивната страна. Оваа ориентација ќе ви помогне правилно да ги идентификувате пиновите. Проверете ги врските пред да го вклучите ESP32.
Примери на код и објаснување
Инсталирајте ја 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 Демонстрација на притискање копче и зумер
#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";
}
}
Common Course Links
Common Course Files
Работи што можеби ќе ви требаат
-
Amazon
-
eBay
Ресурси и референци
-
ДокументацијаESP32 Tutorial 23/55 - SunFounder doc page for IR receiverdocs.sunfounder.com
Датотеки📁
Технички лист (pdf)
-
IR-remote_TL1838-Infrared-Receiver-datasheet
robojax-IR-remote_TL1838-Infrared-Receiver-datasheet.pdf0.46 MB