Kết nối Bluetooth HC-05 với STM32F103C8 Blue Pill: Điều khiển LED

Kết nối Bluetooth HC-05 với STM32F103C8 Blue Pill: Điều khiển LED

Trong thế giới ngày nay, Bluetooth đã trở nên rất phổ biến và hầu hết mọi thiết bị như điện thoại di động, máy tính xách tay và hệ thống thông tin giải trí trên ô tô đều sử dụng Bluetooth để liên lạc không dây. Bluetooth không chỉ được sử dụng để truyền dữ liệu mà còn điều khiển các thiết bị Bluetooth không dây khác, như sử dụng tai nghe Bluetooth, bạn có thể nghe bài hát không dây từ điện thoại di động hoặc có thể sử dụng hệ thống âm thanh trên xe hơi để phát các bài hát từ điện thoại di động.

Bluetooth là một công nghệ không dây hoạt động trên tần số 2,4 GHz. Tín hiệu Bluetooth thông thường nằm trong phạm vi bán kính 10 mét. Bluetooth là công nghệ không dây được sử dụng phổ biến nhất trong các dự án nhúng với điều kiện có phạm vi giao tiếp bị hạn chế. Bluetooth đã thêm lợi thế về mức tiêu thụ điện năng thấp và hoạt động chi phí thấp. Nó thường được sử dụng để kết nối các bộ vi điều khiển với Điện thoại thông minh bằng cách sử dụng các ứng dụng Bluetooth.

Chúng ta đã thấy sự kết hợp giữa mô-đun Bluetooth với các bộ vi điều khiển khác như Arduino, 8051, PIC, v.v. Bây giờ trong hướng dẫn này, chúng ta sẽ giao tiếp một mô-đun Bluetooth HC-05 với STM32F103C8 và BẬT / TẮT LED bằng điện thoại di động Android .

Linh kiện cần thiết:

  • STM32F103C8
  • Mô-đun Bluetooth (HC-05)
  • LED
  • Điện thoại di động Android
  • Breadboard
  • Dây dẫn

Phần mềm:

Mô-đun Bluetooth (HC-05)

Nó chủ yếu được sử dụng trong các dự án nhúng. Đây là một mô-đun Bluetooth nối tiếp sử dụng giao tiếp nối tiếp có phạm vi dưới 100m và hoạt động ở mức 5V (tối thiểu 3,3V). Nó có thể được sử dụng để kết nối hai bộ vi điều khiển không dây và cả với điện thoại di động và máy tính xách tay. Vì có nhiều ứng dụng Android có sẵn, nó rất hữu ích để thực hiện các dự án điều khiển Bluetooth không dây.

Nó sử dụng giao tiếp USART và có thể được giao tiếp với các vi điều khiển có giao thức truyền thông USART.

Nó có một ăng-ten tích hợp. Nó có cấu hình Master / Slave có thể thay đổi trong chế độ lệnh AT rất hữu ích khi chỉ gửi dữ liệu đến một thiết bị như ví dụ từ PC (MASTER) sang Slave (bất kỳ MCU) nào. Một master có thể kết nối với các thiết bị khác và slave không kết nối với kết nối khác ngoài master.

Nguyên lý hoạt đông

Nó có hai chế độ AT Command Mode & Data Mode.

Khi Bluetooth được bật nguồn, nó sẽ vào chế độ dữ liệu mặc định . Chế độ này có thể được sử dụng để truyền dữ liệu. Để vào chế độ AT Command trong khi bật nguồn, chúng ta cần nhấn nút có trong mô-đun để thay đổi cài đặt mặc định của mô-đun như cấu hình chính / phụ.

Chân của Mô-đun Bluetooth

  • Chân EN (ENABLE) – Chân này được sử dụng để đặt Chế độ dữ liệu hoặc Chế độ lệnh AT. Theo mặc định, nó ở chế độ DATA. Khi nhấn nút trong khi bật nguồn, nó sẽ chuyển sang chế độ lệnh AT.
  • Chân + 5V – Được sử dụng để cấp nguồn cho mô-đun
  • Chân GND – Chân nối đất
  • Chân TX – Chân này để kết nối với chân RX của MCU
  • Chân RX – Chân này được kết nối với chân TX của MCU
  • STATE – Chân này cho biết trạng thái của mô-đun

Chỉ dẫn LED

  • Nó có LED (ĐỎ) cung cấp trạng thái của mô-đun Bluetooth.
  • Khi mô-đun Bluetooth KHÔNG KẾT NỐI với bất kỳ thiết bị nào, tín hiệu sẽ ở mức thấp và LED đỏ nhấp nháy liên tục, điều đó cho thấy mô-đun không được quét.
  • Khi mô-đun Bluetooth được KẾT NỐI với bất kỳ thiết bị nào, tín hiệu sẽ ở mức CAO và LED đỏ nhấp nháy với một delay cho biết mô-đun bị HỦY.

Cổng USM STM32

STM32F103C8 (BLUE PILL) Các cổng giao tiếp nối tiếp USART được hiển thị trong hình với các chân ra bên dưới. Đó là những khung màu xanh (PA9-TX1, PA10- RX1, PA2-TX2, PA3- RX2, PB10-TX3, PB11- RX3). Nó có ba kênh như vậy.

 

Sơ đồ mạch và kết nối

Các kết nối mạch để giao tiếp Mô-đun Bluetooth với STM32 được thực hiện như dưới đây

Kết nối giữa STM32F103C8 và mô-đun Bluetooth (HC-05)

  • Chân TX (PA9) của STM32F103C8 được nối với chân RX của mô-đun Bluetooth.
  • Chân RX (PA10) của STM32F103C8 được nối với chân TX của mô-đun Bluetooth.
  • Chân VCC (+ 5V) của mô-đun Bluetooth được nối với chân 5V của STM32F103C8.
  • Chân GND của mô-đun Bluetooth được nối với chân GND của STM32F103C8.

Kết nối khác

  • Chân (PA0) của STM32 được nối với chân dương của LED thông qua một điện trở nối tiếp. LED được sử dụng ở đây có màu hỗn hợp.
  • Các chân led khác được kết nối với GND của STM32.

Lập trình STM32F103C8

Kết nối Bluetooth với STM32 giống như arduino và lập trình trong STM32 giống như Arduino IDE.

Như đã nói, trong dự án này, chúng tôi sẽ giao tiếp một mô-đun Bluetooth (HC-05) với STM32F103C8 và sử dụng Điện thoại thông minh Android với ứng dụng Bluetooth Terminal để bật và tắt LED.

Lưu ý: Phải rút dây chân RX & TX trong khi tải code lên STM32F103C8.

Code hoàn chỉnh cho dự án này được đưa ra ở cuối hướng dẫn này với Video demo.

Code cho dự án này là rất đơn giản. Code Arduino tương tự có thể được sử dụng nhưng nên thay đổi chân. Vì chúng tôi có ba bộ chân USART trong STM32F103C8 nên chúng tôi phải chỉ định đúng chân mà chúng tôi đã sử dụng để kết nối mô-đun Bluetooth.

  1. Trước tiên, chúng ta cần đặt tên cho các chân với số chân tương ứng của chúng với kiểu dữ liệu int như sau
const int pinout = PA0;
  1. Tiếp theo chúng ta cần có một biến để lưu trữ dữ liệu nối tiếp từ điện thoại di động Android. Dữ liệu có thể là char hoặc int như sau
char inputdata = 0;
  1. Tiếp theo trong void setup (), chúng ta phải bắt đầu giao tiếp nối tiếp giữa STM32 Blue Pill và mô-đun Bluetooth bằng cách cho tốc độ truyền là 9600
Serial1.begin(9600);

Chúng tôi đã sử dụng serial1 ở đây vì chúng tôi đã kết nối HC-05 với TX1 và RX1 của STM32.

Chúng ta cũng có thể sử dụng Serial2 hoặc serial3 nhưng phải kết nối chân.

  1. Một thông báo giới thiệu được gửi dưới dạng dữ liệu nối tiếp đến serial1, tức là đến mô-đun Bluetooth HC05. Mô-đun này tiếp tục gửi dữ liệu đến ứng dụng Bluetooth Terminal của thiết bị di động Android. Vì vậy, chúng tôi sử dụng các hàm in dưới đây
Serial1.print("CIRCUIT DIGEST\n");

Serial1.print("BLUETOOTH WITH STM32\n");
  1. Tiếp theo, chúng ta cần đặt pinmode (PA0) làm đầu ra, vì chúng ta đã kết nối với chân này. Chúng ta sử dụng
pinMode (pinout, OUTPUT);
  1. Tiếp theo trong void loop(), chúng tôi chạy dữ liệu sau để đọc dữ liệu nối tiếp và bật / tắt LED tương ứng
void loop()

 {

   If (Serial1.available() > 0)    

   {

      inputdata = Serial1.read();      

      if(inputdata == '1')

      {

         digitalWrite(pinout, HIGH);

         Serial1.print("LED ON\n");

      }

       

      else if(inputdata == '0')

      {    

         digitalWrite(pinout, LOW);

         Serial1.print("LED OFF\n");

      }

   }

}

Ở đây chúng ta sử dụng hàm if vì code chỉ thực thi khi cổng Serial1 có dữ liệu nhận được từ các mô-đun Bluetooth nếu hàm này có Serial1.available ()> 0 . Mặt khác, nếu nó không vào được, nó sẽ đợi cho đến khi nó bắt đầu giao tiếp nối tiếp. Bây giờ, nó lưu trữ dữ liệu nhận được trong một biến inputdata = serial1.read ().   Sau đó, nó kiểm tra giá trị được gửi từ ứng dụng Bluetooth terminal. Vì vậy, nếu giá trị là 1, nó sẽ in LED BẬT và làm cho chân (PA0) ở mức CAO bằng câu lệnh digitalWrite (pinout, HIGH)  và nếu giá trị là 0, nó sẽ in LED TẮT và làm cho chân (PA0) ở mức THẤP.

Các bước để kết nối mô-đun Bluetooth với điện thoại Android

Bước 1: – Mở Bluetooth từ thiết bị di động sau khi tải code lên STM32 từ Arduino IDE và cấp nguồn cho mạch. HÃY NHỚ để rút dây chân RX và TX trong khi code được TẢI LÊN

Bước 2: – Trong các thiết bị khả dụng, chọn HC-05 và nhập mật khẩu là 1234

Bước 3: – Sau khi ghép nối, mở ứng dụng Bluetooth Terminal và chọn kết nối thiết bị và chọn HC-05 như hình dưới đây

Bước 4: –  Sau khi kết nối với Mô-đun Bluetooth HC-05, cung cấp các giá trị trong terminal 1 hoặc 0 để BẬT và TẮT LED. Bạn cũng sẽ nhận được thông báo rằng LED đang bật hoặc tắt.

CODE:

//PROGRAM FOR BLUETOOTH INTERFACE WITH STM32F103C8
//CIRCUIT DIGEST
//Pramoth Thangavel

const int pinout = PA0; // declare pinout with int data type and pin value
char inputdata = 0;  //Variable for storing received data

void setup()
{
    Serial1.begin(9600);                      //Sets the baud rate for bluetooth pins 
    Serial1.print("CIRCUIT DIGEST\n");
    Serial1.print("BLUETOOTH WITH STM32\n");                     
    pinMode(pinout, OUTPUT);                  //Sets digital pin PA0 as output pin for led
}

void loop()
{
   if(Serial1.available() > 0)      // Send data only when you receive data:
   {
      inputdata = Serial1.read();        //Read the incoming data & store into data
           
      if(inputdata == '1') 
      {
         digitalWrite(pinout, HIGH); 
         Serial1.print("LED ON\n");
      }
         
      else if(inputdata == '0')  
      {      
         digitalWrite(pinout, LOW);  
         Serial1.print("LED OFF\n");  
      }
   }
}

VIDEO demo:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *