Search This Blog

Tuesday, August 4, 2015

Bluetooth Module to be Used with Microcontroller

HC-05 Master/Slave Bluetooth Module လေးက စျေးသက်သာပြီး (~SGD 16) သံုးရလွယ်တဲ့ Bluetooth module တစ်ခုဖြစ်ပြီး UART interface သံုးပါတယ်။ အဲဒီ HC-05 နဲ့ Arduino Uno microcontroller ကိုသံုးပြီး LED မီးလံုးကို ဖုန်းနဲ့ Bluetooth communication သံုးပြီး အဖွင့်၊ အပိတ် ထိန်း တဲ့ နမူနာတစ်ခု ကို ဆွေးနွေးပါမယ်။ တကယ်တော့ UART interface ပါတဲ့ ဘယ် မိုက်ကရိုကွန်ထရိုလာ မဆို သံုးလို့ရပါတယ်။


Figure. HC-05 Bluetooth module with Arduino Uno.


HC-05 က သူ့ရဲ့ digital logic pin တွေမှာ 3.3V သံုးပြီး Arduino Uno က 5V သံုးတဲ့ အတွက် သူတို့ အချင်းချင်း interface လုပ်ဖို့ အတွက် bi-directional logic level converter လေးတွေကို စျေးပေါပေါနဲ့ ဝယ်သံုးလို့ရပါတယ်။ ဒါပေမယ့် ဒီနမူနာမှာတော့ ကျွန်တော်တို့ lab ထဲမှာ အလွယ်တကူရတဲ့ components လေးတွေကိုပဲ သံုးပြီး ရိုးရှင်းတဲ့ voltage dividers လေးတွေ ကိုယ့်ဟာကို ဆောက်ပြီး အောက်ကပံုမှာ ပြထားတဲ့အတိုင်းပဲ သံုးလိုက်ပါတယ်။

Figure. Interfacing HC-05 Bluetooth module with Arduino Uno.


အဲဒီ Bluetooth module ကို Android phone နဲ့ဆက်သံုးဖို့ အတွက်တော့ Play store မှာ 'Bluetooth SPP' လို့ရှာလိုက်ရင် တွေ့ရမယ့် app တွေထဲက ကြိုက်တာတစ်ခုခု ကို ယူသံုးနိုင်ပါတယ်။ ကျွန်တော်တို့ နမူနာမှာတော့ Jerry.Li ရဲ့ 'Bluetooh spp tools pro' ဆိုတဲ့ ဟာလေးကို သံုးခဲ့ပါတယ်။ အဲဒီ app ကို ဖွင့်လိုက်ပြီး Bluetooth devices တွေကို scanning လုပ်ပြီးရင် HC-05 ကို pin နံပါတ် '1234'ကိုသံုးပြီး pairing လုပ်နိုင်ပါတယ်။ အဲဒါဆိုရင် HC-05 UART ရဲ့ RX pin ကို ပို့သမျှစာလံုးတိုင်းက ဖုန်းကို ရောက်လာမှာ ဖြစ်ပြီး၊ ဖုန်းက နေပို့လိုက်တဲ့ စာလံုးတွေကလည်း HC-05 ရဲ့ TX pin ကနေ ပြန်ထွက်လာမှာ ဖြစ်ပါတယ်။ အကယ်၍ ဖုန်းနဲ့ မဆက်ပဲ ကွန်ပျူတာရဲ့ Bluetooth နဲ့ ဆက်မယ်ဆိုရင်လည်း ကွန်ပျူတာမှာ serial port တစ်ခု ပေါ်လာပြီး ပုံမှန် comm port တစ်ခုလိုပဲ ဒေတာ ပို့လို့၊ လက်ခံလို့ ရမှာပါ။

#include <SoftwareSerial.h>
#define RxD 2
#define TxD 3
char recvChar;
SoftwareSerial blueToothSerial(RxD,TxD);
void setup()
{
    Serial.begin(9600);
    
    pinMode(RxD, INPUT);
    pinMode(TxD, OUTPUT);
    blueToothSerial.begin(9600);

    pinMode(13, OUTPUT);
}
void loop()
{  
  if(blueToothSerial.available())
  {
      recvChar = blueToothSerial.read();
      Serial.print(recvChar);
      if(recvChar == '1') digitalWrite(13, HIGH);
      else if(recvChar == '0') digitalWrite(13, LOW);
  }
  if(Serial.available())
  {
      recvChar  = Serial.read();
      blueToothSerial.print(recvChar);
  }
}


ဒီ Arduino program ကတော့ ဖုန်းကပို့လိုက်တဲ့ စာလံုး တွေကို Arduino Uno ရဲ့ serial monitor ကို ပို့ ပေးပြီး၊ serial monitor ကရိုက်ထည့်တဲ့ စာလံုးတွေကို ဖုန်းကို အပြန်အလှန်ပို့ပေး ပါတယ်။ ဖုန်းကနေ 1 ဒါမှမဟုတ် 0 ပို့လိုက်ရင် Arduino Uno microcontroller board ရဲ့ pin 13 မှာဆက်ထားတဲ့ LED မီးလံုးကို အဖွင့်၊ အပိတ် လိုသလို လုပ်ပေးမှာ ဖြစ်ပါတယ်။ HC-05 Bluetooth module ကို configure လုပ်ချင်ရင်၊ AT commands တွေပို့ချင်ရင်တော့ push button ကိုဖိထားဖို့ လိုပါတယ်။

Figure. Sending and receiving characters to and from the Bluetooth app using Serial monitor.


နောက်ထပ် Bluetooth Shield လို့ခေါ်တဲ့ Bluetooth module တစ်ခုကိုလည်း စမ်းလိုက်ပါတယ်။ သူကတော့ Arduino Uno အတွက်လုပ်ထားတာဆိုတော့ Arduino Uno board မှာတိုက်ရိုက်တပ်လိုက်ရုံပါပဲ။ ဝါယာတွေ ဆက်စရာ၊ interfacing လုပ်စရာ ဘာမှ မလိုတော့ပါဘူး။ Jumper settings ကိုတော့ စစ်ဖို့လိုပါတယ်။ ဒီပံုက ဟာကတော့ HBT_TX ကို Arduino Uno board ရဲ့ D2 pin မှာဆက်ထားပြီး၊ HBT_RX ကို D3 မှာဆက်ထားတာ တွေ့ရပါတယ်။ ဒါကြောင့် D2 pin ကို မိုက်ကရိုကွန်ထရိုလာရဲ့ RX အနေနဲ့ သတ်မှတ်ဖို့ လိုပြီး၊ D3 pin ကိုတော့ TX လို့ ကြေငြာဖို့ လိုပါတယ်။ သူ့အတွက် demo program ကို Bluetooth Shield Wiki page မှာတွေ့နိုင်ပြီး၊ အဲဒီ ပရိုဂရမ်မှာ Bluetooth device name တွေ၊ pairing pin တွေကို ကြိုက်သလို ပြင်ဆင်သတ်မှတ်နိုင်ပါတယ်။

Figure. Bluetooth Shield.


No comments:

Post a Comment