原理(如下图)

​ 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

单片机蓝牙模块的使用,以及配置控制舵机的源码相关推荐

  1. 51单片机蓝牙模块(HC05)运行原理

    51单片机蓝牙模块(HC05)及其运行原理 目录 51单片机蓝牙模块(HC05)及其运行原理 一.测试蓝牙模块 二.配置蓝牙模块 三.烧写程序 四.测试 参考博文 一.测试蓝牙模块 在所有工作进行之前 ...

  2. 模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿

    HX711模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿真(文件,文件,文件) 本系统由STC89C52单片机.LCD1602液晶显示.HX711称重传感器. 蜂鸣器报警.按键及电 ...

  3. 基于51单片机的人体红外探测防盗报警(仿真+源码+全套资料)

     资料编号:128 功能说明: 1.按下紧急报警按键,紧急报警灯闪烁,蜂鸣器报警 2.按下布防按键,布防指示灯开始闪烁,闪烁大约30秒,保持亮的状态,进入布防模式 3.按下取消报警/布防按键,取消布防 ...

  4. 基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料)

    资料编号:151 视频讲解: 151-基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料) 采用stm32单片机作为主控,LCD屏幕上部分显示电子日历,下半屏幕显示台历 ...

  5. B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码

    B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码 功能简介: 一.商家入驻体系 B2B2C商城系统可以招商入驻,用户在商城中注册后可以根据要求向平台运营商提供相应的 申请资料,选择商品 ...

  6. 基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料)

    资料编号:133 讲解视频: 133-基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控,LCD1602显示当前温度和可燃气体浓 ...

  7. 基于stm32单片机有害气体监测检测Proteus仿真(仿真+源码+全套资料)

    资料编号:097 检测当前的有害气体浓度,LCD1602显示,并且可以自动打开关闭风扇,也可以通过手动按键打开关闭风扇通风,全套资料齐全,具体功能请看下面演示视频 97-基于stm32单片机有害气体监 ...

  8. java毕业设计——基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码)——学生信息管理系统模板2

    基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+sqlserver的Smart系统-题库及试卷 ...

  9. 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)

    资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...

最新文章

  1. spine - unity3D(摘自博主softimagewht)
  2. 所有受限制的应用程序包_【译】使用Blazor构建桌面应用
  3. 392. 判断子序列 golang 关于布尔类型返回值判断的思考
  4. gramer法则matlab,线性代数-matlab实验报告.doc
  5. python3.7安装tensorflow-gpu_tensorflow-gpu安装的常见问题及解决方案
  6. Linux之常用操作命令总结三
  7. Polynomial Commitments代码实现【1】——scipr-lab/poly-commit(含不同曲线性能对比)
  8. 智能人物画像综合分析系统——Day16
  9. curl 请求日志_CURL常用命令
  10. CF949A Zebras 构造
  11. kubeadm构建k8s之Prometheus-operated监控(0.18.1)
  12. 电子竞技作为一项全新的竞技体育项目,近年来发展迅猛,未来发展趋势
  13. 新生儿取名:撩人于无形的女宝宝名字,任你挑选
  14. Java 数字转汉字工具类
  15. java 发送邮件添加附件,Java实现带附件的邮件发送功能
  16. 揭秘IPHONE X刷脸认证的技术奥秘
  17. android模拟power按键,Android adb 模拟滑动 按键 点击事件
  18. 学前教育专业计算机实训室,【学前教育专业实训室建设方案】
  19. 【网路编程】网络基础知识(IP、子网掩码、网关等)概念概述
  20. 计算机高级系统设置打不开,win7高级系统设置打不开的解决方法

热门文章

  1. 【GD32】GD32设置TIMER0输出PWM
  2. Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接。
  3. EfficientNet(ICML 2019)原理与代码解析
  4. 如何让文字转换成语音
  5. 蓝牙 - 苹果iOS所支持的profile
  6. 2022年山东省职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛规程
  7. ubuntu 16.04 使用五笔拼音输入法
  8. 南邮 OJ 1531 A ? Sixth Grade Math
  9. 矢量化图形工具VTracer
  10. 录播系统的服务器,录播系统服务器ip地址