- Bluetooth Low Energy (BLE) khác biệt như thế nào?
- Khả năng BLE của Mô-đun NRF24L01
- Thành phần bắt buộc
- Bắt đầu với Mô-đun nRF24L01
- Arduino
- Giao diện nRF24L01 với Arduino để giao tiếp BLE
Bluetooth Low Energy (BLE) là một phiên bản của Bluetooth và nó hiện diện như một phiên bản nhỏ hơn, được tối ưu hóa cao của Bluetooth cổ điển. Nó còn được gọi là Smart Bluetooth. BLE được thiết kế lưu ý mức tiêu thụ điện năng thấp nhất có thể, đặc biệt cho chi phí thấp, băng thông thấp, công suất thấp và độ phức tạp thấp. ESP32 có khả năng BLE sẵn có nhưng đối với các vi điều khiển khác như Arduino, nRF24L01 có thể được sử dụng. Mô-đun RF này cũng có thể được sử dụng như mô-đun BLE để gửi dữ liệu đến thiết bị Bluetooth khác như điện thoại thông minh, máy tính, v.v.
Ở đây trong hướng dẫn này, chúng tôi sẽ trình bày cách gửi bất kỳ dữ liệu nào qua BLE bằng nRF24L01. Chúng tôi sẽ gửi kết quả đo nhiệt độ từ DHT11 tới điện thoại thông minh bằng Arduino và mô-đun nRF qua BLE.
Bluetooth Low Energy (BLE) khác biệt như thế nào?
BLE đã được thông qua do các tính năng tiêu thụ điện năng của nó vì nó có thể chạy trong một thời gian dài chỉ bằng một ô đồng xu. So với các tiêu chuẩn không dây khác, tốc độ phát triển nhanh chóng của BLE còn nhanh hơn vì các ứng dụng hiện tượng của nó trong điện thoại thông minh, máy tính bảng và điện toán di động.
Khả năng BLE của Mô-đun NRF24L01
BLE sử dụng cùng băng tần ISM 2,4 GHz với tốc độ truyền từ 250Kbps đến 2Mbps, được cho phép ở nhiều quốc gia và có thể được áp dụng cho các ứng dụng công nghiệp và y tế. Băng tần bắt đầu từ 2400 MHz đến 2483,5 MHz và nó được chia thành 40 kênh. Ba trong số các kênh này được gọi là 'Quảng cáo' và được các thiết bị sử dụng để gửi các gói quảng cáo với thông tin về chúng để các thiết bị BLE khác có thể kết nối. Các kênh này ban đầu được chọn ở phía trên dưới của dải và giữa dải để tránh nhiễu có thể gây nhiễu cho một số kênh. Để tìm hiểu thêm về BLE, hãy làm theo hướng dẫn này.
Hướng dẫn này sẽ giải thích cách sử dụng mô-đun NRF24L01 làm bộ thu phát BLE. Hướng dẫn về NRF24L01 dưới dạng mô-đun RF đã được giải thích trong giao diện nRF24L01 với hướng dẫn Arduino. Hôm nay, chức năng BLE của mô-đun này sẽ được giải thích bằng cách gửi dữ liệu cảm biến đến điện thoại thông minh. Tại đây mô-đun nRF24L01 này sẽ được giao tiếp với Vi điều khiển Arduino và dữ liệu nhiệt độ cảm biến DHT11 sẽ được gửi đến ứng dụng Android Nordic BLE chính thức.
Thành phần bắt buộc
Phần cứng:
- Arduino UNO
- Mô-đun BLE nRF24L01
- Cảm biến nhiệt độ và độ ẩm DHT11
- Người nhảy
Phần mềm:
- Arduino IDE
- Ứng dụng Android Bắc Âu BLE (nRF Temp 2.0 cho BLE hoặc nRF Connect cho di động)
Bắt đầu với Mô-đun nRF24L01
Các mô-đun nRF24L01 là các mô-đun thu phát, có nghĩa là mỗi mô-đun có thể vừa gửi và nhận dữ liệu nhưng vì chúng là bán song công nên có thể gửi hoặc nhận dữ liệu cùng một lúc. Mô-đun có vi mạch nRF24L01 chung từ các chất bán dẫn Bắc Âu chịu trách nhiệm truyền và nhận dữ liệu. IC giao tiếp bằng giao thức SPI và do đó có thể dễ dàng giao tiếp với bất kỳ bộ vi điều khiển nào. Nó trở nên dễ dàng hơn nhiều với Arduino vì các thư viện luôn có sẵn. Chúng tôi đã sử dụng mô-đun nRF24L01 với Arduino để tạo phòng trò chuyện và điều khiển động cơ servo không dây.
Sơ đồ chân của mô-đun nRF24L01 tiêu chuẩn được hiển thị bên dưới:
Mô-đun có điện áp hoạt động từ 1,9V đến 3,6V (thường là 3,3V) và tiêu thụ rất ít dòng điện chỉ 12mA trong quá trình hoạt động bình thường, làm cho nó hoạt động hiệu quả về pin và do đó thậm chí có thể chạy trên các ô đồng xu. Mặc dù điện áp hoạt động là 3,3V nhưng hầu hết các chân đều có khả năng chịu được 5V và do đó có thể được giao tiếp trực tiếp với các bộ vi điều khiển 5V như Arduino. Một ưu điểm khác của việc sử dụng các mô-đun này là mỗi mô-đun có 6 đường ống. Có nghĩa là, mỗi mô-đun có thể giao tiếp với 6 mô-đun khác để truyền hoặc nhận dữ liệu. Điều này làm cho mô-đun phù hợp để tạo mạng hình sao hoặc lưới trong các ứng dụng IoT. Ngoài ra, chúng có dải địa chỉ rộng gồm 125 ID duy nhất, do đó, trong một khu vực khép kín, chúng ta có thể sử dụng 125 trong số các mô-đun này mà không ảnh hưởng đến nhau.
Arduino
Giao diện nRF24L01 với Arduino để giao tiếp BLE
NRF24L01 hoạt động trên SPI, vì vậy giao diện sẽ sử dụng Giao thức SPI. Các mã hoàn chỉnh và video sẽ được gắn ở phần cuối của hướng dẫn này. Hướng dẫn ứng dụng Android cũng được giải thích trong video. Ở đây, mô-đun nRF24L01 được sử dụng để giao tiếp với Ứng dụng điện thoại thông minh của Nordic.Trước hết hãy bao gồm các thư viện bắt buộc. Thư viện bao gồm RF24 để truy cập các lệnh nRF24L01, thư viện DHT11 để truy cập các lệnh DHT11 và thư viện BTLE để sử dụng các hàm BLE.
#include
Xác định và khởi tạo các chân và chức năng cho mô-đun DHT11 và BLE. Loại DHT được khởi tạo là DHT11 vì chúng tôi đang sử dụng DHT11. DHT được kết nối với Chân 4 của GPIO và các chân CE và CSN của mô-đun nRF được kết nối với Chân 9 và 10 tương ứng.
# xác định DHTPIN # xác định DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); Đài RF24 (9, 10); BTLE btle (& radio);
Bắt đầu cổng nối tiếp ở 9600, bạn có thể chọn bất kỳ cổng nào. Sau đó, bắt đầu cảm biến DHT và cũng bắt đầu BTLE với Tên cục bộ Bluetooth có độ dài tối đa 8 ký tự.
Serial.begin (9600); dht.begin (); btle.begin ("Nhiệt độ CD");
Đọc nhiệt độ qua vòng lặp và lưu nó vào nhiệt độ biến float. Thêm dòng gỡ lỗi để hiển thị thông báo lỗi nếu DHT mất nguồn hoặc bất kỳ điều gì không mong muốn xảy ra.
float temp = dht.readTempe Heat (); // đọc dữ liệu nhiệt độ if (isnan (h) - isnan (t)) { Serial.println (F ("Không đọc được từ cảm biến DHT!")); trở về; }
Lưu giá trị vào Buffer và phân tích cú pháp nó vào mô-đun BLE. Đồng thời gửi giá trị Nhiệt độ đến Mô-đun BLE. Mô-đun BLE sẽ quảng cáo dữ liệu Nhiệt độ. Ứng dụng android có thể tìm kiếm mô-đun BLE và nhận dữ liệu cảm biến.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); if (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE thất bại..!"); }
Khi hoàn tất, chỉ cần chuyển sang kênh tiếp theo.
btle.hopChannel ();
Vì tài liệu cảm biến DHT khuyến nghị nên giữ độ trễ tối thiểu 2 giây sau một lần đọc, vì vậy hãy thêm thời gian trễ là 2 giây.
chậm trễ (2000);
Sau khi tải lên và ghép nối điện thoại thông minh với mô-đun nRF, bạn sẽ bắt đầu nhận được các giá trị trên ứng dụng android nRF Temp 2.0 cho BLE như hình dưới đây. Toàn bộ quy trình ghép nối và nhận dữ liệu trên ứng dụng Android cũng được giải thích trong video:
Phần này kết thúc hướng dẫn đầy đủ về cách quảng cáo dữ liệu cảm biến tới Ứng dụng Android Bắc Âu bằng BLE nRF24L01. Nếu bạn thấy khó khăn thì hãy bình luận bên dưới hoặc viết cho diễn đàn của chúng tôi. Để khám phá thêm về nRF24L02, bạn cũng có thể thử Tạo phòng trò chuyện riêng bằng Arduino, nRF24L01 và Xử lý.