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:
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)
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 » Thư Viện Nrf24l01 Proteus
-
Mô Phỏng Proteus Truyền Phát Không Dây 2 Module NRF24L01
-
I Want To Use NRF24L01 In Proteus But Cannot Find It In Its Library
-
Thiết Kế Mạch đo Nhiệt độ Truyền Phát Không Dây Với Module ...
-
Chia Sẻ Thư Viện Proteus đầy đủ Bởi LDNam
-
Cách Thêm Thư Viện Cho Proteus
-
Thiết Kế Mạch đo Nhiệt độ Sử Dụng Board Arduino, Hiển Thị Trên 4 Led ...
-
RF24 - Arduino Library List
-
Cách Thêm Thư Viện Proteus 8.1 Full, Chia Sẻ Thư ... - Tiên Kiếm
-
Thiết Kế Mạch đo Nhiệt độ Sử Dụng Board Arduino, Hiển Thị Trên 4 Led …
-
NRF24L01 Giao Tiếp At89s52, Thu Phát RF NRF24L01 2.4GHz + ...
-
NRF24L01 Giao Tiếp Arduino, Thu Phát RF NRF24L01 2.4GHz + ...
-
Maniacbug/RF24: Arduino Driver For NRF24L01 - GitHub
-
Sử Dụng Module NRF24L01 - Thu Phát Sóng Vô Tuyến 2.4GHz Với ...