• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Arduino智能小车系列教程5——蓝牙小车

人工智能 懒小象 2097次浏览 0个评论

Arduino智能小车系列教程5——蓝牙小车

Arduino智能小车系列教程

  1. Arduino智能小车系列教程1——拼装篇
  2. Arduino智能小车系列教程2——测试篇
  3. Arduino智能小车系列教程3——调速篇
  4. Arduino智能小车系列教程4——超声波避障
  5. Arduino智能小车系列教程5——蓝牙小车
  6. Arduino智能小车系列教程6——循迹小车
  7. Arduino智能小车系列教程7——小车测速

文章目录

 

  • 蓝牙模块
  • 串口通信
  • 蓝牙模块连接
  • 手机蓝牙助手
  • 蓝牙小车测试
  • 附件

  上一章我们完成了小车的运动控制,虽然小车已经可以运动,但是不能远程遥控,不够高大上。在这一篇,我们将尝试用手机蓝牙遥控小车。  

蓝牙模块

    蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。   我们在此使用的蓝牙模块(HC-05)已经在内部实现了蓝牙协议,不用我们再去自己开发调试协议。这类模块一般都是借助于串口协议通信,因此我们只需借助串口将我们需要发送的数据发送给蓝牙模块,蓝牙模块会自动将数据通过蓝牙协议发送给配对好的蓝牙设备。  


Arduino智能小车系列教程5——蓝牙小车

串口通信

  由于要借助串口实现蓝牙通信功能,所以我们在此要先了解下Arduino的串口通信。   Arduino UNO开发板上的串口为0->RX,1->TX,在开发板内部也已经配置好了串口的功能,我们只需调用函数借口即可。以下列出串口通信里面常用的函数,并加以简单解释,详细用法可在用到时自行查询。   开启串行通信接口并设置通信波特率  

Serial.begin(speed);

  关闭串口通信  

Serial.end();

  判断串口缓冲器是否有数据写入  

Serial.available();

  读取串口数据  

Serial.read();

  返回下一字节(字符)输入数据,但不删除它  

Serial.peek();

  清空串口缓存  

Serial.flush();

  写入字符串数据到串口  

Serial.print();

  写入字符串数据+换行到串口  

Serial.println();

  写入二进制数据到串口  

Serial.write();

  read时触发的事件函数  

Serial.SerialEvent();

  读取固定长度的二进制流  

Serial.readBytes(buffer,length);

  打印接到数据十进制表示的ascii码  

Serial.println(incomingByte, DEC);

蓝牙模块连接

 


Arduino智能小车系列教程5——蓝牙小车
  TX: 接Arduino UNO开发板”RX”引脚 RX: 接Arduino UNO开发板”TX”引脚 GND: 接Arduino UNO开发板”GND”引脚 VCC: 接Arduino UNO开发板”5V”或”3.3V”引脚  

Arduino智能小车系列教程5——蓝牙小车

手机蓝牙助手

  想实现手机蓝牙遥控小车,手机APP是必不可少的,目前网上有很多蓝牙串口助手,省去了我们自己写APP的时间,当然如果朋友你有能力或者想自己DIY的话也可以尝试自己写APP,在这里我推荐大家用这款手机蓝牙助手(百度上搜手机蓝牙串口助手就可以搜到,挺好用的)  


Arduino智能小车系列教程5——蓝牙小车
  如果不想自己去找的话可以到我的百度网盘下载 点击这里下载 下载并安装后打开APP,在这里可能会提示你有新版本请求更新,建议点击以后再说(暂时不更新),以我的经验,一般点击立即更新都会更新失败。  

Arduino智能小车系列教程5——蓝牙小车
  进入主界面,左上角会提示”蓝牙未连接”,这个时候我们可以先对蓝牙助手的界面进行自定义设置。点击右下角的三个点(在我这里是这样的,其他手机可能不同,如果没有这三个点可以试着点击手机的功能键),选择“更多”。  

Arduino智能小车系列教程5——蓝牙小车
  然后选择“地面站设置”进入自定义界面,往下拖动,找到“自定义按键[x]”,在此我们对按键[1][2][3][4][6]进行自定义设置。  

Arduino智能小车系列教程5——蓝牙小车
   点击自定义按键[1],将其“显示名称”属性改为“停止”,“点击发送”属性改为“00”,并点击“确定”保存  

Arduino智能小车系列教程5——蓝牙小车
  同理更改其他按键: 点击自定义按键[2],将其“显示名称”属性改为“前进”,“点击发送”属性改为“01”,并点击“确定”保存 点击自定义按键[4],将其“显示名称”属性改为“左转”,“点击发送”属性改为“03”,并点击“确定”保存 点击自定义按键[5],将其“显示名称”属性改为“后退”,“点击发送”属性改为“02”,并点击“确定”保存 点击自定义按键[6],将其“显示名称”属性改为“右转”,“点击发送”属性改为“04”,并点击“确定”保存   以上修改的属性值即为我们点击对应按键之后,蓝牙串口助手自动通过蓝牙发送的数据,与上一篇所定义的小车的几个状态一致,这样方便在Arduino在接收到蓝牙模块的数据后对小车的状态进行控制。  

#define STOP      0
#define FORWARD   1
#define BACKWARD  2
#define TURNLEFT  3
#define TURNRIGHT 4

  修改后属性如下图  


Arduino智能小车系列教程5——蓝牙小车
  下面就来看看我们修改的效果吧,点击“模式切换”  

Arduino智能小车系列教程5——蓝牙小车
  这时候你就可以看到我们自定义的按键咯,看看修改前后的对比吧。  

Arduino智能小车系列教程5——蓝牙小车
Arduino智能小车系列教程5——蓝牙小车
  接下来我们将连接蓝牙,仍然点击右下角的三个点,然后点击“连接”  

Arduino智能小车系列教程5——蓝牙小车
  一般没有连接过蓝牙模块的时候“已配对的设备”下面没有可选择的设备名称,因此我们要点击“扫描新设备”来检测我们的蓝牙模块,扫描成功后蓝牙模块的名称将显示在“已配对的设备”一栏中  

Arduino智能小车系列教程5——蓝牙小车
  点击我们的蓝牙模块的名称,输入密码进行配对。配对成功后在蓝牙串口助手的左上角会显示“蓝牙已连接”字样,恭喜你,这时候你已经连接成功。  

Arduino智能小车系列教程5——蓝牙小车
  小科普:   蓝牙模块上电(只简单连接”VCC”和”GND”引脚)之后,其他蓝牙设备即可与其连接,一般蓝牙模块默认初始连接密码为”0000”或”1234”,如果连接不上蓝牙,请尽快与厂商或者店家联系。蓝牙模块上电后LED指示灯不断闪亮,当有设备连接预期连接之后会隔一段闪两下,蓝牙串口助手也会有相应已连接的提示。  

Arduino代码编写

  新建一个工程,将下面代码复制到工程内  

#define STOP      0
#define FORWARD   1
#define BACKWARD  2
#define TURNLEFT  3
#define TURNRIGHT 4

int leftMotor1 = 16;
int leftMotor2 = 17;
int rightMotor1 = 18;
int rightMotor2 = 19;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  //usart read
  if(Serial.available()>0)
  {
    char cmd = Serial.read();//读取蓝牙模块发送到串口的数据

    Serial.print(cmd);
    motorRun(cmd);

  }  
}
void motorRun(int cmd)
{
  switch(cmd){
    case FORWARD:
      Serial.println("FORWARD"); //输出状态
      digitalWrite(leftMotor1, HIGH);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
      break;
     case BACKWARD:
      Serial.println("BACKWARD"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
      break;
     case TURNLEFT:
      Serial.println("TURN  LEFT"); //输出状态
      digitalWrite(leftMotor1, HIGH);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
      break;
     case TURNRIGHT:
      Serial.println("TURN  RIGHT"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
      break;
     default:
      Serial.println("STOP"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, LOW);
  }
}

朋友们大概也发现了,这个代码和上一篇的代码基本上相同,只不过增加了串口的内容。  

代码详解

  串口初始化函数,想要通过串口的库函数对串口进行操作,必须在void set_up()函数中对其进行初始化。  

Serial.begin(9600);

在void loop()函数内,加入了检测串口接收内容的函数,并将接收到的命令输入到 void motorRun(int cmd)函数中控制小车运动。  

if(Serial.available()>0)
  {
    char cmd = Serial.read();

    Serial.print(cmd);
    motorRun(cmd);
  }

蓝牙小车测试

  下载程序之后,重新连接蓝牙模块,切换到我们自定义的按键界面,快试试蓝牙遥控小车吧。  

附件

  安卓手机蓝牙串口点击下载,也可以复制链接 https://download.csdn.net/download/qq_16775293/11165678 到浏览器下载。 欢迎各位有兴趣的朋友加入Q群1:789127261点评、交流  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Arduino智能小车系列教程5——蓝牙小车
喜欢 (0)

您必须 登录 才能发表评论!

加载中……