2012年7月9日 星期一

Arduino as an USB to TTL adapter

Arduino 也可以當成 USB to TTL 轉換器使用,方法很簡單,參考下圖,只要在 GND 和 Reset Pin 之間拉一條線就搞定了:

image 

這樣做會讓 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 與藍芽模組連接起來

image

接線方法可以參考下表:

Arduino 藍芽模組 備註
5V VCC 注意電源不可接錯
GND GND 注意電源不可接錯
RXD (pin 0) RXD  
TXD (pin 1) TXD  

通電之後,藍芽模組上的 LED 會一直閃爍:

image_thumb133

先做個簡單的測試,看看藍芽模組通信正不正常。

打開 Serial Monitor,把換行模式改成 "No line ending",接著輸入 AT 指令(指令全部大寫),然後按下 Send 按鈕或 Enter 鍵,這時藍芽模組應該會回應 OK:

image

3) HC-0x 藍芽模組 baud rate 預設是 9600 bps,有些時候你可能會需要改變它的 baud rate,比如改成 57600 bps。要怎麼把 baud rate 修改為 57600 bps 呢?方法為:

輸入指令:

AT+BAUD7

這時藍芽模組應該會回應:

OK57600

像下圖這樣:

2012-06-25_00h21_10

以上的資訊,希望對你有幫助。

參考資料

28 則留言:

  1. 好棒喔! 這方式應該很少人知道,簡單又方便!

    回覆刪除
  2. 哈,這樣一來,既不用買 USB to TTL adapter ,也可以省下插拔 AVR 晶片的麻煩了

    回覆刪除
  3. 這招不錯喔!!今天臨時要測試新製作的groboduino而且原本的模組送人這招就派上用場了XD

    回覆刪除
  4. 哈哈~ 試過幾種招式後,我覺的這一招最方便!

    回覆刪除
  5. 請問Cooper,

    我使用nano採用同樣接線
    但是輸入AT後卻沒有反應...
    藍芽上面有紅燈閃爍~~

    另外 請教是否這篇的
    arduino與藍芽裝置的接線表 TX RX寫反?

    我自己有把它反過來接
    也就是arduino的TX接藍芽的RX
    但是還是一樣...
    輸入AT不理我...

    回覆刪除
  6. 另外, 我使用的是HC-05
    這部分的主從設定也是直接在serial介面下直接輸入AT+ROLE=0就好了嗎?(如果希望是"從")

    回覆刪除
  7. 有紅燈閃爍代表電源供應正確,而且藍芽是處在指令模式,可以輸入 AT 指令控制

    不通的原因,我猜可能是 baud rate 不對,你調一下 Serial Monitor 右下角的 baud rate 再試試看

    接線表我有試過,確定是對的!

    回覆刪除
  8. 我還沒用過 HC-05。沒模式應該是直接在 serial 介面輸入指令沒錯

    回覆刪除
  9. 我試了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 是否能會意出些什麼?

    回覆刪除
  10. 你那份文件是在哪找到的?
    我找到的是英文的版本

    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 重新上電才行

    回覆刪除
  11. Dear Cooper,
    我直接去他們官網找的, 有個下載中心
    先附給您
    http://wavesen.com/download.asp
    最近比較忙, 等我測試有好消息在過來這跟你聊聊吧:)

    回覆刪除
  12. 大大你好...
    小弟試了你的方法...
    可是只要把reset接到gnd...
    arduino就像斷線一樣...PC是找不到他有連接在上面...(例如板子本來在COM4接地後COM4會消失而且也沒有新的出來...)
    所以導致serial Monitor無法開啓...也就無法使用這個方法??
    小弟我是新手...使用的板本是leonardo..

    請問有解嗎?

    回覆刪除
  13. @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());
    }




    回覆刪除
  14. cooper大
    我用HC-05
    使用AT指令時沒有反應呢
    板子是arduino uno

    回覆刪除
  15. 沒反應通常是線路問題,你 HC-05 通電後模組上的 LED 會閃爍嗎?再來是 Arduino 跟 HC-05 間的 TX 和 RX 是怎麼接的? 是 RX 對 RX, TX 對 TX 嗎? 還是?

    回覆刪除
  16. 我確定我的LED燈有像範例上一樣的閃爍
    另外TX接RX
    RX接TX
    或是兩個互換我都有試過
    但是都沒用

    回覆刪除
  17. 必須是 TX 接 TX, 然後 RX 接 RX 喔

    如果線路沒接錯,燈號閃爍也正常,那麼有可能 baudrate 問

    Serial Monitor 預設是 9600 baud, 改用其它 baud rate 試看看

    回覆刪除
  18. 我與蕭瑟風晴的問題是一樣的 買到的藍芽模組上面寫著JY-MCU(藍芽名稱是linvor)用atmega8 照你寫的作法 輸入AT並沒有顯示出OK 哪裡有問題了?

    回覆刪除
  19. @黃傑,你買的藍芽模組也是 HC-05 的嗎?

    我用的是 HC-06 很正常,樓上已經有兩位朋友反應 HC-05 不 Work,不曉得是不是模組款式不同的關係

    回覆刪除
  20. 我的模組上面只寫v1.05不知道是否HC-05

    回覆刪除
  21. HC-0x 模組從外觀不容易分辨型號。
    我之前有整理一篇 HC-0x bluetooth module 選購指南", 希望對你有幫助:



    PS: 其實我手上只有一片 HC-06 模組,其它型號我沒用過,上面那篇文章都是從網路上的資料整理而來的。

    回覆刪除
  22. 謝謝你的回覆!我事後詢問發現我手頭上有的v1.2與v1.5藍芽模組是不同廠商的產品 似乎跟這廣州廠商不同的樣子

    回覆刪除
  23. 哦? 還有其它廠牌的藍芽模組?
    請問你查得到是哪一家的產品嗎?

    回覆刪除
  24. 我是買此模組..上面有些說明http://goods.ruten.com.tw/item/show?21204206581641

    回覆刪除
  25. 您好,我使用的板子是UNO 我使用的藍芽模組是Sparkfun 的
    RN42(https://www.sparkfun.com/products/10393)
    然後我也發生一樣的問題(確定藍芽燈會閃爍,UNO版子也沒有問題).. 就是打入AT沒有反應..想知道是鮑率非原本就設定為9600的問題,還是其他的問題.. 還是說有其他方法可以知道該藍芽的內建鮑率?? 再來不行的話只能等TTL轉換線入手試試看了...

    回覆刪除
  26. @黃傑,露天那個模組看起來像是 HC-06 從機模組
    是 HC-06 沒錯,拍賣檔案上有寫

    如果還是不通,可以問一下賣家,也許他們有 FAQ

    回覆刪除
  27. @黃上源, 不好意思,我沒用過 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" 這個指令。

    回覆刪除

注意:只有此網誌的成員可以留言。