Biến FT232H và CC1101 thành máy quét tín hiệu 433 MHz trên máy tính
Một hướng dẫn kết nối mô-đun CC1101 với bo mạch FT232H để quét và hiển thị tín hiệu vô tuyến 433 MHz ngay trên máy tính, không cần vi điều khiển hay hàn mạch. Thử nghiệm nhận diện được mã từ một điều khiển sao chép, đồng thời cho thấy cách dùng Python để thu và phân tích tín hiệu.

Một mô-đun vô tuyến CC1101, bo mạch FT232H và sáu dây nối có thể biến máy tính Linux thành thiết bị quét tín hiệu 433 MHz. Thử nghiệm dùng một chương trình Python để hiển thị cường độ tín hiệu và ghi lại dữ liệu từ điều khiển từ xa, không cần nạp chương trình cho vi điều khiển hay hàn linh kiện.
Cấu hình này được tạo ra để kiểm tra xem FT232H có thể kết nối với CC1101 và thu tín hiệu từ một điều khiển sao chép hay không. Thiết bị chỉ thu, không phát tín hiệu.
Linh kiện và cách kết nối
Bộ thử nghiệm gồm mô-đun CC1101 433 MHz kèm ăng-ten, bo CJMCU-232H tích hợp FT232H, bảng thử, bốn dây nối đực-cái và hai dây cái-cái. Mô-đun E07-M1101D của Ebyte, có đầu nối SMA, được mua trên AliExpress với giá khoảng 3,40 đô la Úc. Phần mềm chạy trên Linux với Python 3 và thư viện pyftdi.
CC1101 giao tiếp qua SPI, một giao thức truyền dữ liệu nối tiếp. Bộ chuyển đổi USB nối tiếp thông thường như CP2102 hoặc CH340 không thể điều khiển giao thức này; FT232H thì có thể giao tiếp SPI trực tiếp với mô-đun từ máy tính. Cách làm này tránh phải dùng ESP32 và nạp lại phần mềm điều khiển mỗi khi thay đổi cấu hình.
Sơ đồ dây nối giữa FT232H và CC1101
CC1101 có các chân cần nối như sau:
| Chân CC1101 | Tín hiệu | Chân CJMCU-232H |
|---|---|---|
| 1 | GND | GND trên hàng chân bốn vị trí |
| 2 | VCC | +3,3 V trên hàng chân bốn vị trí |
| 4 | CSN | AD3 |
| 5 | SCK | AD0 |
| 6 | MOSI | AD1 |
| 7 | MISO / GDO1 | AD2 |
| 3, 8 | GDO0, GDO2 | Để trống |
Chân 1 là miếng tiếp xúc hình vuông; các chân lẻ nằm dọc mép bo mạch, còn chân chẵn ở phía trong. Chỉ cấp nguồn 3,3 V, tuyệt đối không nối CC1101 vào 5 V hoặc chân VCORE. Chân 3 và 8 cũng không được nối.
CJMCU-232H đặt trên bảng thử, còn CC1101 để bên ngoài vì hàng chân 2 × 4 của mô-đun có thể làm chập các chân theo hàng trên bảng. Dây tín hiệu nối đầu đực vào bảng thử cạnh các chân AD, đầu cái vào CC1101; hai dây nguồn nối trực tiếp giữa mô-đun và hàng chân bốn vị trí. Gắn ăng-ten vào CC1101 trước khi sử dụng. Một dây nối USB ngắn có thể giúp đầu cắm không bị vướng ở mép bảng thử.
Bố trí các dây nối trên bảng thử
Cài đặt và vận hành
Các tập lệnh và quy tắc udev — cơ chế phân quyền thiết bị trên Linux — được phát hành theo giấy phép MIT. Cần cài pyftdi, nạp quy tắc cho thiết bị FT232H có mã USB 0403:6014, sau đó kết nối lại bo mạch. Quy tắc này cho phép người dùng đang đăng nhập mở thiết bị mà không cần chạy chương trình quét bằng quyền quản trị.
Bài thử tự kiểm tra không cần phần cứng: chương trình giải mã các lần nhấn giả lập có nhiễu và một khung dữ liệu thực từ điều khiển sao chép. Khi chạy với thiết bị, chương trình kiểm tra phiên bản chip — mẫu thử báo 0x14 — ghi các thiết lập rồi đọc lại, đồng thời xác nhận mô-đun đang nhận tín hiệu. Nếu CC1101 không phản hồi, cần kiểm tra nguồn, SCK, MISO hoặc CSN; nếu thiết lập đọc lại không đúng, cần kiểm tra MOSI.
Chương trình có hai màn hình, chuyển đổi bằng phím Tab:
| Phím | Màn hình quét | Màn hình nghe |
|---|---|---|
| Tab | Nghe tại vạch đánh dấu; Enter cũng có tác dụng | Quay lại quét |
| ← → | Di chuyển vạch đánh dấu một cột | Điều chỉnh tần số ±10 kHz |
| [ ] | Di chuyển vạch đánh dấu 10 cột | Điều chỉnh tần số ±100 kHz |
| p | Đưa vạch đánh dấu tới tín hiệu mạnh nhất | — |
| z, x | Phóng to hoặc thu nhỏ quanh vạch đánh dấu | — |
| b | Chuyển sang dải tiếp theo | — |
| c | Xóa dữ liệu hiển thị | Xóa dữ liệu hiển thị |
| q | Thoát và in bản tổng kết | Thoát và in bản tổng kết |
Dải mặc định là 433 MHz, từ 432 đến 436 MHz. Có thể chọn các dải 315, 300–348, 387–464, 779–928 MHz, tất cả các dải hoặc một khoảng tần số tùy chọn. Chương trình cũng hỗ trợ mở thẳng màn hình nghe tại một tần số, xuất dữ liệu dạng dòng văn bản thay cho giao diện tương tác, tự dừng sau một khoảng thời gian hoặc phát lại nhật ký đã lưu.
CC1101 chỉ dò được các dải 300–348, 387–464 và 779–928 MHz. Mô-đun và ăng-ten 433 MHz vẫn có thể nghe tín hiệu mạnh ở các dải khác, nhưng không được thiết kế để thu chúng tốt.
Kết quả quét tín hiệu
Khi quét, chương trình lần lượt đo RSSI, tức chỉ số cường độ tín hiệu thu được, tại từng bước tần số. Màn hình hiển thị các cột mức tín hiệu, dấu giữ đỉnh và biểu đồ dạng thác nước của những lượt quét trước; các tín hiệu mạnh nhất được liệt kê ở phía dưới.
Một lượt quét dải 433 MHz mất 0,16 giây; quét cả ba dải mất 0,6 giây. Trong thử nghiệm, nền nhiễu ở khoảng −90 dBm. Các tín hiệu liên tục xuất hiện gần 408, 416, 418–420, 442 và 456 MHz, bất kể điều khiển có được nhấn hay không. Tín hiệu gần 416 MHz mạnh nhất trong nhóm này, ở khoảng −65 dBm.
Khi nhấn điều khiển ở gần 434 MHz, mức tín hiệu đạt tới −22 dBm. Đặt thiết bị thu gần ăng-ten khiến tín hiệu lan sang các bước tần số lân cận, từ 431,7 đến 436,5 MHz. Ở mọi dải quét, chương trình còn ghi nhận hai đỉnh tại 782 và 883 MHz; cả hai nằm trong các dải tần dành cho trạm phát sóng di động.
Ghi lại tín hiệu từ điều khiển
Người dùng đặt vạch đánh dấu lên một tín hiệu rồi chuyển sang màn hình nghe. Màn hình này giữ nguyên tần số đã chọn, hiển thị cường độ tín hiệu trong vài phút gần nhất, các xung và bit của khung dữ liệu gần nhất, cùng những mã được nhận nhiều hơn một lần. Chương trình cũng đưa ra phỏng đoán về giao thức và lưu thời điểm các xung vào /tmp/rf-listen.log.
Điều khiển sao chép trong thử nghiệm phát mã cố định, tức gửi cùng một chuỗi bit mỗi lần nhấn. Bên trong là bo mạch ghi 520B V2.1, bốn nút K1–K4, bộ cộng hưởng sóng bề mặt 433 MHz R433 và pin 12 V 27A. Vi mạch FMD FT60E021 là vi điều khiển đa dụng 8 bit, không phải bộ mã hóa điều khiển chuyên dụng; mã phát ra được tạo bởi phần mềm bên trong vi điều khiển.
Mô-đun CC1101 nối với bo mạch điều khiển FT232H
Điều khiển gửi mã theo kiểu EV1527: mỗi mã dài 24 bit, gồm ID 20 bit là 0x0B80A và 4 bit nút bấm. Bốn nút lần lượt phát 0x0B80A1, 0x0B80A2, 0x0B80A4 và 0x0B80A8. Xung ngắn nhất, ký hiệu TE, dài 340 µs. Các lần nhấn được thu ở mức −18 đến −20 dBm, trong khi nền nhiễu là −88 dBm. Điều khiển lặp lại mã trong lúc giữ nút, nên mỗi lần nhấn ngắn tạo ra từ 3 đến 7 khung.
Khi giữ nút, danh sách còn xuất hiện các mã ngắn hơn, dài 12–22 bit, như 0x80A4 và 0x0B80. Đây là những đoạn mã thật bị nhiễu cắt cụt; chỉ các dòng đủ 24 bit mới là mã hoàn chỉnh.
Cách chương trình thu và giải mã
Chương trình cấu hình CC1101 làm bộ thu OOK — phương thức mã hóa tín hiệu bằng cách bật hoặc tắt sóng mang — tại 433,92 MHz, theo thiết lập AM650 của Flipper Zero. Bộ lọc rộng 650 kHz và không dùng xử lý gói dữ liệu. Chip đưa dữ liệu đã giải điều chế ra chân GDO1, dùng chung chân với MISO. Khi CSN ở mức cao, giao tiếp với chip không hoạt động và MISO mang dữ liệu thu được.
FT232H đã sử dụng SPI để nói chuyện với CC1101. Chương trình mở thêm một cổng SPI trên chân chọn chip AD4 không được nối dây; thao tác đọc cổng này giữ CSN ở mức cao và lấy dữ liệu từ MISO với tốc độ 50 kHz, tương đương một mẫu mỗi 20 µs. Như vậy, mỗi xung 340 µs có khoảng 17 mẫu. Một luồng xử lý liên tục đọc dữ liệu USB, sau đó bộ giải mã chuyển các chuỗi bit 0 và 1 thành độ dài xung.
Ở cấu hình thử nghiệm, tín hiệu đầu ra khi không có hoạt động phần lớn ở mức cao, xen các đoạn giảm ngắn. Nhiễu thường nối liền với phần đầu khung và làm mất xung cao của bit đầu tiên, khiến mọi khung từ điều khiển sao chép chỉ còn 23 bit thay vì 24. Chương trình khắc phục bằng cách suy ra bit này từ riêng xung thấp: trong EV1527, bit 1 có mức cao dài và mức thấp ngắn, còn bit 0 có mức cao ngắn và mức thấp dài.
Khi quét, chương trình chỉnh CC1101 tới từng bước, chờ 1,2 ms để chip hiệu chỉnh và ổn định rồi đọc thanh ghi RSSI. Bộ lọc được đặt rộng bằng chính bước quét để không bỏ trống khoảng tần số giữa các bước.
Bước tiếp theo với mã cuốn chiếu
Thử nghiệm cho thấy FT232H có thể điều khiển CC1101 và giao diện văn bản hữu ích để quan sát tín hiệu từ điều khiển. Dự án tiếp theo dự kiến khảo sát điều khiển cổng Richmond, loại dùng cùng hệ thống mở cửa ga-ra GE-RCV1.
Các điều khiển này có vi mạch Microchip HCS300 sử dụng KeeLoq, một cơ chế mã cuốn chiếu. Thay vì phát đi cùng một mã sau mỗi lần nhấn, điều khiển gửi khung 66 bit gồm số sê-ri và nút bấm ở dạng rõ, cùng phần mã hóa 32 bit chứa bộ đếm tăng lên sau mỗi lần nhấn.
Tác giả dự định thử đối chiếu tín hiệu với các khóa nhà sản xuất KeeLoq, từ đó tạo khóa riêng cho từng điều khiển, bằng danh sách khóa OEM hoặc dò vét cạn. Nếu tìm được khóa phù hợp, tác giả cho biết sẽ không công bố giá trị khóa, mà chỉ nêu việc tìm thấy và phương thức đã dùng.
Góc nhìn
Với kỹ sư và nhà phát triển, thử nghiệm này cho thấy có thể dùng một bo mạch USB hỗ trợ SPI để khảo sát phần cứng vô tuyến mà không cần bắt đầu bằng vi điều khiển hay quy trình nạp phần mềm nhúng. Cách tiếp cận phù hợp cho việc quan sát tín hiệu và kiểm tra nguyên mẫu, nhưng kết quả vẫn phụ thuộc vào dải tần, ăng-ten và mức nhiễu của thiết bị thu.
Khả năng ghi lại mã cũng cần được sử dụng có trách nhiệm. Điều khiển mã cố định và hệ thống mã cuốn chiếu có cách hoạt động khác nhau; vì vậy, quan sát được tín hiệu không đồng nghĩa có thể tái sử dụng mã để điều khiển thiết bị.
Nguồn: blog.jacq.cc · Quy trình biên tập
Bài viết liên quan

ESP32 Bit Pirate: Công cụ hack phần cứng đa giao thức với WebCLI hỗ trợ mọi chuẩn kết nối
05 tháng 6, 2026
Phần cứng
Tích hợp Claude Code với SPICE và Oscilloscope: Xác minh phần cứng thông minh
17 tháng 4, 2026
Phần mềm
Hồi sinh máy hiện sóng Tektronix TDS7104: Hành trình thay ổ cứng, cài lại Windows 2000 và 'phù phép' bản quyền
02 tháng 9, 2026