- Bắt đầu với ESP32 Bluetooth
- Hiểu về Bluetooth năng lượng thấp (BLE) và Bluetooth cổ điển của ESP32
- Chuẩn bị Arduino IDE cho ESP32
- Chương trình Bluetooth nối tiếp cho ESP32
- Thử nghiệm Bluetooth nối tiếp với ESP32
Các mô-đun Bluetooth như HC-05 và HC-06 rất dễ thiết lập và sử dụng nhanh chóng với Arduino IDE, nhưng chúng có hạn chế riêng như tiêu thụ điện năng cao và chúng hoạt động trên Bluetooth V2.0 cũ. Ngoài ra, gần đây tôi đã nhận được cho mình một bộ ESP32 DEV mới, các mô-đun này có một loạt các tính năng như Wi-Fi và Bluetooth tích hợp, nhiều chân cắm ADC và DAC, Hỗ trợ âm thanh, Hỗ trợ thẻ SD, Chế độ ngủ sâu, v.v. nó gần như có mọi thứ để xây dựng các dự án IoT.
Và cũng như bất kỳ người có sở thích nào cũng thích nó, ESP32 hiện được hỗ trợ chính thức bởi Arduino IDE. Trước đó, chúng ta phải thực hiện một giải pháp lớn với Thư viện Neil Kolbans, nhưng bây giờ nhờ sự chăm chỉ của anh chàng này, lập trình ESP32 với Arduino IDE đã trở thành một bước đi hoàn hảo. Do đó, tôi đã khởi chạy Arduino IDE của mình và xem qua một số chương trình BLE ví dụ, qua đó tôi không hiểu gì cả. Sau một thời gian dài lướt và lướt trên youtubing, tôi nhận ra rằng còn rất nhiều điều cần hiểu nếu bạn phải làm việc với Bluetooth Low Energy (BLE) bằng ESP32. Tôi đã quyết định đề cập đến BLE trong các bài viết riêng biệt, vì vậy ở đây chúng tôi sẽ sử dụng Bluetooth nối tiếp cổ điển của ESP32 để bật tắt đèn LED bằng Điện thoại thông minh. Nếu bạn quan tâm đến việc kiểm tra cách sử dụng các tính năng BLE, hãy xem bài viết này trên Máy chủ ESP32 BLE và Máy khách ESP32 BLE
Bắt đầu với ESP32 Bluetooth
Chương trình đầu tiên mà tôi muốn thử là một chương trình đơn giản sử dụng mà tôi có thể Bật hoặc Tắt đèn LED từ ứng dụng Bluetooth Terminal trên điện thoại di động, giống như HC-05 ngày xưa. Nhưng hóa ra, Bluetooth Low Energy (BLE) không được thụt vào cho điều đó. Tôi cũng phát hiện ra rằng có hai loại Bluetooth trong mô-đun ESP32, một là Bluetooth cổ điển và loại còn lại là BLE Bluetooth Low Energy. Được rồi, nhưng tại sao?…. tại sao chúng ta có hai loại Bluetooth và tôi nên sử dụng loại nào cho dự án của mình?
Hiểu về Bluetooth năng lượng thấp (BLE) và Bluetooth cổ điển của ESP32
Bluetooth Low Energy, như tên gọi cho biết tiêu thụ ít năng lượng hơn Bluetooth cổ điển. Nó đạt được bằng cách gửi dữ liệu khi cần thiết với các bản cập nhật định kỳ được xác định trước. Nhưng không giống như Bluetooth cổ điển, nó không được sử dụng để truyền Tệp hoặc Nhạc. Bạn đã bao giờ tự hỏi làm cách nào điện thoại của mình tự động xác định rằng thiết bị Bluetooth bạn vừa ghép nối là thiết bị âm thanh hoặc máy tính xách tay hoặc điện thoại, bạn cũng có thể thấy rằng mức pin trong trình phát âm thanh không dây hoặc dải thể dục được tự động hiển thị trong thanh trạng thái của điện thoại của bạn; tất cả những điều này đều có thể thực hiện được với các đặc tính của thiết bị BLE. Một thiết bị BLE làm việc với Bluetooth V4.0 và có thể hoạt động với công suất thấp như một máy chủ hoặc như một khách hàng mà làmBle một sự lựa chọn lý tưởng cho các đèn hiệu, đồng hồ thông minh, ban nhạc tập thể dục vv.
Mặt khác, Bluetooth cổ điển chỉ là Bluetooth cũ đơn giản mà chúng tôi sử dụng để truyền tệp và dữ liệu khác. Hầu hết tất cả các thiết bị BLE đều có chức năng Bluetooth cổ điển được kết hợp với nó. Bluetooth được sử dụng trong các mô-đun như HC-05 là một phiên bản của Bluetooth cổ điển được gọi là Bluetooth SSP (Giao thức cổng nối tiếp), có nghĩa là Bluetooth tuân theo giao thức nối tiếp tiêu chuẩn giúp gửi và nhận dữ liệu dễ dàng hơn mà không tốn nhiều chi phí. Ở cuối hướng dẫn này, chúng ta sẽ học cách sử dụng chức năng Serial Bluetooth trong ESP32.
Ở đây trong bài viết này, chúng tôi sẽ sử dụng chức năng Serial Bluetooth trên ESP32 để ghép nối nó với Điện thoại thông minh và sử dụng bất kỳ ứng dụng Bluetooth Terminal nào hiện có từ cửa hàng Play để gửi lệnh đến ESP32 và bật tắt đèn LED trên bo mạch cho phù hợp.
Trong các bài viết sau, chúng tôi sẽ đề cập đến ESP32 BLE dưới dạng máy chủ cũng như máy khách. Máy chủ BLE thường được sử dụng để gửi dữ liệu BLE đến các Thiết bị Bluetooth khác và máy khách BLE được sử dụng để quét các thiết bị BLE khác do đó hoạt động như một báo hiệu.
Chuẩn bị Arduino IDE cho ESP32
Lưu ý Arduino IDE theo mặc định không hỗ trợ bảng ESP32; bạn phải tải xuống và cài đặt chúng bằng trình quản lý hội đồng quản trị. Nếu đây là chương trình đầu tiên của bạn với ESP32 thì hãy làm theo hướng dẫn bắt đầu này để thêm bảng ESP32 vào Arduino của bạn và tải lên bản phác thảo thử nghiệm.
Hơn nữa, bạn có thể thực hiện nhiều dự án hơn với ESP32 mà không cần sử dụng bất kỳ Vi điều khiển nào với nó.
Chương trình Bluetooth nối tiếp cho ESP32
Chương trình hoàn chỉnh để bật tắt đèn LED bằng ESP32 Bluetooth được đưa ra ở cuối trang này. Dưới tiêu đề này, hãy chia mã thành các đoạn nhỏ và cố gắng hiểu chúng. Nếu bạn đã sử dụng các mô-đun Bluetooth khác như HC-05 thì bạn sẽ thấy chương trình ví dụ ESP32 Bluetooth Classic này rất giống.
Ý tưởng của chương trình là khởi tạo kết nối Serial Bluetooth bằng ESP32 và lắng nghe dữ liệu từ các thiết bị được ghép nối. Nếu dữ liệu đến là '1' thì chúng ta bật đèn LED và nếu là '0' thì chúng ta nên tắt đèn LED. Chúng tôi bắt đầu chương trình của mình bằng cách thêm tệp tiêu đề BluetoothSerial làm cho Bluetooth ESP32 hoạt động như Bluetoth SSP.
#include "BluetoothSerial.h" // Tệp tiêu đề cho Bluetooth nối tiếp, sẽ được thêm vào Arduino theo mặc định
Có rất nhiều thứ đang diễn ra đằng sau thư viện này, nhưng chúng tôi đã chọn không đi sâu vào nó để giữ mọi thứ đơn giản. Điều tiếp theo chúng ta cần là một đối tượng cho các hoạt động liên quan đến Bluetooth của chúng ta. Ở đây tôi đã đặt tên của tôi là ESP_BT , nhưng bạn có thể chọn bất kỳ tên nào.
BluetoothSerial ESP_BT; // Đối tượng cho Bluetooth
Tiếp theo, bên trong hàm void setup () . Chúng tôi bắt đầu giao tiếp nối tiếp với tốc độ truyền 9600 và khởi tạo tín hiệu Bluetooth bằng tên. Ở đây tôi đã đặt tên nó là “ESP32_LED_Control ”, đây sẽ là tên mà điện thoại của chúng tôi sẽ tìm thấy khi cố gắng ghép nối. Cuối cùng, tôi đã khai báo chân LED tích hợp là chân đầu ra vì chúng tôi sẽ chuyển đổi nó dựa trên tín hiệu Bluetooth.
void setup () { Serial.begin (9600); // Khởi động màn hình nối tiếp trong 9600 ESP_BT.begin ("ESP32_LED_Control"); // Tên của tín hiệu Bluetooth Serial.println ("Thiết bị Bluetooth đã sẵn sàng để ghép nối"); pinMode (LED_BUILTIN, OUTPUT); // Chỉ định rằng chân LED là đầu ra }
Bên trong chức năng vòng lặp khoảng trống vô hạn, chúng tôi kiểm tra xem có bất kỳ dữ liệu nào đến từ mô-đun Bluetooth hay không, nếu có thì dữ liệu được đọc và lưu trữ trong biến đến . Chúng tôi cũng in giá trị này trên màn hình nối tiếp chỉ để kiểm tra chéo những gì đang được Arduino nhận.
if (ESP_BT.available ()) // Kiểm tra xem chúng tôi có nhận được gì từ Bluetooth không { incoming = ESP_BT.read (); // Đọc những gì chúng tôi thu được Serial.print ("Đã nhận:"); Serial.println (đến);
Bây giờ, bất kỳ dữ liệu nào nhận được đều được lưu trữ trong biến đến , vì vậy chúng ta có thể so sánh trực tiếp biến này với giá trị mong đợi và thực hiện hành động cần thiết. Nhưng giá trị được gửi từ Bluetooth sẽ ở dạng char và Arduino sẽ đọc giá trị Thập phân của char đang được gửi từ điện thoại. Trong trường hợp của chúng tôi đối với char '0', giá trị thập phân sẽ là 48 và đối với char '1', giá trị thập phân sẽ là 49. Bạn có thể tham khảo biểu đồ ASCII để hiểu giá trị thập phân cho mọi ký tự sẽ như thế nào.
Ở đây chúng tôi đã so sánh biến đến với 48 và 49 để kiểm tra 0 và 1 tương ứng. Nếu nó là 1 thì chúng tôi tắt đèn LED và cũng in thông báo xác nhận trở lại Bluetooth nói rằng đèn LED đã tắt và ngược lại cho 0.
if (đến == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED BẬT"); } if (đến == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("Đèn LED đã TẮT"); }
Thử nghiệm Bluetooth nối tiếp với ESP32
Kết nối ESP của bạn với Arduino IDE của bạn và chọn đúng bảng và cổng như đã thảo luận trong hướng dẫn bắt đầu. Vì đây là trình quản lý hội đồng quản trị của bên thứ 3 nên có thể mất nhiều thời gian hơn để mã được biên dịch và tải lên. Sau khi tải lên, khởi chạy các màn hình Nối tiếp (chỉ để gỡ lỗi) và mở cài đặt Bluetooth trên điện thoại của bạn. Bạn sẽ tìm thấy thiết bị Bluetooth có tên ESP32_LED_Control ghép nối với.
Bây giờ bạn có thể mở bất kỳ ứng dụng thiết bị đầu cuối Bluetooth nào trên điện thoại thông minh của mình, tôi đang sử dụng ứng dụng có tên “Thiết bị đầu cuối Bluetooth” được tải xuống từ Google App store. Kết nối ứng dụng Bluetooth với thiết bị mà chúng ta vừa ghép nối và gõ phím 1 rồi nhấn gửi.
Mô-đun ESP32 sẽ nhận nó và bật đèn LED theo chương trình của chúng tôi và cũng cung cấp cho bạn một thông báo xác nhận cho biết đèn LED đã được BẬT như ảnh chụp màn hình được hiển thị ở trên. Bạn cũng có thể kiểm tra màn hình nối tiếp sẽ hiển thị dữ liệu đang được nhận bởi ESP32 Bluetooth ở định dạng thập phân. Arduino của bạn sẽ đọc 48 cho 0 và 49 cho 1 như đã giải thích trước đó. Ảnh chụp nhanh cửa sổ đầu cuối của tôi được hiển thị bên dưới.
Tương tự, bạn cũng có thể tắt đèn LED bằng cách gửi 0 từ ứng dụng di động. Hoạt động hoàn chỉnh được hiển thị trong video dưới đây. Hy vọng bạn đã hiểu hướng dẫn và học được điều gì đó hữu ích. Nếu bạn có bất kỳ nghi ngờ nào, vui lòng để lại trong phần bình luận bên dưới hoặc sử dụng diễn đàn của chúng tôi để được trợ giúp kỹ thuật khác.