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

2.Phân tích
- 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
- 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.
- 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.
- 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.
II. Sơ đồ phần cứng


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

III.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ế độ. 1.Khung truyền

2.Đị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.
#define TX_ADR_WIDTH 5 // 5 uints TX address width #define RX_ADR_WIDTH 5 // 5 uints RX address width unsigned char const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; unsigned char const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};Hàm void init_NRF24L01(void)cấu hình truyền nhận :
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH);3.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.
#define TX_PLOAD_WIDTH 32 // 32 uints TX payload #define RX_PLOAD_WIDTH 32 // 32 uints TX payloadHàm nRF24L01_TxPacket(unsigned char * tx_buf) gửi dữ liệu trong tx_buf
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // gửi dữ liệu 32 byteTrong hàmvoid init_NRF24L01(void)cấu hình số byte nhận.
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); // Do rong data nhận 32 byte
4.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 đó.
5.Tốc độ đường truyền và công suất nguồn phát
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // 1M, 0dbm6.Mã CRC, truyền nhận
- Truyền:
- Nhận:
7.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
8.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);
IV. 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
Tags: 8051avrlập trình vi xử lýmạch rfnrf24l01picTừ khóa » Nguyên Lý Nrf24l01
-
Module Không Dây RF NRF24L01 - Blog Mecsu
-
[ Lập Trình Pic ] Bài 14: Giao Tiếp Với NRF24L01 - TuHu
-
NRF24L01: Mô-đun Giao Tiếp Không Dây Cho Arduino
-
E) Hoạt động Của NRF24L01. - Tài Liệu Text - 123doc
-
Sử Dụng Module NRF24L01 - Thu Phát Sóng Vô Tuyến 2.4GHz Với ...
-
Sử Dụng Module NRF24L01 - Linhkienchatluong
-
NRF24L01 Truyền Tín Hiệu Không Dây RF - Vidieukhien.Xyz
-
BAI 2 - NRF24L01 - V1 | PDF - Scribd
-
Linh Kiện 69_Module NRF24L01 2.4Ghz – Cách Giao Tiếp Với VĐK ...
-
Mạch Thu Phát RF 100m NRF24L01 - ĐIỆN TỬ TƯƠNG LAI
-
NRF24L01 Giao Tiếp STM32, Thu Phát RF NRF24L01 2.4GHz + ...
-
DIY Joystick điều Khiển Xe 4 Bánh Với NRF24L01 - Điện Tử Hello
-
Arduino Giao Tiếp DHT11 Gửi đến điện Thoại Dùng NRF24L01