以 USB to TTL 與 HC-06 連線
如果有 USB to TTL ,就按底下的對應該關係將腳位接好:
HC-06 VCC → USB/TTL 5V
HC-06 GND → USB/TTL GND
HC-06 TXD → USB/TTL RXD
HC-06 RXD → USB/TTL TXD
像我的 USB to TTL 直接用 4 pins 的杜邦端子插上就搞定了。不過,接過好幾個不同的裝置後,終於搞懂我的 USB to TTL 上的標示 TXD & RXD 是另一端的,每次我照著腦中的記憶,將 TXD & RXD 對調,反而是錯的。結論是:手冊很重要,不過,我買的這個沒手冊 XD。
接好線後,將 USB/TTL 插入電腦並以終端機軟體(例如:Windows 的「超級終端機」、putty .....)連上 USB/TTL 的序列埠即可輸入 AT commands。
以 Arduino 與 HC-06 連線
第二種方式是利用 Arduino 的 SoftwareSerial 來和 HC-06 通訊,顯示訊息及輸入指令的工作交給 Arduino 的序列埠,再由 Arduino 幫我將指令透過我們自訂的腳位寫入 HC-06 並由 HC-06 擷取回應的訊息。
HC-06 和 Arduino 的腳位對應如下:
HC-06 VCC → Arduino 5V
HC-06 GND → Arduino GND
HC-06 TXD → Arduino pin 10
HC-06 RXD → Arduino pin 11
接好硬體後,將下面改自 Hazim Bitar (techbitar) 給 HC-05 的 firmware 程式碼 upload 到 Arduino:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
Serial.begin(9600);
Serial.println("Enter AT commands:");
BTSerial.begin(9600); // HC-06 current bound rate (default 9600)
}
void loop()
{
// Keep reading from HC-06 and send to Arduino Serial Monitor
if (BTSerial.available())
Serial.write(BTSerial.read());
// Keep reading from Arduino Serial Monitor and send to HC-06
if (Serial.available())
BTSerial.write(Serial.read());
}
上面紅色的 9600 是 HC-06 出廠後的預設 baud rate,如果已經改過了,必須自己置換掉,不然,可能無法正常連線。
Arduino firmware upload 完畢,關掉 Arduino IDE 程式後,我們就可以用終端機軟體連 Arduino 的序列埠(以 9600 來連線)。成功和 Arduino 連上線,畫面上應該會出現Enter AT commands:」的訊息,如果輸入「AT」,HC-06 應該會回應「OK」,如果沒有回應,就要檢查一下接腳是否正確,或是將「BTSerial.begin(9600)」中的 9600 要換成別的連線速率試試。
HC-06 的 AT command
HC-06 的 AT command 只有簡單的幾項,而且不像 HC-05 必須按 Enter 鍵送出「\r\n」才會執行並回應。所以,我們一按完「AT」兩個按鍵,它馬上就回應「OK」了。試了一下,它的指定一定要用大寫字母,也沒有什麼查詢的 AT 指令,底下就列出在玩 S4A 可能會用到的 AT commands。
- AT:測試,回應「OK」
- AT+VERSION:回應靭體的版本。
- AT+NAMExyz:將裝置名稱改為「xyz」。n
- AT+PIN1234:將連線密碼換為「1234」。
- AT+BAUD4:將 baud rate 換為 9600。
- AT+BAUD5:將 baud rate 換為 19200
- AT+BAUD6:將 baud rate 換為 38400
- AT+BAUD7:將 baud rate 換為 57600
更換 baud rate 的指定可以由 BAUD1~BAUDC ,有需要再自行上網找說明。
因為 HC-06 一輸入完「AT」就馬上會回應了,建議上面的指令用複製貼上的方法,不然,很難跟晶片比快啦!
沒有留言:
張貼留言