单片机蓝牙模块的使用,以及配置控制舵机的源码
原理(如下图)
1、该模块与单片机采用串口通信,手机连接蓝牙模块,通过无线信号发送数据给蓝牙模块,蓝牙模块收到数据后会把数据通过**串口(USART)**发送给单片机,单片机收到数据(SUBF)以后,就可以对数据进行处理,解析,从而完成单片机对外设的控制。这里注意手机端发送的一般是16进制数据(HEX),或者也可以设置为发送ASCLL格式的数据。
2、此实验需要把蓝牙模块配置为从机模式,若模块出厂默认就是从机模式,就不需要配置了,(如果不知道默认是什么模式,可以查芯片手册或询问客服),如果是主从一体的模块,可用AT指令配置成为从机模式就可以了。以HC-05主从一体机为例,在出厂设定的就是从机模式(主机发送数据,从机接受数据)
如何进入AT模式:
HC-05与HC-06不同,HC-06没有连接上时,就是AT模式,而HC-05需要有个开关,注意到模块上的小黑点没有,不按的时候是可配对状态,1秒闪2次。按它再上电就使HC-05进入AT模式了,严格的讲,它只是一个开的作用,无法退出AT模式。(退出的话可以在串口发送AT+RESET复位,或者重新上电)此时指示灯慢闪(2秒亮一次),模块进入AT状态。
线路连接图:
HC-05引脚说明
1. RXD: 接收端
2. TXD: 发送端
3. VCC: 模块供电正极(3.6V~6V)
4. GND: 模块供电负极
5. EN: 用于进入AT模式,高电平有效(默认悬空低电平)(模块上的小黑点就是配置这个引脚的)
6. STATE:配对状态输出:配对成功输出高电平,未配对输出低电平
LED与KEY与HC-05不一致。可以忽略,只看连线就行
AT指令配置说明:
这这里以STC官方烧录器为例,也是有串口助手功能的。不必多余下载:
常用的AT指令:
AT 测试指令
AT+ADDR? 读取蓝牙模块的地址
AT+NAME="XXX" 修改蓝牙模块名称为XXX
AT+ROLE=0 蓝牙模式为从模式
AT+CMODE=1 蓝牙连接模式为任意地址连接模式,也就是说该模块可以被任意蓝牙设备连接
AT+PSWD=1234 蓝牙配对密码为1234
AT+UART=9600,0,0 蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+UART? 读取读取蓝牙模块的波特率
AT+RESET 复位指令 //指令与大小写均无关
at数据的发送格式是需要在指令后接回车换行的,如果按下回车后发送指令无效,那么可以在指令后加上:\r\n ,例如:AT\r\n,再次发送。
只跟手机进行配对的话,这些指令就足够了。可以发现,同样的指令后接‘=’就是修改,后接‘?’就是读取。
串口助手的配置:
文本模式进行发送(如果记不起来,想想HEX是没有字母T的是吧,否则咋发送AT指令呢)
还有一点需要注意的是,模块的波特率不一定是38400或者9600,部分可能存在问题的模块,需要我们自己去测,调试,有的模块甚至是115200都有。
AT+UART?
AT+UART=9600,0,0 //蓝牙通信串口波特率为9600,停止位1位,无校验位
而且有的时候如果发送数据蓝牙没有应答,可以尝试清空接收区,发送区。关闭打开串口,或者将USB与电脑重新连接。我当时买的那个主从一体的HC-05模块就是的,感觉反应迟钝,发送了过一会才能返回。每发送一次就需要清空等等,还是得多调试几次,或者更换串口调试软件。如果实在不行,不排除模块有质量问题的可能。
与此同时用电脑检测手机与模块之间的通讯情况时,一般从手机发过来的是HEX数据,然后将串口调至刚刚用AT指令 AT+UART? 查的波特率,如果波特率不调可能收不到数据,HEX模式不调可能出现的数据不是发送的数据,或者乱码。当然,手机发送的是字母类型的数据(手机上的蓝牙串口助手有一个选项的)电脑端依旧用文本模式进行收取。
总体架构图:
源码:
主函数
舵机的信号线接单片机P3^7。蓝牙与单片机的TX,RX交错连接
/*Ä£Äâ¶æ»ú¿ØÖÆÔÀí£º0~180¡ã0.5ms-----0¶È1.0ms-----45¶È1.5ms-----90¶È2.0ms-----135¶È2.5ms-----180¶È
*/
#include <REGX52.H>
#include "timer0.h"
#include "Uart.h"sbit SG_PWM=P3^7; //ÐźſØÖÆÒý½Å
unsigned char count=0; //¼Æ´Î ¸³³õֵΪ0
unsigned char PWM_count=0; //0--0¶È£¬2--45¶È£¬4--90¶È£¬6--135¶È£¬8--180¶Èvoid main()
{Timer0_Init();Uart_Init();while(1){}
}void Timer0() interrupt 1 //Ìرð×¢Òâ´Ë´¦£¬0--ÍⲿÖжÏ0£¬1--¶¨Ê±Æ÷ÖжÏ0£¬2--ÍⲿÖжÏ1£¬3--¶¨Ê±Æ÷ÖжÏ1£¬4--´®ÐпÚÖжÏ1
{TL0 = 0x33; TH0 = 0xFE; //ÖØи³¼ÆÊý³õֵΪ0.5mscount++; //¼Æ´Î£¬Ã¿500us count+1count%=40; //ÖÜÆÚΪ20msif(count<PWM_count){ SG_PWM=1;}else{SG_PWM=0;}
}void UART_Routine() interrupt 4 //´®¿ÚÖжϷþÎñº¯Êý
{ if(RI==1) //Èç¹û½ÓÊÕÖжϱê־λΪ1{ P1=SBUF; //·¢Ë͵ÄÊý¾ÝSBUF£¬¸³¸øP1if(P1==0X01) //0x01Õâ¸öÖµ¿ÉÒÔͨ¹ýÀ¶ÑÀµ÷ÊÔÆ÷±à¼Ä£Ê½ÉèÖÃ{ //ͬÑùµÄ£¬ÏÂÃæµÄ0X02,0X03,0X04,,,Ò²ÊÇ¿ÉÒÔͨ¹ýÀ¶ÑÀµ÷ÊÔÆ÷±à¼Ä£Ê½ÉèÖÃPWM_count=1;}if(P1==0X02) {PWM_count=2;}if(P1==0X03) {PWM_count=3;}if(P1==0X04) {PWM_count=4;}if(P1==0X05) {PWM_count=5;}RI=0; //½ÓÊÕÖжϱê־λÈí¼þÇåÁã}
}
串口初始化:
#include <REGX52.H>
void Uart_Init() //9600bps@11.0592MHz
{PCON |= 0x80; //ʹÄܲ¨ÌØÂʼӱ¶ SCON = 0x50; //½ÓÊÕ8λÊý¾ÝTMOD &= 0x0F; //Çå³ý¶¨Ê±Æ÷1ģʽTMOD |= 0x20; //É趨¶¨Ê±Æ÷8Ϊ×Ô¶¯TL1 = 0xFA; //É趨³õʼֵTH1 = 0xFA; //É趨³õʼֵET1 = 0; TR1 = 1;EA = 1;ES =1 ;
}
定时器0初始化:
#include <REGX52.H>
void Timer0_Init()
{TMOD &= 0xF0; //ÉèÖö¨Ê±Æ÷ģʽTMOD |= 0x01; //ÉèÖö¨Ê±Æ÷ģʽTL0 = 0x33; //ÉèÖö¨Ê±³õʼֵTH0 = 0xFE; //ÉèÖö¨Ê±³õʼֵET0 = 1; //´ò¿ª¶¨Ê±Æ÷0µÄÖжÏTF0 = 0; //Çå³ýÒç³öÖжϱê־λTR0 = 1; //¶¨Ê±Æ÷0¿ªÊ¼¼ÆʱEA = 1; //¿ª×ÜÖжÏ
}
总结/大致步骤:
1,用上位机(USB->TTL)将蓝牙模块(预先调至AT指令模式)与电脑USB连接,打开电脑上的串口助手调节通讯波特率与发送方式,按照AT指令集修改蓝牙模块的配置参数
2,把单片机和蓝牙模块对应的引脚用导线连接好,下载好程序,给单片机上电(TX->RX,RX->TX)
3,在手机上搜到蓝牙模块的名称,输入自己设置好的密码,连接后发送指令。
4,在连接单片机之前,依旧可以先用上位机(USB->TTL)将蓝牙模块与电脑USB连接,但是此时蓝牙模块不必调至AT模式,手机连接上以后直接发送数据,在电脑的接受端口如果可以接受到,那么说明配置成功了,下一步连接到单片机上也不迟。
注:手机上一般下载一个蓝牙调试助手,可以向单片机发送数据就行。部分软件有编辑按钮的设置,就是可以自定义某一个按钮发送一个事先定义好的HEX/ASCLL数据
参考博文:https://blog.csdn.net/zx3517288/article/details/52291027
单片机蓝牙模块的使用,以及配置控制舵机的源码相关推荐
- 51单片机蓝牙模块(HC05)运行原理
51单片机蓝牙模块(HC05)及其运行原理 目录 51单片机蓝牙模块(HC05)及其运行原理 一.测试蓝牙模块 二.配置蓝牙模块 三.烧写程序 四.测试 参考博文 一.测试蓝牙模块 在所有工作进行之前 ...
- 模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿
HX711模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿真(文件,文件,文件) 本系统由STC89C52单片机.LCD1602液晶显示.HX711称重传感器. 蜂鸣器报警.按键及电 ...
- 基于51单片机的人体红外探测防盗报警(仿真+源码+全套资料)
资料编号:128 功能说明: 1.按下紧急报警按键,紧急报警灯闪烁,蜂鸣器报警 2.按下布防按键,布防指示灯开始闪烁,闪烁大约30秒,保持亮的状态,进入布防模式 3.按下取消报警/布防按键,取消布防 ...
- 基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料)
资料编号:151 视频讲解: 151-基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料) 采用stm32单片机作为主控,LCD屏幕上部分显示电子日历,下半屏幕显示台历 ...
- B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码
B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码 功能简介: 一.商家入驻体系 B2B2C商城系统可以招商入驻,用户在商城中注册后可以根据要求向平台运营商提供相应的 申请资料,选择商品 ...
- 基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料)
资料编号:133 讲解视频: 133-基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控,LCD1602显示当前温度和可燃气体浓 ...
- 基于stm32单片机有害气体监测检测Proteus仿真(仿真+源码+全套资料)
资料编号:097 检测当前的有害气体浓度,LCD1602显示,并且可以自动打开关闭风扇,也可以通过手动按键打开关闭风扇通风,全套资料齐全,具体功能请看下面演示视频 97-基于stm32单片机有害气体监 ...
- java毕业设计——基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码)——学生信息管理系统模板2
基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+sqlserver的Smart系统-题库及试卷 ...
- 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)
资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...
最新文章
- spine - unity3D(摘自博主softimagewht)
- 所有受限制的应用程序包_【译】使用Blazor构建桌面应用
- 392. 判断子序列 golang 关于布尔类型返回值判断的思考
- gramer法则matlab,线性代数-matlab实验报告.doc
- python3.7安装tensorflow-gpu_tensorflow-gpu安装的常见问题及解决方案
- Linux之常用操作命令总结三
- Polynomial Commitments代码实现【1】——scipr-lab/poly-commit(含不同曲线性能对比)
- 智能人物画像综合分析系统——Day16
- curl 请求日志_CURL常用命令
- CF949A Zebras 构造
- kubeadm构建k8s之Prometheus-operated监控(0.18.1)
- 电子竞技作为一项全新的竞技体育项目,近年来发展迅猛,未来发展趋势
- 新生儿取名:撩人于无形的女宝宝名字,任你挑选
- Java 数字转汉字工具类
- java 发送邮件添加附件,Java实现带附件的邮件发送功能
- 揭秘IPHONE X刷脸认证的技术奥秘
- android模拟power按键,Android adb 模拟滑动 按键 点击事件
- 学前教育专业计算机实训室,【学前教育专业实训室建设方案】
- 【网路编程】网络基础知识(IP、子网掩码、网关等)概念概述
- 计算机高级系统设置打不开,win7高级系统设置打不开的解决方法
热门文章
- 【GD32】GD32设置TIMER0输出PWM
- Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接。
- EfficientNet(ICML 2019)原理与代码解析
- 如何让文字转换成语音
- 蓝牙 - 苹果iOS所支持的profile
- 2022年山东省职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛规程
- ubuntu 16.04 使用五笔拼音输入法
- 南邮 OJ 1531 A ? Sixth Grade Math
- 矢量化图形工具VTracer
- 录播系统的服务器,录播系统服务器ip地址