蓝牙模块_蓝牙模块协议 - CSDN
蓝牙模块 订阅
蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块、蓝牙音频模块、蓝牙音频+数据二合一模块等等。一般模块具有半成品的属性,是在芯片的基础上进行过加工,以使后续应用更为简单。 展开全文
蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块、蓝牙音频模块、蓝牙音频+数据二合一模块等等。一般模块具有半成品的属性,是在芯片的基础上进行过加工,以使后续应用更为简单。
信息
外文名
Bluetooth module
用    于
短距离无线通讯
分    为
蓝牙数据模块和蓝牙语音模块
中文名
蓝牙
简    介
集成蓝牙功能的PCBA板
蓝牙模块释义
蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块远程控制模块等。
收起全文
精华内容
参与话题
  • HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢? 因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你...

    HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢?

    因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。

    但是就是这么一个很常见的模块,网上很多的博客写的都是错的,或者都是很不详细的。

    所以本文就介绍一下这款蓝牙通信模块的使用,包括蓝牙模块的调试、手机与蓝牙模块之间的传输、手机蓝牙控制STM32单片机,应该是逐渐深入的一个过程。但是这仅仅是使用,以后有时间应该会对蓝牙有一个稍微深度的学习,而不能仅仅是浮于表面,只会用。

     

    模块名称:HC-05蓝牙串口通信模块

    参考资料:HC-05蓝牙串口通信模块官方资料包

    知识储备:【STM32】串口通信基本原理(超基础、详细版)

    其他模块:USB转TTL模块、手机蓝牙串口助手app

    手机蓝牙串口助手软件,可以点击链接下载:蓝牙串口。因为这是我见过所有手机端界面最好看的了,其他的界面都有点太糟糕了。

     

    蓝牙模块的调试

    准备工作

    USB转TTL模块与HC-05蓝牙模块的接线:

    两模块共地,两模块共VCC(VCC取5V);蓝牙模块的RX接转换模块的TX,蓝牙模块的TX接转换模块的RX。如下图所示:

    这个时候就要将转换模块连接到电脑上,然后利用串口调试助手进行蓝牙模块的调试。

    附可能会用到的驱动:链接:https://pan.baidu.com/s/1bpYLfCr 密码:yabv

    蓝牙模块的调试

    HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式。在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。

    • 当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;
    • 当模块处于命令响应工作模式时能执行AT命令,用户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。

    怎么进入命令响应工作模式?

    进入命令响应工作模式有两种方法:

    • 模块上电,未配对情况下就是AT模式,波特率为模块本身的波特率,默认:9600,发送一次AT指令时需要置高一次PIO11;
    • PIO11 置高电平后,再给模块上电,此时模块进入AT 模式,波特率固定为:38400,可以直接发送AT指令。

    什么叫做置高一次PIO11?

    在蓝牙模块中有一个小按键,按一下就置高一次PIO11。也就是说,第一种方法需要每发送一次AT指令按一次;而第二种方式是长按的过程中上电,之后就无需再管了,直接发送AT命令即可。

    需要注意一下,两种进入命令响应工作模式的方式使用的波特率是不一样的,建议使用第二种方式。

    怎么区分进了命令响应工作模式呢?

    在蓝牙模块上有灯,当灯快闪的时候,就是自动连接工作模式;当灯慢闪的时候,就是命令响应工作模式。

    AT命令

    进入到命令响应工作模式之后,就可以使用串口调试助手进行蓝牙调试了。

    首先有一点,AT指令不区分大小写,均以回车、换行结尾。下面介绍常用的AT指令:

    常用AT指令
    指令名 响应 含义
    AT OK 测试指令
    AT+RESET OK 模块复位
    AT+VERSION? +VERSION:<Param> OK 获得软件版本号
    AT+ORGL OK 恢复默认状态
    AT+ADDR? +ADDR:<Param> OK 获得蓝牙模块地址
    AT+NAME=<Param> OK 设置设备名称
    AT+NAME? +NAME:<Param> OK 获得设备名称
    AT+PSWD=<Param> OK 设置模块密码
    AT+PSWD? +PSWD:<Param> OK 获得模块密码
    AT+UART=<Param1>,<Param2>,<Param3> OK 设置串口参数
    AT+UART? +UART:<Param1>,<Param2>,<Param3> OK 获得串口参数

    对于AT指令,有几点注意:

    • AT+NAME?:获得设备名称,这个AT指令有很大可能性是没有返回的,因为我也看到了很多的例子……,但是其他的指令都是没有问题的,直接设置设备名称就行了;
    • AT+UART?:获得串口参数,串口的参数一共有三个,波特率、停止位、检验位。其取值如下:
    串口参数
    参数名称 取值
    波特率

    2400、4800、9600、19200、38400、5760、

    115200、230400、460800、921600、1382400

    停止位

    0:1位

    1:2位

    校验位 0:NONE  1:Odd  2:Even

    其默认值为:9600,0,0。

    例子:

    本文中,蓝牙串口的波特率设置成115200。之后的内容,就会采用这个波特率来进行通讯了。

     

    手机与蓝牙模块之间的传输

    直接将蓝牙模块与转换模块连接,再讲其连接到电脑上,蓝牙模块直接进入自动连接工作模式。

    此时手机打开蓝牙串口调试应用,用其来连接蓝牙模块。手机蓝牙串口助手软件,可以点击链接下载:蓝牙串口。万分推荐这款,因为界面脱离了那种黑不溜秋的感觉,比较简洁、清爽。

    这个软件的使用:点击界面右下角蓝牙的标志,选择蓝牙进行连接。

    然后在电脑上的调试助手和手机的蓝牙串口调试应用之间就可以相互传输了,比如:

    可以清楚的看到:电脑向手机发送了“hello you”,手机向电脑发送了“hello world”。

     

    手机蓝牙控制STM32单片机

    之前的两个例子都是相比较而言比较简单的,这个例子将会涉及到程序的内容了。

    实现功能:手机通过蓝牙,向STM32单片机发送消息,STM32接收到消息之后原封不动的返回给手机。当然如果掌握了这个例子,也可以修改成,手机发送特定的消息,然后,STM32单片机做出相对应的动作。比如:点亮LED等、发动电机等等。

    连接说明

    使用USART1进行试验,也就是说STM32选取PA9、PA10来和HC-05进行连接。同时手机通过蓝牙来和HC-05进行连接。

    原理就是:手机通过蓝牙传输到HC-05上,再通过串口通信和STM32通信;而之前一般都是电脑上通过USB线转串口的方式,通过串口和STM32通信。本质上没有区别的。

    这个时候就应该更加深刻地体会到了本文开篇的一句话:说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。蓝牙的相关一切都被封装起来了,都不需要接触到。

    STM32控制程序

    #include "stm32f10x.h"
    
     void My_USART1_Init(void)  
    {  
        GPIO_InitTypeDef GPIO_InitStrue;  
        USART_InitTypeDef USART_InitStrue;  
        NVIC_InitTypeDef NVIC_InitStrue;  
          
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIO端口使能  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//串口端口使能  
          
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;  
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;  
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  
        GPIO_Init(GPIOA,&GPIO_InitStrue);  
          
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;  
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;  
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  
        GPIO_Init(GPIOA,&GPIO_InitStrue);  
          
        USART_InitStrue.USART_BaudRate=115200;  
        USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;  
        USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;  
        USART_InitStrue.USART_Parity=USART_Parity_No;  
        USART_InitStrue.USART_StopBits=USART_StopBits_1;  
        USART_InitStrue.USART_WordLength=USART_WordLength_8b;  
          
        USART_Init(USART1,&USART_InitStrue);
          
        USART_Cmd(USART1,ENABLE);//使能串口1  
          
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启接收中断  
          
        NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;  
        NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;  
        NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;  
        NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;  
        NVIC_Init(&NVIC_InitStrue);  
          
    }  
      
    void USART1_IRQHandler(void)  
    {  
        u8 res;  
         if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)  
     {  
         res= USART_ReceiveData(USART1); 	 
         USART_SendData(USART1,res);     
      }  
    }  
       
     int main(void)  
     {    
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
        My_USART1_Init();  
         while(1);  
           
     } 

    这段程序和【STM32】串口相关配置寄存器、库函数(UART一般步骤)中的程序一模一样,几乎没有什么改动。

    区别就是,在UART实验中,USART1是和USB转串口模块连接在一起的,然后与电脑上的串口调试助手进行通信;现在改成USART1是和蓝牙模块连接在一起的,然后和手机上的蓝牙串口调试助手进行通信。

     

    展开全文
  • 蓝牙模块——基础知识介绍

    万次阅读 多人点赞 2020-07-04 11:06:30
    1.数据透传蓝牙模块可以通过串口(SPI、IIC)和MCU控制设备进行数据传输。蓝牙模块可以做为主机和从机。主机就是能够搜索别的蓝牙模块并主动建立连接,从机则不能主动建立连接,只能等别人连接自己。2.低功耗低功耗...

    前言:

    为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。

    在这里插入图片描述


    1. 数据透传

    蓝牙模块可以通过串口(SPI、IIC)和MCU控制设备进行数据传输。

    这里写图片描述

    蓝牙模块可以做为主机和从机。主机就是能够搜索别的蓝牙模块并主动建立连接,从机则不能主动建立连接,只能等别人连接自己。

    2. 低功耗

    低功耗蓝牙(Bluetooth Low Energy),简称BLE。蓝牙低能耗无线技术利用许多智能手段最大限度地降低功耗。

    蓝牙低能耗架构共有两种芯片构成:单模芯片和双模芯片。蓝牙单模器件是蓝牙规范中新出现的一种只支持蓝牙低能耗技术的芯片——是专门针对ULP操作优化的技术的一部分。蓝牙单模芯片可以和其它单模芯片及双模芯片通信,此时后者需要使用自身架构中的蓝牙低能耗技术部分进行收发数据。双模芯片也能与标准蓝牙技术及使用传统蓝牙架构的其它双模芯片通信。

    这里写图片描述

    按应用分为:

    可分为数据蓝牙模块和语音蓝牙模块,前者完成无线数据传输,后者完成语音和立体声音频的无线数据传输。

    3. 蓝牙协议组成

    这里写图片描述

    蓝牙协议体系中的协议按SIG的关注程度分为四层:

    1. 核心协议:BaseBand、LMP、L2CAP、SDP;

    2. 电缆替代协议:RFCOMM;

    3. 电话传送控制协议:TCS-Binary、AT命令集;

    4. 选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE。

    除上述协议层外,规范还定义了主机控制器接口(HCI),它为基带控制器、连接管理器、硬件状态和控制寄存器提供命令接口。在图1中,HCI位于L2CAP的下层,但HCI也可位于L2CAP上层。

    蓝牙核心协议由SIG制定的蓝牙专用协议组成。绝大部分蓝牙设备都需要核心协议(加上无线部分),而其他协议则根据应用的需要而定。总之,电缆替代协议、电话控制协议和被采用的协议在核心协议基础上构成了面向应用的协议。

    4. 蓝牙基本架构

    这里写图片描述

    4.1 底层硬件模块

    (1)无线射频模块(Radio): 蓝牙最底层,带微带天线,负责数据接收和发送。

    (2)基带模块(BaseBand): 无线介质访问约定。提供同步面向连接的物理链路(SCO)和异步无连接物理链路(ACL),负责跳频和蓝牙数据及信息帧传输,并提供不同层次的纠错功能(FEC和CTC)。

    (3)链路控制模块(LC): 蓝牙数据包的编码和解码。

    (4)链路管理模块(LM) :负责创建、修改和发布逻辑链接,更新设备间物理链接参数,进行链路的安全和控制。

    (5)主机控制器接口(HCI): 是软硬件接口部分,由基带控制器、连接管理器、控制和事件寄存器等组成;软件接口提供了下层硬件的统一命令,解释上下层消息和数据的传递。硬件接口包含 UART、SPI 和 USB 等。

    2. 中间协议层

    (1)逻辑链路控制与适配协议(L2CAP): 蓝牙协议栈的基础,也是其他协议实现的基础。向上层提供面向连接和无连接的数据封装服务;采用了多路技术、分割和重组技术、组提取技术来进行协议复用、分段和重组、认证服务质量、组管理等行为。

    (2)音视频发布传输协议(AVDTP)和音视频控制传输协议(AVCTP): 二者主要用于 Audio/Video 在蓝牙设备中传输的协议,前者用于描述传输,后者用于控制信号交换的格式和机制。

    (3)服务发现协议(SDP): 蓝牙技术框架至关重要一层,所有应用模型基础。动态的查询设备信息和服务类型,建立一条对应的服务通信通道,为上层提供发现可用的服务类型和属性协议信息。

    (4)串口仿真协议(RFCOMM): 实现了仿真 9 针 RS232 串口功能,实现设备间的串行通信。

    (5)二进制电话控制协议(TCS): 基于 ITU-T Q.931 建议的采用面向比特的协议,它定义了用于蓝牙设备之间建立语音和数据呼叫的控制信令(Call Control Signalling),并负责处理蓝牙设备组的移动管理过程。

    3. 蓝牙Profile

    Bluetooth Profile 是蓝牙设备间数据通信的无线接口规范。目前有四大类、十三种协议规则,厂商可以自定义规格。几种最常见的 Profile 文件:

    (1)通用访问配置文件(GAP): 其他所有配置文件的基础,定义了在蓝牙设备间建立基带链路的通用方法,并允许开发人员根据 GAP 定义新的配置文件。包含所有蓝牙设备实施的功能,发现和连接设备的通用步骤,基本用户界面等通用操作。

    (2)服务发现应用配置文件(SDAP): 描述应用程序如何用 SDP 发现远程设备服务,可与向/从其他蓝牙设备发送/接收服务查询的 SDP 连接。

    (3)串行端口配置文件(SPP): 基于 ETSI TS 07.10 规格定义如何设置虚拟串行端口及如何连接两个蓝牙设备。速度可达 128kb/s。

    (4)通用对象交换配置文件(GOEP): 可以将任意对象(如图片、文档等)从一个设备传输到另一个设备。

    5. 蓝牙协议栈层次

    这里写图片描述

    5.1. 物理层(PHY):

    射频传输。

    5.2. 链路层(LL):

    控制射频状态,包括等待、广告、扫描、初始化、连接。

    5.3. 主机控制接口层(HCI):

    主机和控制器通信接口。

    5.4. 逻辑链路控制及适配协议层(L2CAP):

    提供数据封装服务,允许逻辑上点对点通信。

    5.5. 安全管理层(SM):

    加解密,为安全连接和数据交换提供服务。

    5.6. 属性协议层(ATT):

    允许设备(服务器)向另一个设备(客户端)展示特定的数据(属性)。

    5.7. 通用属性配置文件层(GATT):

    定义了使用ATT的服务框架,两个建立连接的设备之间的所有数据通信都是通过GATT子程序处理。

    5.8. 通用访问配置文件层(GAP):

    对所有蓝牙设备提供共同的功能,如传输模式和访问程序、协议和应用描述。GAP服务包含设备发现、连接模式、安全、认证、联合模型和服务发现。

    6. 蓝牙传输过程

    6.1. 主从机建立过程

    这里写图片描述

    6.2. 主从通信透传模块

    分为主透传协议模块(MTTM)和从透传协议模块(STTM)。

    MTTM可以工作在透传模式(TTM)和指令模式(CM),工作如下:用户通过AT指令控制模块连接从设备。在成功建立链接后,MTTM自动查找从设备的透传通道,如果从设备属于STTM,MTTM默认进入TTM,否则进入CM。

    透传模式,目的是实现透传或直驱控制功能,主机CPU可以通过通用串口模块与STTM双向通信,MTTM直接将数据转发给STTM,再从STTM串口输出到从机CPU。反向亦可。

    参考:

    1.SKYLAB_无线模块的博客

    2.由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(1)

    3. 蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

    4.通识蓝牙低功耗

    5. nrf51822蓝牙笔记之GAP(通用属性配置文件)解读

    6.蓝牙的初见初识

    7.蓝牙协议分析(5)_BLE广播通信相关的技术分析

    8.Bluetooth LE(低功耗蓝牙) - 第一部分

    展开全文
  • 51单片机与蓝牙模块连接

    万次阅读 多人点赞 2018-02-22 12:17:38
    不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。此次学习用到...

    不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。


    此次学习用到模块是HC-06蓝牙模块,如下图:

    该模块某宝有售,价格约为20RMB。某宝上的HC-06有两种,分别是带引脚不带引脚的,建议新手购买带引脚的。我从试验开始到成功,一共使用了四块蓝牙模块。第一次买的是带引脚的,但是模块本身是坏的;第二次买的是不带引脚的,但是由于自身的焊功有限,导致模块损坏,无法使用;第三次是朋友送的蓝牙4.0,由于某些原因无法使用,在此也特别感谢朋友送我蓝牙;第四次购买,就是上图所示的蓝牙,才最终完成了试验。

    总结:在某宝购买时,最好货比三家,虽然模块不值钱,但是在购买过程遇到问题会耽误时间,影响开发,非常麻烦。

    单片机用了两个,分别是新手常用的开发板还有一个单片机最小模块,两者有什么区别我稍后会说明。

    开发板:


    单片机最小模块:


    我特别标注了两者的晶振,分别为12MHZ11.0594MHZ,就是晶振的不同导致我在学习中问题的发生。以下是学习试验过程。


    蓝牙模块的调试:

    接线,蓝牙模块的RX接转换模块的TX蓝牙模块的TX接转换模块的RX,如下图所示:


    接入电脑,在PC端下载好串口调试助手,软件自搜,此处不再赘述。

    附可能会用到的驱动:链接:https://pan.baidu.com/s/1bpYLfCr 密码:yabv

    进入到调试助手,其实基本不怎么用调参数了,蓝牙模块基本都默认设置好波特率为9600,因此直接启动软件调试即可。具体调参数的方法可以自行百度其他文章,都有很详细的介绍。

    启动串口,成功后左下角显示成功:


    发送AT指令,返回OK:


    表明串口正常,此时用手机连接蓝牙模块。手机端也是用到调试助手,请自行下载。

    搜索蓝牙模块:

    备注:我的蓝牙模块此前已经被我改名为Ezio,未改名前默认为HC06。


    连接成功:


    尝试发送消息hello:


    此时在PC端的串口助手上,可以收到来自手机端发送的消息:


    在此说明一点,在蓝牙模块上电以后,模块上的LED灯为闪烁状态,此时处于从机模式,与手机成功连接后,LED灯会变为常亮。自此,蓝牙模块调试成功,可以与单片机连接进行试验


    蓝牙模块与51单片机接线:

    和连接转换模块一样,蓝牙模块的RX连接单片机的TX,蓝牙模块的TX连接单片机的RX,此处说明单片机的RX和TX引脚分别为P3.0和P3.1,如图(图片来自网络):


    正确接线后,向单片机中写入程序,程序如下:

    #include <reg52.h>
    
    sbit P1_0 = P1^0;	//测试口,可用可不用
    sbit P1_3 = P1^3;	//输出口
    
    unsigned char tempbuf;	//存储接收到的信息
    
    /*初始化串口*/
    void BlueteethInit()
    {
    	SCON = 0x50;	//串口模式1,允许接收
    	TMOD = 0x20;	//T1工作模式为2,自动重装
    	PCON = 0x00;	//波特率不倍增
    
    	REN = 1;
    
    	TH1 = 0xfd;		//设置波特率为9600
    	TL1 = 0xfd;
    
    	RI = 0;
    
    	EA = 1;
    	ES = 1;
    
    	TR1 = 1;
    }
    
    void main()
    {
    	BlueteethInit();
    	P1_0 = 0;
    	P1_3 = 0;
    	TI = 0;
    	while(1)
    	{
    		if(tempbuf == 0x31)	//可以使用
    			P1_3 = 1;
    		if(tempbuf == 0)	//不可以使用
    			P1_3 = 0;
    		if(tempbuf == 'A')	//可以使用
    			P1_3 = 1;
    		if(tempbuf == 'B')	//可以使用
    			P1_3 = 0;
    	}
    }
    
    void Serial(void) interrupt 4
    {
    	tempbuf = SBUF;
    	RI = 0;	//读标志清零
    	SBUF = tempbuf;	//将内容返回到手机端,可在手机查看发送的内容
    	while(!TI);
    	TI = 0;	//写标志清零
    }

    该程序为最简单的测试程序,利用蓝牙接收手机发来的信息,控制P1.3口输出高或者低电平,以测试是否正确接收到信息。


    第一步,用蓝牙模块与开发板接线,并成功用手机与蓝牙模块连接,尝试发送信息,过程如图所示:


    无论是发送数字或者是其他字符,都可以看见返回的是乱码,因此可以知道,单片机接收的也是乱码,故程序中的判断:

    while(1)
    	{
    		if(tempbuf == 0x31)	//可以使用
    			P1_3 = 1;
    		if(tempbuf == 0)	//不可以使用
    			P1_3 = 0;
    		if(tempbuf == 'A')	//可以使用
    			P1_3 = 1;
    		if(tempbuf == 'B')	//可以使用
    			P1_3 = 0;
    	}

    无法正确执行,P1.3口自然也无法根据需要来输出高或者低电平。

    第二步,用蓝牙模块与单片机最小模块接线,成功用手机连接收尝试发送信息,如下图所示:


    可见,此时返回的内容与发出的内容相同,经测试此时程序也可以正确执行,使用万用表可以检查出P1.3口输出电平的变化,表明此时蓝牙模块可以正常使用。

    特别说明:

    if(tempbuf == 0x31)	//可以使用
    	P1_3 = 1;
    if(tempbuf == 0)	//不可以使用
    	P1_3 = 0;

    当发送数字消息时,应为十六进制,因此在判断时,如接收到1,应判断是否等于0x31,而不是判断是否等于1。此处经过测试,发送1时,判断tempbuf == 0x31,该判断有效;当发送0时,判断tempbuf == 0,判断无效。判断字符加单引号即可。

    第三步,为什么使用两个相同的单片机会导致结果不同?这也是困扰了我很久的问题,后来经过检查,才知道原来就是晶振的问题。此处PO一下大神关于晶振的说明,暂时未看懂:https://www.zhihu.com/question/30930577

    但可以得出的结论就是,如果使用串口通信,应使用的晶振为11.0594MHZ,否则可能出现乱码的情况。

    另附:开发板上的晶振如图:


    是可以更换的,某宝也有售,可以根据需要的晶振购买。


    展开全文
  • 蓝牙模块使用

    千次阅读 2018-08-01 15:25:48
    EN接上USB转TTL的VCC或者3.3V,再长按蓝牙模块上的那个键,上电,红灯一秒钟闪一下即进入了AT模式) AT+ORGL\r\n (\r\n即回车、换行,或者在串口调试助手上输入AT+ORGL再按下回车即可)   配置蓝牙串口模块 1、...

    EN接上USB转TTL的VCC或者3.3V,再长按蓝牙模块上的那个键,上电,红灯一秒钟闪一下即进入了AT模式)

    AT+ORGL\r\n (\r\n即回车、换行,或者在串口调试助手上输入AT+ORGL再按下回车即可)

     

    配置蓝牙串口模块

    1、让蓝牙串口模块进入命令设置状态,具体操作是:按着模块上唯一的按键不放,用USB接口给模块上电,这时正确的情景是模块上的LED灯是长亮几秒后熄灭再循环的。如果出现灯快速闪烁的情况,证明模块并未进入命令设置状态,断电重复上述操作即可。

    2、模块串口通过USB转串口与电脑连接。

    3、打开电脑设备管理查看ch相应串口号。chua串口助手打开串口、设置波特率

    4、发送相应命令测与设置

    在“蓝牙测试软件”的右边输入你要配置的信息,主要的常用信息便是:

    ①  设备名称:就是你想给蓝牙串口模块上的蓝牙命名,支持中英文;这里设置为“Bluebooth”;

    ②  主从角色:就是模块的角色,这里选“从角色”;

    ③  设备类:就是蓝牙设备类型,这里设置为COD:

    ④  连接密码:就是指与其他蓝牙设备连接时需要对方输入匹配的密码,这里设置为“1234”,可支持至少8位的长度,字母与数字混合;

    ⑤  查询访问码:设置成通用查询访问码9e8b33;

    ⑥  连接模式:主从和回环模式选择,这里选“从角色”;

    ⑦  查询访问模式:选0或1,0是标准模式,1是RSSI加强模式,可以连接多个设备,这里选1;

    ⑧  通信波特率:在常用的波特率里选择,由于手机通信波特率是9600,所以建议这里选择9600;

    最后点击“更新模块信息”关闭软件。

    (5)  把蓝牙串口模块的串口与电脑断开连接,断电,再重新给模块上电,注意这时候不需要按着模块上的按键,直接上电即可,然后与电脑串口连接;可以看到的正确现象是模块上的LED灯是比较快地闪烁的。

     

    也就是说,配置完成后就可以直接通信了,xi相当于串口线???

    接收信息、发送信息就像串口线,直接对蓝牙串口读写

     

    1、 [AT模式]两个蓝牙模块的PIO11接VCC,上电后即进入AT指令模式,都用USB转TTL模块连接到电脑的USB接口。(笔者这里是蓝牙模块的EN连接3.3V)

    2、[打开串口调试助手]开启2个串口调试窗口,一个打开蓝牙A的COM15口,一个打开蓝牙B的COM14口。(默认波特率一般为38400,数据位为8,停止位为1)

    3、[恢复A默认设置]串口调试助手A,端口为com15,将蓝牙A恢复默认设置:AT+ORGL\r\n (\r\n即回车、换行,或者在串口调试助手上输入AT+ORGL再按下回车即可)

    4、[设置A配对码]串口调试助手A,配置蓝牙A的配对码:AT+PSWD=1234\r\n,(蓝牙A与蓝牙B的配对码相同,这样才能成功配对)

    5、[设置A主模式]串口调试助手A,将蓝牙A配置为主机模式:AT+ROLE=1\r\n

    6、[恢复B默认设置]串口调试助手B,将蓝牙B恢复默认设置:AT+ORGL\r\n

    7、[设置B配对码]串口调试助手B,配置蓝牙B的配对码与蓝牙A一致:AT+PSWD=1234\r\n

    8、[设置B从模式]串口调试助手B,将蓝牙B配置为从机模式:AT+ROLE=0\r\n

    9、[查询B地址]串口调试助手B,查询蓝牙B的地址:AT+ADDR?\r\n (如:+ADDR:98d3:37:90efca)

    10、[蓝牙A绑定蓝牙B]串口调试助手A,蓝牙A绑定蓝牙B地址: 
    AT+BIND=98d3,37,90efca\r\n(注意把地址的冒号换成逗号)

    11、[常规工作模式]2个模块的PIO11引脚都接地,重新上电后进入常规工作模式,自动完成配对。之后,串口调试助手A和串口调试助手B就能互传数据了。(笔者这里是直接将EN脚置空)

    注意:确保2个蓝牙模块的配对码(PSWD)相同,都上电后两个模块会自动相连。 
    (蓝牙的连接模式默认是:0——指定蓝牙地址连接模式,这样蓝牙A才能自动连接绑定的地址,如果不是模式0,设置为模式0:AT+CMODE=0 [查询指令:AT+CMODE?])

    两个模块波特率及格式相同

    密码相同

    一个为主机模式,一个为从机模式

    连接方式都设置为地址连接 绑定对方地址

     

    AT命令的详细说明
    1, AT+ROLE设置主从模式: AT+ROLE?是查询主从状态;AT+ROLE=1是设成主, AT+ROLE=0
    是设成从, AT+ROLE=2设成回环角色(Slave-Loop(回环角色)——被动连接,接收远
    程蓝牙主设备数据并将数据原样返回给远程蓝牙)。
    2, AT+RESET:HC-05复位
    3, AT+VERSION?:获取HC-05的软件版本号,只能获取,不能修改。
    4, AT+ORGL:恢复出厂默认设置,当把模块设置乱了,使用此命令进行恢复默认值。
    5, AT+ADDR?:获取HC-05的蓝牙地址码,只能获取,不能修改。
    6, AT+NAME? :获取HC-05的名字,AT+NAME=BSP-06,修改模块的名字为BSP-06,具体
    名字自行修改。
    7, AT+CLASS?:设置查询设备的类型,尽量不要去修改此参数。默认是1F00。
    8, AT+IAC?:查询设置查询访问码,默认是9E8B33,尽量不要去修改此参数。
    9, AT+PSWD? :查询设置配对密码,AT+PSWD=”0000”,密码要有双引号,密码是四位数字.
    10, AT+UART: AT+UART?是查询当前模块的波特率, AT+UART=波特率是设置.
    11, AT+CMODE: AT+CMODE?是查询当前连接模式。 AT+CMODE=0, 1, 2(0——指
    定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置) 1——任意蓝牙地址连接模
    式(不受绑定指令设置地址的约束) 2——回环角色(Slave-Loop) 默认连接模式:
    0)。
    12, AT+BIND:AT+BIND?查询当前绑定地址,AT+BIND=NAP, UAP, LAP(用逗号隔开)。
    13, AT+RMADD:从蓝牙配对列表中删除所有认证设备.
    14, AT+STATE? :获取蓝牙模块工作状态.
    15, AT+LINK=NAP,UAP,LAP:与远程设备建立连接。
    16, AT+DISC:断开连接.
    17, AT+RNAME? NAP, UAP, LAP:获取远程蓝牙设备名称.
    18, AT+ADCN?:获取蓝牙配对列表中认证设备数。
    19, AT+MRAD?获取最近使用过的蓝牙认证设备地址。
    20, AT+INQM:设置查询模式,AT+INQM=1, 9, 48(1-带RSSI信号强度指示,9-超过9个
    蓝牙设备响应则终止查询,48-设定超时为48*1.28=61.44秒)
     

    1 AT+NAME="XXX"           修改蓝牙模块名称为XXX
    2 AT+ROLE=0               蓝牙模式为从模式
    3 AT+CMODE=1              蓝牙连接模式为任意地址连接模式,也就是说该模块可以被任意蓝牙设备连接
    4 AT+PSWD=1234            蓝牙配对密码为1234
    5 AT+UART=9600,0,0        蓝牙通信串口波特率为9600,停止位1位,无校验位
    展开全文
  • (1)安卓手机与蓝牙模块联合调试(一)——蓝牙模块的串口通讯  (2)安卓手机与蓝牙模块联合调试(二)—— 单片机蓝牙控制LED灯亮灭(上) (3)安卓手机与蓝牙模块联合调试(三)—— 单片机蓝牙控制LED灯亮...
  • ATK-HC05蓝牙模块的详细说明

    万次阅读 2013-12-20 00:30:31
    前段时间买了个ATK的HC05蓝牙模块。HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了...
  • 蓝牙模块基础知识介绍

    千次阅读 2019-03-11 12:21:58
    蓝牙模块基础知识介绍 随着近年来蓝牙技术的不断发展,在功耗不断降低的情形下,蓝牙的传输速率也不断地得到提高,使蓝牙的应用范围更加广泛。但若想设计一套完善的蓝牙系统,就必须充分掌握蓝牙的相关技术知识,如...
  • 手机蓝牙和蓝牙模块进行通信

    千次阅读 2019-07-02 11:04:54
    公司项目,需要开发一个,手机蓝牙通过蓝牙模块和传感器通信的软件 手机app: 我是先看了android官网关于蓝牙这方面的知识(https://developer.android.com/guide/topics/connectivity/bluetooth), 然后...
  • 4.0低功耗蓝牙解决方案

    万次阅读 2012-08-22 14:09:04
    4.0低功耗蓝牙解决方案 蓝牙汽车DVD模块 蓝牙车载免提模块 蓝牙音箱模块 蓝牙数据传送模块 蓝牙音频模块 蓝牙适配器模块 蓝牙音箱 电脑蓝牙模块 蓝牙个人数字助理模块 蓝牙PDA模块 蓝牙电脑配件模块 蓝牙无线接入
  • HC-05蓝牙模块使用教程

    万次阅读 多人点赞 2018-08-07 08:03:07
    嵌入式蓝牙串口通讯模块(简称蓝牙模块)具有两种工作模式:命令响应工作模式和自动连接工作模式。 当模块处于命令响应工作模式(或者AT模式)时能才能执行 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制...
  • 蓝牙模块HC-08——连接

    万次阅读 热门讨论 2018-07-18 12:44:41
    最近有个项目要用到蓝牙,所以在网上买了蓝牙透传模块回来试一试。  一开始买的HC-05,但是这款淘宝上...然后又一番搜索后,买了HC-08的蓝牙模块。 正好身边有USB toTTL模块,然后跳线直接连接上蓝牙模块。 刚...
  • Mac重置蓝牙模块

    万次阅读 2018-07-02 11:21:28
    Mac重置蓝牙模块最近因为使用mac连接蓝牙耳机,声音出现口吃,断断续续的。 网上找了修改了部分配置,隔天回来发现蓝牙触摸板不能点击了。只好重置Mac蓝牙模块的相关配置。一、 系统偏好设置 –> 蓝牙在底部找到 ...
  • 如果要使用HC05进行通信的话,配置... HC05蓝牙模块的AT模式设置的方法有以下三种: 一、默认设置 模块工作角色:从模式 串口参数:38400bits/s 停止位 1位 无校验位 配对码:1234 设备名称:HC-05 连接模...
  • Arduino使用HC05蓝牙模块与手机连接

    万次阅读 多人点赞 2017-09-18 10:32:16
    进入 At 模式进行蓝牙基本参数设置想要使用 Arduino 的蓝牙模块,首先要对蓝牙模块进行基本参数设置。基本参数设置主要包含:蓝牙名称、模式以及匹配密码等。设置蓝牙模块可以使用 USB-TTL 连接电脑使用串口调试软
  • 如何让蓝牙模块进入AT模式(避坑)

    万次阅读 2018-05-13 12:21:42
    首先我们要确保电脑能够配对蓝牙模块。之前一直觉得win10很坑爹的一点就是:明明配对成功却连接不上蓝牙模块!不能自动连接蓝牙....当然,如果要进入AT模式,是不能在连接蓝牙模块下进行的。也就是说我们必须要先...
  • HC-05 蓝牙模块的调试与使用

    万次阅读 2015-06-18 23:03:14
    蓝牙模块BT-HC05模块是一款高性能的蓝牙串口模块。 1、可用于各种带蓝牙功能的电脑、蓝牙主机、手机、PDA、PSP等智能终端配对。  2、宽波特率范围4800~1382400,并且模块兼容单片机系统。  3、当主从模式...
  • 使用蓝牙模块也有段时间了,更新…… 现在市面上用的蓝牙芯片大部分是ble的了,也就是低功耗透传模式。最近用到蓝牙SOC(片上系统),和大家分享下。 我们平时用蓝牙,一般是单片机的串口与蓝牙的串口连接,实现...
  • WIFI和蓝牙无线模块的应用小结

    千次阅读 2017-09-25 18:45:56
    最近的项目上有需要无线模块连接手机APP,实现一些配置功能,蓝牙模块和wifi模块都有用到,蓝牙模块用的是YHD-BT421,是基于tlsr8266蓝牙芯片实现的,WIFI模块用的是ESP8266。蓝牙模块 蓝牙传输距离大约为10米,...
  • HC-06蓝牙模块设置与使用

    万次阅读 2016-11-28 10:19:25
    由于项目需要用到Android手机控制单片机,所以用到了HC-06蓝牙模块(一下简称蓝牙模块),找了一些网上的参考资料发现好像不太全,折腾了半天才弄好,因此出此文记录一下,也希望能帮助到有需要的朋友. 本文主要介绍蓝牙...
  • HC05蓝牙模块(主从一体)简单使用

    万次阅读 2017-10-31 20:12:31
    按住蓝牙模块上的按键,再接通电源,进入AT指令模式,可以进行AT指令设置 引脚连接PA2(TX) -RX PA3(RX) -TX +5V VCC GND GND EN引脚不用接 打开串口调试助手,发送AT指令注意:这个和esp8266一样,需要回车...
1 2 3 4 5 ... 20
收藏数 29,664
精华内容 11,865
关键字:

蓝牙模块