Đã được đăng vào 26/08/2021 @ 15:41
Giải mã Remote RF bất kỳ bằng Arduino
GIỚI THIỆU
Hôm nay mình sẽ hướng dẫn các bạn cách giải mã một Remote RF 433Mhz (hoặc 315Mhz) bất kỳ.
Mục đích chính là để có thể tận dụng remote RF điều khiển đèn, máy bơm, các thiết bị điện,..v.v.. chỉ với vài dòng code đơn giản trên Arduino.
Xem thêm:
- Kỹ thuật truyền sóng RF 433Mhz và 315Mhz
- Giải mã Remote hồng ngoại với Arduino
- Arduino cơ bản 14: Điều khiển LED bằng IR Remote sử dụng Arduino
Ngoài ra, có thể giải mã cả những cảm biến RF 433Mhz (hoặc 315Mhz) bán ngoài thị trường như Cảm biến báo trộm PIR, cảm biến báo mở cửa…
Từ đó, có thể tích hợp các cảm biến mua sẵn để làm 1 hệ thống chống trộm cho riêng bạn!
VIDEO HƯỚNG DẪN 1
VIDEO HƯỚNG DẪN 2
LINH KIỆN
- Mạch Arduino loại nào cũng được (UNO, Nano, Pro mini,…)
- Module thu sóng RF 433Mhz (hoặc 315Mhz) – Mình dùng Module XD-RF-5V trong bài này.
- Remote RF 433Mhz (hoặc 315Mhz) HOẶC cảm biến RF HOẶC module phát sóng RF
- Bo cắm test
- Dây cắm test
MỘT VÀI LOẠI MODULE THU RF
MẠCH NGUYÊN LÝ
Module thu tín hiệu RF sẽ có một hoặc nhiều chân Data.
Các bạn chỉ việc chọn một trong các chân Data trên module, sau đó kết nối chân đó với GPIO của mạch Arduino.
Arduino Pin | 433 MHz Receiver Pins |
---|---|
GND | GND |
5V | VCC |
Digital Pin 2 (D2) | Data |
LẬP TRÌNH
Đầu tiên, các bạn phải cài thử viện rc-switch cho phần mềm Arduino IDE
Hướng dẫn thêm mới thư viện trong Arduino IDE
Sau khi đã thêm thư viện thành công, chúng ta mở code mẫu có sẵn trong thư viện rc-switch.
- Tại phần mềm Arduino IDE, vào File -> Excamples -> rc-switch -> ReceiveDemo_Simple
CODE ReceiveDemo_Simple
/* Simple example for receiving https://github.com/sui77/rc-switch/ */ #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 } void loop() { if (mySwitch.available()) { Serial.print("Received "); Serial.print( mySwitch.getReceivedValue() ); Serial.print(" / "); Serial.print( mySwitch.getReceivedBitlength() ); Serial.print("bit "); Serial.print("Protocol: "); Serial.println( mySwitch.getReceivedProtocol() ); mySwitch.resetAvailable(); } }
CODE ReceiveDemo_Advanced
- Tại phần mềm Arduino IDE, vào File -> Excamples -> rc-switch -> ReceiveDemo_Advanced
/* Example for receiving https://github.com/sui77/rc-switch/ If you want to visualize a telegram copy the raw data and paste it into http://test.sui.li/oszi/ */ #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 } void loop() { if (mySwitch.available()) { output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol()); mySwitch.resetAvailable(); } }
Sau khi nạp code, mở Terminal của phần mềm lên và bấm 1 nút trên Remote RF.
Mã của nút bấm đó như ảnh dưới
Xem VIDEO ở đầu bài viết để rõ hơn cách dùng nhé!
Điều khiển thiết bị bằng Remote vừa giải mã
Sau khi đọc được mã của Remote (Mỗi nút trên Remote là 1 mã khác nhau), các bạn có thể tận dụng đoạn mã đó để gán vào code điều khiển thiết bị.
Chân điều khiển relay là chân 13 trên mạch Arduino.
Xem VIDEO ở đầu bài viết để rõ hơn cách làm nhé!
/* Simple example for receiving https://github.com/sui77/rc-switch/ */ #include <RCSwitch.h> #define relay (13) RCSwitch mySwitch = RCSwitch(); unsigned long num ; void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 pinMode(relay, OUTPUT); digitalWrite(relay, HIGH); } void loop() { if (mySwitch.available()) { Serial.print("Received "); Serial.print( mySwitch.getReceivedValue() ); Serial.print(" / "); num=mySwitch.getReceivedValue(); if(num==15307640) {digitalWrite(relay, LOW); //thay đổi số 15307640 tương ứng } if(num==15307636) {digitalWrite(relay, HIGH); //thay đổi số 15307636 tương ứng } mySwitch.resetAvailable(); } }
CHÚC CÁC BẠN THÀNH CÔNG!
Pham Minh Dang viết
em lam theo da nap code nma k xem dc terminal
admin viết
Kiểm tra Baud Rate nhé