基于51 手机遥控的蓝牙小车(HC-05)
2020-02-29 19:47
459 查看
文章目录
一、软件:手机下载“蓝牙串口”,电脑下载“XCOM串口调试助手”
- 手机应用商店下载 蓝牙串口(HC-05只支持Android)
- 电脑端下载 XCOM串口调试助手
点击此处下载
需要登录才能下载!这是正点原子官网,请放心登录下载。
二、硬件:HC-05模块,USB转TTL模块,51小车
1. HC-05
参数:- 工作电压:3.3V
- 参考距离:10m
- 通讯接口:UART 3.3V TTL电平
- 通信方式:配对成功后,可以作为全双工串口使用,无需了解任何蓝牙协议。
- 默认常用通讯格式:9600,1,N(AT指令可设置停止位为2,奇或偶效验)
- 默认值:从机,波特率9600,蓝牙名HC-05,配对密码1234,LED状态灯开启。
- 主从机设置:模块为主从一体,出厂默认为从机,可以通过AT指令切换成主机。
2、USB转TTL模块
三、调试
1. 引脚连接
USB转TTL模块 ~~~~ HC-05模块 RXD ~~~~~~~~~~~ TXD TXD ~~~~~~~~~~~ RXD VCC ~~~~~~~~~~~ VCC(3.3V) GND ~~~~~~~~~~~ GND
- 注意 RXD 连接 TXD
- 注意 如果是用笔记本电脑调试,电脑要接电源,否则电压不够,蓝牙模块不亮
2. 进入AT模式
- 先打开XCOM串口调试助手
选用下述第一种方法进入AT模式(进入AT模式就是为了设置和得到HC-05蓝牙模块的参数。)
此时HC-05模块上的灯慢闪,按下图上的标示操作。
- 进入AT模式的方法有两种:
- 在模块上电之前,把KEY脚设置成高电平,然后将USB接口插入电脑 (即长按模块唯一一个按键,USB接口插入电脑后再松开)。此时LED慢闪(2s一次),模块进入AT模式,波特率固定为38400。此模式我们叫原始模式,原始模式下一直处于AT命令模式状态。
- 在模块上电之后,此时LED快闪(1s两次),发送一次AT指令,需要按一次按键,模块也会进入AT模式,此时LED依旧快闪,波特率为默认波特率9600。此模式我们叫正常模式。正常模式下只有按住按键才处于AT命令模式状态。
推荐使用第一种方法。
-
HC-05 AT常用指令集
-
查看是否处于AT模式:AT\n
返回:OK - 询问、设置蓝牙名称:AT+NAME / AT+NAME=OXOXO \n
返回:+NAME:OXOXO OK - 询问、设置蓝牙密码:AT+PSWD / AT+PSWD=“0000” \n
返回:+PSWD:0000 OK
(密码要有双引号,密码是四位数字) - 询问、设置 波特率、停止位和校验位:AT+UART / AT+UART=0000,0,0 \n
返回:+UART:0000,0,0 OK
(0无校验位,1奇校验位,2偶校验位) - 恢复默认设置:AT+ORGL\n
返回:OK
输入的指令必须以回车作为结尾!(\n即回车、换行,在串口调试助手上输入一个回车即可)
一般只需要查询参数,不需要设置,使用默认设置就OK。
3. 手机端串口助手的调试
-
手机与电脑通信测试
若此步骤正常,则进入下一步。
手机蓝牙连接HC-05蓝牙模块需要使HC-05处于正常模式(波特率为9600)。即将USB转TTL模块从电脑拔下,然后直接插回电脑。测试能否正常通信。
手机连接上HC-05蓝牙模块的时候,蓝牙模块慢闪 -
在手机端蓝牙串口app上设置键盘
上图只给了前进按钮的设置,类似的完成剩下四个按键的设置。注意每个按键的松开状态都应该为停车t。
此处按钮的设置应该与代码匹配,结合下面代码,前进、后退、左转、右转、停止分别为q、h、z、y、t。 为避免手机与小车通讯异常,经测试,只发送一个字母比较稳定 -
至此,完成了所有软件调试和设置。
4. HC-05与51单片机的接口连接
HC-05蓝牙模块与51单片机的接口连接 和 HC-05蓝牙模块与USB转TTL模块的接口连接相同。
注意 RXD 连接 TXD!
硬件连接好后,打开单片机电源,手机连接上HC-05蓝牙模块(灯慢闪),然后按动设置好的按钮,秀出你的操作!
四、代码
蓝牙遥控小车需要用到串口通信和定时器中断的内容。
HC-05蓝牙模块与51单片机的接口连接 和 HC-05蓝牙模块与USB转TTL模块的接口连接相同。
代码中设置的波特率需要与蓝牙波特率相同才可以通信,为9600。
#include <reg52.h> typedef unsigned char u8; typedef unsigned int u16; sbit ENA=P0^0; //小车电机引脚 sbit IN1=P0^1; sbit IN2=P0^2; sbit IN3=P0^3; sbit IN4=P0^4; sbit ENB=P0^5; sbit ENC=P1^0; sbit IN5=P1^1; sbit IN6=P1^2; sbit IN7=P1^3; sbit IN8=P1^4; sbit END=P1^5; sbit Data=P3^1; //接受数据的引脚,即TXD脚 void receive(u8 m); void run(); void stop(); void turn_left(); void turn_right(); void back(); void UartConfigurationInit(){ SCON=0X50; //设置为工作方式1 TMOD=0x20; //设置定时器1工作方式为方式2 TH1=0xfd; //波特率9600 TL1=0xfd; TR1=1; //启动定时器1 SM0=0;SM1=1; //串口方式1 REN=1; //允许接收 PCON=0x00; //关倍频 ES=1; //开串口中断 EA=1; //开总中断 TR1=1; } void main(){ UartConfigurationInit(); stop(); while(1); } void receive(u8 m){ switch(m){ case 'q': //前进 run(); break; case 'y': //右转 turn_right(); break; case 'z': //左转 turn_left(); break; case 'h': //后退 back(); break; case 't': //停止 stop(); break; } } void run(){ IN1=1; IN2=0; IN3=1; IN4=0; IN5=1; IN6=0; IN7=1; IN8=0; ENA=1; ENB=1; ENC=1; END=1; } void stop(){ IN1=0; IN2=0; IN3=0; IN4=0; IN5=0; IN6=0; IN7=0; IN8=0; } void turn_left(){ IN1=0; IN2=1; IN3=1; IN4=0; IN5=0; IN6=1; IN7=1; IN8=0; } void turn_right(){ IN1=1; IN2=0; IN3=0; IN4=1; IN5=1; IN6=0; IN7=0; IN8=1; } void back(){ IN1=0; IN2=1; IN3=0; IN4=1; IN5=0; IN6=1; IN7=0; IN8=1; ENA=1; ENB=1; ENC=1; END=1; } void Usart() interrupt 4 //中断函数 { u8 receiveData; receiveData=SBUF; //出去接收到的数据 receive(receiveData); RI = 0; //清除接收中断标志位 SBUF=receiveData; //将接收到的数据放入到发送寄存器 while(!TI); //等待发送数据完成 TI=0; //清除发送完成标志位 }
- 点赞 9
- 收藏
- 分享
- 文章举报
相关文章推荐
- hc-05蓝牙模块与arduino连接实现手机控制蓝牙智能小车
- 基于STM32的HC-05蓝牙模块使用及常见问题(STM32-手机-Arduino使用HC-05进行蓝牙通讯)
- 基于51单片机的蓝牙遥控小车程序【硬软件部分】
- arduino小车,准备(二):HC-05蓝牙模块
- 基于HC-05蓝牙模块的STM32无线控制智能系统硬件开发
- 基于51单片机的蓝牙小车手机端遥控的简单实现 (下篇)
- 基于stm32的手机蓝牙智能小车的设计
- 基于51单片机的蓝牙hc05遥控小车
- 【Android开发 蓝牙通信】手机蓝牙与下位机HC-05蓝牙模块通信系统
- 蓝牙遥控小车设计(三)——Amarino和 Android手机重力感应控制
- 【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)
- 遥控小车----arduino,L298n(红),HC-05
- 【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)
- msp430f149通过蓝牙HC-05与手机通…
- 基于阿波罗STM32F429和HC-05的蓝牙控制板载LED灯
- 【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)
- 基于STM32的无线通信模块使用——HC_05蓝牙串口
- 【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)
- 手机蓝牙遥控小车的制作
- 基于手机蓝牙的可配置应用程序遥控