Arduino篇—如何使用蓝牙模块

电子说

1.3w人已加入

描述

课程目标

  • 了解蓝牙模块及其通信原理
  • 学习如何实现手机、arduino及蓝牙模块之间的通信过程
  • 实现手机控制小车运动

相关知识

  • **蓝牙:**是一种支持多个设备之间短距离通信(一般10m左右)的无线电技术。

蓝牙的特点:

1、蓝牙技术的适用设备多,无需电缆,通过无线使电脑和电信连网进行通信。

2、蓝牙技术的工作频段全球通用,适用于全球范围内用户无界限使用。

3、蓝牙技术的安全性和抗干扰能力强。

4、传输距离较短。

5、通过跳频扩频技术进行传播

**蓝牙串口模块:**蓝牙串口模块是基于SPP协议(Serial PortProfile),能在蓝牙设备之间创建串口进行数据传输的一种设备,广泛应用在具有蓝牙功能的电子设备上。

led灯

蓝牙串口模块通信模型:

led灯

威廉希尔官方网站 搭建

所需材料

ArduinoUNO * 1
HC-05蓝牙串口模块 * 1
LED * 1
杜邦线若干

威廉希尔官方网站 连接

led灯

程序编写

练习一:手机控制LED亮灭

根据上面的威廉希尔官方网站 接线图,编程实现通过手机发送指令,来控制LED的亮和灭。

图形化方式:

led灯

代码方式:

/* 项目名称:手机控制LED
 * 项目时间:2022.03.30
 * 项目作者: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);
        }
   }
}

手机端设置:

APP初始界面:

led灯

设置流程:

led灯

led灯

连接完成后,在命令行进行对应的指令输入,那么就可以发现LED能够根据预设的指令进行变化了。

练习二:蓝牙小车

实现通过手机蓝牙输入指令来控制小车进行对应的运动控制。

威廉希尔官方网站 连接:

led灯

图形化方式:

led灯

代码方式:

/* 项目名称:蓝牙控制小车运动
 * 项目时间:2022.03.30
 * 项目作者: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();
        }
   }  
}

手机APP设置:

led灯

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分