ESP32 பயிற்சி 29/55 - ESP32 உடன் IR ரிமோட் விசை அழுத்தத்தைப் படித்தல் | SunFounder இன் ESP32 IoT கற்றல் கிட்
இந்த டுடோரியலில், ESP32 தொகுதி மற்றும் இணக்கமான IR ரிசீவரைப் பயன்படுத்தி அகச்சிவப்பு (IR) சிக்னல்களை எவ்வாறு கண்டறிவது என்பதைக் கற்றுக்கொள்வோம். ரிமோட்டில் ஒரு பொத்தானை அழுத்தும்போது, ESP32 சிக்னலை அடையாளம் கண்டு, குறிப்பிட்ட செயல்களைச் செய்யும், அதாவது குறிப்பிட்ட விசை அழுத்தங்களுக்கு பஸர் ஒலிக்கச் செய்வது போன்றவை. தங்கள் ESP32 பயன்பாடுகளில் ரிமோட் கண்ட்ரோல் திறன்களை ஒருங்கிணைக்க விரும்புவோருக்கு இந்த திட்டம் சிறந்தது (வீடியோவில் 02:15 இல்).
ESP32 என்பது Wi-Fi மற்றும் புளூடூத் திறன்களை இணைக்கும் ஒரு சக்திவாய்ந்த மைக்ரோகண்ட்ரோலர் ஆகும், இது பரந்த அளவிலான IoT பயன்பாடுகளுக்கு ஏற்றதாக அமைகிறது. இந்த திட்டத்தில், ரிமோட் கண்ட்ரோலில் இருந்து சிக்னல்களை விளக்குவதற்கு IR ரிசீவரைப் பயன்படுத்துவோம். விசை அழுத்தங்கள் குறியீட்டில் செயலாக்கப்படும், இதன் மூலம் பெறப்பட்ட கட்டளைகளின் அடிப்படையில் செயல்களைச் செய்ய முடியும்.
வன்பொருள் விளக்கம்
இந்த திட்டத்திற்கான முக்கிய கூறுகளில் ESP32 மைக்ரோகண்ட்ரோலர், IR ரிசீவர் தொகுதி மற்றும் பஸர் ஆகியவை அடங்கும். IR ரிசீவரில் இருந்து பெறப்பட்ட சிக்னல்களை செயலாக்குவதன் மூலம் ESP32 செயல்பாட்டின் மூளையாக செயல்படுகிறது. IR ரிசீவர் ரிமோட் கண்ட்ரோலில் இருந்து அகச்சிவப்பு சிக்னல்களைக் கண்டறிந்து அவற்றை ESP32 புரிந்துகொள்ளக்கூடிய மின் சிக்னல்களாக மாற்றுகிறது.
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 ரிசீவரின் திசையை சரிபார்க்கவும்.
- ரிமோட் கண்ட்ரோல் பேட்டரி செயல்படுகிறதா என்பதை உறுதிப்படுத்தவும்.
- நிலைத்தன்மைக்கு தேவைப்பட்டால் புல்-அப் ரெசிஸ்டர்களைப் பயன்படுத்தவும்.
வயரிங் வழிமுறைகள்

IR ரிசீவரை ESP32 உடன் இணைக்க, IR ரிசீவரில் உள்ள மூன்று பின்களை அடையாளம் கண்டு தொடங்கவும்: VCC, GND மற்றும் OUT. VCC பின்னை ESP32 இல் உள்ள 3.3V மின்சார மூலத்துடன் இணைக்கவும். அடுத்து, GND பின்னை ESP32 இல் உள்ள தரை (GND) பின்களில் ஒன்றுடன் இணைக்கவும். இறுதியாக, OUT பின்னை ESP32 இல் உள்ள GPIO பின் 14 உடன் இணைக்கவும், இது குறியீட்டில் IR ரிசீவருக்காக நியமிக்கப்பட்டுள்ளது.
இணைப்புகள் செய்யப்பட்டவுடன், வயரிங் பாதுகாப்பாக இருப்பதை உறுதிசெய்யவும். நீங்கள் பிரெட்போர்டைப் பயன்படுத்தினால், IR ரிசீவரை பிளாட் பக்கம் உங்களை நோக்கியும், பம்ப் எதிர் பக்கத்திலும் இருக்கும்படி செருகவும். இந்த திசை பின்களை சரியாக அடையாளம் காண உதவும். ESP32 ஐ இயக்குவதற்கு முன் இணைப்புகளை சரிபார்க்க மறக்காதீர்கள்.
குறியீடு எடுத்துக்காட்டுகள் & வழிகாட்டுதல்
டேவிட் கான்ரான், செபாஸ்டியன் எழுதிய 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 விசை அழுத்தம் மற்றும் பஸர் ஆர்ப்பாட்டம்
#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
நீங்கள் தேவைப்படும் எண்ணங்கள்
-
அமேசான்
-
இபேய்
வளங்கள் மற்றும் மேற்கோள்கள்
-
ஆவணங்கள்ESP32 Tutorial 23/55- SunFounder doc page for IR receiverdocs.sunfounder.com
கோப்புகள்📁
தரவியல் அட்டவணை (பிடிஎப்)
-
IR-remote_TL1838-Infrared-Receiver-datasheet
robojax-IR-remote_TL1838-Infrared-Receiver-datasheet.pdf0.46 MB