執行AT命令(AT-command)修改藍芽模組的資料傳輸速率

執行AT命令(AT-command)修改藍芽模組的資料傳輸速率
文∕趙英傑

藍芽序列埠模組(對岸稱為「藍牙串口模塊」),是一種能將TTL序列資料改以藍芽無線方式收發的介面裝置,可以取代RS-232串列線。由於網拍上的藍芽模組大多是對岸製造的,賣家將對岸的產品名稱和說明,原封不動地張貼出來,因此無論是在本地的拍賣網站或者對岸的淘寶網,商品關鍵字搜尋建議採用「藍牙串口」。

底下是筆者購買的藍芽序列埠模組外觀,印刷電路板周圍像郵票般的齒孔是模組的接腳,需要自行焊接;有些廠商販售的模組已經焊接好必要的接線。

藍芽序列埠模組,藍牙串口模塊

藍芽模組可能有很多接腳,但主要的連結線只有四條(接收、傳送、正電源和接地),外加一個連線狀態指示LED燈(註:不同廠商製造的藍芽模組的接腳定義可能不一樣)。

大多數藍芽模組採3.3v供電,而外部電源通常是5v,因此我將它和一個3.3v直流電壓調節IC(LD33)焊接在一起;市售的Arduino微電腦板大多內建3.3v電壓輸出,因此不需要直流降壓元件。

組裝好的藍芽序列埠模組

電路板底部的四個接腳就是接收、傳送、正電源和接地,方便和自製的Arduino板銜接:

加上藍芽模組的自製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的畫面:

使用AccessPort修改藍芽模組的傳輸速率

修改成功後,藍芽模組將回應“+UART9600,0,0”和“OK”。

使用AccessPort修改藍芽模組的傳輸速率

延伸閱讀

96 thoughts on “執行AT命令(AT-command)修改藍芽模組的資料傳輸速率

  1. 你好,
    最近有一組紅外線領夾式麥克風,
    想尋找人幫忙把它改成頭戴式麥克風,
    不知您是否能夠幫忙?

  2. 您好,想跟您請教幾個問題
    接收的接腳是接收Arduino輸出的訊號嗎?
    那Arduino輸出的訊號是數位訊號嗎?還是類比?
    傳送腳位和TxD是同一個嗎?

    麻煩您了!

    1. TxD代表「傳送端(Transmitter)」,RxD代表「接收端(Receiver)」。
      微處理器「傳出」的訊息,要給外部設備「接收」,所以處理器的TxD,接設備的RxD,反之亦然。
      序列埠的輸出∕輸入都是數位訊號。

      嚴格來說,Arduino採用的ATMega8, 168, 328等單晶片微處理器,並沒有「類比輸出」功能,只有「類比輸入」(位於處理器的23~28接腳)。Arduino的「類比輸出」是藉由調整數位訊號的脈衝寬度來模擬(稱為PWM調變),但是有些裝置並不接受這種模擬的類比訊號。

      have fun!
      jeffrey

    1. 將序列埠裝置接上USB之後,打開Windows的裝置管理員,裡面有一項「連接埠(COM和LPT)」,其中包含剛剛連接的序列裝置。

      在它上面按滑鼠右鍵,查看「內容」,即可在「連接埠設定」畫面看到鮑率和其他參數了。

      have fun!
      jeffrey

    1. hey rick, rick!

      真是太意外了,上個月和鄰居聊四軸飛行器和滑翔機時,還談到你說~
      要一起排隊買iPad嗎 :-D
      cubie

  3. 不好意思請問一下
    我模組已經設到了order-response模式
    但是我打AT指令進去之後
    他回我的都跟我打進去的一樣
    請問我該如何解決

    1. hi eric:

      如果輸入AT(並按下Enter),藍芽模組應該會回應”OK”。一直回覆相同的訊息,感覺上好像RxD和TxD短路了,發送的訊息,直接被序列埠的接收回來…那假如隨便輸入一些文字,例如:”hello world”,是否也會原封不動地傳回”hello world”呢?

      建議先單獨測試USB轉TTL的裝置看看。

      good luck!
      jeffrey

  4. Cubie 你好:

    滑翔機我已經停了四五個月沒飛了,現在主要專攻多軸載具的空拍服務,Face Book 的粉絲團有我的作品,有空的話可以去看看,你有 Skype 或 MSN 帳號可以聯繫嗎?我也認識幾個愛玩愛改造 DIY 的朋友可以介紹給你認識。

    https://www.facebook.com/AeroCam.tw

    Rick
    Skype : flying-apple

    1. hi rick:

      看了你的Facebook粉絲頁,再度燃起我製作四軸飛行器的慾望,唉,不過只把遙控模型當玩具,不能跟你這專業人士比擬。我七月會帶小孩到台北玩,如果你有空的話,再去拜訪你。

      happy hacking!
      jeffrey

  5. 我买了一个蓝牙模块,它已经引出了key,rxd,txd,5V,3.3V,gnd.然后我想通过串口发送AT指令,连接了5V,rxd,txd,gnd,然后发送AT,一直发送都要没回应ok,我觉得可能是key脚没有连接的问题,你能给我讲讲key脚该怎么连接吗?谢谢

    1. 不同模块的设置方式可能不一样,我朋友有个类似的蓝牙模块,进入AT命令的方式如下:
      1. Key脚接地。
      2. 模块上电。
      3. Key脚改接Vcc(高电平)。

      AT指令的传输速率和模块的初始设置相同,例如,若默认的通信速率是9600bps,那AT指令也是9600bps。

      详细的设置方式,最好向店家索取文档。

      have fun!
      jeffrey

  6. 你好 我買的藍芽跟你同樣的
    我想請教大哥的事
    我有兩個藍牙 要戶相通訊 兩方都是單晶片
    是不是 兩個藍牙一通電就可以傳資料
    資料上說 要主從機的關系 密碼

    1. 我尚未測試過藍牙模組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

  7. HI cubie
    請問,
    1.兩塊MCU個接上藍芽模組(已設定一主一從),如何使用主端MCU去修改從端MCU藍芽的AT指令?
    2.請問在主端MCU與從端MCU通訊前如何驗證驗證碼與ID?
    3.藍芽當AT模式與當作接發送通訊的TX,RX接法都是一致嗎?

    感謝回覆!!!

    1. hi 嘴嘴:

      1. AT指令是透過序列埠(有線)傳送,因此,若要透過藍牙無線傳入從端,我認為不可行。
      2. 我只測試過和個人電腦以及Android裝置相連,尚未嘗試master模組發起探索與配對功能。
      3. 序列埠連線方式都一樣。

      have fun!
      jeffrey

  8. 您好!我們是目前升大四的學生正在做畢業專題,關於藍芽模組的配對想請問您。
    我們是用BC417這個藍芽模組,想要和一個藍芽腦波儀進行配對,我們的做法是將藍芽模組接在麵包板上,
    透過Seeeduino供電,和 USB2.0 to Rs232 做Tx和Rx的傳送和接收。
    可是一直不能用AccessPort下AT指令進行配對,是因為用Rs232所以不能直接下AT指令嗎?
    還是說有其他的做法呢?

    先謝謝您的回覆:)

    1. hi annie:

      RS-232的訊號電壓是正、負12V,妳應該使用USB to TTL轉換線連接藍牙模組。

      have fun!
      jeffrey

  9. 謝謝您的回覆!

    另外還想請問,可以直接透過Seeeduino在Serial Monitor裡直接下達AT指令嗎?
    我在網路上有看到有人直接透過Arduino下達AT指令(看起來好像沒有另外寫任何程式)
    不過用的板子是Motoduino/Arduino,不知道Seeeduino是不是也可以這麼做?

    謝謝:)

  10. 您好~~我買了一個 PL2303_的USB to TTL 連上我的HC-05藍芽模組
    KEY有上電~無上電 在軟體裡都沒有回應~~不知道哪裡有問題~可以教教我嗎

    我也是玩遙控的

    感恩

    1. hi max:

      藍牙模組通電後,先用電腦或手機∕平板配對。
      配對成功後,再使用AccessPort或CoolTerm等軟體,
      接USB to TTL,再接藍牙模組,即可傳送或接收訊息。

      have fun!
      jeffrey

  11. 你好,我想請教一下
    不知道您有沒有用手機去連結過藍芽模組呢?
    我本身是學生也是專題需要,有做到這一個部分
    當我搜尋到藍芽模組後
    而我要連結這個裝置的時間有3~5秒之久,甚至更長吧
    身為使用者可能無法等上這麼長的時間,
    而這個部分不知道能否替我解答或者是給我一些參考建議呢?
    不知道這是欲連接藍芽模組既定的等待時間
    還是我的程式碼可能有需要再改善?

    1. hi josh:

      第一次用手機搜尋和配對藍牙序列模組,的確比較花時間。日後再使用,幾乎是立即連線,就像其他藍牙裝置一樣(如:滑鼠、鍵盤和耳機)。

      假如你也是用Android手機的話,可以下載Bluetooth SPP測試看看。

      thanks,
      jeffrey

  12. 1 請問進入AT模式方法,手冊上寫
    PIO11變HI之後進入。可是我試的結果
    只有在開機之前,先接HI再開機才有進入AT
    因為我PIO11是FOLAT,如果開完機,再送HI
    則不會進入AT模式,如果是這樣
    那我如果用MCU控制不就能隨意進入AT模式??

    1. hi scott:

      你可以嘗試像底下的電路圖,在藍牙板子的PIO11腳接10KΩ電阻,再接電源,這樣可以讓該腳位維持在高電位。開機後視需要,從Arduino送出低電位,應該可以讓該腳轉成低電位。

      藍牙板PIO11接高電位

      如果不行的話,試試底下的電晶體接法,25KΩ是我隨意設的,用更高的阻值應該也無妨。從Arduino輸出高電位,將讓PIO11腳變成低電位。

      藍牙板PIO11接高電位

      thanks,
      jeffrey

    2. Hi 版主
      試出來的結果
      兩種模式要用兩種不同的鮑率
      開機就接hi電壓,鮑率要用38400
      開機後才設hi電壓,鮑率要用9600

  13. 老師你好 請問一下
    我買了你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)

  14. 哈囉~~ 請問HC-05藍芽模組我輸入AT指令中的AT+INQ去抓取藍芽訊號強弱時出現了ERROR(16)的訊息 我上網找了一下 都找不到答案 請問能否幫我解答?

    1. 不同藍牙模組的AT指令集可能不一樣,你可以跟廠商索取AT指令集的資料,先確認一下它採用的指令格式。

      thanks,
      jeffrey

    2. AT ing要加參數才可以,參數是你要尋找的那個裝置,你可以google HC05 AT COMMAND可以找到所有指令的說明

  15. 老師您好~ 我想問一下 我已經用USB 轉TTL 接藍芽模組 (HC-05帶底板)
    事先已經用平板進行配對過 密碼也輸入過配對成功
    之後也拔除電源重新接電源 進入AT模式(燈會緩慢的閃爍)
    也使用軟體 AccessPort 連接的COM Port也是正確的
    可是他始終沒有回應 是還有什麼步驟我沒有做的嗎

    1. hi sasa:

      請用38400bps速率連線,指令後面加上CRLF (\r\n)結尾,並且對調RX, TX連接腳位試試看。

      thanks,
      jeffrey

  16. 老師您好
    最近剛在看老師的書學習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頁
    想請教老師這兩種接法都正確嗎,差異為何?
    謝謝

  17. 請問當進入AT模式時(測藍芽接收強度)藍芽端接收到數值時要把數值傳回Arduino,能用程式指令把回傳回來Arduino的數值抓出來到程式裡使用嗎?

    1. 藍牙的接收強度資訊類似這樣,用逗號分開三組資料:

      +INQ:2:72:D2224,3E0104,FFBC

      如果可以從序列埠接收到此值,就能處理。

      thanks,
      jeffrey

  18. 您好 我有接收到+INQ:2:72:D2224,3E0104,FFBC資料型態的值
    但現在用程式指令想抓出FFBC那邊的值各種錯誤,不太確定到底能不能單抓出FFBC這值就好…

    1. C語言具有一個分割字串函數,叫做strtok(),指令格式如下:

      strtok()函數語法

      假設要被分割的原始字串存入str變數,其中包含兩個分隔符號(逗號):

      第一次執行strtok()函數,它將傳回”+INQ:2:72:D2224″字串,並且把找到的分隔符號改填入NULL字元:

      若要繼續分割字串,「原始字串」必須改成NULL,讓它從上一個分割點繼續往下找尋分隔符號:

      底下的範例程式碼將把最後一個分割字串存入last變數:

      thanks,
      jeffrey

  19. 你好~
    我們是專題生
    我們想用Arduino接藍芽模組去測距
    若距離過近就會在APP上產生警示
    請問此方法可行嗎?

    1. hi annie:

      可行,請用這些關鍵字組合搜尋,就能找到許多相關模組和資料:

      iBeacon 藍牙 4.0 BLE 定位 防丟器 尋物器 bluetooth distance detection

      thanks,
      jeffrey

  20. 您好我利用藍芽滑桿控制無刷馬達的轉速,但是在傳輸資料過去的瞬間馬達會有怪聲,尤其在低轉速的時候,所以想說是接收到爆衝訊號一瞬間提高轉速後又回復,而將連線中斷後怪聲卻消失了,所以在想說是不是傳輸資料的瞬間出了問題,我是用hc-05模組,是不是換包爾率高一點的模組能解決這問題呢? 或是有其他解決方法?

    1. hi 阿翔:

      我覺得跟藍牙的傳輸速率無關,你不妨先用有線方式控制,再比對測試結果。

      thanks,
      jeffrey

  21. 老師您好:
    我需要用藍芽讓信號一直輸出,我想輸出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;
    }
    }

    1. hi 宗翰:

      這個程式敘述似乎有問題:

      你為何要把從藍牙取得的輸入值,當作類比輸入腳位,再讀取類比輸入值?

      此外,如果你要讓status保持目前的儲存狀態值,應該不要在loop()中定義它,而是要將它定義成全域變數。

      thanks,
      jeffrey

  22. 老師您好:
    (你為何要把從藍牙取得的輸入值,當作類比輸入腳位,再讀取類比輸入值?)這是我之前測試忘記拿掉

    我這個程式動作的用意是希望從藍牙取得的輸入值放在(val),再讀取輸入值放在status,所有動作的變化就是看status
    輸入f是上,輸入s是停止,輸入b是下
    但是我輸入f之後程式就只執行一次,動作動一下就停止,有辦法在arduino程式端表達出,輸入f之後信號保持輸出,直到其他指令近來在改變動作嗎??
    switch (status) {
    case ‘f’:
    digitalWrite(Pul,HIGH);
    digitalWrite(Dir,LOW);
    break;
    還是我只能在APP的按鈕上面做上述的動作??持續按壓和按一下??

    煩請老師請老師教導一下,謝謝

    1. 你只要把status變數的宣告改成全域變數就行了。因為根據你目前的程式碼,Arduino進行下一次迴圈時,status值就被清空了,所以它只會動一下。

      thanks,
      jeffrey

  23. 老師您好:
    我把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;
    }
    }

    不知道是不是我宣告全域變數的方式有問題嗎??
    這樣修改後連動作都不會動
    初學者問題比較多,還請老師見諒

    1. 根據你的程式碼,刪除這一行:

      const int status = val;

      接著把底下的這一行:

      switch (status) {

      改成:

      switch (val) {

      就行了。

      thanks,
      jeffrey

  24. 老師您好:
    先謝謝老師教導,但是我測試後還是只動作一次就停止了
    我在想看看是我哪邊有問題

    謝謝老師

    1. 那就麻煩你參閱書本「動手做14-2:用Android手機藍牙遙控機器人」單元裡的馬達控制程式說明。

      thanks,
      jeffrey

  25. 我利用Arduino接上藍芽4.0模組(HM-10) 與我手機藍芽連接想在Arduino上取得RSSI值來做與手機距離之換算,當靠近時可以做自動開關燈的功能
    請問要如何取得該RSSI值呢? 想好久了還是找不出方法

  26. 老師你好
    不好意思請教一下,老師有研究過HC08嗎?
    因為不知道怎麼讓他進入AT模式 接法 我是3.3v gnd 8 9這樣接的 謝謝

    1. hi vincent:

      拍謝,我手邊只有HC-05和HC-06,你可以跟廠商索取技術文件,或者搜尋”bluetooth hc-08 datasheet”關鍵字。

      thanks,
      jeffrey

  27. 您好,我想要用RS232模組來設定HC-06的鮑率,
    也去下載了AccessPort,
    只是連上去之後,輸入AT等等指令好像也都沒反應,
    應該是HC-06接5V和接地,
    另外兩個腳接RS232的RX和TX?
    或是我AccessPort設定的部分有錯?
    應該是USB連接上去選COM腳位就好?
    或是還要做其他設定嗎?

  28. 趙老师:USB轉TTL的介面需要買哪種?我在網店看到有:
    FT232RL USB转串口模块 USB转TTL,
    CH340T模块 USB转串口/下载器/ISP下载模块 USB转TTL 支持Win7
    PL2303TA 下载线 USB转TTL RS232模块升级模块USB转串口下载线
    是不是這些都可以用來修改藍牙模組訊息?
    期盼趙老師的解答,謝謝

    1. 對,如果你打算通過USB設置藍牙的參數,那就必須購買USB轉TTL串口下載線。購買時請確認,模塊是否支持Windows 10。

      建議選購可以切換5V和3.3V信號電壓輸出的模塊,比較方便。

      have fun!
      jeffrey

  29. 赵老师:利用SoftwareSerial程式库把arduino的8,9脚做为收发脚,然后将usb转ttl模块的txd,rxd分别连接arduino的8,9脚,接着在AccessPort软件中设置好com口与波特率后,能与arduino通信吗?
    每次设置好端口信息后,通过accessport软件向arduino发送信息是可以的,接着如果想要再发送的话就提示connection Failure,必须关闭软件再重新配置一次才可以,这是为什么?还有arduino的发送到电脑的信息,在accessport中都无法接收到。请赵老师帮忙,指点迷津,谢谢!,

    1. hi lee:

      我之前有測試過類似的設置,通過AccessPort收發序列信息沒問題,或許可以調整一下「行結尾」字符設置。

      thanks,
      jeffrey

    2. 总算找到问题原因了:1.usb转ttl模块的gnd脚必须与arduino的gnd脚连接起来才可以,2. arduino最好外接电源供电,如果用usb供电的话,不知道为什么usb转ttl模块的com端口就设备管理器中消失了,拔掉arduino的usb线,则又出现usb转ttl的com端口

      实验是可以做了,对于原因2 不知道为什么,哪位大神如果知道还请指点迷津

    3. 因為書本第二章的接地單元有說明,所有設備的接地點都要接在一起,所以我壓根沒想到你忘了把接地相連,感謝告知!

      thanks,
      jeffrey

  30. 可以請問一下
    目前我是將8051接一HC05 PC直接使用TTL接一HC05(沒用Arduino uno)
    作動構想是當8051端的按鈕按下 PC上會顯示接收來自8051的訊號
    反之 當PC按下某鍵後 8051接收到資料後會讓LED燈亮

    有幾個小問題想問
    1、PC直接接TTL接HC05就可以直接傳送接收資料嗎?
    2、PC接收到後要如何顯示在螢幕上表示有接收到訊號(例如有什麼軟體或程式

  31. 赵老师:本页面倒数第3张图片中,描述了如何通过usb转ttl介面连接蓝牙模组修改其参数,我注意到图中一个细节问题:蓝牙模组的接地脚与usb转ttl下载线的接地脚相连,蓝牙模组的电源接脚却只是用红色字体3.3v指示着,没有标出具体接在哪里,我想知道蓝牙模组的电源接脚可以从arduino的3.3v电源口相连吗?若相连,那是不是意味着arduino的接地脚也必须与蓝牙模组的接地脚相连??
    期盼赵老师的回复,谢谢!

  32. 你好,怎样设置两个蓝牙自动联机?即我要做一个蓝牙门禁,怎么实现两个蓝牙之间自动连接,并识别。谢谢 希望您慷慨解囊。

  33. 趙老師你好
    我想再迴圈裡面Serial.print(\”AT+IBE1XXXXXXXX\”)
    根據我的需求來修改UUID
    但是看起來無效
    麻煩替我解答
    謝謝

    1. 不同藍牙模組廠商使用的韌體版本可能不同,請先向商家索取規格書,確認AT命令的名稱是否正確。

      thanks,
      jeffrey

  34. 老師你好
    有不懂的問題請教
    程式內碼
    BT.begin(38400);//藍芽以38,400bps啟動
    藍芽啟動後
    我在序列埠監視窗口
    鍵入 AT+UART
    回授得到 +UART:9600,0,0 的資訊
    為何會不一致呢?
    我是一開機就將AT模式腳位設為HI的

    1. 因為這兩個速率設定沒有關聯性。

      BT.begin(38400);
      用於設定兩個藍牙裝置之間的無線通訊速率,兩個藍牙裝置的速率必須一致。

      AT+UART
      用於查看或設置藍牙裝置和電腦之間,進入AT模式所使用的通訊速率。

      thanks,
      jeffrey

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *