Hướng dẫn ESP32 29/55 - Đọc phím nhấn từ điều khiển IR với ESP32 | Bộ học IoT ESP32 của SunFounder
Trong hướng dẫn này, chúng ta sẽ học cách phát hiện tín hiệu hồng ngoại (IR) bằng mô-đun ESP32 và một bộ thu hồng ngoại tương thích. Khi chúng ta nhấn một nút trên điều khiển từ xa, ESP32 sẽ nhận diện tín hiệu và thực hiện các hành động cụ thể, chẳng hạn như phát ra tiếng còi cho các lần nhấn phím cụ thể. Dự án này lý tưởng cho những ai muốn tích hợp khả năng điều khiển từ xa vào các ứng dụng ESP32 của mình (trong video tại 02:15).
ESP32 là một bộ vi điều khiển mạnh mẽ kết hợp khả năng Wi-Fi và Bluetooth, phù hợp cho nhiều ứng dụng IoT. Trong dự án này, chúng ta sẽ sử dụng một bộ thu hồng ngoại để giải mã tín hiệu từ điều khiển từ xa. Các lần nhấn phím sẽ được xử lý trong mã, cho phép chúng ta thực hiện các hành động dựa trên các lệnh nhận được.
Phần cứng được giải thích
Các thành phần chính cho dự án này bao gồm bộ vi điều khiển ESP32, mô-đun thu hồng ngoại và một còi. ESP32 đóng vai trò là bộ não của hoạt động, xử lý các tín hiệu nhận được từ bộ thu hồng ngoại. Bộ thu hồng ngoại phát hiện các tín hiệu hồng ngoại từ điều khiển từ xa và chuyển đổi chúng thành các tín hiệu điện mà ESP32 có thể hiểu được.
Bộ thu hồng ngoại thường có ba chân: VCC (nguồn), GND (đất) và OUT (tín hiệu). Chân VCC được kết nối với nguồn điện (3.3V hoặc 5V), trong khi GND kết nối với đất. Chân OUT gửi tín hiệu đã giải mã đến ESP32, sau đó có thể được sử dụng để kích hoạt các hành động khác nhau, chẳng hạn như kích hoạt còi khi một phím cụ thể được nhấn.
Chi tiết bảng dữ liệu
| Nhà sản xuất | Sharp |
|---|---|
| Số bộ phận | GP1UXC41 |
| Điện áp logic/IO | 3.3 - 5.0 V |
| Điện áp cung cấp | 3.3 V (điển hình) |
| Dòng điện đầu ra (mỗi kênh) | 20 mA (tối đa) |
| Dòng điện đỉnh (mỗi kênh) | 50 mA (tối đa) |
| Hướng dẫn tần số PWM | 38 kHz |
| Ngưỡng logic đầu vào | 0.3 Vcc (cao), 0.2 Vcc (thấp) |
| Sụt áp / RDS(on) / bão hòa | 0.5 V (tối đa) |
| Giới hạn nhiệt | 85 °C (tối đa) |
| Đóng gói | TO-92 |
| Ghi chú / biến thể | Có sẵn trong nhiều cấu hình |
- Đảm bảo nguồn điện chính xác để tránh hư hỏng.
- Sử dụng dây ngắn để giảm thiểu nhiễu tín hiệu.
- Kiểm tra hướng của bộ thu hồng ngoại trước khi kết nối.
- Xác nhận rằng pin của điều khiển từ xa hoạt động.
- Sử dụng điện trở kéo lên nếu cần thiết để ổn định.
Hướng dẫn nối dây

Để nối bộ thu hồng ngoại với ESP32, hãy bắt đầu bằng cách xác định ba chân trên bộ thu hồng ngoại: VCC, GND và OUT. Kết nối chân VCC với nguồn 3.3V trên ESP32. Tiếp theo, kết nối chân GND với một trong các chân đất (GND) trên ESP32. Cuối cùng, kết nối chân OUT với chân GPIO 14 trên ESP32, được chỉ định cho bộ thu hồng ngoại trong mã.
Sau khi các kết nối được thực hiện, hãy đảm bảo rằng dây nối chắc chắn. Nếu bạn sử dụng bảng mạch thử, hãy cắm bộ thu hồng ngoại sao cho mặt phẳng hướng về phía bạn và phần nhô ra ở phía đối diện. Hướng này sẽ giúp bạn xác định chính xác các chân. Hãy chắc chắn kiểm tra các kết nối trước khi cấp nguồn cho ESP32.
Ví dụ mã & Hướng dẫn chi tiết
cài đặt thư viện IRremoteESP8266 của David Conran, Sebastien.
Trong mã, chúng ta định nghĩa chân thu hồng ngoại bằng hằng số IR_RECEIVE_PIN, được đặt là 14. Chúng ta cũng tạo một phiên bản của IRrecv để xử lý các tín hiệu hồng ngoại.
const uint16_t IR_RECEIVE_PIN = 14;
IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;
Thiết lập này cho phép chúng ta nhận tín hiệu từ điều khiển từ xa hồng ngoại. Trong hàm setup(), chúng ta khởi tạo giao tiếp nối tiếp và kích hoạt bộ thu hồng ngoại.
void setup() {
Serial.begin(115200);
irrecv.enableIRIn();
}
Trong hàm loop(), chúng ta kiểm tra xem có tín hiệu hồng ngoại nào được nhận không. Nếu có, chúng ta giải mã giá trị phím và in nó ra màn hình nối tiếp.
if (irrecv.decode(&results)) {
String key = decodeKeyValue(results.value);
Serial.println(key);
irrecv.resume();
}
Đoạn mã này cho thấy cách chúng ta giải mã tín hiệu nhận được và in giá trị phím tương ứng ra màn hình nối tiếp. Hàm decodeKeyValue() ánh xạ tín hiệu nhận được đến các giá trị nút cụ thể, chẳng hạn như "0", "1", "EQ" và các giá trị khác. Bạn có thể tìm thấy mã hoàn chỉnh được tải xuống bên dưới bài viết.
Trình diễn / Điều gì sẽ xảy ra
Khi quá trình đấu dây hoàn tất và mã được tải lên, nhấn một nút trên điều khiển từ xa sẽ hiển thị giá trị phím tương ứng trên màn hình nối tiếp. Ví dụ, nhấn nút "2" sẽ in "2" ra màn hình. Nếu phím không được nhận diện, nó sẽ trả về "ERROR". Còi sẽ kêu khi phím được chỉ định (ví dụ: "EQ") được nhấn, cung cấp phản hồi tức thì.
Hãy cẩn thận với các lỗi thường gặp, chẳng hạn như đảo cực trong kết nối hoặc sử dụng mức điện áp không chính xác. Đảm bảo rằng điều khiển từ xa hoạt động tốt và có pin còn hoạt động trước khi kiểm tra thiết lập của bạn (trong video tại 15:30).
Mốc thời gian video
- 00:00 Bắt đầu
- 2:05 Giới thiệu về bộ thu hồng ngoại
- 4:24 Giải thích cách đấu dây
- 6:08 Giải thích mã Arduino cho bộ thu hồng ngoại
- 10:06 Chọn bo mạch ESP32 và cổng COM trong Arduino IDE
- 11:48 Trình diễn dự án
- 13:09 Còi chủ động kết nối trực tiếp với ESP32
- 14:40 Thực hiện hành động khi một phím được nhấn
- 15:30 Mã Arduino để thực hiện hành động
- 16:54 Trình diễn nhấn phím và còi
#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
Nghĩ bạn có thể cần
-
Amazon
-
eBay
Tài nguyên & tài liệu tham khảo
-
Tài liệuESP32 Tutorial 23/55 - SunFounder doc page for IR receiverdocs.sunfounder.com
Tập tin📁
Bảng dữ liệu (pdf)
-
IR-remote_TL1838-Infrared-Receiver-datasheet
robojax-IR-remote_TL1838-Infrared-Receiver-datasheet.pdf0.46 MB