极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18927|回复: 6

请问如何修改蓝牙模块的串口速度?

[复制链接]
发表于 2016-2-18 00:40:43 | 显示全部楼层 |阅读模式
买了几片蓝牙模块(HC-05 及 HC-06), 想测试高速的传送大量资料.
首先尝试设定速度, 就出了问题.
用 AT 指令, 我可以设定蓝牙的通讯速度为 115200 (AT+UART:115200,0,0), 蓝牙之间通讯没问题了.
但当我测试要资料送到 arduino 时, 以串口连接, 才发觉 AT 指令只能更改两个蓝牙模块之间的通讯速度.
但蓝牙模块跟 arduino 的串口通讯, 依然是 9600.  即只可以用 Serial.begin(9600) 连接.
如果我改用 Serial.begin(115200) 就会出现问题.
再三用 AT+UART? 检查过, 蓝牙速度是 115200 没错.

问题就来了, 如果蓝牙之间以 115200bps 传送, 之後用 9600bps 传给 arduino, 当中相差 12 倍的速度.
蓝牙接收了的资料, 必须先放到 buffer 再送出来.  但如果 buffer 满了, 就会遗失资料.
经测试後, 这个 buffer 只有 128 byte 左右.   如果一次发送 128 byte 以上, 就会有问题.

用蓝牙发送 128 byte, 只需 128 * 8 / 115200 = 0.009 秒
但要把资料经串口送给 arduino, 就要 0.11 秒.  同样时间, 蓝牙可以发送 1.5K 资料了.
即是说如果有 1.5K 资料要传送, 结果只可以收到 128byte.


再三找寻 HC-05 模块的资料, 都没有提及如何修改 serial 连线的速度.

是否有什麽地方我搅错了, 为什麽 蓝牙通讯 跟 串口通讯 的速度会不同步的?

请问有没有朋友试过用 HC-05 以 9600 以上的速度作通讯, 而发送的资料超过 128 byte, 如何解决 串口 跟 蓝牙 传送速度上的差距问题?
回复

使用道具 举报

发表于 2016-2-18 09:20:53 | 显示全部楼层
//用 AT 指令, 我可以设定蓝牙的通讯速度为 115200 (AT+UART:115200,0,0), 蓝牙之间通讯没问题了.// ,是怎樣確認的?

//但蓝牙模块跟 arduino 的串口通讯, 依然是 9600//,怎樣連接和設定?
回复 支持 反对

使用道具 举报

发表于 2016-2-18 09:31:22 | 显示全部楼层
HC05厂家有相应的软件,可以很方便的设置波特率以及密码等等。字节太多的话会丢包,毕竟模块的缓冲区有限。
软件可以在这儿下载:http://www.wavesen.com/download.asp?page=2
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-18 13:45:46 | 显示全部楼层
eddiewwm 发表于 2016-2-18 09:20
//用 AT 指令, 我可以设定蓝牙的通讯速度为 115200 (AT+UART:115200,0,0), 蓝牙之间通讯没问题了.// ,是怎 ...

藍牙通訊的速度, 是用 AT+UART? 去檢查的.  回傳是 115200,0,0 跟我要設定的一樣.  當然, 無法真正得知是否用了這個速度去通訊, 但 HC-05 的說明, 都是用 AT+UART? 去檢查藍牙速度的.

而串口的速度比較好, 是用 Serial.begin(9600) 去連線, 這裡可以肯定是 9600 吧.  如果改用 Serial.begin(115200), 會收不到想要的字符, 有可能沒回傳, 也有可能出現怪符號, 應該可以證明 串口 不是用 115200bps 了.

問題在於, 一般藍牙模塊的說明, 只提供了 AT 指令修正, 而 AT 指令只可以更改藍牙連線的速度.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-18 14:01:41 | 显示全部楼层
謝謝大家, 剛在網上看到另一篇說明, 原來 AT+UART? 顯示的, 只是設定了的值, 不一定是執行中的值.  
這裡有點混亂, 但可能就是問題所在.  

"要讓新的設定鮑率起作用,設定之後必須先浮接 KEY 並重開 HC-05 ( 拔掉電源再重新接上電源 ),最後再將 KEY 接高準位,這樣 HC-05 新的鮑率設定才會生效。"

印象中我有嘗試把 KEY 設定為 LOW 再開的 (KEY 設為 LOW 是離開 AT 模式用), 但都不成功.  可能因為我不是連串進行吧.  今晚回去再試試.

另外, 正如我之前說, 我只可以用 AT+UART? 去檢查藍牙的速度設定, 但並不能肯定當前真正的連線速度.  
我是用手機連線的, 請問手機軟件可以檢查到當前藍牙連線的速度嗎?
而或者是否有什麼軟件, 可以看到使用中的速度 (而不是設定了的速度)?

回复 支持 反对

使用道具 举报

发表于 2016-2-19 09:28:15 | 显示全部楼层
Super169 发表于 2016-2-18 13:45
藍牙通訊的速度, 是用 AT+UART? 去檢查的.  回傳是 115200,0,0 跟我要設定的一樣.  當然, 無法真正得知是 ...



先看看附件資料,看看是否能解決。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-19 09:40:03 | 显示全部楼层
eddiewwm 发表于 2016-2-19 09:28
先看看附件資料,看看是否能解決。


謝謝, 我也是跟這個做的, 回傳的結果也是正確的.
  1. AT+UART=115200,1,2,\r\n
  2. OK
  3. AT+UART?
  4. +UART:115200,1,2
  5. OK
复制代码
昨天在網上看到, 好像在發出後, 要把 KEY 腳轉為 LOW 一次.  我就在發出 AT+UART 的指令確認後, 把 KEY 腳拔掉 (原本是接 3.3v 進入 AT 模式的), 之後再接回.
做完之後, 不知那裡出錯, 現在完全用不到.  藍牙連線沒反影.
用 AT 模式設定, 不是回傳 ERROR 就是完全沒反應, 就連簡單的 AT 也要等很長時間才回傀一個 OK.  之前是即時回傅的.  現在先要找出那裡出問題了.


回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 05:20 , Processed in 0.035670 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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