本文藍(lán)牙采用的是HC-05藍(lán)牙模塊,該模塊為主從一體逗旁、民用級(jí)的。
主從一體模塊與從模塊區(qū)別
“主從一體模塊”:就是可以發(fā)出配對(duì)請(qǐng)求舆瘪,又可以接受配對(duì)請(qǐng)求的片效。
“從模塊”:就是只能接受配對(duì)請(qǐng)求而不能發(fā)出配對(duì)請(qǐng)求。
除了HC-05模塊英古,還有HC-06等雙數(shù)的從模塊藍(lán)牙淀衣。其中BT-06/HC-06藍(lán)牙模塊均為從體、民用級(jí)召调。
主從一體模塊與從模塊代表型號(hào)
主從一體:HC-03(工業(yè)級(jí))膨桥、HC-05(民用級(jí))
從機(jī):HC-04(工業(yè)級(jí))、HC-06(民用級(jí))
HC-05藍(lán)牙模塊使用具體方法
接線:
兩個(gè)數(shù)據(jù)口唠叛,一個(gè)叫RXD(接收)只嚣,一個(gè)叫做TXD(發(fā)送)。
藍(lán)牙R與電腦或手機(jī)T接
藍(lán)牙T與電腦或手機(jī)R接
HC-05電壓5v
HC-06電壓3.3v
原理:
Pc端數(shù)據(jù)通過(guò)兩個(gè)藍(lán)牙通信傳輸艺沼,到單片機(jī)藍(lán)牙上册舞,該藍(lán)牙通過(guò)T端將數(shù)據(jù)發(fā)送給單片機(jī)。反之亦然障般。
方法:
手機(jī):手機(jī)下載藍(lán)牙串口助手环础,配對(duì)密碼一般為0000/1234
發(fā)送指令返回到手機(jī)上
電腦:1.藍(lán)牙轉(zhuǎn)串口模塊(USB轉(zhuǎn)TTL)
? ? ? ? ? 2.藍(lán)牙適配器? 利用驅(qū)動(dòng)程序使兩個(gè)藍(lán)牙配對(duì) 較麻煩
程序(控制燈)
int led=4;
void setup()
{
Serial.begin(9600);
}
void loop()
{
? while(Serial.available())
? {
? ? char c=Serial.read();
? ? ? if(c=='A')
? ? ? ? {
? ? ? ? ? Serial.println("Hello I am amarino");
? ? ? ? ? digitalWrite(led,HIGH);
? ? ? ? }
? ? ? else{digitalWrite(led,LOW);
? ? ? ? ? Serial.println("You idle");
? }
? }
}
程序(串口監(jiān)視器)
void setup()
{
Serial.begin(38400);
}
void loop()
{
? while(Serial.available())
? {
? ? char c=Serial.read();
? ? ? if(c=='A')
? ? ? ? {
? ? ? ? ? Serial.println("Hello I am amarino");
? ? ? ? }
? }
}
程序(控制電機(jī))
int in1=7;
int in2=8;
int in3=9;
int in4=10;
//上面定義了板上的4個(gè)控制端,12一組剩拢,34一組
int E1=6;
int E2=5;
//上面定義了PWM引腳
int led=4;
void setup()
{
Serial.begin(9600);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
//下面程序開(kāi)始時(shí)讓控制端都為高電平线得,電機(jī)保持不動(dòng)。
digitalWrite(in1,HIGH);
digitalWrite(in2,HIGH);
}
void loop()
{
while(Serial.available())
{? ? char c=Serial.read();
if(c=='ahead')
{
Serial.println("Ahead");
_mAhead(in1,in2);
_mAhead(in3,in4);
}
if(c=='back')
{
Serial.println("Back");
_mBack(in1,in2);
_mBack(in3,in4);
}
if(c=='stop')
{
Serial.println("Stop");
_mStop(in1,in2);
_mStop(in3,in4);
}
if(c=='left')
{
Serial.println("DownAhead");
_mLeft(in1,in2);
_mStop(in3,in4);
}
if(c=='right')
{
Serial.println("DownBack");
_mStop(in1,in2);
_mRight(in3,in4);
}
else
{
digitalWrite(led,HIGH);
Serial.println("You idle");
}
}
}
void _mBack(int pin1,int pin2)//后退
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,LOW);
}
void _mAhead(int pin1,int pin2)//前進(jìn)
{? analogWrite(E1,150);
digitalWrite(pin1,LOW);
digitalWrite(pin2,HIGH);
}
void _mStop(int pin1,int pin2)//緊急制動(dòng)
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
}
void _mLeft(int pin1,int pin2)//左轉(zhuǎn)
{
digitalWrite(pin1,LOW);
digitalWrite(pin2,HIGH);
}
void _mRight(int pin1,int pin2)// 右轉(zhuǎn)
{
? digitalWrite(pin1,LOW);
? digitalWrite(pin2,HIGH);
}
void _mSetSpeed(char a, char b)//設(shè)定速度
{ analogWrite (E1, a);
analogWrite (E2, b);
}
參考:
http://blog.csdn.net/sjyhehe/article/details/39700575
http://www.ijiandao.com/tech/geek/1100.html