Sử Dụng Module NRF24L01 - Thu Phát Sóng Vô Tuyến 2.4GHz Với ...
Có thể bạn quan tâm
Jump to navigation
Bạn đang tìm kiếm điều gì?
Điểm cộng đồng là gì? Nó có ích gì cho bạn, tìm hiểu ngay!
Cộng đồng Arduino Việt Nam
Bạn đang ở đây
- Arduino.vn
- Chương trình mẫu
- Level: Intermediate - Có kiến thức cơ bản
I. Giới thiệu
Chắc hẳn trong các bạn ai cũng đã từng có một dự án nào đó liên quan tới truyền tín hiệu không dây và chắc các bạn đã từng làm việc với các module radio frequence 433Mhz như trong hai bài viết rất nổi tiếng trên Cộng đồng:
- Truyền tín hiệu với module radio frequence 433Mhz.
- Một cách tiếp cận khác với sóng vô tuyến 315 hay 433Mhz.
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 ). 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.
II. 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 ).
III. Phần cứng
- 02 mạch Arduino.
- 02 module NRF24L01.
- 01 quang trở.
- 01 led siêu sáng và 1 điện trở 330ohm
- Test board và dây nối.
IV. Lắp mạch
1. Cách nối mạch với các mạch Uno, Nano, Promini, Leonardo,...
Tôi chỉ nói về cách nối module NRF24 với Arduino (Uno, Nano, Promini, Leonardo,...):
NRF24 | Arduino |
1 | GND |
2 | 3.3V |
3 | D9 |
4 | D10 |
5 | D13 |
6 | D11 |
7 | D12 |
2. 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é.
Đóng góp bởi Trương Trọng Thân
V. Lập trình
Trong bài này tôi xin lấy ví dụ là sử dụng NRF24 để truyền tín hiệu về độ sáng, hiển thị trên máy tính và điều khiển led. Có rất nhiều ví dụ trên internet về các thư viện dành cho NRF24 (cùng có tên là RF24) tuy nhiên, tôi gặp một chút khó khăn khi viết code cho receiver với các thư viện đó. Sau này tôi đã tìm được một thư viện có thể sử dụng khá đơn giản. Trong thư viện còn có một vài ví dụ cho chúng ta tham khảo. Thư viện đó các bạn có thể download tại đây: https://yadi.sk/d/CXjuENmaEEwun (mirror) nó có tên là RF24.rar (ngoài ra còn rất nhiều thứ hữu ích khác trong kho dữ liệu của tác giả ).
Đoạn code của tôi như sau:
Dành cho transmitter:
#include <SPI.h> #include "RF24.h" const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ để phát RF24 radio(9,10); //thay 10 thành 53 với mega byte msg[3]; const int sensor = A0; int value = 0; void setup(){ //============================================================Module NRF24 radio.begin(); radio.setAutoAck(1); radio.setRetries(1,1); radio.setDataRate(RF24_1MBPS); // Tốc độ truyền radio.setPALevel(RF24_PA_MAX); // Dung lượng tối đa radio.setChannel(10); // Đặt kênh radio.openWritingPipe(pipe); // mở kênh pinMode(sensor, INPUT); } void loop(){ value = analogRead(sensor); msg[0] = value / 4; radio.write(&msg, sizeof(msg)); delay(50); }Dành cho receiver
#include <SPI.h> #include "RF24.h" const uint64_t pipe = 0xE8E8F0F0E1LL; // địa chỉ phát RF24 radio(9,10);//thay 10 thành 53 với mega byte msg[3]; const int led = 3; int led_st = 0; void setup(){ Serial.begin(9600); radio.begin(); radio.setAutoAck(1); radio.setDataRate(RF24_1MBPS); // Tốc độ dữ liệu radio.setChannel(10); // Đặt kênh radio.openReadingPipe(1,pipe); radio.startListening(); pinMode(led, OUTPUT); } void loop(){ if (radio.available()){ while (radio.available()){ radio.read(&msg, sizeof(msg)); Serial.println(msg[0]); analogWrite(led, msg[0]); } } }VI. Kết luận
Module NRF24 tương đối dễ sử dụng, làm việc ổn định, giá thành thấp, khoảng cách truyền xa, ít bị cản trở bởi vật cản (tường, cửa ...). Tôi đã thấy trong diễn đàn có video giới thiệu về chiếc xe điều khiển từ xa của một thành viên nào đó, tuy nhiên lại không thấy có bài viết giới thiệu về loại module này nên đã viết bài, mong nhận được nhiều ý kiến góp ý của các bạn để tôi được biết thêm nhiều về lập trình Arduino (bởi vì tôi cũng chỉ là người mới học lập trình) !
Chúc các bạn năm mới 2016 nhiều sức khỏe, hạnh phúc, may mắn, thành công và có nhiều dự án hay chia sẻ cho cộng đồng! Chúc Cộng đồng ngày một lớn mạnh, là nơi giao lưu học hỏi giữa mọi người đam mê Arduino!
VII. Một số vấn đề có thể gặp phải
Rate node lên42 thành viên đã đánh giá bài viết này hữu ích. Từ khóa: NRF24L01arduinosóngsóng vô tuyếnđiều khiển từ xanrf2.4ghz Chuyên mục: Intermediate - Có kiến thức cơ bản Hướng dẫn sử dụng các loại moduleCác anh cho em hỏi: Tại sao khi em truyền tín hiệu giữa hai module rf thì module 2 không nhận được tín hiệu từ module 1. Như vậy là lỗi do đâu? Code thì không bị lỗi và mạch cũng không bị sai.
Đáp: Bạn thử lắp thêm 1 con tụ 10uF vào giữa chân 3.3v và GND của 2 modules xem có được không, nhớ chú ý cực. Hồi trước mình cũng bị như bạn, thêm con tụ vào là chạy ngon lành.
Đóng góp bởi NTP_PRO
Nếu bạn đang muốn thực hiện hóa ý tưởng của mình mà không biết dùng loại module nào? Hãy tham khảo các module trong danh sách sau
Cách lập trình nhiều con LED 7 đoạn (loại đơn)
Giới thiệu cảm biến ánh sáng và cách lập trình
Sử dụng cảm biến khoảng cách HC-SR04
Cảm biến mưa với Arduino
PIR sensor alarm - Cách dùng cảm biến chuyển động
Điều khiển LCD1602 bằng Arduino UNO
Lập trình LCD 1602 với chip 74HC595
Đọc nhiệt độ - độ ẩm và xuất ra màn hình LCD
NOKIA5110 | Hướng dẫn sử dụng và chia sẻ thư viện HOÀNG SA
ST7565 | Hướng dẫn sử dụng glcd ST7565 homephone và chia sẻ thư viện
Module Relay - Cách sử dụng rơ le và những ứng dụng hay của nó
Truyền tín hiệu với module radio frequence 433Mhz
Sử dụng Module NRF24L01 - Thu phát sóng vô tuyến 2.4GHz với Arduino
Điều khiển Arduino thông qua Bluetooth bằng điện thoại Android
Một cách tiếp cận khác với sóng vô tuyến 315 hay 433Mhz
Điều khiển tốc độ Motor DC
Làm dự án xe với module điều khiển động cơ L293D
Giới thiệu Servo SG90 và cách điều khiển bằng biến trở
SDcard breakout board - Cách dùng mạch đọc ghi thẻ trong dự án sử dụng âm thanh
Giao tiếp I2C và sử dụng module Realtime clock DS1307 (module RTC)
Điều khiển mạch Arduino thông qua Wifi sử dụng mạch XBee.
Hiển thị hình ảnh với LED MATRIX 8x8
Kết nối với ESP8266 thuần với board mở rộng và kết nối với CP2102
Lập trình ESP8266 bằng Arduino IDE
Điều khiển thiết bị qua Web Sever với ESP8266 không cần Arduino
Giới thiệu ethernet shield - ứng dụng điều khiển thiết bị ở mọi nơi trên thế giới khi có internet
Bài liên quan- Điều khiển động cơ Servo từ xa bằng biến trở - Sử dụng module nRF24L01
- Tôi tự làm Robot với Raspberry Pi và Arduino như thế nào? - Phần 6: Sử dụng NRF24L01 với Raspberry Pi
Select any filter and click on Apply to see results
Các bài viết cùng tác giả Bạn có một DỰ ÁN hay giống thế này? Chia sẻ nhé!Xin chào các bạn! Các bạn đã làm quen với LCD 1602 ở bài viết "Điều khiển LCD bằng Arduino UNO". Mình xin chia sẻ với các bạn một cách khác để kết nối LCD này với board arduino, đó là sử dụng chip 74HC595. Để kết nối màn hình qua cách này chúng ta phải tốn 3 chân của arduino (nhiều hơn 1 chân so với dùng mạch I2C) nhưng chip 595 lại có giá thấp hơn modul I2C 5-10 lần (chỉ khoảng 1-2k VNĐ).
Rate node lên14 thành viên đã đánh giá bài viết này hữu ích. Từ khóa: LCD1602SPI595arduino Bạn có một DỰ ÁN hay giống thế này? Chia sẻ nhé!Xin chào các bạn! Máy in 3D và công nghệ 3D đã rất phổ biến trên thế giới. Tại Việt Nam, công nghệ này cũng đang bắt phát triển nhanh. Hôm nay mình xin được chia sẻ với các bạn dự án máy in 3D của mình. Hãy cùng hoàn thiện nó với nhiệt huyết và sự tự tin nhé, vì cộng đồng Arduino Việt Nam là nơi sẽ đưa bạn đến thành công. Trong phần 1 mình đã chia sẻ với các bạn về quá trình dựng máy in 3d của mình, trong phần thứ 2 này mình xin tiếp tục chia sẻ với các bạn về phần lập trình code, hiệu chỉnh phần mềm và sử dụng máy in 3d.
Rate node lên22 thành viên đã đánh giá bài viết này hữu ích. Từ khóa: 3D printerrampsarduino megastepperA4988marlinrepetier-hostCửa cuốn thông minh
Đăng nhập Tên người dùng * Mật khẩu *- Tạo tài khoản mới
- Yêu cầu mật khẩu mới
mã số thuế
Thành viên trực tuyến
Hiện đang có 4 người trực tuyến.
- LE DUC HUY
- Thien Bao
- minhnhien
- du123lich123du
- Thien Bao
- minhnhien
- du123lich123du
- HuyTĐ
- Lê Hồng Hiếu
- NhatNguyen0901
- beaglebone
- trần minh trí 009
Arduino.vn được xây dựng trên nền tảng Drupal 7, phiên bản hiện tại 2.3 tên mã Chia sẻ tình yêu với Arduino.
Đây là trang thông tin phi lợi nhuận ra đời hướng tới cộng đồng trẻ, những chủ nhân tương lai của đất nước. Tìm hiểu thêm
Lấy tin RSS Nội dung trên trang Arduino.vn được phân phối theo giấy phép Creative Commons Attribution-ShareAlike 4.0 International License.Vui lòng ghi rõ nguồn và link về bài gốc nếu bạn tham khảo nội dung từ website này.Bạn ơi ^_^!
Mục lục
Hãy trở thành thành viên của Cộng đồng Arudino Việt Nam để mở khóa chức năng này.
Mục lục Bạn ơiCùng đăng nhập vào Cộng đồng Arduino Việt Nam để mở hết các chức năng của Cộng đồng nhé.
Từ khóa » Nguyên Lý Nrf24l01
-
Module Không Dây RF NRF24L01 - Blog Mecsu
-
Module NRF24L01 2.4G - Cách Thức Sử Dụng Với Tất Cả Các ...
-
[ 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 - 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