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 رسونکي پن د IR_RECEIVE_PIN ثابت په کارولو سره تعریف کوو، کوم چې 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)