Èkọ́ 29/55 - Kíkà bọ́tìnnì IR remote pẹ̀lú ESP32| SunFounder's ESP32 IoT Learning kit
Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe ń ṣàwárí àwọn ifihan agbara infrared (IR) ní lílo module ESP32 àti olùgbà IR tí ó bá mu. Nígbà tí a bá tẹ bọ́tìì kan lórí remote, ESP32 yóò mọ ifihan agbara náà yóò sì ṣe àwọn iṣẹ́ pàtó, bíi mímu buzzer dun fún àwọn títẹ bọ́tìì kan pàtó. Iṣẹ́ yìí dára fún àwọn tí ń wá ọ̀nà láti fi agbára remote sí àwọn ohun èlò ESP32 wọn (nínú fídíò ní 02:15).
ESP32 jẹ́ microcontroller alágbára tí ó so agbára Wi-Fi àti Bluetooth pọ̀, tí ó sì mú un dára fún ọ̀pọ̀lọpọ̀ àwọn ohun èlò IoT. Nínú iṣẹ́ yìí, a óò lo olùgbà IR láti túmọ̀ àwọn ifihan agbara láti remote kan. A óò ṣe ìmúṣẹ àwọn títẹ bọ́tìì nínú kóòdù, tí yóò jẹ́ kí a ṣe àwọn iṣẹ́ tí ó dá lórí àwọn àṣẹ tí a gbà.
Àlàyé Hardware
Àwọn èròjà pàtàkì fún iṣẹ́ yìí ni ESP32 microcontroller, module olùgbà IR, àti buzzer kan. ESP32 ni ọpọlọ iṣẹ́ náà, tí ń ṣe ìmúṣẹ àwọn ifihan agbara tí ó gbà láti ọ̀dọ̀ olùgbà IR. Olùgbà IR ń ṣàwárí àwọn ifihan agbara infrared láti remote, ó sì ń yí wọn padà sí àwọn ifihan agbara ina mànàmáná tí ESP32 lè lóye.
Olùgbà IR ní àwọn pin mẹ́ta: VCC (agbara), GND (ilẹ̀), àti OUT (ifihan agbara). Pin VCC ni a so mọ́ orísun agbara (3.3V tàbí 5V), nígbà tí GND so mọ́ ilẹ̀. Pin OUT ni ó ń fi ifihan agbara tí a ti túmọ̀ sí ESP32, tí a lè lò láti ṣe àwọn iṣẹ́ oríṣiríṣi, bíi mímu buzzer dun nígbà tí a bá tẹ bọ́tìì kan pàtó.
Àwọn Àlàyé Datasheet
| Olùṣelọpọ | Sharp |
|---|---|
| Nọ́mbà apá | GP1UXC41 |
| Folti Logic/IO | 3.3 - 5.0 V |
| Folti ìpèsè | 3.3 V (typ.) |
| Ìjáde lọ́wọ́lọ́wọ́ (fún ikanni) | 20 mA (max) |
| Ìjáde tí ó ga jùlọ (fún ikanni) | 50 mA (max) |
| Ìtọ́sọ́nà PWM | 38 kHz |
| Àwọn ìpele ìwọ̀nà input | 0.3 Vcc (gíga), 0.2 Vcc (rẹ̀lẹ̀) |
| Ìdínkù folti / RDS(on) / saturation | 0.5 V (max) |
| Àwọn ìwọ̀nà ooru | 85 °C (max) |
| Package | TO-92 |
| Àwọn àkíyèsí / àwọn oríṣi | Wà ní ọ̀pọ̀lọpọ̀ ìtòlẹ́sẹẹsẹ |
- Rí i pé ìpèsè agbara tọ̀nà láti yẹra fún ìbàjẹ́.
- Lo àwọn okun kúkúrú láti dín ìkọlù ifihan agbara kù.
- Ṣàyẹ̀wò ìtọ́sọ́nà olùgbà IR kí o tó so ó.
- Fi dáhùn pé bátírì remote ṣiṣẹ́.
- Lo àwọn resistor pull-up bí ó bá pọn dandan fún ìdúróṣinṣin.
Àwọn Ìtọ́sọ́nà Ìsopọ̀

Láti so olùgbà IR mọ́ ESP32, bẹ̀rẹ̀ nípa dídámọ̀ àwọn pin mẹ́ta lórí olùgbà IR: VCC, GND, àti OUT. So pin VCC mọ́ orísun agbara 3.3V lórí ESP32. Nígbà tí ó tó, so pin GND mọ́ ọ̀kan lára àwọn pin ilẹ̀ (GND) lórí ESP32. Níkẹyìn, so pin OUT mọ́ GPIO pin 14 lórí ESP32, èyí tí a yàn fún olùgbà IR nínú kóòdù.
Nígbà tí a bá ti ṣe àwọn ìsopọ̀ náà, rí i pé okun náà mú ṣinṣin. Bí o bá ń lo breadboard, fi olùgbà IR sí i bẹ́ẹ̀ tí ẹ̀gbẹ́ pẹ̀lẹ́bẹ̀ yóò dojú kọ ọ́, tí ìkópọ̀ náà sì wà ní ẹ̀gbẹ́ òmíràn. Ìtọ́sọ́nà yìí yóò ràn ọ́ lọ́wọ́ láti dámọ̀ àwọn pin náà dáradára. Rí i pé o ṣàyẹ̀wò àwọn ìsopọ̀ náà kí o tó tan ESP32.
Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà
fi IRremoteESP8266 library síbí nípasẹ̀ David Conran, Sebastien.
Nínú kóòdù, a ń ṣàlàyé pin olùgbà IR ní lílo àkọsílẹ̀ IR_RECEIVE_PIN, tí a gbé sí 14. A tún dá ẹ̀yà kan ti IRrecv sílẹ̀ láti ṣe àmójútó àwọn ifihan agbara IR.
const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;
Ìtòlẹ́sẹẹsẹ yìí jẹ́ kí a gba àwọn ifihan agbara láti IR remote. Nínú iṣẹ́ setup(), a ń bẹ̀rẹ̀ ìbánisọ̀rọ̀ serial, a sì ń mú olùgbà IR ṣiṣẹ́.
void setup() {
Serial.begin(115200);
irrecv.enableIRIn();
}
Nínú iṣẹ́ loop(), a ń ṣàyẹ̀wò bí a bá ti gba ifihan agbara IR kan. Bí ó bá rí bẹ́ẹ̀, a ń túmọ̀ iye bọ́tìì náà, a sì ń tẹ̀ ẹ́ sí ibi ìṣàkíyèsí serial.
if (irrecv.decode(&results)) {
String key = decodeKeyValue(results.value);
Serial.println(key);
irrecv.resume();
}
Àpẹẹrẹ kóòdù yìí fi hàn bí a ṣe ń túmọ̀ ifihan agbara tí a gbà, tí a sì ń tẹ̀ iye bọ́tìì tí ó bá mu sí ibi ìṣàkíyèsí serial. Iṣẹ́ decodeKeyValue() ń ṣàwárí ifihan agbara tí a gbà sí àwọn iye bọ́tìì pàtó, bíi "0", "1", "EQ", àti àwọn mìíràn. O lè rí kóòdù tí ó pé ní ìsàlẹ̀ àpilẹ̀kọ yìí.
Ìfihàn / Ohun Tí O Lè Retí
Ni kẹ́yìn tí wíríìngù bá parí àti pé kódù náà ti gbé sí orí ẹ̀rọ, títẹ bọ́tìnì kan lórí remote yóò fi iye bọ́tìnì tó bá mu wá sí orí mànìtórì náà. Fún àpẹẹrẹ, títẹ bọ́tìnì "2" yóò tẹ̀ "2" jáde sí orí mànìtórì. Bí kò bá dá bọ́tìnì náà mọ̀, yóò dá "ERROR" padà. Buzzer náà yóò dun nígbà tí wọ́n bá tẹ bọ́tìnì tí a yàn (bíi "EQ"), tí yóò fúnni ní ìdáhùn lẹ́sẹ̀kẹsẹ̀.
Ṣọ́ra fún àwọn ìṣòro tó wọ́pọ̀, bíi bí wọ́n ṣe so pólárítì padà nínú àwọn ìsopọ̀ rẹ tàbí lílo ipele foltíìjì tí kò tọ́. Rí i dájú pé remote náà ń ṣiṣẹ́ dáradára àti pé bátì rẹ̀ wà níbẹ̀ kí o tó dánwò ètò rẹ (nínú fídíò ní 15:30).
Àwọn Àkókò Nínú Fídíò
- 00:00 Ìbẹ̀rẹ̀
- 2:05 Ìfihàn sí olùgbà IR
- 4:24 Wíríìngù ṣàlàyé
- 6:08 Kódù Arduino fún olùgbà IR ṣàlàyé
- 10:06 Yíyàn bọ́ọ̀dù ESP32 àti èbúté COM nínú Arduino IDE
- 11:48 Ìfihàn Iṣẹ́-ọwọ́
- 13:09 Buzzer tó ń ṣiṣẹ́ tí a so tààrà sí ESP32
- 14:40 Ṣíṣe ìgbésẹ̀ nígbà tí a bá tẹ bọ́tìnì kan
- 15:30 Kódù Arduino fún ṣíṣe ìgbésẹ̀
- 16:54 Ìfihàn títẹ bọ́tìnì àti buzzer
#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
Ohun ti o le nilo
-
Amazon
-
eBay
Orisun & itọkasi
-
Iwe-ẹriESP32 Tutorial 23/55- SunFounder doc page for IR receiverdocs.sunfounder.com
Fáìlìs📁
Fọọmu data (pdf)
-
IR-remote_TL1838-Infrared-Receiver-datasheet
robojax-IR-remote_TL1838-Infrared-Receiver-datasheet.pdf0.46 MB