Search Code

Mafunzo ya ESP32 29/55 - Kusoma kubonyeza kitufe cha mbali cha IR na ESP32| Kifurushi cha Kujifunza cha IoT cha SunFounder cha ESP32

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).

rimoti

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_ir_sl838

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

ESP32-29-IR-remote-wiring

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.

ESP32-29-IR-remote-schematic

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

maktaba_ya_kipokezi_IR

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

Bilder

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
Språk: 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";
  }
}

Tänker att du kanske behöver

Resurser och referenser

Filer📁

Datablad (pdf)