ESP8266 Bluetooth

Bài hướng dẫn này hướng dẫn bạn cách sử dụng ESP8266 để điều khiển mô-đun Bluetooth HC-05. Cụ thể, chúng ta sẽ tìm hiểu:

ESP8266 NodeMCU Bluetooth

Mục đích của bài hướng dẫn này là:

Bài hướng dẫn này tập trung vào Bluetooth Classic (Bluetooth 2.0). Nếu bạn đang tìm kiếm thông tin về Bluetooth Low Energy - BLE (Bluetooth 4.0), vui lòng tham khảo bài hướng dẫn tương tự này: ESP8266 - BLE

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×HC-05 Bluetooth Module
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về mô-đun Bluetooth HC-05

HC-05 là một mô-đun Bluetooth nối tiếp hoạt động như một Bộ chuyển đổi nối tiếp sang Bluetooth. Nó có khả năng:

  • Lấy dữ liệu từ chân Serial RX và truyền nó tới thiết bị ghép nối (ví dụ như điện thoại thông minh) qua Bluetooth
  • Nhận dữ liệu từ Bluetooth (từ thiết bị ghép nối) và chuyển nó tới chân Serial TX

Cụ thể, khi ESP8266 giao tiếp với một ứng dụng trên điện thoại thông minh (Android/iOS):

  • Nó kết nối với mô-đun Bluetooth HC-05 thông qua các chân Serial/SoftwareSerial của ESP8266.
  • Mô-đun Bluetooth HC-05 được ghép nối với ứng dụng trên điện thoại thông minh.
  • Để gửi dữ liệu đến ứng dụng trên điện thoại thông minh, ESP8266 chỉ cần gửi nó đến Serial/SoftwareSerial.
  • Để nhận dữ liệu từ ứng dụng trên điện thoại thông minh, ESP8266 đọc dữ liệu từ Serial/SoftwareSerial.
  • ESP8266 không cần mã Bluetooth đặc biệt.

Sơ đồ chân của module Bluetooth HC-05

sơ đồ chân Bluetooth

Mô-đun Bluetooth HC-05 có 6 chân:

  • Chân Bật/Khóa: Chân này được dùng để chuyển giữa chế độ Dữ liệu (đặt ở mức LOW) và chế độ Lệnh (đặt ở mức HIGH). Nếu nó không được kết nối, nó sẽ ở chế độ Dữ liệu theo mặc định.
  • Chân VCC: Chân cấp nguồn, nên được kết nối với +5V của nguồn cấp.
  • Chân GND: Chân cấp nguồn, nên được kết nối với GND của nguồn cấp.
  • Chân TX: Chân dữ liệu Serial, chân này nên được kết nối với chân RX của ESP8266. Dữ liệu nhận được qua Bluetooth sẽ được gửi đến chân này dưới dạng dữ liệu serial.
  • Chân RX: Chân dữ liệu Serial, chân này nên được kết nối với chân TX của ESP8266. Dữ liệu nhận được từ chân này sẽ được gửi tới Bluetooth.
  • Chân Trạng thái: Chân trạng thái được kết nối với đèn LED trên bo mạch, có thể được dùng làm phản hồi để kiểm tra xem Bluetooth có hoạt động đúng hay không.

Tuy nhiên, để thực hiện các thao tác cơ bản, chỉ cần kết nối bốn chân của mô-đun Bluetooth HC-05 với ESP8266.

Mô-đun Bluetooth HC-05 có hai thành phần tích hợp:

  • Một đèn LED cho biết trạng thái của Mô-đun:
    • Nhấp nháy một lần mỗi hai giây cho biết Mô-đun đã vào Chế độ Lệnh
    • Nhấp nháy nhanh cho biết nó đang chờ kết nối ở Chế độ Dữ liệu
    • Nhấp nháy hai lần mỗi giây có nghĩa là kết nối ở Chế độ Dữ liệu đã thành công
  • Một nút có thể được sử dụng để điều khiển chân Key/Enable nhằm chọn chế độ vận hành (Chế độ Dữ liệu hoặc Chế độ Lệnh)

Cách hoạt động

Mô-đun Bluetooth HC-05 có hai chế độ hoạt động:

  • Chế độ dữ liệu được sử dụng để trao đổi dữ liệu với thiết bị ghép đôi
  • Chế độ lệnh được sử dụng để cấu hình các tham số

May mắn thay, mô-đun Bluetooth HC-05 có thể hoạt động với ESP8266 mà không cần bất kỳ cấu hình nào, sử dụng các thiết lập mặc định.

Cài đặt mặc định của HC-05

Default Bluetooth Name “HC-05”
Default Password 1234 or 0000
Default Communication Slave
Default Mode Data Mode
Default Data Mode Baud Rate 9600, 8, N, 1
Default Command Mode Baud Rate 38400, 8, N, 1

Về Ứng dụng Bluetooth Serial Monitor

Bluetooth Serial Monitor Ứng dụng là một ứng dụng di động có giao diện người dùng giống với Serial Monitor của Arduino IDE. Nó có thể được sử dụng để giao tiếp với ESP8266 qua Bluetooth mà không yêu cầu bất kỳ mã đặc biệt nào cho mô-đun Bluetooth trong mã ESP8266. Để thực hiện điều này, các bước sau đây nên được thực hiện:

  • Kết nối ESP8266 với mô-đun Bluetooth HC-05
  • Cài đặt ứng dụng Bluetooth Serial Monitor trên điện thoại thông minh của bạn
  • Mở ứng dụng và ghép nối với mô-đun Bluetooth HC-05

Bây giờ, bạn có thể truyền và nhận dữ liệu từ ESP8266 giống như bạn làm với Serial Monitor của Arduino IDE. Bạn không cần phải thực hiện bất kỳ thay đổi nào đối với mã ESP8266 hiện có của bạn hoặc thêm bất kỳ mã Bluetooth nào vào mã ESP8266 mới của bạn.

Sơ đồ đấu dây

sơ đồ nối dây ESP8266 NodeMCU Bluetooth

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Bảng dây điện. Biểu đồ dây điện. Sơ đồ dây điện

ESP8266 Pins HC-05 Bluetooth Pins
Pin D7 TX
Pin D6 RX
5V VCC
GND GND
Enable/Key (NOT connected)
State (NOT connected)

※ Lưu ý:

Bạn có thể sử dụng các chân ESP8266 khác bằng cách thay đổi đối tượng Serial trong mã ESP8266 sang một đối tượng khác, chẳng hạn như Serial1, Serial2, hoặc SoftwareSerial nếu có sẵn.

Cách Lập Trình Cho Bluetooth

Không cần lập trình đặc thù cho Bluetooth. Chúng ta chỉ cần sử dụng mã Serial.

ESP8266 gửi dữ liệu tới ứng dụng Bluetooth trên điện thoại thông minh

Để truyền dữ liệu từ ESP8266 đến một ứng dụng Bluetooth trên điện thoại thông minh, mã sau đây phải được sử dụng trên Arduino:

Trong trường hợp này, chúng ta sẽ cho ESP8266 truyền “ESP8266 ở đây, hãy ra lệnh cho tôi!” tới Ứng dụng Bluetooth trên điện thoại thông minh với chu kỳ một giây giữa các lần truyền.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { Serial.println("ESP8266 here, command me!"); bluetooth.println("ESP8266 here, command me!"); delay(1000); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Tham khảo hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các thành phần như hình vẽ trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng.
  • Cài đặt ứng dụng Bluetooth Serial Monitor trên điện thoại thông minh của bạn. Nối dây module Bluetooth HC-05 với ESP8266 theo sơ đồ nối dây. Sao chép mã và mở nó bằng Arduino IDE. Nhấp nút Upload trên Arduino IDE để tải mã lên ESP8266. Nếu bạn gặp sự cố khi tải mã, ngắt kết nối các chân TX và RX từ module Bluetooth, tải mã lên, sau đó kết nối lại chân RX/TX. Mở Serial Monitor trên Arduino IDE. Mở ứng dụng Bluetooth Serial Monitor trên điện thoại và chọn chế độ Classic Bluetooth.
Ứng dụng trình theo dõi nối tiếp Bluetooth
  • Kết nối nó với mô-đun Bluetooth HC-05.
ghép nối Bluetooth với serial monitor
  • Xem kết quả trên ứng dụng Android.
Ứng dụng giám sát nối tiếp Bluetooth
  • Xem kết quả trên Serial Monitor của Môi trường Phát triển Tích hợp ESP8266.
COM6
Send
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bạn sẽ nhận thấy thông tin được hiển thị trên Serial Monitor của Arduino IDE và Ứng dụng Android là giống nhau.

Ứng dụng Bluetooth Gửi dữ liệu tới ESP8266

Đoạn mã dưới đây cho phép:

  • Gửi dữ liệu từ ứng dụng Bluetooth đến ESP8266
  • ESP8266 đọc dữ liệu, sau đó gửi phản hồi lại cho ứng dụng Bluetooth
/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { bluetooth.println(F("ESP8266 here, command me!")); if (bluetooth.available()) { // if there is data comming String command = bluetooth.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { bluetooth.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { bluetooth.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Hướng dẫn từng bước

  • Nối các thành phần như trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, chẳng hạn NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Sao chép mã và mở nó bằng Arduino IDE.
  • Nhấn vào nút Tải lên trên Arduino IDE để biên dịch và tải mã lên ESP8266.
  • Mở Serial Monitor trên Arduino IDE.
  • Kết nối ứng dụng Android với mô-đun Bluetooth HC-05, như đã thực hiện ở ví dụ trước.
  • Sau khi đã kết nối, nhập một trong hai chuỗi "LED ON" hoặc "LED OFF" trên ứng dụng Android và nhấn nút "SEND".
Ứng dụng trình theo dõi nối tiếp Bluetooth
  • ESP8266 nhận dữ liệu và in ra phản hồi trên cổng Serial. Dữ liệu này sau đó được gửi tới ứng dụng Bluetooth, và kết quả có thể xem được trên ứng dụng Android.
Ứng dụng giám sát Bluetooth serial
  • Xem kết quả trong cửa sổ Serial Monitor của Môi trường Phát triển Tích hợp ESP8266.
COM6
Send
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED ON LED is turned ON ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED OFF LED is turned OFF ESP8266 here, command me! ESP8266 here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bạn sẽ nhận ra thông tin được hiển thị trên Serial Monitor của Arduino IDE và ứng dụng Android là giống nhau.

Mã ESP8266 - Điều khiển LED bằng ứng dụng trên điện thoại thông minh qua Bluetooth

Đoạn mã ví dụ ESP8266 này sẽ phản hồi hai lệnh: “ON”“OFF”. Khi nhận được, các lệnh này sẽ được dùng để bật hoặc tắt đèn LED tích hợp thông qua ứng dụng Bluetooth Serial Monitor.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module #define LED_PIN 8 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); pinMode(LED_PIN, OUTPUT); // Configure the ESP8266 pin as a digital output pin } void loop() { if (bluetooth.available()) { // if there is data comming String command = bluetooth.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { digitalWrite(LED_PIN, LOW); // turn off LED bluetooth.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "LED ON") { digitalWrite(LED_PIN, HIGH); // turn on LED bluetooth.println("LED is turned ON"); // reports action to smartphone app } } }

Bạn có thể tìm thấy một giải thích chi tiết hơn về các hướng dẫn trong bài hướng dẫn ESP8266 Điều khiển đèn LED qua Bluetooth.

Mã ESP8266 - Điều khiển động cơ servo bằng ứng dụng trên điện thoại thông qua Bluetooth

Đoạn mã ESP8266 dưới đây nhận giá trị góc từ ứng dụng Bluetooth Serial Monitor để điều khiển góc của động cơ servo.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #include <Servo.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); bluetooth.begin(9600); servo.attach(11); // attaches the servo on pin 11 to the servo object } void loop() { if (bluetooth.available()) { // if there is data comming int angle = bluetooth.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo bluetooth.print("Rotated servo to angle: ");// reports action to smartphone app bluetooth.println(angle); } else { bluetooth.print("Invalid angle: ");// reports invalid value to smartphone app bluetooth.println(angle); } } }

Bạn có thể xem chi tiết hướng dẫn trong bài hướng dẫn Điều khiển động cơ servo bằng ESP8266 qua Bluetooth. Để xem hướng dẫn kỹ hơn, hãy xem bài hướng dẫn Điều khiển động cơ servo bằng ESP8266 qua Bluetooth. Nếu bạn cần xem hướng dẫn sâu hơn, tham khảo bài hướng dẫn Điều khiển động cơ servo bằng ESP8266 qua Bluetooth. Để có cái nhìn tổng thể hơn về hướng dẫn, hãy truy cập bài hướng dẫn Điều khiển động cơ servo bằng ESP8266 qua Bluetooth.

Nếu bạn thấy ứng dụng Bluetooth Serial Monitor hữu ích, vui lòng đánh giá 5 sao trên Cửa hàng Play. Xin cảm ơn sự ủng hộ của bạn!

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Tham khảo hàm