課程目標(biāo)
- 了解藍(lán)牙模塊及其通信原理
- 學(xué)習(xí)如何實(shí)現(xiàn)手機(jī)、arduino及藍(lán)牙模塊之間的通信過程
- 實(shí)現(xiàn)手機(jī)控制小車運(yùn)動(dòng)
相關(guān)知識
- **藍(lán)牙:**是一種支持多個(gè)設(shè)備之間短距離通信(一般10m左右)的無線電技術(shù)。
藍(lán)牙的特點(diǎn):
1、藍(lán)牙技術(shù)的適用設(shè)備多,無需電纜,通過無線使電腦和電信連網(wǎng)進(jìn)行通信。
2、藍(lán)牙技術(shù)的工作頻段全球通用,適用于全球范圍內(nèi)用戶無界限使用。
3、藍(lán)牙技術(shù)的安全性和抗干擾能力強(qiáng)。
4、傳輸距離較短。
5、通過跳頻擴(kuò)頻技術(shù)進(jìn)行傳播
**藍(lán)牙串口模塊:**藍(lán)牙串口模塊是基于SPP協(xié)議(Serial PortProfile),能在藍(lán)牙設(shè)備之間創(chuàng)建串口進(jìn)行數(shù)據(jù)傳輸?shù)囊环N設(shè)備,廣泛應(yīng)用在具有藍(lán)牙功能的電子設(shè)備上。
藍(lán)牙串口模塊通信模型:
電路搭建
所需材料
ArduinoUNO * 1
HC-05藍(lán)牙串口模塊 * 1
LED * 1
杜邦線若干
電路連接
程序編寫
練習(xí)一:手機(jī)控制LED亮滅
根據(jù)上面的電路接線圖,編程實(shí)現(xiàn)通過手機(jī)發(fā)送指令,來控制LED的亮和滅。
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:手機(jī)控制LED
* 項(xiàng)目時(shí)間:2022.03.30
* 項(xiàng)目作者:MRX
*/
int LedPin = 7;
void setup()
{
Serial.begin(9600);
pinMode(LedPin,OUTPUT);
}
void loop()
{
while(Serial.available())
{
char Bluetooth=Serial.read();
if(Bluetooth=='a')
{
Serial.println("Turn ON");
digitalWrite(LedPin,HIGH);
}
if(Bluetooth=='b')
{
Serial.println("Turn OFF");
digitalWrite(LedPin,LOW);
}
}
}
手機(jī)端設(shè)置:
APP初始界面:
設(shè)置流程:
連接完成后,在命令行進(jìn)行對應(yīng)的指令輸入,那么就可以發(fā)現(xiàn)LED能夠根據(jù)預(yù)設(shè)的指令進(jìn)行變化了。
練習(xí)二:藍(lán)牙小車
實(shí)現(xiàn)通過手機(jī)藍(lán)牙輸入指令來控制小車進(jìn)行對應(yīng)的運(yùn)動(dòng)控制。
電路連接:
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:藍(lán)牙控制小車運(yùn)動(dòng)
* 項(xiàng)目時(shí)間:2022.03.30
* 項(xiàng)目作者:MRX
*/
int IN1 = 2; // IN1 connected to pin 4
int IN2 = 4;
int ENA = 3;
int IN3 = 6; // IN3 connected to pin 6
int IN4 = 7;
int ENB = 5;
int value = 255; // the duty cycle
void Forward() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,value);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENB,value);
}
void Back() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void Right() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,value);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,0);
}
void Left() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,value);
}
void Stop() {
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
analogWrite(ENA,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
analogWrite(ENB,0);
}
void setup(){
Serial.begin(9600);
for (int i = 4;i <= 10;i++){
pinMode(i, OUTPUT);
}
}
void loop(){
while(Serial.available())
{
char Bluetooth=Serial.read();
if(Bluetooth=='a')
{
Serial.println("Forward");
Forward();
}
if(Bluetooth=='b')
{
Serial.println("Bback");
Back();
}
if(Bluetooth=='c')
{
Serial.println("Left");
Left();
}
if(Bluetooth=='d')
{
Serial.println("Right");
Right();
}
if(Bluetooth=='e')
{
Serial.println("Stop");
Stop();
}
}
}
手機(jī)APP設(shè)置:
-
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
107663 -
串口通信
+關(guān)注
關(guān)注
34文章
1605瀏覽量
55326 -
藍(lán)牙模塊
+關(guān)注
關(guān)注
30文章
557瀏覽量
55620 -
Arduino
+關(guān)注
關(guān)注
187文章
6455瀏覽量
186358
發(fā)布評論請先 登錄
相關(guān)推薦
評論