Arduino 也可以當成 USB to TTL 轉換器使用,方法很簡單,參考下圖,只要在 GND 和 Reset Pin 之間拉一條線就搞定了:
這樣做會讓 MCU 停留在 reset mode,你便可以使用 RX (pin 0) 和 TX (pin 1) 直接與 USB to Serial Converter 晶片 (FT232R 或 Atmegaxxux) 溝通。
設定 HC-0x 藍芽模組
把 Arduino 變成 USB to TTL 轉換器可以做什麼?嗯...我首先想到的是可以拿來改 HC-0x 藍芽模組的設定。我在這篇介紹過如何用 USB to TTL 轉換器設定 HC-0x 藍芽模組,同樣的事 Arduino 完全可以勝任。
底下以修改 HC-0x 藍芽模組的 baud rate 為例說明:
1) 首先,參考上圖在 GND 和 Reset Pin 之間拉一條線
2) 把 Arduino 與藍芽模組連接起來
接線方法可以參考下表:
Arduino | 藍芽模組 | 備註 |
5V | VCC | 注意電源不可接錯 |
GND | GND | 注意電源不可接錯 |
RXD (pin 0) | RXD | |
TXD (pin 1) | TXD |
通電之後,藍芽模組上的 LED 會一直閃爍:
先做個簡單的測試,看看藍芽模組通信正不正常。
打開 Serial Monitor,把換行模式改成 "No line ending",接著輸入 AT 指令(指令全部大寫),然後按下 Send 按鈕或 Enter 鍵,這時藍芽模組應該會回應 OK:
3) HC-0x 藍芽模組 baud rate 預設是 9600 bps,有些時候你可能會需要改變它的 baud rate,比如改成 57600 bps。要怎麼把 baud rate 修改為 57600 bps 呢?方法為:
輸入指令:
AT+BAUD7
這時藍芽模組應該會回應:
OK57600
像下圖這樣:
以上的資訊,希望對你有幫助。
好棒喔! 這方式應該很少人知道,簡單又方便!
回覆刪除哈,這樣一來,既不用買 USB to TTL adapter ,也可以省下插拔 AVR 晶片的麻煩了
回覆刪除這招不錯喔!!今天臨時要測試新製作的groboduino而且原本的模組送人這招就派上用場了XD
回覆刪除哈哈~ 試過幾種招式後,我覺的這一招最方便!
回覆刪除請問Cooper,
回覆刪除我使用nano採用同樣接線
但是輸入AT後卻沒有反應...
藍芽上面有紅燈閃爍~~
另外 請教是否這篇的
arduino與藍芽裝置的接線表 TX RX寫反?
我自己有把它反過來接
也就是arduino的TX接藍芽的RX
但是還是一樣...
輸入AT不理我...
另外, 我使用的是HC-05
回覆刪除這部分的主從設定也是直接在serial介面下直接輸入AT+ROLE=0就好了嗎?(如果希望是"從")
有紅燈閃爍代表電源供應正確,而且藍芽是處在指令模式,可以輸入 AT 指令控制
回覆刪除不通的原因,我猜可能是 baud rate 不對,你調一下 Serial Monitor 右下角的 baud rate 再試試看
接線表我有試過,確定是對的!
我還沒用過 HC-05。沒模式應該是直接在 serial 介面輸入指令沒錯
回覆刪除我試了TX接TX ,RX接RX baud rate全部都試過了....還是沒反應收場...
回覆刪除然後我找到廣州匯承信息科技的教學檔
設置為master的步驟:
1、PIO11 置高。
2、上电,模块进入AT 命令响应状态。
3、超级终端或其他串口工具,设置波特率38400,数据位8 位,停止位1 位,无校验位,
无流控制。
4、串口发送字符“AT+ROLE=1\r\n”,成功返回“OK\r\n”,其中\r\n 为回车换行。
5、PIO 置低,重新上电,模块为主模块,自动搜索从模块,建立连接。
但是不懂PIO11置高適什麼意思?
上電?上哪邊的電..數據位停止位都看不懂....
不知道Cooper 是否能會意出些什麼?
你那份文件是在哪找到的?
回覆刪除我找到的是英文的版本
PIO11 置高的意思就是把 PIO11 設成 high level
第 3 步驟的英文是 (英文比較好懂): Set the parameters of the super terminal or the other serial tools (baud rate:
38400, data bit:8, stop bit:1, no parity bit, no Flow Control)
看來好像還得利用 reset pin 重新上電才行
Dear Cooper,
回覆刪除我直接去他們官網找的, 有個下載中心
先附給您
http://wavesen.com/download.asp
最近比較忙, 等我測試有好消息在過來這跟你聊聊吧:)
Thanks.
回覆刪除加油!
大大你好...
回覆刪除小弟試了你的方法...
可是只要把reset接到gnd...
arduino就像斷線一樣...PC是找不到他有連接在上面...(例如板子本來在COM4接地後COM4會消失而且也沒有新的出來...)
所以導致serial Monitor無法開啓...也就無法使用這個方法??
小弟我是新手...使用的板本是leonardo..
請問有解嗎?
@OCK
回覆刪除leonardo 用的晶片跟 UNO 不一樣, UNO 用的晶片是 atmega328p, leanardo 的是內建 usb 的 atmega32u4
leonardo 可能沒辦法當成 usb-ttl 使用喔
leonardo 的 Serial 是用 USB CDC driver 做出來的,沒有接到硬體 pin 0 & pin 1,因為這兩支腳位已變成 Serial 1 了...
不過還是可以 try 看看,我手邊沒有 leonardo,你試一下這支程式,看看行不行:
void setup()
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial1.begin(9600);
}
void loop() // run over and over
{
if (Serial.available())
Serial1.write(Serial.read());
if (Serial1.available())
Serial.write(Serial1.read());
}
cooper大
回覆刪除我用HC-05
使用AT指令時沒有反應呢
板子是arduino uno
沒反應通常是線路問題,你 HC-05 通電後模組上的 LED 會閃爍嗎?再來是 Arduino 跟 HC-05 間的 TX 和 RX 是怎麼接的? 是 RX 對 RX, TX 對 TX 嗎? 還是?
回覆刪除我確定我的LED燈有像範例上一樣的閃爍
回覆刪除另外TX接RX
RX接TX
或是兩個互換我都有試過
但是都沒用
必須是 TX 接 TX, 然後 RX 接 RX 喔
回覆刪除如果線路沒接錯,燈號閃爍也正常,那麼有可能 baudrate 問
Serial Monitor 預設是 9600 baud, 改用其它 baud rate 試看看
我與蕭瑟風晴的問題是一樣的 買到的藍芽模組上面寫著JY-MCU(藍芽名稱是linvor)用atmega8 照你寫的作法 輸入AT並沒有顯示出OK 哪裡有問題了?
回覆刪除@黃傑,你買的藍芽模組也是 HC-05 的嗎?
回覆刪除我用的是 HC-06 很正常,樓上已經有兩位朋友反應 HC-05 不 Work,不曉得是不是模組款式不同的關係
我的模組上面只寫v1.05不知道是否HC-05
回覆刪除HC-0x 模組從外觀不容易分辨型號。
回覆刪除我之前有整理一篇 HC-0x bluetooth module 選購指南", 希望對你有幫助:
PS: 其實我手上只有一片 HC-06 模組,其它型號我沒用過,上面那篇文章都是從網路上的資料整理而來的。
謝謝你的回覆!我事後詢問發現我手頭上有的v1.2與v1.5藍芽模組是不同廠商的產品 似乎跟這廣州廠商不同的樣子
回覆刪除哦? 還有其它廠牌的藍芽模組?
回覆刪除請問你查得到是哪一家的產品嗎?
我是買此模組..上面有些說明http://goods.ruten.com.tw/item/show?21204206581641
回覆刪除您好,我使用的板子是UNO 我使用的藍芽模組是Sparkfun 的
回覆刪除RN42(https://www.sparkfun.com/products/10393)
然後我也發生一樣的問題(確定藍芽燈會閃爍,UNO版子也沒有問題).. 就是打入AT沒有反應..想知道是鮑率非原本就設定為9600的問題,還是其他的問題.. 還是說有其他方法可以知道該藍芽的內建鮑率?? 再來不行的話只能等TTL轉換線入手試試看了...
@黃傑,露天那個模組看起來像是 HC-06 從機模組
回覆刪除是 HC-06 沒錯,拍賣檔案上有寫
如果還是不通,可以問一下賣家,也許他們有 FAQ
@黃上源, 不好意思,我沒用過 RN42
回覆刪除我看 sparkfun 上的介紹,RN43 也是可以用 AT 指令設定參數,不過它的 AT 指令跟 HC-0x 是不一樣的
你可以看一下底下這篇教學:
http://www.sparkfun.com/tutorials/264
在 "Commanding the Bluetooth Mate" 這段有說明 baud rate 的設定方法,看起來,要把 baud rate 設成 9600,方法是先下個 "$$$" 進入指令模式,然後再下 "U,9600,N" 這個指令。