Mafunzo ya ESP32 29/55 - Kusoma kubonyeza kitufe cha mbali cha IR na ESP32| Kifurushi cha Kujifunza cha IoT cha SunFounder cha ESP32
Katika mafunzo haya, tutajifunza jinsi ya kugundua mawimbi ya infrared (IR) kwa kutumia moduli ya ESP32 na kipokezi cha IR kinachooana. Tunapobonyeza kitufe kwenye rimoti, ESP32 itatambua mawimbi na kutekeleza vitendo maalum, kama vile kupiga kelele kwa kubonyeza funguo fulani. Mradi huu unafaa kwa wale wanaotaka kuunganisha uwezo wa udhibiti wa mbali kwenye programu zao za ESP32 (kwenye video saa 02:15).
ESP32 ni kidhibiti chenye nguvu kinachochanganya uwezo wa Wi-Fi na Bluetooth, na kuifanya kufaa kwa matumizi mengi ya IoT. Katika mradi huu, tutatumia kipokezi cha IR kutafsiri mawimbi kutoka kwa rimoti. Kubonyeza funguo kutachakatwa kwenye msimbo, kuturuhusu kuchukua hatua kulingana na amri zinazopokelewa.
Vifaa Vimeelezwa
Vipengele vikuu vya mradi huu ni pamoja na kidhibiti cha ESP32, moduli ya kipokezi cha IR, na buzzer. ESP32 hutumika kama ubongo wa operesheni, kuchakata mawimbi yanayopokelewa kutoka kwa kipokezi cha IR. Kipokezi cha IR hugundua mawimbi ya infrared kutoka kwa rimoti na kuyabadilisha kuwa mawimbi ya umeme ambayo ESP32 inaweza kuelewa.
Kipokezi cha IR kwa kawaida kina pini tatu: VCC (nguvu), GND (ardhi), na OUT (mawimbi). Pini ya VCC imeunganishwa kwenye chanzo cha nguvu (3.3V au 5V), wakati GND inaunganisha kwenye ardhi. Pini ya OUT hutuma mawimbi yaliyotafsiriwa kwa ESP32, ambayo yanaweza kutumika kuanzisha vitendo mbalimbali, kama vile kuamsha buzzer wakati kitufe maalum kinapobonyezwa.
Maelezo ya Datasheet
| Mtengenezaji | Sharp |
|---|---|
| Nambari ya sehemu | GP1UXC41 |
| Voltage ya Logic/IO | 3.3 - 5.0 V |
| Voltage ya usambazaji | 3.3 V (typ.) |
| Mkondo wa pato (kwa kila chaneli) | 20 mA (max) |
| Mkondo wa kilele (kwa kila chaneli) | 50 mA (max) |
| Mwongozo wa mzunguko wa PWM | 38 kHz |
| Viwango vya kizingiti cha mantiki ya kuingiza | 0.3 Vcc (juu), 0.2 Vcc (chini) |
| Kushuka kwa voltage / RDS(on) / kueneza | 0.5 V (max) |
| Mipaka ya joto | 85 °C (max) |
| Kifurushi | TO-92 |
| Vidokezo / lahaja | Inapatikana katika usanidi mbalimbali |
- Hakikisha usambazaji sahihi wa nguvu ili kuepuka uharibifu.
- Tumia nyaya fupi ili kupunguza usumbufu wa mawimbi.
- Angalia mwelekeo wa kipokezi cha IR kabla ya kuunganisha.
- Thibitisha kwamba betri ya rimoti inafanya kazi.
- Tumia resistors za kuvuta juu ikiwa ni lazima kwa utulivu.
Maagizo ya Uunganishaji

Ili kuunganisha kipokezi cha IR kwenye ESP32, anza kwa kutambua pini tatu kwenye kipokezi cha IR: VCC, GND, na OUT. Unganisha pini ya VCC kwenye chanzo cha nguvu cha 3.3V kwenye ESP32. Kisha, unganisha pini ya GND kwenye moja ya pini za ardhi (GND) kwenye ESP32. Hatimaye, unganisha pini ya OUT kwenye pini ya GPIO 14 kwenye ESP32, ambayo imeteuliwa kwa kipokezi cha IR kwenye msimbo.
Mara tu miunganisho ikifanyika, hakikisha kwamba waya zimeimarishwa. Ikiwa unatumia breadboard, ingiza kipokezi cha IR hivi kwamba upande wa gorofa unakuelekea na uvimbe uko upande wa pili. Mwelekeo huu utakusaidia kutambua pini kwa usahihi. Hakikisha umeangalia miunganisho kabla ya kuwasha ESP32.
Mifano ya Msimbo & Maelekezo
sakinisha maktaba ya IRremoteESP8266 na David Conran, Sebastien.
Kwenye msimbo, tunafafanua pini ya kipokezi cha IR kwa kutumia kiwango IR_RECEIVE_PIN, ambacho kimewekwa kuwa 14. Pia tunaunda mfano wa IRrecv kushughulikia mawimbi ya IR.
const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;
Usanidi huu unaturuhusu kupokea mawimbi kutoka kwa rimoti ya IR. Katika kazi ya setup(), tunaanzisha mawasiliano ya serial na kuwezesha kipokezi cha IR.
void setup() {
Serial.begin(115200);
irrecv.enableIRIn();
}
Ndani ya kazi ya loop(), tunaangalia ikiwa mawimbi ya IR yamepokelewa. Ikiwa ndivyo, tunatafsiri thamani ya kitufe na kuichapisha kwenye kichunguzi cha serial.
if (irrecv.decode(&results)) {
String key = decodeKeyValue(results.value);
Serial.println(key);
irrecv.resume();
}
Kipande hiki cha msimbo kinaonyesha jinsi tunavyotafsiri mawimbi yaliyopokelewa na kuchapisha thamani ya kitufe inayolingana kwenye kichunguzi cha serial. Kazi ya decodeKeyValue() inaweka mawimbi yaliyopokelewa kwa thamani maalum za kitufe, kama vile "0", "1", "EQ", na zingine. Unaweza kupata msimbo kamili uliopakiwa chini ya makala.
Maonyesho / Nini cha Kutarajia
Mara waya zimekamilika na msimbo umepakiwa, kubonyeza kitufe kwenye kidhibiti cha mbali kunapaswa kuonyesha thamani ya kitufe inayolingana kwenye mfuatiliaji wa serial. Kwa mfano, kubonyeza kitufe cha "2" kutachapisha "2" kwenye mfuatiliaji. Iwapo kitufe hakitambuliki, kitarudisha "ERROR". Buzzer italia wakati kitufe kilichoteuliwa (k.m., "EQ") kinapobonyezwa, ikitoa maoni ya haraka.
Kuwa makini na mitego ya kawaida, kama vile polarity iliyogeuzwa kwenye miunganisho yako au kutumia viwango visivyo sahihi vya voltage. Hakikisha kwamba kidhibiti cha mbali kinafanya kazi vizuri na kina betri inayofanya kazi kabla ya kujaribu mfumo wako (katika video saa 15:30).
Vidokezo vya Muda wa Video
- 00:00 Mwanzo
- 2:05 Utangulizi wa kipokezi cha IR
- 4:24 Uunganishaji wa waya umeelezwa
- 6:08 Msimbo wa Arduino kwa kipokezi cha IR umeelezwa
- 10:06 Kuchagua bodi ya ESP32 na mlango wa COM kwenye Arduino IDE
- 11:48 Maonyesho ya Mradi
- 13:09 Buzzer amilifu iliyounganishwa moja kwa moja kwenye ESP32
- 14:40 kuchukua hatua wakati kitufe kinapobonyezwa
- 15:30 Msimbo wa Arduino wa kuchukua hatua
- 16:54 Maonyesho ya kubonyeza kitufe na 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
Tänker att du kanske behöver
-
Amazon
-
eBay
Resurser och referenser
-
DokumentationESP32 Tutorial 23/55- SunFounder doc page for IR receiverdocs.sunfounder.com
Filer📁
Datablad (pdf)
-
IR-remote_TL1838-Infrared-Receiver-datasheet
robojax-IR-remote_TL1838-Infrared-Receiver-datasheet.pdf0.46 MB