公司项目用到蓝牙和硬件通讯,APP正在开发,弄一个微信小程序蓝牙通讯的demo,可能后期会有微信蓝牙的项目,第一次搞,遇到2个坑: 1.安卓和苹果获取的硬件服务UUID顺序不同 2.目前用的这一版 “启用低功耗蓝牙设备特征值变化时的 </button> <button type="primary" class="button" bindtap="lanya<em>2</em>">2本机蓝牙适配状态</button> <button type= , }) }) } }) }, // 本机蓝牙适配器状态 lanya2 (String src){ byte[] res = new byte[src.length()/2]; char[] chs = src.toCharArray (); int[] b = new int[2]; for(int i=0,c=0; i<chs.length; i+=2,c++){
一、简介 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。 如果需要更低功耗,则需要关闭模块供电 三、总结 未完待续。。。。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
低功耗蓝牙官方文档 本文章是参考官网,然后加入自己实践中的理解完成!没有看上一篇的读者,可以先阅读一下前一篇,这是一个系列。 (API 18 )引入了低功耗蓝牙,应用可以查询周围设备、查询设备的服务、传输信息。 目前所有低功耗应用配置文件基本都是基于 GATT Bluetooth SIG (蓝牙技术联盟) 是为低功耗设备定义了许多配置文件。配置文件是设备在特定应用程序中的工作方式的规范。 确定了两个设备建立连接后如何进行相互通信 BLE 权限 应用在使用蓝牙设备的时候必须要声明蓝牙权限 BLUETOOTH 需要这个权限才可以进行蓝牙通信,例如:请求连接、接受连接、和传输数据。 如果还需要发现或者操作蓝牙设置,则需要声明 BLUETOOTH_ADMIN 权限。使用这个权限的前提是要有 BLUETOOTH 权限。
问题描述 很是开心的一天,沉下心来,和同学一起编写调试了蓝牙信号接收模块—虚拟示波器,实现了数据接收、保存以及可视化等功能,具体如下所示;在这个过程中,结实了优秀的小伙伴,号称获得过物联网比赛一等奖(湖北赛区 ),另外远程与同学合作默契,项目推进快速高效,回顾这两周的时光,第一感觉是感谢~最后,香港大学田师兄对蓝牙数据接收模块进行了测试,后期将依据反馈问题进行优化更改~ http://mpvideo.qpic.cn ,硬件设备竟然会出现稳定性问题;2、多方的配合,共同能够努力的成果~感谢~ 附录:补充材料 附1、为什么定制蓝牙示波器,潜在应用场景有哪些? ,在满足需求的前提下,避免系统冗余,给用户带来更好的交互体验; 上图分别展示了现有的蓝牙接收模块,通过添加算法接口,实现心跳频率、HRV等生理参量的计算;附:目前基本完成预定功能,页面布局优化还需改进 spp方式进行数据传输,后期可以进行相应的拓展,实现ble蓝牙模块的数据交互; 附1、个人理解:好像很多事情的本质都是效率问题,企业如何运作效率最高,能够给员工、社会带来最大化利益;有没有一种更优的方式
设备,蓝牙耳机设备 功能实现: 本应用提供以下功能: 第一:开启蓝牙 第二:查找过滤掉A2DP设备 第三:连接A2DP设备 第四:断开连接A2DP设备 第五:保存通过本应用连接的A2DP设备 第六 :当重新启动应用时加载已连接的设备 A2dp介绍 A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定。 A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。然而并非支持A2DP的耳机就是蓝牙立体声耳机,立体声实现的基本要求是双声道,所以单声道的蓝牙耳机是不能实现立体声的。 如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。 还有消费者看到技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0——这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术 代码介绍 代码结构如下
实现的功能说明 设备作为经典蓝牙主机, 然后连接蓝牙名字为 ESP32_SLAVE_BT 的从机设备; 设备连接上从机蓝牙之后, 把蓝牙接收到数据通过CAN总线输出; 设备从CAN总线接收的数据通过蓝牙发送给蓝牙从机 ; 测试 1,安装CAN支持库(如果已经安装了不需要安装) 主题选择通信,然后输入 CAN, 往下找到对应的库,然后点击安装 2,打开这节的工程(放到非中文目录打开) 里面有两个工程 BT_CAN_MASTER 这个工程是咱这节的工程 因为手头没有现成的蓝牙从机设备所以就准备了另一个设备, 烧录上 BT_CAN_SLAVE 工程作为模拟一台蓝牙从机设备 3,提示,如果用户有蓝牙设备,可以直接下载这节的工程连接自己的设备进行测试 CAN.begin(CanBitrate*2)) { Serial.println("Starting CAN failed!") 2,蓝牙接收的数据通过CAN总线输出 3,CAN总线接收的数据通过蓝牙发送
笔电的话需要USB转串口模块,卖蓝牙模块的店也同样会卖 接线方面: 主要就是VCC(3.3~5V),GND接好即可.同时蓝牙TXD与串口RXD相接,蓝牙RXD与串口TXD相接,还有一个引脚为KEY,接高电平时会进入 AT指令模式,波特率也会固定在38400,在AT指令模式下可以对蓝牙模块作很多的控制,具体指令集可以在百度文库中搜索. 软件方面: python方面并不自带串口API,需要在其项目主页下载pyserial模块并安装即可. http://pyserial.sourceforge.net/ pattern = re.compile("(\+INQ:([A-Z]|\d){4}\W([A-Z]|\d){2}\W([A-Z]|\d){6}\W)|(\+INQ:([A-Z]|\d){2}:([A-Z (10) ser.close() 输出结果 LJH@linux-69z2:~/Python> sudo python bluetooth.py /dev/ttyUSB0 蓝牙硬件版本: +VERSION
背景 pos机上可用的资源很多,之前已经查过12864屏幕了,现在来看下蓝牙模块。 检索过程 谷歌检索661SBG,有如下的网页 ? 可知该模块具体使用的芯片与TC35661SBG-203,EL相似, Part Status Discontinued at Digi-Key Type TxRx Only RF Family/Standard Bluetooth Protocol Bluetooth v3.0 Modulation - Frequency 2.4GHz Data Rate (Max) 2Mbps Power - Output 2dBm Sensitivity -90dBm Memory Size - Serial Interfaces I²C, SPI, UART Voltage - Supply 1.8V ~ 3.3V 东芝有开发板供测试蓝牙芯片的功能,那么可以从该开发板上获取相关代码。 ?
硬件电路连接相关能力 C语言基础能力 STM32定时器、中断、串口等基础知识 查阅相关元件开发手册的能力 一定的动手能力 准备材料 正点原子STM32精英开发板(STM32F103ZET6)、LM2596降压模块 、HC-06蓝牙模块、MG995系列180度舵机、L298N电机驱动、任意品牌遥控车车架带电机、12V聚合物锂电池一块 部分原始材料图片 程序设计思路 STM32利用L298N电机驱动模块控制前后两路直流电机 { IN1(Low); IN2(High); } void Motor_1_NRun(void) { IN1(High); IN2(Low); } void Motor_2_STOP(void TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//使能或者失能TIMx在CCR1上的预装载寄存器 TIM_Cmd(TIM3,ENABLE); } HC_06蓝牙模块用于通信 手机遥控界面 ((((安卓的SPP蓝牙串口))))) 个人认为这款蓝牙助手用于开发界面简洁高效,推荐一波!
文章中所使用的工具,请参考《nRF5x系列蓝牙模块DFU升级服务移植 -- 1 工具安装》说明。
HC-05是一个蓝牙模块,连接到微控制器的串行端口,允许微控制器通过蓝牙连接与其他设备通信。 HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作 模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave) 和回环(Loopback) 通过控制模块外部引脚 (PIO11)输入电平,可以实现模块工作状态的动态转换。如图是蓝牙模块实物图。 HC-05的主要工作是为项目添加双向(全双工)无线功能。 建立连接后,数据通过HC-05传输并转换为串行流,然后由模块连接的微控制器读取该串行流。从微控制器发送数据的方式相反。如下图所示是HC-05蓝牙模块原理图。 最后,分享蓝牙模块相关资料,资料截图如下图所示。
一、HC-05蓝牙模块介绍 HC-05是一款主从一体式串口蓝牙模块,使用时无需理解复杂的蓝牙协议,把它当作普通串口使用即可,串口通信为透传模式,由于它同时支持主从机模式,所以任意两个蓝牙模块之间都是可以通信的 ,下文将介绍如何使用两个蓝牙模块进行主从机通信。 LED状态灯: 状态 说明 快闪 1s两次 正常工作模式 模块进入可配对状态 慢闪 2s1次 AT模式 此时可以直接发AT指令 波特率38400 双闪 一次闪2下 已配对状态 此时是透传模式 除此之外 )1——任意蓝牙地址连接模式(不受绑定指令设置地址的约束)2——回环角色(Slave-Loop)默认连接模式:0 AT+BIND=Param OK Param——绑定蓝牙地址 默认绑定蓝牙地址:00:00 AT+INQ +INQ: Param1,Param2,Param3,OK 扫描蓝牙设备 Param1:蓝牙地址 Param2:设备类 Param3:RSSI信号强度 AT+INQC OK 取消扫描设备
今天分享一个实践项目——HC05蓝牙模块的编程。 实现的目标是利用蓝牙模块,实现手机与单片机通信,在手机上点击按钮,点亮单片机上面的小灯。 使用到的器件是HC05蓝牙模块,单片机(51或者stm32都可以),杜邦线若干。手机端的调试工具为“蓝牙串口助手app” ? ? 先稍微介绍一下HC05蓝牙模块,管脚如下: ? HC05 蓝牙串口模块所有功能都是通过 AT 指令集控制,比较简单,该部分使用的详细信息,请参考 HC05 蓝牙指令集。今天主要是介绍建立通信的过程,对于模块具体的一些其他方面的应用暂时不多说。 HC05 蓝牙串口模块有两种状态,一种是AT指令状态,一种是连接状态。在AT指令状态下,可以向模块发送一些指令,退出AT状态后,可以与蓝牙设备比如手机建立连接。 方法1进入AT 状态后,模块的波特率为:38400(8位数据位, 1位停止位)。方法2进入 AT 状态后,模块波特率和通信波特率一致。在编程中我们通过改变SET管脚电平来切换状态。
前言 本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。 2. APP层,理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。 蓝牙核心框架 蓝牙规范有两类:一类是蓝牙核心规范,由Bluetooth Core Specification定义,囊括到L2CAP层,以及相关的核心profile;另一类是蓝牙Application规范 蓝牙核心规范所定义的框架如下: 经过第2章协议层次的介绍,蓝牙核心框架已经比较容易理解了,这里对层次中各个模块做一个简单的说明,更为详细的分析,请参考后续的文章。 6)L2CAP L2CAP位于Bluetooth Host中,包括两个子模块: Channel Manager主要负责创建、管理、释放L2CAP channel。
HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢?
因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。
所以本文就介绍一下这款蓝牙通信模块的使用,包括蓝牙模块的调试、手机与蓝牙模块之间的传输、手机蓝牙控制STM32单片机,应该是逐渐深入的一个过程。
<h2>蓝牙模块的调试</h2>
USB转TTL模块与HC-05 蓝牙模块的接线:
两模块共地,两模块共VCC(VCC取5V);蓝牙模块的RX接转换模块的TX,蓝牙模块的TX接转换模块的RX。
<h2>手机与蓝牙模块之间的传输</h2>
直接将蓝牙模块与转换模块连接,再讲其连接到电脑上,蓝牙模块直接进入自动连接工作模式
❌ 为什么一个设备上两个 App 无法通过“蓝牙配对”通信?原因一:蓝牙硬件限制蓝牙模块是物理设备通信的媒介,一台设备只有一个蓝牙模块,无法自己与自己通信(不像进程间通信那样灵活)。 为什么 蓝牙模块不能和本机自己配对通信?✅ 简单一句话: 蓝牙通信是设计用于两个 物理不同设备 之间的无线通信协议,本身不支持“本地自配对”或“自连接”。 从几个角度解释为什么“蓝牙模块不能和自己配对”:① 蓝牙协议规范设计的出发点 蓝牙协议(BT Classic、BLE)设计就是点对点通信 一端是主设备(master / client) 一端是从设备 (slave / server) 它默认前提是:两个独立的物理设备,每个设备有独立的蓝牙控制器(蓝牙芯片、地址、收发天线) 蓝牙模块不能“自己收发给自己”,就像你不能用一个对讲机同时接收和发送给自己 TCP/UDP 方式模拟串口虚拟串口 / 虚拟蓝牙服务模拟蓝牙数据层,内部通过接口调用✅ 总结问题是否支持原因蓝牙模块配对自己(同一设备)❌ 不支持蓝牙协议、Android 栈、物理限制不同设备蓝牙配对通信
Jetson Nano 2GB 开发人员工具包没有内置蓝牙。为了将蓝牙音频设备连接到开发人员工具包,你需要使用 USB 蓝牙适配器。(就是自己买一个) ? 按照以下步骤在开发人员工具包上启用蓝牙音频。 蓝牙适配器要求 蓝牙适配器必须支持 Linux 操作系统,并且你需要访问蓝牙适配器的驱动程序。 连接蓝牙音频 在开发人员工具包上安装蓝牙适配器所需的任何驱动程序。按照蓝牙适配器制造商的说明操作。 安装驱动程序后,你可能需要重新启动开发人员工具包,以便系统启用它 连接蓝牙适配器(如果在安装驱动程序期间未连接它) cd到此文件: /lib/systemd/system/bluetooth.service.d ExecStart=/usr/lib/bluetooth/bluetoothd -d --noplugin=audio,a2dp,avrcp 到这里~ ExecStart=/usr/lib/bluetooth
实现的功能说明 设备作为经典蓝牙从机, 使用蓝牙调试助手作为蓝牙主机; 蓝牙调试助手和经典蓝牙设备配对并连接,然后通过蓝牙发送数据给设备,设备接收到数据通过CAN总线发送; 设备从CAN总线接收的数据通过蓝牙发送给蓝牙调试助手 ; 测试 1,安装CAN支持库(如果已经安装了不需要安装) 主题选择通信,然后输入 CAN, 往下找到对应的库,然后点击安装 2,打开这节的工程(放到非中文目录打开) 3,使用Type-C数据线连接上设备 8,打开手机蓝牙页面, 点击连接配对设备的蓝牙 9,安装手机蓝牙调试助手APP 10,点击这个(这边这个是测试经典蓝牙) 11,点击 12,蓝牙调试助手通过蓝牙发送数据给设备 把16进制数据 01 01 02 03 04 通过蓝牙发送给设备 可以在CAN 总线上接收到数据, 说明设备把蓝牙接收的数据转发到了CAN 13,使用CAN测试仪, 通过CAN总线发送数据给设备 可以在手机蓝牙 CAN.begin(CanBitrate*2)) { Serial.println("Starting CAN failed!")
继上一篇 Android系统源码剖析(一)---Settings 接着来介绍一下设置中某个模块的源码,本文依旧是基于Android4.42源码进行分析,分析一下蓝牙模块的实现。 好了,属性配置就介绍到这儿了,接下来要真正开始蓝牙模块的学习了,首先明确模块的布局,蓝牙模块的功能,蓝牙实现的有:开启蓝牙,蓝牙重命名,蓝牙检测性及检测时间设置,扫描附近可用蓝牙设备,加载已经配对的蓝牙设备 TWO,蓝牙模块方法简介 蓝牙模块打开后执行流程getHelpResource()---->addPreferencesForActivity()--->onCreateView()--->initDevicePreference ,disable用于关闭蓝牙 2>,本机蓝牙设置,包括可检测性、蓝牙名称、可检测时间。 3>,已配对设备列表 见下一篇 Android4.42-Setting源码分析之蓝牙模块Bluetooth(下)
之前两篇都是在说与手机的连接,连接方法,和主动配对连接,都是手机与手机的操作,做起来还是没问题的,但是最终的目的是与单片机的蓝牙模块的通信。 下面是到目前为止尝试的与单片机的通信方法,没有成功,但是从思路上来说没有问题,最大的问题是与单片机配对的时候,单片机的蓝牙模块的PIN配对码是写死的,固定为1234, 而手机这边连接配对都是自动生成的PIN 配对码,这种方式在手机与手机配对的时候是极为方便的,但是在这里与单片机连接却成了最大的问题,因为手机自动生成而且每次都不一样,所以没法与单片机蓝牙模块的1234相同也就没法陪对了。 在这个上面我现在在想,是否通过判断搜索到的设备类型来识别单片机蓝牙模块与手机蓝牙的不同,采取不一样的配对方式,从而不自动生成配对码。不知是否可行,一会尝试。 网上的例子,包括谷歌的例子提供的uuid,通用的”00001101-0000-1000-8000-00805F9B34FB”也试过了,在配对的时候都是自动生成了配对码,也无法正常与单片机的蓝牙模块连接,