Thứ Năm, 8 tháng 10, 2015

MODULE BLUETOOTH HC-05 (PHẦN 2)

MODULE BLUETOOTH HC-05 (PHẦN 2)

1.Sơ đồ nguyên lý

Tôi sử dụng KIT Arduino Uno và nối chân như sơ đồ hình vẽ. Để thuận tiện tôi sử dụng luôn led trên mạch là Led ở trên Digital 13. Sở dĩ phải phải sử dụng hai điện trở trên hình vẽ là do Arduino hoạt động ở mức logic 5V còn HC-05 hoạt động ở mức logic 3.3V. Nên sử dụng hai điện trở để phân áp nhằm chuyển đổi mức logic 5V sang 3.3V (các bạn có thể nối trực tiếp của không sao, nhưng để module hoạt động ổn định và lâu dài thì nên có phương pháp chuyển đổi mức logic)





2. Lập trình

#define KEY 7
#define LED 13
bool ok;
String bf="";

void setup() 
{
  // Open serial communications and wait for port to open:
  pinMode(KEY,OUTPUT);
  digitalWrite(KEY,LOW);
  pinMode(LED,OUTPUT);
  digitalWrite(LED,HIGH);
  delay(3000);
  Serial.begin(9600);
  while (!Serial)
  {
  }
  // set the data rate for the SoftwareSerial port
  ok=configure_HC05();
}

void loop() // run over and over
{
  if (ok)
  {
    if (Serial.available()>0)
    {
      while (Serial.available())
      {
        char c=(char)(Serial.read());
        bf=bf+c;
        delay(10);
      }
    Serial.println(bf);
    if (Compare("LEDON",bf))
    digitalWrite(LED,HIGH);
    if (Compare("LEDOFF",bf))
    digitalWrite(LED,LOW);
    bf="";
    }
  }
}

bool Compare (String x,String a)
{
  int len_x=x.length();
  int len_a=a.length();
  int i,j;
   for (j=0;j<=len_a-len_x;j++)
   {
   for (i=0;i<len_x;i++)
    {
    if (x[i]!=a[i+j]) break;
    }
   if (i==len_x) return true;
   }
  return false;
}

bool configure_HC05()
{
  digitalWrite(KEY,HIGH);
  Serial.println("AT");
  delay(2000);
  if (!Serial.find("OK"))
  return false;
 
  Serial.println("AT+RMAAD");
   delay(2000);
  if (!Serial.find("OK"))
  return false;
 
  Serial.println("AT+PSWD=1234");
  delay(2000);
  if (!Serial.find("OK"))
  return false;
 
  Serial.println("AT+ROLE=0");
  delay(2000);
  if (!Serial.find("OK"))
  return false;
  digitalWrite(KEY,LOW);
  Serial.println("AT+RESET");
  delay(2000);
  if (!Serial.find("OK"))
  return false;
  delay(5000);
  Serial.println("Bluetooth Ready!");
  return true;
}

2. Mô tả Code
Trong code đầu tiên tôi sẽ chỉnh chân KEY lên mức logic cao sau đó sẽ tiến hành cấu hình nó như một SLAVE với tập lệnh sau:
·       AT+RMAAD
·       AT+PSWD=1234
·       AT+ROLE=0
Sau khi cấu hình sau ta đưa chân KEY lên mức logic cao và reset lại module với  lệnh
AT+RESET
Lúc này HC-05 của bạn đã chạy ở chế độ SLAVE và bạn đã hoàn tất bước cấu hình.

Sau đó module sẽ đợi lệnh bật tắt Led từ máy tính.
Sau khi cấu hình sau ta đưa chân KEY lên mức logic cao và reset lại module với  lệnh
AT+RESET
Lúc này HC-05 của bạn đã chạy ở chế độ SLAVE và bạn đã hoàn tất bước cấu hình.
Sau đó module sẽ đợi lệnh bật tắt Led từ máy tính.

3.Thiết lập kết nối giữa PC và HC-05
Sau khi cấu hình sau ta đưa chân KEY lên mức logic cao và reset lại module với  lệnh
AT+RESET
Lúc này HC-05 của bạn đã chạy ở chế độ SLAVE và bạn đã hoàn tất bước cấu hình.
Sau đó module sẽ đợi lệnh bật tắt Led từ máy tính.
Thiết lập kết nối giữa PC và HC-05
·       Bước 1:Sau khi nạp code vào vi điều khiển bạn hãy tiến hành kết nối HC-05 với Bluetooth trên máy tính
Sau khi PC và HC-05 đã được ghép nối ta sẽ thấy trong mục “ Device Manager” hiện thêm 2 cổng COM



·       Bước 2:Ta vào mục Bluetooth Setting để xem cổng nào là cổng “OutGoing” ta sẽ dùng cổng này để điều khiển đèn Led (trong trường hợp hình bên dưới là cổng COM 9)




·       Bước 3:Sử dụng Hercules để điều khiển cổng COM với lệnh:
               OFFLED: Tắt đèn LED
               ONLED: Bật đèn LED



2 nhận xét:

Chào anh, em thấy theo tài liệu thì tất cả các mã lệnh AT đều kết thúc bằng \r\n. tuy nhiên theo code của anh thì không có, không biết a có dùng gì để thay thế không ạ.

Ah ơi cho e hoi minh có thể thay thế điện thoại bằng 1 module hc 05 nữa dc hok ạ

Đăng nhận xét