极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 33100|回复: 13

蓝牙实现无线下载,以及所遇问题综合解决方法.

[复制链接]
发表于 2013-10-7 18:54:34 | 显示全部楼层 |阅读模式
为了实现arduino的无线下载曾参考过多个文章,或多或少都有问题,外站文章我就不列出了,我列出参考的本站文章和我所遇到的问题以及解决方案.

首先说一下我使用的环境:

系统:windows 7 (64位) 旗舰版

主机蓝牙:笔记本自带蓝牙,驱动系统自带

蓝牙模块:HC-06 从机模块   /     BMX-03A 主从一体模块

串口调试工具:推荐sscom32

Arduino : Arduino UNO R3

IDE版本:这里暂不写出,下面详细说明为什么

参考文章:

http://www.geek-workshop.com/for ... thread&tid=7272
http://www.geek-workshop.com/forum.php?mod=viewthread&tid=568

我将以一个从未接触过蓝牙模块的新手角度写下实现无线下载以及所有问题的解决方法

1.我从某宝一次购得两个蓝牙模块一个是HC-06(2.0)固定从机模块,和另一个BMX-03A(1.2)主从一体模块

2.(蓝牙配置问题)拿到后十分高兴,看相关资料后知道可以通过AT指令对蓝牙模块进行配置,比如搜索时设备的名称什么的(每个厂商所提供的AT指令都不一样,有的支持的多有的支持的少,格式也有一些区别,请查找相对应模块的资料)

3.这时才发现我手头竟然没有USB转TTL模块,因为这两个模块都是TTL接口的,如果没有这个模块就没有办法跟PC连接,也就没有办法配置蓝牙模块了(这两个模块必须是SPP未连接的情况下才能配置参数的,所以AT指令只能通过TTL接口发送)。

4.(无USB转TTL模块时使用Arduino UNO R3当USB转TTL模块问题)这时突然想起是否可以使用Ardunio UNO R3 来代替USB转TTL模块,因为对Arduino电路了解后知道他本身是有一个USB转TTL的IC然后加328P等其它电路组成的,所以在没有实验前理论上是没有问题的。所以先发了个贴子询问高手。请参考http://www.geek-workshop.com/thread-7382-1-1.html。在等待回复的同时,我也在试,最终自己实验成功了。简单说一下主要有两点,A.arduiono 内只烧入 Blink 程序,关键是不要在程序中使用 Serial.begin() 语句. B.模块的TX 接口接 arduion 的 D1 同时标记为 TX的接口, 模块 RX口接 D0 同时标记为 RX的接口( TX->TX  RX->RX)(这里跟arduino 使用 TTL模块不同,单片机使用模块时是 TX->RX  RX->TX)

5.(串口调试软件问题)好了,这样就可以通过AT指令配置蓝牙模块了,可是这时又出现问题了,我当时没有使用Arduino自带的IDE中的串口监视器,而使用的是商家提供的一个叫“串口调试助手”的工具,不知道是因为版本的过还是软件自身的原因,问题好多,打开一看傻眼了,只能打开com1-com4,只有4个串口可以打开,我使用的是本记本,Arduino自身的串口驱动安装在了com24,这里没有这可怎么办,然后就想到了修改串口号,在修改过程中,1-4会有提示被占用,如果修改可能会遇到不可预知的错误,其它没有这个问题,所以为了不破坏电脑系统的稳定性(我可不想从装系统),所以放弃了这办法,然后又想到了串口模拟等办法,(这个可以解决串口号的问题,但是在发送AT指令时又出问题了,后面说明),好了,这个可以连接上串口了,首先连接蓝牙模块时要注意波特率,出厂时是9600,设置好就可以连上了,这时打入指令“AT ”回车,蓝牙模块返回“OK”好了,成了!!根据资料说明设置完蓝牙模块名称后,一时高兴加手欠,想试试所有AT指令,在实验过程中对AT还不熟的我来说,有时可能会打错AT指令,这时这个“串口调试助手”竟然无响应了!!一看就知道是程序问题,这可不爽,老得从开软件(由于错误的AT指令蓝牙模块是不执行并返回信息的,这时软件一直在等待回应就死了),几经更换软件和串口调试软件都有不同的问题(有的软件可以搜索系统中的串口号,可以解决无法选择串口号发送AT指令时的问题,但是后面当蓝牙模块连接后会生成两个蓝牙的串口,这时软件就搜索不到了),综合以上问题最终找到一款叫sscom32的软件,可以解决上述所有问题。

6.(蓝牙模块测试)都配置完成后,就须要对蓝牙模块进行测试了,这时须要打开电脑蓝牙搜索蓝牙模块,找到后输入PIN码行进配对(我的电脑会提示使用那种方式配对,有三种选第二种,使用模块已有的PIN码配对),配上对后电脑会在系统加增加两个串口驱动,这时由于之前我更改串口操作释放了一些串口号,我电脑找到的是com10和com11看电脑写着一个是传出一个是传入,PS:总觉的微软这样写不太容易理解。测试方法有两个,一个是回环自测,另一个是打开两个软件,一个连接Arduino 的串口,一个连接蓝牙生成的串口,然后互发数据,看是否能正常接收发送,我使用的是第二种,这种不用更改接线(主要是我懒),我连接的蓝牙串口是com10也就是写着传出的那个,这时蓝牙上狂闪的状态灯长亮了~~~哦YEAH,之前还想我都配上对了,怎么状态还是不对呢?系统中也没有找到蓝牙模块可以连接的项目,还以为是模块有问题呢。从COM10发送数据然后COM24接收,没有问题,从COM24发送数据到COM10没有问题~~~!!

7.(无线下载程序时遇到的问题)在测试没有问题后就想赶快试试无线下载来爽一下,这时须要把蓝牙模块的TX和RX跟Arduino上的接线对调一下让  蓝牙上TX接MCU上的RX  蓝牙上RX接MCU上的TX,这里要注意接法,要不不能正常工作。好了,开始实验,打开Arduino IDE ,嗯?突然觉得IDE打开慢了很多,但是能正常打开,这时拔掉USB线,插上电池让Arduino 和 蓝牙工作,再点IDE中的“工具”菜单也慢了很多,打开后发现只有COM11,没有蓝牙须要用的COM10,这是怎么回事?经分析后发现IDE慢和工具菜单慢是因为Arduino打开时会检测所有串口,这时会慢很多,这个没办法了只能等了,心情不爽!!但主要是没有COM10那个传出口,这就没法用了。这时就想到了Sublime来替代Arduino IDE。关于Sublime的安装方法可以参考 http://www.geek-workshop.com/for ... thread&tid=7295。完美替代IDE,有代码着色,代码提示,编译上传全功能,是非常好的一个工具。Sublime中可以找到COM10,下载数据时蓝牙状态灯会正常常亮。

综合第7点分析,这些问题可能是与我的系统有关,IDE中找不到COM10可能是因为Arduino搜索串口时因为串口响应须要一些时间,还未来及响应搜索就超时了,所以没有在工具菜单中显示出来,如果有相同问题的同鞋可以按我这个办法解决。
我在参考第一篇文章时,他说须要添加一个新的串口,这里我没有添加,我发现添加后根本没用,在这上面我浪费了不少时间。

8.(下载时RESET按钮问题)这时选择串口COM10并开始下载程序,蓝牙状态灯正常常亮,但是一段时间后,SUBLIME提示错误,没有下载成功,这时想到第一篇文章中所提到下载波特率设置问题,又重新使用AT指令对蓝牙进行波特率设置,我使用的是Arduino UNO R3波特率是115200,查询方法可参考第二篇文章,重新下载还是没有成功,这时才想到是不是RESET键的问题,重新下载程序,在SUBLIME提示UPLAODING......时按下RESET键,终于程序正常下载到Arduino上,下载时Arduino上板载TX和RX灯是不会亮的,但程序能正常刷入,这是因为板载的LED是USB转TTL的指示灯,而蓝牙模块是直接刷入328P内的,所以LED不会亮。

9.(蓝牙波特率问题)在更换另一块模块后没有对蓝牙进行波特率设置也成功下载了程序,当时模块波特率为9600。

总结:我认为我遇到的问题还是比较多的,相同问题的同鞋可以参考。

下面上图:
发送AT指令接法

下载程序接法

HC-06

BMX-03A



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 感谢分享!

查看全部评分

回复

使用道具 举报

发表于 2013-10-7 19:28:28 | 显示全部楼层
如果燒空程式進去不知能否解決問題??
void setup()
{ }

void loop()
{ }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-7 22:08:46 | 显示全部楼层
TTTTTTT33 发表于 2013-10-7 19:28
如果燒空程式進去不知能否解決問題??
void setup()
{ }

你这是为解决什么问题,如果是USB转TTL的问题的话是对的。

其实什么程序都可以,主要是D1 D0 不要使用、不要在程序在使用Serial等语句就可以。
回复 支持 反对

使用道具 举报

发表于 2013-10-7 22:50:01 | 显示全部楼层

直接虚拟d10 d11 为第二串口也可,不受影响
回复 支持 反对

使用道具 举报

发表于 2013-10-7 23:37:48 | 显示全部楼层
本帖最后由 TTTTTTT33 于 2013-10-7 23:39 编辑
sleept 发表于 2013-10-7 22:08
你这是为解决什么问题,如果是USB转TTL的问题的话是对的。

其实什么程序都可以,主要是D1 D0 不要使用 ...


因為如果用ARDUINO當TLL寫AT指令時,要把RESET跟GND接一起,讓原本裡面的程式不做動,但其實只要燒個空程式進去也行,所以我想說會不會是類似的問題,用這方法不知行不行解決燒錄時要按RESET。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-8 00:15:47 | 显示全部楼层
yyy_zc 发表于 2013-10-7 22:50
直接虚拟d10 d11 为第二串口也可,不受影响

学习了,这样就可以接二个TTL设备在Arduino上了,原来如此。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-8 00:17:58 | 显示全部楼层
本帖最后由 sleept 于 2013-10-8 00:20 编辑
TTTTTTT33 发表于 2013-10-7 23:37
因為如果用ARDUINO當TLL寫AT指令時,要把RESET跟GND接一起,讓原本裡面的程式不做動,但其實只要燒個空 ...


这样是不行的,在下载程序的流程是这样的:由IDE环境发起连接请求,连继续发送三个0,然后等待Arduino回应,只有有回应时才会继续,这时按RESET就是为了跟IDE环境进行协议握手。
回复 支持 反对

使用道具 举报

发表于 2013-10-8 00:27:19 | 显示全部楼层
sleept 发表于 2013-10-8 00:17
这样是不行的,在下载程序的流程是这样的:由IDE环境发起连接请求,连继续发送三个0,然后等待Arduino回 ...

所以按下reset是要讓arduino回應IDE?
回复 支持 反对

使用道具 举报

发表于 2013-10-10 10:11:41 | 显示全部楼层
真棒,发现如此多问题
回复 支持 反对

使用道具 举报

发表于 2013-10-10 14:54:03 | 显示全部楼层
sleept 发表于 2013-10-7 22:08
你这是为解决什么问题,如果是USB转TTL的问题的话是对的。

其实什么程序都可以,主要是D1 D0 不要使用 ...

为什么不考虑把ATmega328扣下来呢?
回复 支持 反对

使用道具 举报

发表于 2013-12-23 14:08:35 | 显示全部楼层
我这也出现了同样的问题,蓝牙连接好后,出现了传入25口,传出23口,但是在ARDUINO,022和105两个版本中都死活不出现传出的23口,请问这是个什么情况啊?
回复 支持 反对

使用道具 举报

发表于 2013-12-24 15:16:00 | 显示全部楼层
swfzz 发表于 2013-12-23 14:08
我这也出现了同样的问题,蓝牙连接好后,出现了传入25口,传出23口,但是在ARDUINO,022和105两个版本中都死 ...

像楼主说的用Sublime就有了
回复 支持 反对

使用道具 举报

发表于 2014-6-2 12:15:34 | 显示全部楼层
现在有更简单的蓝牙无线下载方案.只要电脑上有蓝牙,就加个蓝牙无线下载器.而不要USB转串口的模块去设置参数.本蓝牙下载器的优点
1.蓝牙模块的串口参数可无线设置,
通过电脑就蓝牙就可无线设置参数.即时生效.而HCO5/06之类的都要通过RX脚就设置,你必需要联线到RX脚去设置.很麻烦.
如设置波特率,可在电脑SSCOMM串口软件上直接输入或预先输入指令.
  %S:CMDSET:1$
  %B:5,2$

就可设置本下载器的波特率为9600,偶校验.  好像HC05/06之类的不支持奇偶校验,而STC单片机下载时就要求是偶校验.
2.本下载器可提供5V/3V电压,可直接插在充电器或电脑USB接口上.
具体产品可参考:
http://item.taobao.com/item.htm?spm=686.1000925.1000774.19.DkurEi&id=39299306095

回复 支持 反对

使用道具 举报

发表于 2016-10-6 23:56:35 | 显示全部楼层
感谢楼主
之前试了好多次都失败了,看了楼主的文章后才发现是按复位键的时机不对
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 11:02 , Processed in 0.049674 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表