Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK

0
809

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK

NRF24L01

1.Thông số kỹ thuật:
– Radio
o Hoạt động ở giải tần 2.4G
o Có 126 kênh
o Truyền và nhận dữ liệu
o Truyền tốc độ cao 1Mbps hoặc 2Mbps.
– Công suất phát:
o Có thể cài đặt được 4 công suất nguồn phát: 0,-6,-12,-18dBm.
– Thu:
o Có bộ lọc nhiễu tại đầu thu
o Kếch đại bị ảnh hưởng bởi nhiễu thấp (LNA)
– Nguồn cấp:
o Hoạt động từ 1.9-3.6V.
o Các chân IO chạy được cả 3.3 lẫn 5V.
– Giao tiếp:
o 4 pin SPI
o Tốc độ tối đa 8Mbps
o 3-32 bytes trên

Phân tích:
o Modul nRF24L01 hoạt động ở tần số sóng ngắn 2.4G nên Modul này khả năng truyền dữ liệu tốc độ cao và truyền nhận dữ liệu trong điều kiện môi trường có vật cản
o Modul nRF24L01 có 126 kênh truyền. Điều này giúp ta có thể truyền nhận dữ liệu trên nhiều kênh khác nhau.
o Modul khả năng thay đổi công suất phát bằng chương trình, điều này giúp nó có thể hoạt động trong chế độ tiết kiệm năng lượng.
o Chú ý: Điện áp cung cấp cho là 1.9à3.6V. Điện áp thường cung cấp là 3.3V. Nhưng các chân IO tương thích với chuẩn 5V. Điều này giúp nó giao tiếp rộng dãi với các dòng vi điều khiển.
2. Sơ đồ phần cứng:

Sơ đồ kết nối vi điều khiển:

Khi kết nối tới vi điều khiển bạn nhớ cấu hình chân đó là output hay input (AVR, PIC)​

3.Phần mềm.
Bạn có thể tham khảo trong code của mình update theo Product. Mình sẽ giải thích cách cài đặt để hoạt động trong các chế độ.
Khung truyền:

a. – Địa chỉ truyền nhận:
Khung truyền của nRF24L01 từ 3-5 bytes dùng làm địa chỉ. Bạn có thể cấu hình, nhưng địa chỉ truyền như thế nào thì địa chỉ nhận của chip tương ứng phải giống như thế để có thể thu được tín hiệu. Trong chương trình mình dùng 5 byte cho địa chỉ truyền nhận.

Hàm void init_NRF24L01(void)cấu hình truyền nhận :

b. Khung dữ liệu
Khung dữ liệu từ 0-32 byte, hiện tại mình dùng 32 byte. Nếu bạn dùng số lượng byte khác thì có thể cấu hình trong biến.

Hàm nRF24L01_TxPacket(unsigned char * tx_buf) gửi dữ liệu trong tx_buf

Trong hàmvoid init_NRF24L01(void)cấu hình số byte nhận.

c. – Kênh truyền nhận và địa chỉ nhận.
– nRF24L01 có 126 kênh truyền. Ban có thể lựa chọn kênh truyền nào bạn muốn bằng hàm.

– Trong 1 kênh truyền, nRF24L01 có thể nhận được 6 luồng dữ liệu. Do đó bạn phải lựa chọn 1 trong 6 luồng đó.

d. Tốc độ đường truyền và công suất nguồn phát

e. Mã CRC, truyền nhận
– Truyền:

– Nhận:

f. Cách gửi dữ liệu:

Sau khi cấu hình các trạng thái hoạt động của nRF24L01 thông qua hàm:
void init_NRF24L01(void)
Để gửi dữ liệu đi bạn làm theo các bước sau.
– Cho dữ liệu vào buffer, biến TxBuf[32]
– Chọn nRF24L01 ở chế độ phát, gọi hàm void SetTX_Mode(void);
– Gọi hàm void nRF24L01_TxPacket(unsigned char * tx_buf); để truyền dữ liệu trong TxBuf[32] đi
g. Cách nhận dữ liệu
– Chọn nRF24L01 ở chế độ thu, gọi hàm void SetRX_Mode(void);
– Độ dữ liệu trong bộ đệm sau khi gọi hàm unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);
4. Chương trình:
Sử dụng 2 board 89S52
Mình up lên Video 89S52 trước, mình sẽ up code và video của PIC và AVR sau:

Download

Code giao tiếp trên PIC877A
Code giao tiếp với AT89S52
Code giao tiếp với ATMEGA8

Trao đổi học tập

Comments