Search Code

ESP32 ટ્યુટોરિયલ 29/55 - ESP32 સાથે IR રિમોટ કી પ્રેસ વાંચવું| SunFounderની ESP32 IoT લર્નિંગ કિટ

ESP32 ટ્યુટોરિયલ 29/55 - ESP32 સાથે IR રિમોટ કી પ્રેસ વાંચવું| SunFounderની ESP32 IoT લર્નિંગ કિટ

આ ટ્યુટોરિયલમાં, આપણે ESP32 મોડ્યુલ અને સુસંગત IR રીસીવરનો ઉપયોગ કરીને ઇન્ફ્રારેડ (IR) સિગ્નલો કેવી રીતે શોધવા તે શીખીશું. જ્યારે આપણે રિમોટ પરનું બટન દબાવીએ છીએ, ત્યારે ESP32 સિગ્નલને ઓળખશે અને ચોક્કસ ક્રિયાઓ કરશે, જેમ કે ચોક્કસ કી દબાવવા પર બઝર વગાડવું. આ પ્રોજેક્ટ તે લોકો માટે આદર્શ છે જેઓ તેમની ESP32 એપ્લિકેશન્સમાં રિમોટ કંટ્રોલ ક્ષમતાઓને એકીકૃત કરવા માંગે છે (વિડિયોમાં 02:15 પર).

રિમોટ

ESP32 એક શક્તિશાળી માઇક્રોકંટ્રોલર છે જે Wi-Fi અને બ્લૂટૂથ ક્ષમતાઓને જોડે છે, જે તેને IoT એપ્લિકેશન્સની વિશાળ શ્રેણી માટે યોગ્ય બનાવે છે. આ પ્રોજેક્ટમાં, આપણે રિમોટ કંટ્રોલમાંથી સિગ્નલોનું અર્થઘટન કરવા માટે IR રીસીવરનો ઉપયોગ કરીશું. કી દબાવવાની ક્રિયાઓ કોડમાં પ્રોસેસ કરવામાં આવશે, જેનાથી આપણે પ્રાપ્ત આદેશોના આધારે ક્રિયાઓ કરી શકીશું.

હાર્ડવેર સમજાવ્યું

આ પ્રોજેક્ટના મુખ્ય ઘટકોમાં ESP32 માઇક્રોકંટ્રોલર, IR રીસીવર મોડ્યુલ અને બઝરનો સમાવેશ થાય છે. ESP32 ઓપરેશનના મગજ તરીકે કાર્ય કરે છે, જે IR રીસીવરમાંથી પ્રાપ્ત સિગ્નલોને પ્રોસેસ કરે છે. IR રીસીવર રિમોટ કંટ્રોલમાંથી ઇન્ફ્રારેડ સિગ્નલો શોધે છે અને તેમને વિદ્યુત સિગ્નલોમાં રૂપાંતરિત કરે છે જે ESP32 સમજી શકે છે.

ir_receiver_sl838

IR રીસીવરમાં સામાન્ય રીતે ત્રણ પિન હોય છે: VCC (પાવર), GND (ગ્રાઉન્ડ), અને OUT (સિગ્નલ). VCC પિન પાવર સ્ત્રોત (3.3V અથવા 5V) સાથે જોડાયેલ છે, જ્યારે GND ગ્રાઉન્ડ સાથે જોડાય છે. OUT પિન ડીકોડ કરેલ સિગ્નલ ESP32 ને મોકલે છે, જેનો ઉપયોગ પછી વિવિધ ક્રિયાઓ ટ્રિગર કરવા માટે થઈ શકે છે, જેમ કે ચોક્કસ કી દબાવવામાં આવે ત્યારે બઝર સક્રિય કરવું.

ડેટાશીટ વિગતો

ઉત્પાદક શાર્પ
ભાગ નંબર 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 રીસીવરની દિશા તપાસો.
  • રિમોટ કંટ્રોલ બેટરી કાર્યરત છે તેની પુષ્ટિ કરો.
  • સ્થિરતા માટે જરૂરી હોય તો પુલ-અપ રેઝિસ્ટરનો ઉપયોગ કરો.

વાયરિંગ સૂચનાઓ

ESP32-29-IR-remote-wiring

IR રીસીવરને ESP32 સાથે વાયર કરવા માટે, IR રીસીવર પરના ત્રણ પિન ઓળખીને શરૂ કરો: VCC, GND, અને OUT. VCC પિનને ESP32 પરના 3.3V પાવર સ્ત્રોત સાથે જોડો. આગળ, GND પિનને ESP32 પરના ગ્રાઉન્ડ (GND) પિનમાંથી એક સાથે જોડો. છેલ્લે, OUT પિનને ESP32 પરના GPIO પિન 14 સાથે જોડો, જે કોડમાં IR રીસીવર માટે નિયુક્ત છે.

ESP32-29-IR-remote-schematic

કનેક્શન થઈ ગયા પછી, ખાતરી કરો કે વાયરિંગ સુરક્ષિત છે. જો તમે બ્રેડબોર્ડનો ઉપયોગ કરી રહ્યા છો, તો IR રીસીવરને એવી રીતે દાખલ કરો કે સપાટ બાજુ તમારી સામે હોય અને બમ્પ વિરુદ્ધ બાજુ પર હોય. આ દિશા તમને પિન યોગ્ય રીતે ઓળખવામાં મદદ કરશે. ESP32 ને પાવર અપ કરતા પહેલા કનેક્શન ચકાસવાની ખાતરી કરો.

કોડ ઉદાહરણો અને વોકથ્રુ

IR_receiver_lib

ડેવિડ કોનરાન, સેબેસ્ટિયન દ્વારા IRremoteESP8266 લાઇબ્રેરી ઇન્સ્ટોલ કરો.

કોડમાં, આપણે સ્થિરાંક IR_RECEIVE_PIN નો ઉપયોગ કરીને IR રીસીવર પિન વ્યાખ્યાયિત કરીએ છીએ, જે 14 પર સેટ છે. આપણે IR સિગ્નલો સંભાળવા માટે IRrecv નું ઉદાહરણ પણ બનાવીએ છીએ.

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 IR રીસીવર માટે Arduino કોડ સમજાવ્યો
  • 10:06 Arduino IDE માં ESP32 બોર્ડ અને COM પોર્ટ પસંદ કરવું
  • 11:48 પ્રોજેક્ટ પ્રદર્શન
  • 13:09 એક્ટિવ બઝર સીધું ESP32 સાથે જોડાયેલું
  • 14:40 કી દબાવવામાં આવે ત્યારે ક્રિયા લેવી
  • 15:30 ક્રિયા લેવા માટે Arduino કોડ
  • 16:54 કી દબાવવાનું અને બઝર ડેમો

Images

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
Language: 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";
  }
}

Things you might need

Resources & references

Files📁

Datasheet (pdf)