Trang chủ / Bài viết

Sử dụng Module NRF24L01 - Thu phát sóng vô tuyến 2.4GHz với Arduino
Nếu như đã làm việc với các module này thì không ít trong các bạn có thể đã gặp nhiều vấn đề khó giải quyết liên quan tới xung đột thư viện (như tôi sad). Ngoài ra các module này có khoảng cách thu phát sóng khá ngắn (khoảng 30m nếu đã hàn thêm anten), lại không thể thu phát hai chiều. Vì những lý do trên, tôi đã tìm kiếm một loại module không dây khác để thay thế cho các module 433Mhz nhằm khắc phục các điểm yếu trên. Tìm kiếm trên mạng tôi đã tìm được loại module NRF24L01 sử dụng sóng 2.4Ghz tạm thời giải quyết được khá ổn những điểm yếu của module 433Mhz.

Module NRF24L01

Các bạn có thể dễ dàng tìm kiếm thông số của module này trên internet. Tôi xin giới thiệu sơ qua một số đặc điểm mà tôi quan tâm như sau:

  • Khoảng cách thu phát khoảng 100m (với điều kiện trống trải), khoảng 30-50m (trong nhà). Với một số phiên bản đặc biệt ví dụ như loại NRF24L01+ thì khoảng cách có thể lên tới 1km. Khá thích hợp cho các bộ điều khiển cầm tay.
  • Có anten sẵn trên bảng mạch rất tiện và đẹp.
  • Có khả năng truyền tín hiệu 2 chiều. Tức là một module vừa có thể là transmitter vừa có thể là receiver. Khác biệt so với loại 433Mhz là phải có 2 module riêng biệt.
  • Giá thành thấp khoảng 10k VNĐ/cái (tôi mua trên Aliexpress.com) tức rẻ hơn module 433Mhz một chút.
  • Ít gặp sự cố (hiện tại tới lúc này ).

 

 
 

Phần cứng

  • - 02 mạch arduino
  • - 02 module RF24L01
  • - 01 quang trở
  • - 01 led và 1 điện trở 330ohm
  • - Test board và dây nối.
  • Lắp mạch

    cách nối module NRF24 với Arduino (Uno, Nano, Promini, Leonardo,...):

    NRF24Arduino
    1GND
    23.3V
    3D9
    4D10
    5D13
    6D11
    7D12

    Cách nối mạch với các dòng Mega


    Lưu ý

    Phần code các bạn nhớ đổi RF24 radio(9, 10) thành RF24 radio(9, 53) nhé.

    Lập trình

    tải thư viện RF24 
  • Đoạn code của tôi như sau:

    Dành cho transmitter:

    1. #include<SPI.h>
    2. #include"RF24.h"
    3.  
    4. constuint64_tpipe=0xE8E8F0F0E1LL;// địa chỉ để phát
    5. RF24 radio(9,10);//thay 10 thành 53 với mega
    6. bytemsg[3];
    7. constintsensor=A0;
    8. intvalue=0;
    9.  
    10. voidsetup(){
    11. //============================================================Module NRF24
    12. radio.begin();
    13. radio.setAutoAck(1);
    14. radio.setRetries(1,1);
    15. radio.setDataRate(RF24_1MBPS);// Tốc độ truyền
    16. radio.setPALevel(RF24_PA_MAX);// Dung lượng tối đa
    17. radio.setChannel(10);// Đặt kênh
    18. radio.openWritingPipe(pipe);// mở kênh
    19. pinMode(sensor,INPUT);
    20. }
    21.  
    22. voidloop(){
    23. value=analogRead(sensor);
    24. msg[0]=value/4;
    25. radio.write(&msg,sizeof(msg));
    26. delay(50);
    27. }

    Dành cho receiver

    1. #include<SPI.h>
    2. #include"RF24.h"
    3.  
    4. constuint64_tpipe=0xE8E8F0F0E1LL;// địa chỉ phát
    5. RF24 radio(9,10);//thay 10 thành 53 với mega
    6. bytemsg[3];
    7. constintled=3;
    8. intled_st=0;
    9.  
    10. voidsetup(){
    11. Serial.begin(9600);
    12. radio.begin();
    13. radio.setAutoAck(1);
    14. radio.setDataRate(RF24_1MBPS);// Tốc độ dữ liệu
    15. radio.setChannel(10);// Đặt kênh
    16. radio.openReadingPipe(1,pipe);
    17. radio.startListening();
    18. pinMode(led,OUTPUT);
    19. }
    20.  
    21. voidloop(){
    22. if(radio.available()){
    23. while(radio.available()){
    24. radio.read(&msg,sizeof(msg));
    25. Serial.println(msg[0]);
    26. analogWrite(led,msg[0]);
    27. }
    28. }
    29. }

TRA CỨU MÃ VẬN ĐƠN VÀ HÀNH TRÌNH VẬN CHUYỂN
Hotline hỗ trợ vận đơn: 0985 084 693 (Hỗ trợ tra mã vận đơn chuyển phát)
Danh Mục

Đang xử lý...