公司项目用到蓝牙和硬件通讯,APP正在开发,弄一个微信小程序蓝牙通讯的demo,可能后期会有微信蓝牙的项目,第一次搞,遇到2个坑: 1.安卓和苹果获取的硬件服务UUID顺序不同 2.目前用的这一版 “启用低功耗蓝牙设备特征值变化时的 class="msg1">消息:{ { msg1 }}</text> <button type="primary" class="button" bindtap="lanya1">1初始化蓝牙适配器 </button> <button type="primary" class="button" bindtap="lanya2">2本机蓝牙适配状态</button> <button type= :{ { jieshou }}</text> </view> <button type="primary" class="button" bindtap="lanya0">0断开蓝牙连接 , }) }) } }) }, // 本机蓝牙适配器状态 lanya2
一、简介 BT401支持双模蓝牙,所以可以很轻松的支持蓝牙BLE 。因为支持了BLE,所有就支持了BLE的HID。 也就是蓝牙的键盘、鼠标设备 注意,这里BLE的HID是可以回连手机的 2.1串口指令和测试的效果 1、AT+HD123456789aBcS 其中:AT+HD是命令 ,123456789aBcS是需要发送的数据 2、其他所有的指令参考标准的即可,包括设置波特率,设置HID的蓝牙名等等操作,这里我们已经屏蔽掉了蓝牙音频部分。 2.2 硬件说明 1、这里拿出模块的PC1脚位,也就是模块的14脚,未连接输出高电平,连接成功输出低电平 2、其他不用的引脚直接悬空即可 3、模块广播中,功耗在22ma。 如果需要更低功耗,则需要关闭模块供电 三、总结 未完待续。。。。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
问题描述 很是开心的一天,沉下心来,和同学一起编写调试了蓝牙信号接收模块—虚拟示波器,实现了数据接收、保存以及可视化等功能,具体如下所示;在这个过程中,结实了优秀的小伙伴,号称获得过物联网比赛一等奖(湖北赛区 ),另外远程与同学合作默契,项目推进快速高效,回顾这两周的时光,第一感觉是感谢~最后,香港大学田师兄对蓝牙数据接收模块进行了测试,后期将依据反馈问题进行优化更改~ http://mpvideo.qpic.cn 10002&support_redirect=0&mmversion=false 感觉大家凝聚在一起,做一个简单的事情,还是由衷的开心,可能把本科缺少的那段时光补回来了一些些,~附:本项目中发现:1、HC-05蓝牙模块的脆弱性 个人理解,主要的原因有:1、能够将信号处理算法与硬件电路集成到一起,从系统的角度提高测量精度;2、能够定制页面布局,在满足需求的前提下,避免系统冗余,给用户带来更好的交互体验; 上图分别展示了现有的蓝牙接收模块 spp方式进行数据传输,后期可以进行相应的拓展,实现ble蓝牙模块的数据交互; 附1、个人理解:好像很多事情的本质都是效率问题,企业如何运作效率最高,能够给员工、社会带来最大化利益;有没有一种更优的方式
笔电的话需要USB转串口模块,卖蓝牙模块的店也同样会卖 接线方面: 主要就是VCC(3.3~5V),GND接好即可.同时蓝牙TXD与串口RXD相接,蓝牙RXD与串口TXD相接,还有一个引脚为KEY,接高电平时会进入 AT指令模式,波特率也会固定在38400,在AT指令模式下可以对蓝牙模块作很多的控制,具体指令集可以在百度文库中搜索. 软件方面: python方面并不自带串口API,需要在其项目主页下载pyserial模块并安装即可. http://pyserial.sourceforge.net/ "蓝牙初始化..." : +VERSION:2.0-20100601 蓝牙初始化...
背景 pos机上可用的资源很多,之前已经查过12864屏幕了,现在来看下蓝牙模块。 检索过程 谷歌检索661SBG,有如下的网页 ? 可知该模块具体使用的芯片与TC35661SBG-203,EL相似, Part Status Discontinued at Digi-Key Type TxRx Only RF Family/Standard 最终结论 该模块资料可能没有那么全,还需要进一步检索。 从数据手册可知,该芯片内部是一个arm7,与主机有多种连接方式;从pos机pcba板的测试点上来看,为uart或者usb的概率比较大。 ? 东芝有开发板供测试蓝牙芯片的功能,那么可以从该开发板上获取相关代码。 ?
硬件电路连接相关能力 C语言基础能力 STM32定时器、中断、串口等基础知识 查阅相关元件开发手册的能力 一定的动手能力 准备材料 正点原子STM32精英开发板(STM32F103ZET6)、LM2596降压模块 、HC-06蓝牙模块、MG995系列180度舵机、L298N电机驱动、任意品牌遥控车车架带电机、12V聚合物锂电池一块 部分原始材料图片 程序设计思路 STM32利用L298N电机驱动模块控制前后两路直流电机 TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//使能或者失能TIMx在CCR1上的预装载寄存器 TIM_Cmd(TIM3,ENABLE); } HC_06蓝牙模块用于通信 手机遥控界面 ((((安卓的SPP蓝牙串口))))) 个人认为这款蓝牙助手用于开发界面简洁高效,推荐一波!
一、HC-05蓝牙模块介绍 HC-05是一款主从一体式串口蓝牙模块,使用时无需理解复杂的蓝牙协议,把它当作普通串口使用即可,串口通信为透传模式,由于它同时支持主从机模式,所以任意两个蓝牙模块之间都是可以通信的 ,下文将介绍如何使用两个蓝牙模块进行主从机通信。 注意:HC-05属于经典蓝牙2.0版本,与BLE蓝牙区别很大,由于BLE蓝牙没有向下兼容,所以是无法和HC05通信的。 三、AT指令与错误码 不同型号的蓝牙模块支持的AT指令集不一样,有些厂家可能“偷懒”,很多AT指令没有实现,因此需要以蓝牙模块的手册为准。 另外,AT指令必须以“\r\n”结尾,且必须大写。 只要保证主从机配对码一致即可) AT+PSWD=1234\r\n #配对码配置为1234 AT+ROLE=0\r\n #从机机模式 以上配置可以在电脑端通过串口调试助手配置好,然后单片机接上蓝牙模块即可
HC-05是一个蓝牙模块,连接到微控制器的串行端口,允许微控制器通过蓝牙连接与其他设备通信。 HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作 模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave) 和回环(Loopback) 通过控制模块外部引脚 (PIO11)输入电平,可以实现模块工作状态的动态转换。如图是蓝牙模块实物图。 HC-05的主要工作是为项目添加双向(全双工)无线功能。 建立连接后,数据通过HC-05传输并转换为串行流,然后由模块连接的微控制器读取该串行流。从微控制器发送数据的方式相反。如下图所示是HC-05蓝牙模块原理图。 最后,分享蓝牙模块相关资料,资料截图如下图所示。
今天分享一个实践项目——HC05蓝牙模块的编程。 实现的目标是利用蓝牙模块,实现手机与单片机通信,在手机上点击按钮,点亮单片机上面的小灯。 使用到的器件是HC05蓝牙模块,单片机(51或者stm32都可以),杜邦线若干。手机端的调试工具为“蓝牙串口助手app” ? ? 先稍微介绍一下HC05蓝牙模块,管脚如下: ? HC05 蓝牙串口模块所有功能都是通过 AT 指令集控制,比较简单,该部分使用的详细信息,请参考 HC05 蓝牙指令集。今天主要是介绍建立通信的过程,对于模块具体的一些其他方面的应用暂时不多说。 HC05 蓝牙串口模块有两种状态,一种是AT指令状态,一种是连接状态。在AT指令状态下,可以向模块发送一些指令,退出AT状态后,可以与蓝牙设备比如手机建立连接。 二、整体编程思路 蓝牙模块接收手机发送的信号,将信号通过串口发送给单片机,单片机接收到信号后,执行相应的操作。
HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢?
因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。
所以本文就介绍一下这款蓝牙通信模块的使用,包括蓝牙模块的调试、手机与蓝牙模块之间的传输、手机蓝牙控制STM32单片机,应该是逐渐深入的一个过程。 蓝牙模块的接线:
两模块共地,两模块共VCC(VCC取5V);蓝牙模块的RX接转换模块的TX,蓝牙模块的TX接转换模块的RX。
直接将蓝牙模块与转换模块连接,再讲其连接到电脑上,蓝牙模块直接进入自动连接工作模式
此时手机打开蓝牙串口调试应用,用其来连接蓝牙模块。
❌ 为什么一个设备上两个 App 无法通过“蓝牙配对”通信?原因一:蓝牙硬件限制蓝牙模块是物理设备通信的媒介,一台设备只有一个蓝牙模块,无法自己与自己通信(不像进程间通信那样灵活)。 为什么 蓝牙模块不能和本机自己配对通信?✅ 简单一句话: 蓝牙通信是设计用于两个 物理不同设备 之间的无线通信协议,本身不支持“本地自配对”或“自连接”。 从几个角度解释为什么“蓝牙模块不能和自己配对”:① 蓝牙协议规范设计的出发点 蓝牙协议(BT Classic、BLE)设计就是点对点通信 一端是主设备(master / client) 一端是从设备 (slave / server) 它默认前提是:两个独立的物理设备,每个设备有独立的蓝牙控制器(蓝牙芯片、地址、收发天线) 蓝牙模块不能“自己收发给自己”,就像你不能用一个对讲机同时接收和发送给自己 TCP/UDP 方式模拟串口虚拟串口 / 虚拟蓝牙服务模拟蓝牙数据层,内部通过接口调用✅ 总结问题是否支持原因蓝牙模块配对自己(同一设备)❌ 不支持蓝牙协议、Android 栈、物理限制不同设备蓝牙配对通信
实现的功能说明 设备作为经典蓝牙主机, 然后连接蓝牙名字为 ESP32_SLAVE_BT 的从机设备; 设备连接上从机蓝牙之后, 把蓝牙接收到数据通过CAN总线输出; 设备从CAN总线接收的数据通过蓝牙发送给蓝牙从机 , 烧录上 BT_CAN_SLAVE 工程作为模拟一台蓝牙从机设备 3,提示,如果用户有蓝牙设备,可以直接下载这节的工程连接自己的设备进行测试, 在下面修改为自己的设备的蓝牙名字. 4,我这边就用两个设备进行下载测试演示 数据 点击发送以后会发现接着会收到数据; 实际上是设备接收到CAN数据以后,通过蓝牙发送给了蓝牙从机设备 由于我上面做的模拟的蓝牙从机设备接收到数据以后会直接返回接收的数据, 设备把接收到的蓝牙数据通过 =0; /*缓存蓝牙接收的数据*/ uint8_t BtRcvBuf[100]; uint8_t BtRcvBufCnt=0; uint8_t BtConnectedFlag=0;//蓝牙连接状态 uint8 2,蓝牙接收的数据通过CAN总线输出 3,CAN总线接收的数据通过蓝牙发送
实现的功能说明 设备作为经典蓝牙从机, 使用蓝牙调试助手作为蓝牙主机; 蓝牙调试助手和经典蓝牙设备配对并连接,然后通过蓝牙发送数据给设备,设备接收到数据通过CAN总线发送; 设备从CAN总线接收的数据通过蓝牙发送给蓝牙调试助手 往下找到对应的库,然后点击安装 2,打开这节的工程(放到非中文目录打开) 3,使用Type-C数据线连接上设备 4,选择设备对应的端口号(根据自己的选择) 5,当前设置的CAN速率为250K, 设备蓝牙的名字为 ESP32_SLAVE_BT 6,点击下载 7,连接CAN设备(我使用的CAN数据测试仪) 8,打开手机蓝牙页面, 点击连接配对设备的蓝牙 9,安装手机蓝牙调试助手APP 10,点击这个(这边这个是测试经典蓝牙 ) 11,点击 12,蓝牙调试助手通过蓝牙发送数据给设备 把16进制数据 01 01 02 03 04 通过蓝牙发送给设备 可以在CAN 总线上接收到数据, 说明设备把蓝牙接收的数据转发到了CAN 13,使用CAN测试仪, 通过CAN总线发送数据给设备 可以在手机蓝牙APP上接收到数据, 说明设备把CAN接收的数据转发到了蓝牙上 程序说明 程序都有注释,只说下注意的地方 CAN总线最多一次传
之前两篇都是在说与手机的连接,连接方法,和主动配对连接,都是手机与手机的操作,做起来还是没问题的,但是最终的目的是与单片机的蓝牙模块的通信。 下面是到目前为止尝试的与单片机的通信方法,没有成功,但是从思路上来说没有问题,最大的问题是与单片机配对的时候,单片机的蓝牙模块的PIN配对码是写死的,固定为1234, 而手机这边连接配对都是自动生成的PIN 配对码,这种方式在手机与手机配对的时候是极为方便的,但是在这里与单片机连接却成了最大的问题,因为手机自动生成而且每次都不一样,所以没法与单片机蓝牙模块的1234相同也就没法陪对了。 在这个上面我现在在想,是否通过判断搜索到的设备类型来识别单片机蓝牙模块与手机蓝牙的不同,采取不一样的配对方式,从而不自动生成配对码。不知是否可行,一会尝试。 网上的例子,包括谷歌的例子提供的uuid,通用的”00001101-0000-1000-8000-00805F9B34FB”也试过了,在配对的时候都是自动生成了配对码,也无法正常与单片机的蓝牙模块连接,
继上一篇 Android系统源码剖析(一)---Settings 接着来介绍一下设置中某个模块的源码,本文依旧是基于Android4.42源码进行分析,分析一下蓝牙模块的实现。 ZERO,蓝牙模块的fragment及其配置 1>,首先由Settings_headers.xml文件可以知道,蓝牙对应的fragment为BluetoothSettings.java,对应的 好了,属性配置就介绍到这儿了,接下来要真正开始蓝牙模块的学习了,首先明确模块的布局,蓝牙模块的功能,蓝牙实现的有:开启蓝牙,蓝牙重命名,蓝牙检测性及检测时间设置,扫描附近可用蓝牙设备,加载已经配对的蓝牙设备 TWO,蓝牙模块方法简介 蓝牙模块打开后执行流程getHelpResource()---->addPreferencesForActivity()--->onCreateView()--->initDevicePreference 3>,已配对设备列表 见下一篇 Android4.42-Setting源码分析之蓝牙模块Bluetooth(下)
接着上一篇 Android4.42-Settings源码分析之蓝牙模块Bluetooth(上) 继续蓝牙模块源码的研究 THREE,蓝牙模块功能实现 switch的分析以及本机蓝牙重命名和可见性的分析见上一篇 ,接下来进行第三章第三部分的介绍:关于蓝牙远程设备列表的加载。 4>,蓝牙搜索附近可用设备 搜索功能流程如下:首先检测蓝牙是否开启,如果开启检测是否正在搜索,如果正在搜索则不做处理,如果未开启搜索则开启搜索 程序中的设置是如果蓝牙未开启或者正在搜索的话搜索设备按钮不可用 i>,本地蓝牙相关 获取本地蓝牙适配器:BluetoothAdapter.getDefaultAdapter(); 开启蓝牙:BluetoothAdapter----enable(). 各种广播相关参考网址,这是一个API在线文档,解释的很清楚 http://www.android-doc.com/reference/android/bluetooth/BluetoothDevice.html 2>,蓝牙模块源码中涉及到的类
一、简介蓝牙发射模块 蓝牙耳机连接是如何操作的以BT321F模块为例因为蓝牙音频类的产品,基本上大体分为三类第一类:蓝牙耳机,包括:tws无线耳机,如airpods,头戴耳机如bose qc35系列等等第二类 :蓝牙音箱,常规的大音响20W以上的,和小音箱5W左右的第三类:车载蓝牙,包含后装蓝牙模块,和原装蓝牙等等这三种类型的产品,在蓝牙的机制连接机制上面,是有区别的详细描述第一类:蓝牙耳机的基本操作逻辑:1 ,这个时候主机去连接,则会有6位数的密码进行交互和确认,这也是车载蓝牙的一大特性这就导致,很多的蓝牙发射模块是没有办法去连接车载蓝牙的蓝牙发射模块的简介1、支持蓝牙音频立体声发射和接收,二合一。 蓝牙发射 支持连接蓝牙耳机、蓝牙音箱等等从设备2、蓝牙接收 支持连接手机、平板、电脑等等主设备。 以及一些常用的控制功能3、蓝牙发射支持的音源:AUX输入、U盘、TF卡、电脑PC声卡、SPIFLASH存储器4、蓝牙发射的声音延迟:小于300ms 支持串口AT指令控制5、,丰富的使用资料,
上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983 讲解了打开蓝牙设备和搜索蓝牙设备,这篇文章来讲解蓝牙配对和蓝牙连接 1 .蓝牙配对 搜索到蓝牙设备后,将设备信息填充到listview中,点击listiew则请求配对 蓝牙配对有点击配对和自动配对,点击配对就是我们选择设备两个手机弹出配对确认框,点击确认后配对 同样的,如果我们想要配对的设备取消配对 只需要将creatBond改为removeBond 2.蓝牙连接: 配对成功之后,就可以进行蓝牙连接了,蓝牙连接操作比较耗时,可以在一个线程中进行: 调用自己定义的 在这里我们需要注意的是,当连接成功时,我们要让被连接的那部手机也自动跳转到聊天页面,所以我们要开启蓝牙服务端等待设备的连接,当设备连接时,自动跳转页面,蓝牙服务端代码如下: /** * 开启服务端 下篇文章 蓝牙通信:https://blog.csdn.net/huangliniqng/article/details/82189735
上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983 讲解了打开蓝牙设备和搜索蓝牙设备,这篇文章来讲解蓝牙配对和蓝牙连接 1. 蓝牙配对 搜索到蓝牙设备后,将设备信息填充到listview中,点击listiew则请求配对 蓝牙配对有点击配对和自动配对,点击配对就是我们选择设备两个手机弹出配对确认框,点击确认后配对 自动配对就是搜索到蓝牙设备后自动配对不需要输入pin码,但在基本开发中都不采用这种方式,所以这里说的是第一种配对方式 点击配对,调用 BluetoothDevice.class.getMethod 中所以从list中取) 点击之后怎会弹出配对确认框,且必须被配对的手机也点击确认配对才可以配对成功如图: 同样的,如果我们想要配对的设备取消配对 只需要将creatBond改为removeBond 2.蓝牙连接 : 配对成功之后,就可以进行蓝牙连接了,蓝牙连接操作比较耗时,可以在一个线程中进行: 调用自己定义的 connect(listdevice.get(position)); 同样传递的参数也是设备device
蓝牙协议分析(1)基本概念 蓝牙4.1,是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。 1.蓝牙技术的概述 1.1 两种蓝牙技术:经典蓝牙(检称 BT)和低功耗蓝牙(简称BLE) 蓝牙协议包括两种技术:经典蓝牙(简称BT)和低功耗蓝牙(简称BLE)。 因此在硬件模组上又有单模蓝牙和双模蓝牙的区别。在智能手机中的蓝牙就是双模蓝牙,它可以支持经典蓝牙和低功耗蓝牙。 双模蓝牙:支持低功耗蓝牙和经典蓝牙的所有功能 低功耗蓝牙:仅支持低功耗蓝牙不支持经典蓝牙 经典蓝牙: 仅支持经典蓝牙不支持低功耗蓝牙 1.1.1 经典蓝牙(BT): BR技术 、EDR技术 、AMP技术 经典蓝牙是正宗的蓝牙技术。