手机蓝牙波特率的波特率是固定的么

3529人阅读
大话Arduino智能硬件(8)
第4节 蓝牙传输
智能硬件基本上都需要和手机相连,然后让手机控制这些硬件的工作。相连的方式不外乎以下三种,
数据线有线连接,通过一根数据线把智能硬件和手机连接起来。采用这种方式,需要一个特殊的带USB HOST功能的扩展板;
WIFI连接,智能硬件和手机都连接到同一个WIFI路由器上,让彼此通过WIFI网络传输数据。采用这种方式需要一个WIFI模块;
蓝牙连接,智能硬件和手机通过蓝牙相连。采用这种方式需要一个蓝牙模块。通常情况下智能硬件等待其他设备的介入,而手机端会主动寻找可以连接的蓝牙设备,主动发起连接请求;
Arduino可以通过以上三种方式的任何一种实现与手机的连接。这里我们将选择蓝牙连接。
选择使用蓝牙连接的主要原因是,Arduino蓝牙模块的价格相对便宜,实现的成本低,而且编程很简单。
4.1 通信接口
Arduino开发板会提供一个至多个用于通信用的串口接口。开发板与任何通信模块的数据交换都是通过这些串口来完成的。
UNO的串口硬件位置
USB接口和0、1引脚都是对应着串口-Serial
MEGA的串口硬件位置
MEGA有多个串口,
USB接口和0、1引脚对应着串口-Serial
18、19引脚对应着串口1-Serial1
16、17引脚对应着串口2-Serial2
14、15引脚对应着串口3-Serial3
每一个串口都由一个输入引脚(RX)和输出引脚(TX)组成。硬件接收和发送数据的功能,就是通过对应的引脚实现的。
4.1.1 引脚的连接
在外接的通信模块中,至少也要有4个引脚接入开发板:输出TX、输入RX、电源VC、接地GND。有的通信模块可能还有额外的引脚作为额外的控制通道,但以上4个引脚是一定会有的。
当开发板与外接通信模块进行连接的时候,要按照如下的方式进行,
开发板引脚
外接通信模块引脚
*注意开发板和外接通信模块相连的时候后,是TX连着RX,一个发送,另一个当然就是接收了;并且VC/GND不和TX/RX不能接反了,不然会烧毁蓝牙模块。
电源的两根线不能接到数据发送的两个的引脚上,否则会烧毁蓝牙模块
电源的两根线不能接到数据发送的两个的引脚上,否则会烧毁蓝牙模块
电源的两根线不能接到数据发送的两个的引脚上,否则会烧毁蓝牙模块
如此一来,开发板和外接的通信模块就可以通过串口来进行通信了。
在实际的操作当中,我们还是会使用到扩展板来进行引脚的连接。
4.1.2 数据的读写
在进行读写之前,要判断一下串口是否可用,
if(Serial.available())
当我们想在代码中使用这些串口读取数据的时候,可以,
读一个字节,
int data = Serial.read();
int data = Serial2.read();
读到数组缓冲区-buffer中,
int length = 128;
char * buffer = new char[length];
int nRead = Serial.readBytes(buffer, length)
int length = 128;
char * buffer = new char(length);
int nRead = Serial2.readBytes(buffer, length)
当我们想在代码中使用这些串口发送数据的时候,可以,
发送一个byte,
Serial.write('A');
Serial2.write('A');
发送一个缓冲区的内容,
uint8_t data[] = "hello arduino";
int len = sizeof(data);
int result = Serial.write(data, len);
uint8_t data[] = "hello arduino";
int len = sizeof(data);
int result = Serial2.write(data, len);
4.2 蓝牙模块
蓝牙模块与Arduino开发板之间就是通过串口进行数据传输的。
我们经常见到的蓝牙模块有HC-05 HC-06。HC-06拥有4个引脚,输出TX、输入RX、电源VC、接地GND。还有一种形式的蓝牙模块,它就远不止4个引脚了。
我们提供的蓝牙模块,就是功能最为简单的HC-06蓝牙模块,它只能够被动的接收其它蓝牙模块发起的连接请求,连接时的配对密码默认是1234。
4.2.1 蓝牙模块的硬件连接
这些蓝牙模块的连接非常简单。这里我们选择的器件有,
1个MEGA开发板;
1个HC蓝牙模块;
4根连接线;
根据之前串口连接的原则,我们将蓝牙模块与Arduino开发板用插线连接起来。我们选择将蓝牙模块的RX TX连接到MEGA开发板的0和1引脚--使用Serial这个串口。
或者使用扩展板来连接蓝牙模块,这里我们使用HC-06举例,将HC-06连接到MEGA扩展板的Serial接口上,
扩展板引脚
蓝牙模块引脚
0组V(电源VC)
0组G(接地GND)
当开发板通电(USB数据线连接上电脑)以后,蓝牙模块的指示灯就亮了。此时它就进入了工作状态:其他蓝牙设备就可以查找并连接这个外接的蓝牙模块了。
*注意:假如你使用的是UNO开发板,也可以按照上面的引脚进行连接,不过当D0 D1引脚被蓝牙设备占用的时候,是不能向UNO开发板部署代码的。因此每当你要部署代码的时候,需要将D0 D1引脚断开,部署完成后再重新连上。如果使用MEGA开发板,你就可以将蓝牙接到其它的串口上(MEGA有多个串口,而UNO只有一个),避免每次刷机都要重新连接硬件。所以我们建议你最好还是采用MEGA开发板。
4.2.2 蓝牙通信的实现
接下来,我们做个简单的程序:让蓝牙模块接受其他蓝牙设备发送过来的数据,每次收到该数据后,又把数据原封不动的回传给发送设备,
在setup()中,初始化好蓝牙设备的波特率,为9600,因为我们硬件连接的是Serial,所以就要初始化Serial。
void setup()
Serial.begin(9600);
在loop()中,不停的尝试读取串口(蓝牙设备)收到的消息,一旦收到,就通过串口(蓝牙设备)把收到的内容原封不动的发送出去,
void loop()
if (Serial.available())
int length = 128;
char * buffer = new char[length];
int nReadSize = Serial.readBytes(buffer, length);
if(nReadSize & 0)
Serial.write(buffer, nReadSize);
4.2.3 结果验证
最后我们需要一个蓝牙设备上的应用程序,来连接这个正在工作的蓝牙模块,并向它发送数据。该应用收到蓝牙模块回传的消息后,能够向开发者展现出来。
这里可以使用我们另一篇文档开发的AnddleChat来连接设备、发送数据、显示接收的内容。
下载该部分对应的,编译后获取可执行的程序;
也可以使用编译好的,直接安装测试。
安装完成后,启动应用,根据提示打开蓝牙功能,搜索要连接的Arduino蓝牙模块,选择连接。这里选择搜索到的HC-06设备,
在文字输入框输入内容,获取对方接收到后到回应,
可以看到,我们返回的数据分成了两条:1 。说明Arduino开发板在读取蓝牙串口的数据时,Serial.readBytes()并没有一次把所有数据读完,而是分两次接收到的。
int nReadSize = Serial.readBytes(buffer, length);
所以,假如Arduino开发板希望将对方发送来的数据接收完全之后,在整个发送回去,需要将每次读到的数据保存下来,直到没有新的数据接收,然后再统一一次性的全部发送返回。
至此,Arduino通过外接蓝牙模块接收和发送数据的功能就完整的实现了。
/*******************************************************************/
本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在选购。
您也可以在我们的网店中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。
最后再次感谢各位读者对安豆的支持,谢谢:)
/*******************************************************************/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:407129次
积分:4918
积分:4918
排名:第4603名
原创:85篇
评论:135条
程序猿+工程狮,用理性的思维理解世界,用优雅的代码影响世界,用10的语言探索世界。我们是一群喜欢Coding十余年的工匠,也是一群潜心钻研十余载的码农。
欢迎加入我们的QQ群:
一起讨论,一起学习,一起进步。
无论物质还是精神,我们的杂货铺将给您提供各种学习上的便利。
文章:10篇
阅读:34325
文章:34篇
阅读:168695
文章:29篇
阅读:163321
把Arduino硬件组装成智能硬件,LED灯、智能风扇、遥控车、室内环境检测仪......这些好玩的高科技玩具正等着我们。
智能硬件非常有趣,遥控车、魔方机器人、无人飞行器十分有爱。可是只会软件开发的你对硬件一窍不通,怎么办?和我们一起学习Arduino智能硬件开发吧。Arduino-为程序猿设计的硬件。
做安卓应用开发太难?跟我做开发,手把手带你飞。边做边学,你不懂的、想问的,都能在实践的过程中找到答案。
手把手教你做安豆计算器(完整版)
通俗而系统的聊聊安卓应用开发的干货,重新认识那些你既熟悉又陌生的开发基础,它们的背后原来还有这样的故事。
安卓四大组件手机通过蓝牙模块与单片机通信_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
手机通过蓝牙模块与单片机通信
上传于||文档简介
&&手机通过蓝牙模块与单片机通信 接受和发送
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢为什么CC2541蓝牙BLE通信速度实测最大只有500Byte/s? - 蓝牙Bluetooth 技术 - 德州仪器在线技术支持社区
为什么CC2541蓝牙BLE通信速度实测最大只有500Byte/s?
发表于2年前
<input type="hidden" id="hGroupID" value="42"
主机与从机都是使用&a href=&.cn/product/cn/CC2541& target=&extwin&>CC2541&/a>,主机的功能是将从机发来的数据通过串口(波特率为115200)发送到电脑,从机每隔40ms使用notify的方式向主机发送数据,一次发送一个包的数据,一个包是20字节,最大连接间隔和最小连接间隔都设定为6了,这样测试出来的速度约为500Byte/s。&/p>
&p>为了提升速度,如果从机发送数据间隔变小或者一次发送二个包,那么串口的数据就会部分丢失。&/p>
&p>请问有什么办法能让它的通信速度增加?&/p>&div style=&clear:&>&/div>" />
为什么CC2541蓝牙BLE通信速度实测最大只有500Byte/s?
此问题尚无答案
All Replies
主机与从机都是使用,主机的功能是将从机发来的数据通过串口(波特率为115200)发送到电脑,从机每隔40ms使用notify的方式向主机发送数据,一次发送一个包的数据,一个包是20字节,最大连接间隔和最小连接间隔都设定为6了,这样测试出来的速度约为500Byte/s。
为了提升速度,如果从机发送数据间隔变小或者一次发送二个包,那么串口的数据就会部分丢失。
请问有什么办法能让它的通信速度增加?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
榜眼39390分
试一下这个:
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元19630分
大秦正声蓝牙电子之家
德州仪器蓝牙芯片cc2540/cc2541/cc2640一带三烧录工具以及芯片代理烧录服务!
订做C2000芯片批量生产脱机烧录器!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
进士3073分
这是你的串口透传机制的bug引起的,TI官方的吞吐量测试程序,速率可以达到5.9KB/s,是7ms连接间隔发送4包数据,每包20字节。我们这边用的这个程序进行的修改,用手机作为采集器调试完美通过,其中还包含从eprom读数据的时间。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元19630分
大秦正声蓝牙电子之家
德州仪器蓝牙芯片cc2540/cc2541/cc2640一带三烧录工具以及芯片代理烧录服务!
订做C2000芯片批量生产脱机烧录器!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
目前我使用的协议是1.3.2,打算之后试下1.4.0
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
只要连接间隔发送1个包以上,数据就会丢失,我使用的协议栈是1.3.2,跟这个应该有些关系
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
我遇到的问题跟你一样,改成20ms,使用notification,主机的响应速率只有30HZ,无从解决啊...
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
原因找到了,是因为我在使能notify之前就发数据了,后来在notify使能之后再发数据,这样速度就非常快,将近4K/S
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
你好,我调试过程中遇到了同样的问题,你QQ多少,麻烦加一下我,我请教一下你。我的QQ:
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
其实真正的原因不是使能notify,而是在连接参数更新成功之前就不停传输数据导致参数更新失败了,所以当我在参数更新成功之前不传输数据,参数更新成功后再传输,速度就能达到4K/s
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
请问2640有相关的OverlappedProcessing的文档吗?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
探花5827分
1. 传输数据前一定要先更新参数
2. 有OverlappedProcessing,到LS给的那个 wiki主页找,翻到2640的部分
苦逼创业狗,欢迎交流
You have posted to a forum that requires a moderator to approve posts before they are publicly available.需要确认注册邮箱后才能开通博客,
&&&一步步教你如何使用蓝牙模块与手机通信,实现自主开发
4年会员勋章目前未领取。领取条件:?凡是注册时间四年以上的活跃用户即可领取该勋章。
啊左不是蜗牛的博客——啊左不是蜗牛
博主:????
世界很大,你要努力。我爱啊左!
文章(125)????
访问(411889)????
评论(539)????
投票(743)????
订阅本博??
博文列表查看方式:
需要确认注册邮箱后才能下载,
上一篇介绍了蓝牙模块与PC电脑的通信,接下来介绍蓝牙模块与手机的通信:
1、通信前必须具备东西:
(1)? 蓝牙串口模块;
(2)? 安卓系统并带有蓝牙的手机;
(3)? 串口调试软件;
(4)? 蓝牙测试软件;
配置蓝牙串口模块:
这里把蓝牙串口模块配置成从机模式,具体设置过程如下:
(1)? 让蓝牙串口模块进入命令设置状态,具体操作是:按着模块上唯一的按键不放,用USB接口给模块上电,这时正确的情景是模块上的LED灯是长亮几秒后熄灭再循环的。如果出现灯快速闪烁的情况,证明模块并未进入命令设置状态,断电重复上述操作即可。
(2)? 将模块通过串口线与电脑连接;成功连接的标志是:打开电脑的设备管理器可以看到“端口”下有USB-SERIAL 端口,如下图:
(3)? 打开“蓝牙测试软件”,点击“搜索端口”,波特率选择“38400”,这时应该出现:“端口:2已打开”;
(4)? 在“蓝牙测试软件”的右边输入你要配置的信息,主要的常用信息便是:
①? 设备名称:就是你想给蓝牙串口模块上的蓝牙命名,支持中英文;这里设置为“Bluebooth”;
②? 主从角色:就是模块的角色,这里选“从角色”;
③? 设备类:就是蓝牙设备类型,这里设置为COD:
④? 连接密码:就是指与其他蓝牙设备连接时需要对方输入匹配的密码,这里设置为“1234”,可支持至少8位的长度,字母与数字混合;
⑤? 查询访问码:设置成通用查询访问码9e8b33;
⑥? 连接模式:主从和回环模式选择,这里选“从角色”;
⑦? 查询访问模式:选0或1,0是标准模式,1是RSSI加强模式,可以连接多个设备,这里选1;
⑧? 通信波特率:在常用的波特率里选择,由于手机通信波特率是9600,所以建议这里选择9600;
最后点击“更新模块信息”
图1 设置界面
看到左边出现OK的蓝色字样,配置成功,关闭软件。
(5)? 把蓝牙串口模块的串口与电脑断开连接,断电,再重新给模块上电,注意这时候不需要按着模块上的按键,直接上电即可,然后与电脑串口连接;可以看到的正确现象是模块上的LED灯是比较快地闪烁的。
在手机上安装串口助手软件(ANDROI系统P串口助手),将HC-PDA-ANDROID.apk文件放在手机上安装即可;安装后即有BTClient程序图标。点击运行即可。
手机与模块蓝牙连接:
(1)因为之前设置了蓝牙串口模块的蓝牙为从机,所以这里手机上的蓝牙作为主机发起连接。直接点击手机上BTClient软件上的“连接”,“查找设备”,选择我们的蓝牙串口模块“Bluebooth”,提示“连接成功”;
?? (2)打开串口调试软件,选择串口号2 和波特率9600,数据位8位,停止位1位,校验位和数据流控制都是none;
?? (3)在串口调试软件发送数据到手机上,或者手机发送数据到到电脑上,支持字母和数字,不支持中文。以下是样例通信结果:
图2 蓝牙串口模块收到的数据
图3 手机上的蓝牙接收和发送的数据
至此,我们就已经顺利的完成了蓝牙模块与手机的通信了。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
??????有[ 33 ]名读者喜欢此文
阅读(45132)??
最近到访博主
评论是对思考最好的总结…
你还可以输入1000字
--- 现有 34 个主题,共 4 页 ---
转发到我的博客
评论??的“一步步教你如何使用蓝牙模块与手机通信,实现自主开发”
上一篇介绍了蓝牙模块与PC电脑的通信,接下来介绍蓝牙模块与手机的通信:1、通信前必须具备东西:(1)蓝牙串口模块;(2)安卓系统并带有蓝牙的手机;(3)串口调试软件;(4)蓝牙测试软件;配置蓝牙串口模块:这里把蓝牙串口模块配置成从机模式,具体设置过程如下:(1)让蓝牙串口模块进入命令设置状态,具体操...
你还可以输入30000字
同时评论给?啊左不是蜗牛
你还可以输入1000字
你还可以输入1000字
世界很大,你要努力。我爱啊左!
zmt_1027??21:58 06-21
zcz2004??20:33 05-24
zcz2004??18:09 05-24
zcz2004??22:30 05-21
zcz2004??08:52 05-16
EDN助学—FPGA/CPLD学习小组
成员18962名创建者:
STM32爱好者之家
成员6660名创建者:
《FPGA/CPLD边练边学》书友会
成员269名创建者:
成员4021名创建者:
《STM32嵌入式系统开发实战指南》书友会
成员135名创建者:
《嵌入式实时操作系统μC/OS-Ⅱ经典实例-基于STM32处理器(第2版)》书友会
成员407名创建者:
TI WEBENCH设计大赛
成员288名创建者:
我爱51单片机
成员415名创建者:
电子设计竞赛
成员110名创建者:
成员37名创建者:
《ADI实验室电路合集》书友会
成员73名创建者:
-- Use of this website is subject to its terms of use.
京ICP备号-4 |
京公网安备37 |
新版社区已上线,旧版论坛、博客将停用
1、为防数据丢失,旧版论坛、博客不再接受发帖;
2、老用户只需重设密码,即可直接登录新平台;
3、新版博客将于8月底完美归来,敬请期待;
4、全新论坛、问答,体验升级、手机阅读更方便。}

我要回帖

更多关于 安卓手机蓝牙波特率 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信