arduino mega2560與HC-06藍牙模塊使用

因爲項目需求:

選擇了Arduino Mega2560作爲控制器;

HC06藍牙模塊作爲無線通訊模塊,用來和Android藍牙模塊通訊(該模塊不支持藍牙4.0);

該文主要完成了Arduino對藍牙模塊的設置,通過Arduino對信號進行捕捉,並通過藍牙模塊發送出去。


話不多說,上連接圖:


HC06TX接ArduinoRX,HC06RX接TX,VCC接3.3V,GND接地,這些藍牙模塊的手冊中都有。要注意的是,Arduino Mega有四個串口,其中串口0是與PC傳輸時會佔用的串口,所以進行代碼同步的時候要斷開該串口;我在實驗中選擇了串口1(14,15引腳)。


對藍牙進行設置:名字、密碼、波特率等;

HC06支持AT指令對其參數進行設置:

AT,AT+NAME****,AT+PIN****;


具體代碼如下:

char val,val1,val2;  
String comdata = "";
int mark = 0;
int InPin = 22;
unsigned long time = 0;
unsigned long time1 = 0;
unsigned long time2 = 0;
volatile int state = LOW;

void setup() {
  Serial.begin(9600);   
  Serial1.begin(9600); 
  pinMode(InPin,INPUT);
  //attachInterrupt(0, Volchange, RISING);
}

void loop() {
   //AT Set 
   if (Serial.available()) 
   {
    val = Serial.read();
    if(val =='a')
    {
      Serial1.print("AT+NAMEEMYWONG");//Set BT name
    }
    else if(val =='b')
    {
      //Serial.println("CYCLYNOW");
      Serial1.print("AT+PIN0000");// Set Pin
    }
    else if(val == 'c')
    {
      Serial1.write("AT");// Set Pin
    }
  }
  
  // read pulse from digital
  val2 = digitalRead(InPin);
  if( (val1 != val2) && (val2 ==HIGH) )
  {
    Serial1.print("AT");
    //Serial1.print("$"); 
    //Serial1.print("1");
    //Serial1.print("#");
  }
  val1 = val2;
  
  //bluetooth receive
  while(Serial1.available()>0)
  {
    comdata += char(Serial1.read());
    delay(2);
    mark = 1;
  }
  if(1 ==mark)
  {
    time2 = millis();
    time = time2 - time1;
    time1 = time2;
    Serial.print(comdata);
    Serial.print("        Pulse interval is:");
    Serial.print(time);
    Serial.println("ms");
    comdata = "";
    mark = 0;
  }
}

裏面有些冗餘代碼沒有刪掉,完成的功能主要是:當22引腳信號發生變化,則對串口1發送“AT”指令,藍牙模塊會對該指令迴應“OK”,並返回兩次信號之間的時間間隔。


因爲安卓手機端還沒有弄好,後面完成了會繼續更新。





                                                                        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章