執行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修改藍芽模組的傳輸速率

延伸閱讀

Posts created 469

109 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

  3. 謝謝您的回答!
    那在跟您請教一個問題
    請問電腦的鮑率要如何查詢呢

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

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

      have fun!
      jeffrey

    1. hey rick, rick!

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

      cubie

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

    1. hi eric:

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

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

      good luck!
      jeffrey

  5. Cubie 你好:

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

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

    Rick
    Skype : flying-apple

    1. hi rick:

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

      happy hacking!
      jeffrey

  6. 我买了一个蓝牙模块,它已经引出了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

  7. 您好,不好意思想請問一下
    您有留這個模塊的規格書嗎?
    之前買的沒有規格書(茶

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

    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

  9. 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

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

    先謝謝您的回覆:)

    1. hi annie:

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

      have fun!
      jeffrey

  11. 謝謝您的回覆!

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

    謝謝:)

    1. 可以,大多數的Arduino控制板上面都有一個USB to TTL轉換晶片,可以拿來用。

      thanks,
      jeffrey

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

    我也是玩遙控的

    感恩

    1. hi max:

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

      have fun!
      jeffrey

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

    1. hi josh:

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

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

      thanks,
      jeffrey

  14. 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

  15. to jeffrey:
    Thx for your answer !! This is very helpful :))
    謝謝您的解釋哦!! 感恩!!

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

    1. hi sun:

      我的藍牙板子佔用COM3序列埠,你可能需要查看你的板子使用的COM埠。

      thanks,
      jeffrey

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

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

      thanks,
      jeffrey

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

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

    1. hi sasa:

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

      thanks,
      jeffrey

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

    1. hi san:

      連接序列通訊模組時,RX一定是接TX:

      連接TTL序列通訊模組

      簡報檔的文字應該是筆誤。

      thanks,
      jeffrey

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

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

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

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

      thanks,
      jeffrey

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

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

      strtok()函數語法

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

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

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

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

      char *str = "+INQ:2:72:D2224,3E0104,FFBC";  // 原始字串
      char *token;  // 儲存分割字串
      char *last;   // 儲存最後一個分割字串
      
      void setup() {
        Serial.begin(9600);
        
         token = strtok(str,",");  // 使用","分割原始字串
         while (token != NULL){
           Serial.println(token);   // 顯示分割內容
           last = token;
           token = strtok(NULL,","); // 繼續分割
         }
         
         Serial.print("Strength: ");  // 顯示訊號強度
         Serial.println(last);
      }
      
      void loop() {
      }
      

      thanks,
      jeffrey

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

    1. hi annie:

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

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

      thanks,
      jeffrey

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

    1. hi 阿翔:

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

      thanks,
      jeffrey

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

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

      if (HC.available()) {
        val = HC.read();
        Serial.println(val);
      }
      
      int status = analogRead(val);
      

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

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

      thanks,
      jeffrey

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

    我這個程式動作的用意是希望從藍牙取得的輸入值放在(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

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

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

    謝謝老師

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

      thanks,
      jeffrey

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

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

    1. hi vincent:

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

      thanks,
      jeffrey

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

  31. 趙老师: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

  32. 赵老师:利用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

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

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

    1. 1. 沒測試過,如果你的電腦沒有內建藍牙,應該可以透過USB轉序列線,連接HC-05模組,跟另一個HC-05/06建立藍牙序列連線。
      2. 可用AccessPort, CoolTerm, RealTerm… 等軟體。

      thanks,
      jeffrey

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

    1. 蓝牙模块的3.3V电源可以直接使用Arduino板的3.3V;是的,两者的接地要相连。

      thanks,
      jeffrey

  35. 您好:
    想請問一下~藍芽焊好的6-pin腳位的那種用5V,沒焊的用3.3V是什麼原因呢?

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

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

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

      thanks,
      jeffrey

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

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

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

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

      thanks,
      jeffrey

  39. 老師您好
    我使用的是CC2541模組試過很多方法輸入AT指令後完全沒有反應,想請問該如何解決?

    1. CC2541是藍牙4.0的模組,跟本文的HC-05/06完全不同,通訊協定和操作方式也不太一樣,煩請參閱產品技術規格文件。

      thanks,
      jeffrey

  40. 想請問一下老師 AT+INQ 要讀取RSSI 時,必須先搜索其他附近的藍芽嗎,我在輸入指令後就只出現 OK 不知怎麼解決?

    1. 不同版本的韌體,AT命令會有些差異,以廠商提供的技術文件為準。

      thanks,
      jeffrey

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top