🌱 Giải mã tín hiệu hồng ngoại từ remote sử dụng vi điều khiển

🌱 Giải mã tín hiệu hồng ngoại từ remote sử dụng vi điều khiển

    Bài viết trước đã đề cập đến rất nhiều chuẩn hồng ngoại - IR protocols, vì vậy việc giải mã mà mã hóa phát tín hiệu hồng ngoại theo tất cả các chuẩn trên sẽ mất rất nhiều thời gian. Bài viết này sẽ chỉ đề cập đến phương án chung để có thể giải mã tín hiệu hồng ngoại trả về từ LED thu hồng ngoại sử dụng vi điều khiển.

IR remote decoder icon

    ➤ Thiết bị sử dụng để giải mã hồng ngoại

    Để thực hành giải mã tín hiệu hồng ngoại, chúng ta cần chuẩn bị một số thiết bị cần thiết.

    ➥ LED thu hồng ngoại

    Có thể chọn một số loại LED thu hồng ngoại phổ biến trên thị trường như TSOP48xx (Datasheet). hoặc TSOP18xx (Datasheet).

TSOP4838 datasheet
TSOP4838 Technical Informations

    Hoạt động của LED thu hồng ngoại này cũng rất đơn giản, nó sẽ lọc tín hiệu hồng ngoại với tần số mang tương ứng (TSOP48xx - phần xx sẽ tương ứng với tần số mang theo đơn vị kHz).
  • Ở trạng thái bình thường khi không nhận được tín hiệu hồng ngoại, chân tín hiệu OUT của LED sẽ trả về mức logic HIGH.
  • Khi nhận được tín hiệu xung hồng ngoại Burst (ví dụ 38kHz), chân tín hiệu sẽ bị kéo xuống mức LOW (như hình dưới).

IR LED thu hồng ngoại
Tín hiệu của LED thu hồng ngoại

    ➥ Vi điều khiển

    Rõ ràng rồi, nội dung chính của bài viết này, sẽ xoay quanh vi điều khiển và các ngoại vi của nó để xử lý tín hiệu trả về từ LED thu hồng ngoại! Bạn có thể sử dụng bất kỳ vi điều khiển nào sẵn có, vì giải mã tín hiệu hồng ngoại không yêu cầu quá cao về mặt phần cứng của ngoại vi (ngoại vi cần có: External Interrupt, Timer, EEPROM có thì càng tốt).

    Nếu có sẵn thì bạn có thể thêm một con Arduino, để có thể check nhanh các tín hiệu hồng ngoại từ remote nhanh hơn với bộ Framework Arduino có sẵn.

    ➥ Bộ điều khiển cầm tay (IR Remote Control)

    Bạn cũng cần có ít nhất một bộ điều khiển hồng ngoại (IR Remote Control), bạn cũng có thể sử dụng điều khiển tivi / điều hòa sẵn có tại nhà.

    Bạn có thể tham khảo mua sản phẩm remote tại đây (Bao gồm remote + Led thu + Led phát hồng ngoại)!

    ➤ Sử dụng Vi điều khiển để giải mã hồng ngoại

    Dễ thấy với tín hiệu trả về ở trên chúng ta hoàn toàn có thể sử dụng vi điều khiển để giải mã tín hiệu hồng ngoại, hai công việc vi điều khiển cần làm:

  • Phát hiện các tín hiệu số (HIGH/LOW) trên chân OUT của LED thu hồng ngoại.
  • Đo thời gian mỗi tín hiệu duy trì ở mức logic của nó.

    Để giải mã tín hiệu hồng ngoại, mình sẽ đặt ra hai bài toán khác nhau:

  1. Giải mã tín hiệu hồng ngoại đã biết trước protocols
    Ví dụ đã biết là remote sử dụng NEC protocols, việc cần làm là đo, detect độ rộng các tín hiệu xung Start, Stop, giải mã address và command của từng phím là gì!
  2. Giải mã tín hiệu hồng ngoại bất kỳ - chưa biết trước protocols
    Phần này chúng ta sẽ trả về Raw Data - tức là độ rộng xung ở mức HIGH / LOW, còn việc phân tích đó là protocol gì thì có thể dùng các thuật toán khác hoặc tự phân tích manual.

    Ở bài viết này mình sẽ hướng dẫn mọi người đọc nhanh Raw Data của tín hiệu remote sử dụng Arduino.

    ➥ Kết nối phần cứng

IR connect TSOP1838 with Arduino
Kết nối LED nhận TSOP1838 với Arduino

    ➥ Thêm thư viện IRRemote cho Arduino

    Bạn có thể tải thư viện Arduino cho IRRemote tại đây! Sau đó giải nén và ném vào folder Library. Ví dụ mặc định đường dẫn trên Windows: C:\Program Files (x86)\Arduino\libraries\

    ➥ Giải mã raw code hồng ngoại với thư viện Arduino

    Download Code tại đây!

    ➥ Đọc tín hiệu raw từ các remote không theo chuẩn thông dụng


    Download Code và Raw Data tại đây!

>>>= Follow ngay =<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

          

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

2 Nhận xét

  1. bạn ơi mình cũng đang có bai tập về phần này, rất mong bạn ra tiếp video tiếp theo, làm sao để viết sao chép từ remote không theo chuẩn nào cả để viết code lên attiny85 .

    84F9F4E1

    Raw: (263) 9008, 3980, 1000, 984, 1028, 1956, 1028, 1956, 1028, 1960, 1000, 980, 1004, 980, 1000, 984, 1000, 984, 1024, 1960, 1004, 980, 1000, 984, 1000, 984, 1024, 1960, 1024, 1960, 1024, 1960, 1024, 1960, 1000, 984, 1024, 1960, 1004, 980, 1028, 1960, 1000, 980, 1028, 1956, 1000, 984, 1028, 1960, 1024, 1960, 996, 984, 1024, 1960, 1000, 984, 1024, 1960, 996, 988, 1024, 1960, 1020, 30888


    Raw: (263) HIGH 9004
    LOW 3980
    HIGH 996
    LOW 988
    HIGH 1024
    LOW 1964
    HIGH 1020
    LOW 1960
    HIGH 1024
    LOW 1964
    HIGH 996
    LOW 988
    HIGH 996
    LOW 1008
    HIGH 976
    LOW 984
    HIGH 1000
    LOW 984
    HIGH 1024
    LOW 1960
    HIGH 1004
    LOW 984
    HIGH 996
    LOW 984
    HIGH 1004
    LOW 980
    HIGH 1024
    LOW 1960
    HIGH 1028
    LOW 1960
    HIGH 1024
    LOW 1956
    HIGH 1028
    LOW 1956
    HIGH 1004
    LOW 980
    HIGH 1028
    LOW 1960
    HIGH 1000
    LOW 984
    HIGH 1024
    LOW 1960
    HIGH 1004
    LOW 980
    HIGH 1028
    LOW 1956
    HIGH 1004
    LOW 980
    HIGH 1028
    LOW 1960
    HIGH 1024
    LOW 1960
    HIGH 1000
    LOW 980
    HIGH 1028
    LOW 1956
    HIGH 1004
    LOW 980
    HIGH 1028
    LOW 1956
    HIGH 1000
    LOW 984
    HIGH 1024
    LOW 1960
    HIGH 1024
    LOW 30880

    Trả lờiXóa
    Trả lời
    1. Mình mới làm NEC, phần giao thức bất kỳ mình sẽ làm sau nhé
      https://www.laptrinhdientu.com/2024/10/AVR-ATTiny13-NEC-IR-Protocol-RemoteControl.html

      Xóa
Mới hơn Cũ hơn