執行AT命令(AT-command)修改藍芽模組的資料傳輸速率
文∕趙英傑
藍芽序列埠模組(對岸稱為「藍牙串口模塊」),是一種能將TTL序列資料改以藍芽無線方式收發的介面裝置,可以取代RS-232串列線。由於網拍上的藍芽模組大多是對岸製造的,賣家將對岸的產品名稱和說明,原封不動地張貼出來,因此無論是在本地的拍賣網站或者對岸的淘寶網,商品關鍵字搜尋建議採用「藍牙串口」。
底下是筆者購買的藍芽序列埠模組外觀,印刷電路板周圍像郵票般的齒孔是模組的接腳,需要自行焊接;有些廠商販售的模組已經焊接好必要的接線。
藍芽模組可能有很多接腳,但主要的連結線只有四條(接收、傳送、正電源和接地),外加一個連線狀態指示LED燈(註:不同廠商製造的藍芽模組的接腳定義可能不一樣)。
大多數藍芽模組採3.3v供電,而外部電源通常是5v,因此我將它和一個3.3v直流電壓調節IC(LD33)焊接在一起;市售的Arduino微電腦板大多內建3.3v電壓輸出,因此不需要直流降壓元件。
電路板底部的四個接腳就是接收、傳送、正電源和接地,方便和自製的Arduino板銜接:
改變藍芽序列埠(藍芽串口)的工作模式
多數的藍芽序列埠模組都能讓用戶自行調整參數,常見的參數如下:
- 名稱:一般最多允許32個英∕數字
- 配對密碼:通常預設為1234
- 操作模式:主(master)、從(slave)或回應測試(loopback),通常預設為slave。
- 傳輸鮑率(baud rate):可調整4800bps~1382400bps。如果不特別指定,廠商都會給定一個預設值,例如9600bps或115200bps。
藍芽序列埠模組有兩種工作模式:
- 自動連線(automatic connection)
- 命令回應(order-response)
平時使用的「自動連線」模式只是負責將接收或者要發送的資料傳遞出去,模組本身不會解讀資料,也不接受控制。若要調整模組的參數,必須讓它進入「命令回應」模式。筆者購買的模組進入命令回應模式的方式為:將左上角的接腳連接高電位(3.3v)。
執行AT命令(AT-command)修改藍芽的資料傳輸速率
操控藍芽模組的指令統稱AT命令(AT-command)。AT命令並非透過藍芽無線傳輸,而是模組的TxD和RxD接腳。因此,我們還需要一個USB轉TTL的介面才能連接電腦來設定它。
「命令回應」模式的資料傳輸速率也有規定,有些是38400bps,有些是9600bps或其他鮑率。
AT命令的名稱和語法沒有統一的規範,即使模組採用相同的晶片,內部韌體版本不同,AT命令可能就不一樣,因此購買模組時,需要跟廠商索取AT命令規格書。以調整鮑率的語法為例,筆者購買的藍芽模組的語法格式如下:
AT+UART=鮑率,停止位元,同位(parity)位元
有些藍芽模組則是採用底下的語法,鮑率用一個數字編號代表,例如:
AT+BAUD<鮑率值編號>
底下是採用對岸開發的AccessPort免費序列埠監測軟體,將藍芽模組的鮑率改成9600bps的畫面:
修改成功後,藍芽模組將回應“+UART9600,0,0”和“OK”。
你好,
最近有一組紅外線領夾式麥克風,
想尋找人幫忙把它改成頭戴式麥克風,
不知您是否能夠幫忙?
抱歉…
您好,想跟您請教幾個問題
接收的接腳是接收Arduino輸出的訊號嗎?
那Arduino輸出的訊號是數位訊號嗎?還是類比?
傳送腳位和TxD是同一個嗎?
麻煩您了!
TxD代表「傳送端(Transmitter)」,RxD代表「接收端(Receiver)」。
微處理器「傳出」的訊息,要給外部設備「接收」,所以處理器的TxD,接設備的RxD,反之亦然。
序列埠的輸出∕輸入都是數位訊號。
嚴格來說,Arduino採用的ATMega8, 168, 328等單晶片微處理器,並沒有「類比輸出」功能,只有「類比輸入」(位於處理器的23~28接腳)。Arduino的「類比輸出」是藉由調整數位訊號的脈衝寬度來模擬(稱為PWM調變),但是有些裝置並不接受這種模擬的類比訊號。
have fun!
jeffrey
謝謝您的回答!
那在跟您請教一個問題
請問電腦的鮑率要如何查詢呢
將序列埠裝置接上USB之後,打開Windows的裝置管理員,裡面有一項「連接埠(COM和LPT)」,其中包含剛剛連接的序列裝置。
在它上面按滑鼠右鍵,查看「內容」,即可在「連接埠設定」畫面看到鮑率和其他參數了。
have fun!
jeffrey
Hi Cubie,
我是 Rick,好久不見了~
你有 Face book 嗎?
有的話請加入我吧!
https://www.facebook.com/AntiMS
Rick 😀
hey rick, rick!
真是太意外了,上個月和鄰居聊四軸飛行器和滑翔機時,還談到你說~
要一起排隊買iPad嗎 😀
cubie
不好意思請問一下
我模組已經設到了order-response模式
但是我打AT指令進去之後
他回我的都跟我打進去的一樣
請問我該如何解決
hi eric:
如果輸入AT(並按下Enter),藍芽模組應該會回應”OK”。一直回覆相同的訊息,感覺上好像RxD和TxD短路了,發送的訊息,直接被序列埠的接收回來…那假如隨便輸入一些文字,例如:”hello world”,是否也會原封不動地傳回”hello world”呢?
建議先單獨測試USB轉TTL的裝置看看。
good luck!
jeffrey
Cubie 你好:
滑翔機我已經停了四五個月沒飛了,現在主要專攻多軸載具的空拍服務,Face Book 的粉絲團有我的作品,有空的話可以去看看,你有 Skype 或 MSN 帳號可以聯繫嗎?我也認識幾個愛玩愛改造 DIY 的朋友可以介紹給你認識。
https://www.facebook.com/AeroCam.tw
Rick
Skype : flying-apple
hi rick:
看了你的Facebook粉絲頁,再度燃起我製作四軸飛行器的慾望,唉,不過只把遙控模型當玩具,不能跟你這專業人士比擬。我七月會帶小孩到台北玩,如果你有空的話,再去拜訪你。
happy hacking!
jeffrey
我买了一个蓝牙模块,它已经引出了key,rxd,txd,5V,3.3V,gnd.然后我想通过串口发送AT指令,连接了5V,rxd,txd,gnd,然后发送AT,一直发送都要没回应ok,我觉得可能是key脚没有连接的问题,你能给我讲讲key脚该怎么连接吗?谢谢
不同模块的设置方式可能不一样,我朋友有个类似的蓝牙模块,进入AT命令的方式如下:
1. Key脚接地。
2. 模块上电。
3. Key脚改接Vcc(高电平)。
AT指令的传输速率和模块的初始设置相同,例如,若默认的通信速率是9600bps,那AT指令也是9600bps。
详细的设置方式,最好向店家索取文档。
have fun!
jeffrey
您好,不好意思想請問一下
您有留這個模塊的規格書嗎?
之前買的沒有規格書(茶
您好,這是我購買的藍牙模組的規格書下載連結(PDF檔):
資料手冊(datasheet)
AT命令使用手冊
good luck!
jeffrey
謝謝您^^
你好 我買的藍芽跟你同樣的
我想請教大哥的事
我有兩個藍牙 要戶相通訊 兩方都是單晶片
是不是 兩個藍牙一通電就可以傳資料
資料上說 要主從機的關系 密碼
我尚未測試過藍牙模組master和slave相連。
根據技術文件,你可以透過底下的AT命令,查詢藍牙裝置的位址:
At+addr?
配對的AT命令如下:
AT+PAIR=<param1>,<param2>
假設裝置的位址是12:34:56:ab:cd:ef,在20秒內嘗試配對的命令:
At+pair=1234,56,abcdef, 20
其他相關指令可以在AT命令說明文件中找到。
另外,名叫Phillipe Cantin的老外,在他的“Arduino Bluetooth Link“文章有採用藍牙主、從模組連結兩塊Arduino控制板的具體步驟說明,以及範例程式。
他採用的藍牙模組可以透過”$$$”序列訊息進入命令模式,進而控制主控端與指定位址的藍牙從端相連。
我購買的藍牙模組好像一定要把指定的腳位接高電位才能進入AT命令模式。
或許你可以嘗試將那個腳位連接到單晶片,從單晶片發出高電位,再透過序列埠傳入AT命令看看。
good luck!
jeffrey
HI cubie
請問,
1.兩塊MCU個接上藍芽模組(已設定一主一從),如何使用主端MCU去修改從端MCU藍芽的AT指令?
2.請問在主端MCU與從端MCU通訊前如何驗證驗證碼與ID?
3.藍芽當AT模式與當作接發送通訊的TX,RX接法都是一致嗎?
感謝回覆!!!
hi 嘴嘴:
1. AT指令是透過序列埠(有線)傳送,因此,若要透過藍牙無線傳入從端,我認為不可行。
2. 我只測試過和個人電腦以及Android裝置相連,尚未嘗試master模組發起探索與配對功能。
3. 序列埠連線方式都一樣。
have fun!
jeffrey
想請問一下
這個跟做防盜器那種連結有關嗎
不了解你的意思?請問有相關資料連結嗎?
thanks,
jeffrey
您好!我們是目前升大四的學生正在做畢業專題,關於藍芽模組的配對想請問您。
我們是用BC417這個藍芽模組,想要和一個藍芽腦波儀進行配對,我們的做法是將藍芽模組接在麵包板上,
透過Seeeduino供電,和 USB2.0 to Rs232 做Tx和Rx的傳送和接收。
可是一直不能用AccessPort下AT指令進行配對,是因為用Rs232所以不能直接下AT指令嗎?
還是說有其他的做法呢?
先謝謝您的回覆:)
hi annie:
RS-232的訊號電壓是正、負12V,妳應該使用USB to TTL轉換線連接藍牙模組。
have fun!
jeffrey
謝謝您的回覆!
另外還想請問,可以直接透過Seeeduino在Serial Monitor裡直接下達AT指令嗎?
我在網路上有看到有人直接透過Arduino下達AT指令(看起來好像沒有另外寫任何程式)
不過用的板子是Motoduino/Arduino,不知道Seeeduino是不是也可以這麼做?
謝謝:)
可以,大多數的Arduino控制板上面都有一個USB to TTL轉換晶片,可以拿來用。
thanks,
jeffrey
您好~~我買了一個 PL2303_的USB to TTL 連上我的HC-05藍芽模組
KEY有上電~無上電 在軟體裡都沒有回應~~不知道哪裡有問題~可以教教我嗎
我也是玩遙控的
感恩
hi max:
藍牙模組通電後,先用電腦或手機∕平板配對。
配對成功後,再使用AccessPort或CoolTerm等軟體,
接USB to TTL,再接藍牙模組,即可傳送或接收訊息。
have fun!
jeffrey
你好,我想請教一下
不知道您有沒有用手機去連結過藍芽模組呢?
我本身是學生也是專題需要,有做到這一個部分
當我搜尋到藍芽模組後
而我要連結這個裝置的時間有3~5秒之久,甚至更長吧
身為使用者可能無法等上這麼長的時間,
而這個部分不知道能否替我解答或者是給我一些參考建議呢?
不知道這是欲連接藍芽模組既定的等待時間
還是我的程式碼可能有需要再改善?
hi josh:
第一次用手機搜尋和配對藍牙序列模組,的確比較花時間。日後再使用,幾乎是立即連線,就像其他藍牙裝置一樣(如:滑鼠、鍵盤和耳機)。
假如你也是用Android手機的話,可以下載Bluetooth SPP測試看看。
thanks,
jeffrey
1 請問進入AT模式方法,手冊上寫
PIO11變HI之後進入。可是我試的結果
只有在開機之前,先接HI再開機才有進入AT
因為我PIO11是FOLAT,如果開完機,再送HI
則不會進入AT模式,如果是這樣
那我如果用MCU控制不就能隨意進入AT模式??
hi scott:
你可以嘗試像底下的電路圖,在藍牙板子的PIO11腳接10KΩ電阻,再接電源,這樣可以讓該腳位維持在高電位。開機後視需要,從Arduino送出低電位,應該可以讓該腳轉成低電位。
如果不行的話,試試底下的電晶體接法,25KΩ是我隨意設的,用更高的阻值應該也無妨。從Arduino輸出高電位,將讓PIO11腳變成低電位。
thanks,
jeffrey
Hi 版主
試出來的結果
兩種模式要用兩種不同的鮑率
開機就接hi電壓,鮑率要用38400
開機後才設hi電壓,鮑率要用9600
hi scott:
感謝告知!
thanks,
jeffrey
to jeffrey:
Thx for your answer !! This is very helpful :))
謝謝您的解釋哦!! 感恩!!
板主你好,我剛接觸Arduino,所以不大懂藍牙要先從哪塊板子買起,露x拍賣上有很多版本,是否能幫我鑒定看看?
http://goods.ruten.com.tw/item/show?21107232280895
(這個多出了STATE與KEY,是別人焊好的模組)
http://goods.ruten.com.tw/item/show?21304265735031
(這應該就是基本的需要自己焊吧?)
沒錯!那兩種模組都行。
have fun!
jeffrey
老師你好 請問一下
我買了你ARDUINO書
照你的步驟做
我執行十四章藍芽程式
下面跑出這問題來無法行 原因何在!?
serial port”com3″ already in use Try qulting any programs that may be using it
Binary sketch size: 3,382 bytes (of a 32,256 byte maximum)
processing.app.SerialException: Serial port ‘COM3’ already in use. Try quiting any programs that may be using it.
at processing.app.Serial.(Serial.java:171)
at processing.app.Serial.(Serial.java:77)
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:77)
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:174)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
at processing.app.Sketch.upload(Sketch.java:1671)
at processing.app.Sketch.exportApplet(Sketch.java:1627)
at processing.app.Sketch.exportApplet(Sketch.java:1599)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2380)
at java.lang.Thread.run(Thread.java:619)
processing.app.debug.RunnerException: Serial port ‘COM3’ already in use. Try quiting any programs that may be using it.
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:101)
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:174)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
at processing.app.Sketch.upload(Sketch.java:1671)
at processing.app.Sketch.exportApplet(Sketch.java:1627)
at processing.app.Sketch.exportApplet(Sketch.java:1599)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2380)
at java.lang.Thread.run(Thread.java:619)
hi sun:
我的藍牙板子佔用COM3序列埠,你可能需要查看你的板子使用的COM埠。
thanks,
jeffrey
哈囉~~ 請問HC-05藍芽模組我輸入AT指令中的AT+INQ去抓取藍芽訊號強弱時出現了ERROR(16)的訊息 我上網找了一下 都找不到答案 請問能否幫我解答?
不同藍牙模組的AT指令集可能不一樣,你可以跟廠商索取AT指令集的資料,先確認一下它採用的指令格式。
thanks,
jeffrey
AT ing要加參數才可以,參數是你要尋找的那個裝置,你可以google HC05 AT COMMAND可以找到所有指令的說明
感謝夜市小霸王的補充!
thanks,
jeffrey
Hi! 可否把藍牙的接收距離由10M改成5M,如果有,在那修改?
應該沒有這種功能。
thanks,
jeffrey
老師您好~ 我想問一下 我已經用USB 轉TTL 接藍芽模組 (HC-05帶底板)
事先已經用平板進行配對過 密碼也輸入過配對成功
之後也拔除電源重新接電源 進入AT模式(燈會緩慢的閃爍)
也使用軟體 AccessPort 連接的COM Port也是正確的
可是他始終沒有回應 是還有什麼步驟我沒有做的嗎
hi sasa:
請用38400bps速率連線,指令後面加上CRLF (\r\n)結尾,並且對調RX, TX連接腳位試試看。
thanks,
jeffrey
謝謝老師 已經解決問題了
我的情况和你一样,请问你是怎么解决的呢?
老師您好
最近剛在看老師的書學習arduino
關於藍芽模組與arduino的連接有些困或想請教
老師書中提到藍芽的TxD是接arduino的RxD,藍芽的RxD是接arduino的TxD
但日前參加一個工作坊的卻是說:藍芽的TxD是接arduino的TxD,藍芽的RxD接arduino的RxD,有的狀況才是反過來
(http://www.cavedu.com/cave_inside/Arduino%20%26%20Bluetooth.pptx) 投影片第5頁
想請教老師這兩種接法都正確嗎,差異為何?
謝謝
hi san:
連接序列通訊模組時,RX一定是接TX:
簡報檔的文字應該是筆誤。
thanks,
jeffrey
請問當進入AT模式時(測藍芽接收強度)藍芽端接收到數值時要把數值傳回Arduino,能用程式指令把回傳回來Arduino的數值抓出來到程式裡使用嗎?
藍牙的接收強度資訊類似這樣,用逗號分開三組資料:
+INQ:2:72:D2224,3E0104,FFBC
如果可以從序列埠接收到此值,就能處理。
thanks,
jeffrey
您好 我有接收到+INQ:2:72:D2224,3E0104,FFBC資料型態的值
但現在用程式指令想抓出FFBC那邊的值各種錯誤,不太確定到底能不能單抓出FFBC這值就好…
C語言具有一個分割字串函數,叫做strtok(),指令格式如下:
假設要被分割的原始字串存入str變數,其中包含兩個分隔符號(逗號):
第一次執行strtok()函數,它將傳回”+INQ:2:72:D2224″字串,並且把找到的分隔符號改填入NULL字元:
若要繼續分割字串,「原始字串」必須改成NULL,讓它從上一個分割點繼續往下找尋分隔符號:
底下的範例程式碼將把最後一個分割字串存入last變數:
thanks,
jeffrey
非常感謝您!我的問題已經找到解法!
不客氣~
thanks,
jeffrey
你好:
請問mac 用 CoolTerm
要怎麼用AT更改資料傳輸速率呢?
你好~
我們是專題生
我們想用Arduino接藍芽模組去測距
若距離過近就會在APP上產生警示
請問此方法可行嗎?
hi annie:
可行,請用這些關鍵字組合搜尋,就能找到許多相關模組和資料:
iBeacon 藍牙 4.0 BLE 定位 防丟器 尋物器 bluetooth distance detection
thanks,
jeffrey
您好我利用藍芽滑桿控制無刷馬達的轉速,但是在傳輸資料過去的瞬間馬達會有怪聲,尤其在低轉速的時候,所以想說是接收到爆衝訊號一瞬間提高轉速後又回復,而將連線中斷後怪聲卻消失了,所以在想說是不是傳輸資料的瞬間出了問題,我是用hc-05模組,是不是換包爾率高一點的模組能解決這問題呢? 或是有其他解決方法?
hi 阿翔:
我覺得跟藍牙的傳輸速率無關,你不妨先用有線方式控制,再比對測試結果。
thanks,
jeffrey
老師您好:
我需要用藍芽讓信號一直輸出,我想輸出f時,讓Pul一直保持HIGH
我程式這樣寫,結果走走停停,請問老師是否有其他方式
謝謝
程式如下:
SoftwareSerial HC(10, 11);
char val;
const int Pul = 3;
const int Dir = 4;
void setup() {
digitalWrite(9, HIGH);
Serial.begin(9600);
Serial.println(“hello!”);
HC.begin(9600);
pinMode(9, OUTPUT);
pinMode(Pul,OUTPUT);
pinMode(Dir,OUTPUT);
}
void loop() {
if (Serial.available()) {
val = Serial.read();
HC.println(val);
}
if (HC.available()) {
val = HC.read();
Serial.println(val);
}
int status = analogRead(val);
switch (status) {
case ‘f’:
digitalWrite(Pul,HIGH);
digitalWrite(Dir,LOW);
delay(300);
break;
}
}
hi 宗翰:
這個程式敘述似乎有問題:
你為何要把從藍牙取得的輸入值,當作類比輸入腳位,再讀取類比輸入值?
此外,如果你要讓status保持目前的儲存狀態值,應該不要在loop()中定義它,而是要將它定義成全域變數。
thanks,
jeffrey
老師您好:
(你為何要把從藍牙取得的輸入值,當作類比輸入腳位,再讀取類比輸入值?)這是我之前測試忘記拿掉
我這個程式動作的用意是希望從藍牙取得的輸入值放在(val),再讀取輸入值放在status,所有動作的變化就是看status
輸入f是上,輸入s是停止,輸入b是下
但是我輸入f之後程式就只執行一次,動作動一下就停止,有辦法在arduino程式端表達出,輸入f之後信號保持輸出,直到其他指令近來在改變動作嗎??
switch (status) {
case ‘f’:
digitalWrite(Pul,HIGH);
digitalWrite(Dir,LOW);
break;
還是我只能在APP的按鈕上面做上述的動作??持續按壓和按一下??
煩請老師請老師教導一下,謝謝
你只要把status變數的宣告改成全域變數就行了。因為根據你目前的程式碼,Arduino進行下一次迴圈時,status值就被清空了,所以它只會動一下。
thanks,
jeffrey
老師您好:
我把status變數的宣告改成全域變數後,程式如下
#include
SoftwareSerial HC(10, 11);
char val;
const int Pul = 3;
const int Dir = 4;
const int limitup = 2;
const int limitdown = 5;
const int status = val;
void setup() {
digitalWrite(9, HIGH);
Serial.begin(9600);
Serial.println(“hello!”);
HC.begin(9600);
pinMode(9, OUTPUT);
pinMode(Pul,OUTPUT);
pinMode(Dir,OUTPUT);
}
void loop() {
if (Serial.available()) {
val = Serial.read();
HC.println(val);
}
if (HC.available()) {
val = HC.read();
Serial.println(val);
}
switch (status) {
case ‘f’:
digitalWrite(Pul,HIGH);
digitalWrite(Dir,LOW);
break;
case ‘s’:
digitalWrite(Pul,LOW);
digitalWrite(Dir,LOW);
break;
case ‘b’:
digitalWrite(Pul,HIGH);
digitalWrite(Dir,HIGH);
break;
}
}
不知道是不是我宣告全域變數的方式有問題嗎??
這樣修改後連動作都不會動
初學者問題比較多,還請老師見諒
根據你的程式碼,刪除這一行:
const int status = val;
接著把底下的這一行:
switch (status) {
改成:
switch (val) {
就行了。
thanks,
jeffrey
老師您好:
先謝謝老師教導,但是我測試後還是只動作一次就停止了
我在想看看是我哪邊有問題
謝謝老師
那就麻煩你參閱書本「動手做14-2:用Android手機藍牙遙控機器人」單元裡的馬達控制程式說明。
thanks,
jeffrey
我利用Arduino接上藍芽4.0模組(HM-10) 與我手機藍芽連接想在Arduino上取得RSSI值來做與手機距離之換算,當靠近時可以做自動開關燈的功能
請問要如何取得該RSSI值呢? 想好久了還是找不出方法
hi tom:
請參考這一篇留言。
thanks,
jeffrey
老師你好
不好意思請教一下,老師有研究過HC08嗎?
因為不知道怎麼讓他進入AT模式 接法 我是3.3v gnd 8 9這樣接的 謝謝
hi vincent:
拍謝,我手邊只有HC-05和HC-06,你可以跟廠商索取技術文件,或者搜尋”bluetooth hc-08 datasheet”關鍵字。
thanks,
jeffrey
您好,我想要用RS232模組來設定HC-06的鮑率,
也去下載了AccessPort,
只是連上去之後,輸入AT等等指令好像也都沒反應,
應該是HC-06接5V和接地,
另外兩個腳接RS232的RX和TX?
或是我AccessPort設定的部分有錯?
應該是USB連接上去選COM腳位就好?
或是還要做其他設定嗎?
hi sky:
請在AccessPort當中,使用9600bps速率和HC-06連線(請參閱「HC-05與HC-06藍牙模組補充說明(三):使用Arduino設定AT命令」)。
thanks,
jeffrey
設定目前是這樣
http://i.imgur.com/ACbMBwS.png
應該是9600沒錯?
只是好像也都沒反應
趙老师:USB轉TTL的介面需要買哪種?我在網店看到有:
FT232RL USB转串口模块 USB转TTL,
CH340T模块 USB转串口/下载器/ISP下载模块 USB转TTL 支持Win7
PL2303TA 下载线 USB转TTL RS232模块升级模块USB转串口下载线
是不是這些都可以用來修改藍牙模組訊息?
期盼趙老師的解答,謝謝
對,如果你打算通過USB設置藍牙的參數,那就必須購買USB轉TTL串口下載線。購買時請確認,模塊是否支持Windows 10。
建議選購可以切換5V和3.3V信號電壓輸出的模塊,比較方便。
have fun!
jeffrey
赵老师:利用SoftwareSerial程式库把arduino的8,9脚做为收发脚,然后将usb转ttl模块的txd,rxd分别连接arduino的8,9脚,接着在AccessPort软件中设置好com口与波特率后,能与arduino通信吗?
每次设置好端口信息后,通过accessport软件向arduino发送信息是可以的,接着如果想要再发送的话就提示connection Failure,必须关闭软件再重新配置一次才可以,这是为什么?还有arduino的发送到电脑的信息,在accessport中都无法接收到。请赵老师帮忙,指点迷津,谢谢!,
hi lee:
我之前有測試過類似的設置,通過AccessPort收發序列信息沒問題,或許可以調整一下「行結尾」字符設置。
thanks,
jeffrey
总算找到问题原因了:1.usb转ttl模块的gnd脚必须与arduino的gnd脚连接起来才可以,2. arduino最好外接电源供电,如果用usb供电的话,不知道为什么usb转ttl模块的com端口就设备管理器中消失了,拔掉arduino的usb线,则又出现usb转ttl的com端口
实验是可以做了,对于原因2 不知道为什么,哪位大神如果知道还请指点迷津
因為書本第二章的接地單元有說明,所有設備的接地點都要接在一起,所以我壓根沒想到你忘了把接地相連,感謝告知!
thanks,
jeffrey
可以請問一下
目前我是將8051接一HC05 PC直接使用TTL接一HC05(沒用Arduino uno)
作動構想是當8051端的按鈕按下 PC上會顯示接收來自8051的訊號
反之 當PC按下某鍵後 8051接收到資料後會讓LED燈亮
有幾個小問題想問
1、PC直接接TTL接HC05就可以直接傳送接收資料嗎?
2、PC接收到後要如何顯示在螢幕上表示有接收到訊號(例如有什麼軟體或程式
1. 沒測試過,如果你的電腦沒有內建藍牙,應該可以透過USB轉序列線,連接HC-05模組,跟另一個HC-05/06建立藍牙序列連線。
2. 可用AccessPort, CoolTerm, RealTerm… 等軟體。
thanks,
jeffrey
赵老师:本页面倒数第3张图片中,描述了如何通过usb转ttl介面连接蓝牙模组修改其参数,我注意到图中一个细节问题:蓝牙模组的接地脚与usb转ttl下载线的接地脚相连,蓝牙模组的电源接脚却只是用红色字体3.3v指示着,没有标出具体接在哪里,我想知道蓝牙模组的电源接脚可以从arduino的3.3v电源口相连吗?若相连,那是不是意味着arduino的接地脚也必须与蓝牙模组的接地脚相连??
期盼赵老师的回复,谢谢!
蓝牙模块的3.3V电源可以直接使用Arduino板的3.3V;是的,两者的接地要相连。
thanks,
jeffrey
您好:
想請問一下~藍芽焊好的6-pin腳位的那種用5V,沒焊的用3.3V是什麼原因呢?
請參閱「HC-05與HC-06藍牙模組補充說明(一)」這篇文章,因為焊好底板的包含5V直流電壓轉換元件。
thanks,
jeffrey
你好,怎样设置两个蓝牙自动联机?即我要做一个蓝牙门禁,怎么实现两个蓝牙之间自动连接,并识别。谢谢 希望您慷慨解囊。
请参阅「藍牙模組補充說明(四):無線連結兩個Arduino控制板」。
thanks,
jeffrey
趙老師你好
我想再迴圈裡面Serial.print(\”AT+IBE1XXXXXXXX\”)
根據我的需求來修改UUID
但是看起來無效
麻煩替我解答
謝謝
不同藍牙模組廠商使用的韌體版本可能不同,請先向商家索取規格書,確認AT命令的名稱是否正確。
thanks,
jeffrey
老師你好
有不懂的問題請教
程式內碼
BT.begin(38400);//藍芽以38,400bps啟動
藍芽啟動後
我在序列埠監視窗口
鍵入 AT+UART
回授得到 +UART:9600,0,0 的資訊
為何會不一致呢?
我是一開機就將AT模式腳位設為HI的
因為這兩個速率設定沒有關聯性。
BT.begin(38400);
用於設定兩個藍牙裝置之間的無線通訊速率,兩個藍牙裝置的速率必須一致。
AT+UART
用於查看或設置藍牙裝置和電腦之間,進入AT模式所使用的通訊速率。
thanks,
jeffrey
hi all,
請問,關於
HC-05 througput ?是否可以到達128kbps 以上?
老師您好
我使用的是CC2541模組試過很多方法輸入AT指令後完全沒有反應,想請問該如何解決?
CC2541是藍牙4.0的模組,跟本文的HC-05/06完全不同,通訊協定和操作方式也不太一樣,煩請參閱產品技術規格文件。
thanks,
jeffrey
想請問一下老師 AT+INQ 要讀取RSSI 時,必須先搜索其他附近的藍芽嗎,我在輸入指令後就只出現 OK 不知怎麼解決?
請將HC-05設定成主控端(master)。
thanks,
jeffrey
想請問一下老師,HC-05有除了AT+INQ的方式,搜尋周邊藍芽訊號的功能?
不同版本的韌體,AT命令會有些差異,以廠商提供的技術文件為準。
thanks,
jeffrey