HC-05與HC-06藍牙模組補充說明(一)

本文旨在補充《超圖解Arduino互動設計入門》第14章「藍牙序列埠模組」,說明常見的HC-05和HC-06這兩款藍牙模組的差異。

常見的兩種支援SPP(Serial Port Profile,序列埠規範)的藍牙模組:

  • HC-05:主∕從(master/slave)一體型,出廠預設通常是「從端」模式,但是能自行透過AT命令修改(參閱「執行AT命令(AT-command)修改藍牙模組的資料傳輸速率」,以及下一篇貼文說明)。
  • HC-06:主控端或從端模式,出廠前就設定好,不能更改;市面上販售的通常是「從端」模式。

HC-05與HC-06藍牙序列埠通訊模組

HC-05和HC-06的硬體相同,都採用英國劍橋的CSR (Cambridge Silicon Radio) 公司的BC417143晶片,支援藍牙2.1+EDR規範,只是晶片內部的韌體不同。CSR是全球市佔率最高的藍牙通訊晶片廠,2014年10月中旬,全球手機晶片龍頭高通(Qualcomm)同意以25億美元現金,購併CSR,以強化該公司在物聯網(Internet of Things)的布局。韓國三星也於2012年花費3.1億美元,取得CSR公司的藍牙、WiFi和GPS定位等技術專利。

HC-05模組的外觀與主要接腳如下:

HC-05模組的外觀與主要接腳

附帶底板的HC-05和HC-06藍牙序列埠通訊模組

基本的藍牙序列通訊模組沒有引出接腳,而是在印刷電路板的四周留下郵票般的齒孔,方便焊接。

若不想動手焊接,可以選購附帶底板的模組。這個底板附帶直流電壓轉換IC,方便連接3.6V~6V的電源

附帶底板的HC-05藍牙模組外觀與接腳如下:

附帶底板的HC-05藍牙模組外觀與接腳

「命令回應模式」接腳(通常標示成“KEY”或“EN”),用於啟動AT命令模式,調整藍牙模組的設定(例如,調整序列埠的傳輸速率、修改模組的名稱、修改配對密碼…等等)。

附帶底板的HC-06藍牙模組的外觀與接腳:

附帶底板的HC-06藍牙模組的外觀與接腳

實際上,因為模組生產廠商不同,並非所有附帶底板的HC-05和HC-06模組都像上圖一樣。有些模組只有4支引腳,在個人的應用和實驗場合,4支引腳足敷使用,只是不方便修改模組的參數,比較不建議購買:

只有4支引腳的藍牙模組

並非所有6支引腳的藍牙模組的規格都相同。下圖是不同廠商的HC-05和HC-06模組的正面外觀:

不同廠商的HC-05和HC-06模組的正面照片

從上面的照片可知,單憑焊接點,無法判斷模組類型(但HC-05模組底下的記憶體晶片有打勾勾記號),也無法得知實際引出的接腳是哪幾個,必須看電路圖或者用電錶測量。這是背面:

不同廠商的HC-05和HC-06模組的背面照片

藍牙模組選購要點

市面上的藍牙裝置通常都屬於“slave(從端)”設備,像藍牙滑鼠∕鍵盤、藍牙GPS、藍牙遙控玩具…等等。

一般的Arduino藍牙遙控和通訊實驗,也都是用「從端」模式,所以HC-06模組足以應付大多數需求。但如果HC-05和HC-06模組的價格差不多,那就買HC-05。

HC-05和HC-06的主要差異在於主、從模式的設定,以及設置模組參數的AT命令的支援程度。HC-05通常支援30多道AT命令,HC-06只支援少數AT命令,但實務上會用到的AT命令通常也只有兩、三個(請參閱下一篇貼文說明)。

若要採購HC-05,請選擇有引出「命令回應模式」接腳的模組,方便執行AT命令。

不同藍牙模組的引腳和韌體可能不太一樣,購買時,務必跟廠商索取data sheet(規格說明書,含AT命令手冊,有些會附帶底板的電路圖)。

Bluetooth 4.0具備藍牙低功耗(Bluetooth Low Energy, BLE)模式,耗電量低,但電腦、手機和平板等裝置的支援、普及程度,不及2.1版。如果你確認你的電腦和手機都支援藍牙4.0,那就可以選購藍牙4.0的序列通訊模組。

不管是HC-05, HC-06還是藍牙4.0,對Arduino都沒有影響,控制程式都一樣,實際接線也只用到4條線:電源、接地、傳送(TxD)和接收(RxD)。電路接線說明,請參閱下一篇貼文。

延伸閱讀

Posts created 469

119 thoughts on “HC-05與HC-06藍牙模組補充說明(一)

  1. 您好,
    您文中「2014年10月中旬,全球手機晶片龍頭博通(Qualcomm)同意以25億美元現金,購併CSR」,
    這句話有一點小錯誤,Qualcomm 的一般是翻譯作「高通」,而「博通」是另一家晶片大廠 Broadcom,
    供您參考。

    1. 你好:
      請教有關於HC05 帶底板問題,我從網路上買的,我進入AT -MODE 操作如下:
      通電前,按住板子內部KEY,持續兩秒,LED燈由快閃變成慢閃,表是進入AT-MODE
      但我使用AccessPort軟體,去操作都沒反應,執行 AT+UART?,那是什麼問題
      EN PIN 我空接, 這樣有無影響!!!!

  2. 你好 我有購買你的書籍互動設計入門2,寫的很好清晰易懂
    只是藍牙這章節一直卡住不是很能了解整個流程。

    想請問 ,我買了CH-06的藍牙模組接上Arduino後,是否我的Mac(10.9.5,2009出產) 設定好藍牙的配對後, 就能夠直接與arduino溝通? 也是說不用再插usb 就能夠將程式碼讀入或燒入?

    我目前是將你書籍中的光碟14-1檔案燒入至arduino, 腳位藍牙密碼都已設定好,下載CoolTermMac130.zip(其它的版本無法開啟)這樣藍牙還是無法連接上,他跑出的畫面如下

    https://www.dropbox.com/s/58sddk2vqzcfp1r/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202014-12-10%20%E4%B8%8B%E5%8D%888.52.48.png?dl=0

    https://www.dropbox.com/s/rqa42veu9po24na/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202014-12-10%20%E4%B8%8B%E5%8D%888.58.31.png?dl=0

    不知道能不能請你幫忙看一下喔

    謝謝

    1. 只要電腦或手機平板和藍牙模組配對之後,就能透過序列埠和Arduino溝通了。

      不過,若要透過藍牙來上傳Arduino程式碼,需要把藍牙模組的序列埠通訊速率改成和燒錄程式的通訊速率一致,也就是115200bps。此外,為了讓Arduino控制板能在上傳程式之前維持Reset狀態,還需要在藍牙模組上焊接一點電路。

      Make雜誌的”DIY Arduino Bluetooth Programming Shield“這篇文章有詳細的設定步驟說明,其中的第4步驟說明修改參數HC-05模組參數所需的AT指令,第8步驟包含自動重置Arduino的電路圖。

      從你的CoolTerm設定畫面看來,並沒有錯誤,不知道為何連不上藍牙…不過,iOS和Android也都有序列埠通訊程式軟體,你可以在AppStore搜尋關鍵字serial terminal就能找到相關App,請試試看能不能用手機或平板連上。

      thanks,
      jeffrey

  3. 你好
    謝謝你的回復
    是不是我照著以下網址的步驟就能做出一個藍牙擴充板,接上arduino就能直接讀取
    http://www.makezine.com.tw/make2599131456/arduino14

    這個網頁在步驟2的 CH-05線路圖上 有一個地方我看不是很懂
    它的 3.3v 跟 key 的線接在一起,但我的CH-05板子 沒有3.3v 只有5v(vcc) 跟 STATUS的接腳
    這個部分是把 STATUS 跟key接在一起嗎
    再請你幫忙看一下

    謝謝
    感激不盡

    1. 製作藍牙擴充板的說明,有提到需要透過AT命令設定藍牙模組的參數。

      HC-05模組進入AT命令的方式就是把34腳(key)接高電位,如果你的藍牙模組沒有預先接出KEY腳,就需要在模組通電之前,自行用導線將34腳接高電位。相關說明請參閱筆者的「使用Arduino設定AT命令」補充說明。

      have fun!
      jeffrey

  4. 您好請問一下!我的HC-05 在MAC 上時進行配對出現問題!例如一開始他會出現HC-05 設備,我進行配對後在藍芽裝置也出現HC-05 但是過沒幾秒它就自動斷線又跳出了!請問這是哪裡有問題??我有兩片HC-05 都是一樣狀況,配對完沒多久自動跳出!

    1. hi bryan:

      似乎不少Mac用戶都遇過類似的問題,我之前在Mac OS X 10.9.x系統上測試倒是很順利,沒遇過無故斷線的情況……你方便安裝Windows系統測試嗎?

      thanks,
      jeffrey

    2. 我也遇到相同的狀況,在藍牙配對的視窗會自動跳回未連線,但HC-05的顯示燈號不便依然是低速短暫閃爍,於是我檢查了/dev/tty.,發現裝置還是可以作用的,代表應該Mac的藍芽連接使用者介面有問題,但底層運作不受影響,供大家參考。

  5. 你好

    請問一下
    我們通常執行的都是手機傳訊息給arduino
    我現在要由arduino傳訊息給手機 使用HC-05可以辦到嗎?

  6. 老師您好:

    目前看到支援arduino的藍芽都是SPP,請問有支援HSP及HFP的藍芽模組嗎?
    還是HC-05也做得到?想把arduino作成類似藍芽耳機之類的形式,讓手機使用handsfree的app,謝謝

    1. hi john:

      Arduino UNO的ATmega328微控制器,播放未壓縮WAV格式的聲音沒問題,但它可能無力即時解壓縮MP3或藍牙音訊的SBC壓縮格式。所以Arduino相容的MP3播放介面卡,上面都有一個聲音解壓縮晶片。

      thanks,
      jeffrey

    1. 趙老師你好
      經測試AccessPort 13.7 有支援window 8.1.
      請問如何不須透過USB上載程式?
      Thanks.

  7. 請問一下前輩…..
    小弟我目前使用Arduino SD卡模組,讀取TXT檔裡的值,一次要讀取64個檔案,但是目前卻一直讀到第六個檔就一直返回,小弟愚鈍,剛使用Arduino 不久,經驗不足…望前輩們能建議一些解決的方法供小弟參考..非常感謝!

    1. hi smallcon:

      兩個可能因素:
      1. ATmega328的可用記憶體有限,也許讀入的檔案太大,超過記憶體容量。
      2. 每次讀取檔案之後,都要關閉檔案,以便釋放記憶體空間,例如:

      File file;
      // 程式碼省略…
      file = SD.open(“a.txt”); // 讀取a.txt
      // 程式碼省略…
      file.close(); // 關閉檔案(釋放記憶體)
      file = SD.open(“b.txt”); // 讀取b.txt
      // 程式碼省略…
      file.close(); // 關閉檔案

      thanks,
      jeffrey

  8. 老師您好:

    我目前用的是 Arduino Uno版,目前所讀的txt檔,最大容量的檔案只有 256個值,約1.32KB,每次開檔後皆有做關檔的動作,我要一次讀取64個TXT檔,我之前有試著寫入1~256的數列到TXT檔,讀取出來,並計算總和,值皆正確,全部值為正值,但換回原本的data後(有正負),再讀取,就只能讀取到第六個檔案,就讀不到第七個><

    1. 倘使寫入檔案也沒問題……那我也不清楚哪裡出錯了,拍謝~

      thanks,
      jeffrey

  9. 可以請問一下為什麼我要進入測試AT指令的那個頁面時都沒顯示任何東西也無法輸入字元
    (接腳程式碼都沒問題)

    1. hi joseph:

      假設你的模組是HC-05,請先測量Key腳的接線,另外在發送AT命令時,有選擇以NL與CR結尾嗎?

      thanks,
      jeffrey

  10. 謝謝趙老師提供有關用藍牙模組上載程式至Arduino之資訊
    請問,可以在 Arduino程式內植插入Windows Command類似ARP,或對某一特定IP執行某特定command,以便得到與命令提示(Windows Command Prompt)視窗內相同的效果嗎?
    Windows header與此有關嗎?
    謝謝

    1. 如果有比較高階的網路應用需求,建議選用Raspberry Pi, CubieBoard,…等控制板。

      thanks,
      jeffrey

  11. 您好,我想要使用HC-05去接收另一個藍芽的訊號
    但不太清楚到底應該怎麼做,目前設定都已經調好,但是看燈號一直閃爍應該是沒有配對上,想請問如何解決這個問題?

    再設定的部分AT+LINK一直顯示失敗,不明白到底哪裡出錯

    1. 您好,目前我的HC-05模組都已經設定好了,也有用BIND綁另一組藍芽的MAC位址了,但是現在我用LINK不管怎麼樣就是連不上去,一直顯示失敗,自動偵測的部分會一直跑出INQ=xxxx:xx:xxxxxx,….,..,每LINK失敗一次就會回傳一次INQ……

      我的另一個藍芽模組是現成的產品,不知道這樣會不會有影響。

    2. hi alex:

      「現成的產品」也採用HC-05模組嗎?有沒有嘗試透過AT命令將它回復成出廠設定,再重新配對?

      thanks,
      jeffrey

  12. 那個現成的產品是包裝好的,沒辦法拆開……,目前我可以用HC-05去連到我的藍芽產品,可是回傳的值都是亂碼
    假如我的藍芽產品Baud 是115200的話,我是用AT+UART=115200,0,0去設定,應該沒錯吧? 但是回傳都是亂碼

    1. 既然無法了解那個模組的規格,我認為與其花費一堆時間除錯,不如買個新的藍牙模組,畢竟一個HC-05不到兩百元台幣。

      have fun!
      jeffrey

  13. 我也買了這本書,以14-2範例檔用usb上傳uno板子(正常上傳)搭配hc-06藍牙,用手機zenfone5執行光碟的app,(連上藍牙板會由紅燈閃變恆亮)但是按上下左右三用電表量4567都不會有直流電輸出,請問有哪些地方可以確認查修呢?謝謝

    1. hi chandler:

      假設你的藍牙模組接在Arduino控制板的8和9腳,底下的程式碼將能在「序列埠監控視窗」顯示從手機接收到的字元:

      #include <softwareserial.h>   // 引用程式庫
       
      // 定義連接藍牙模組的序列埠
      SoftwareSerial BT(8, 9); // 接收腳, 傳送腳
      char val;  // 儲存接收資料的變數
       
      void setup() {
        Serial.begin(9600);   // 與電腦序列埠連線
        Serial.println("BT is ready!");
       
        // 藍牙透傳模式的預設連線速率。
        BT.begin(9600);
      }
       
      void loop() {
        // 若收到藍牙模組的資料,送到「序列埠監控視窗」顯示
        if (BT.available()) {
          val = BT.read();
          Serial.print(val);
        }
      }
      

      請測試看看。

      thanks,
      jeffrey

  14. 老師你好,我想要用手機連接hc05,HC05也設定好從機了
    但是從手機上搜尋藍芽裝置就是找不到HC 05 請問是什麼問題呢? 謝謝

    1. 如果你可以從PC連結到HC-05藍牙模組,就代表你應該要換支手機測試 😛

      thanks,
      jeffrey

  15. 老師您好

    我在使用 HC-05 的藍芽模組時,將EN腳先接高電位,然後接上電源後,卻仍無法進入AT模式 ( 狀態指示燈仍快速閃爍 ) ,不知道有可能是什麼原因造成的?

    1. 老師您好

      暫時沒辦法取得電表,但在目測上可以確認有焊34腳位 ( 所有有焊的腳位為1、2、12、13、31、32、34,與第一張附帶底板的HC-05模組外觀圖相同 ) ,不知道是否仍需使用電表測量較為準確?非常感謝老師的回覆!

    2. 目測不準,請使用儀錶測量,即使看似焊接上了,也有可能焊接不良(虛焊)。如果按照本文的方式,仍無法進入AT模式,請向經銷商索取技術文件,看看是否要透過其他方式連接。

      thanks,
      jeffrey

    3. 我也有一樣的問題.
      我猜測EN跟KEY是不一樣的功能.
      KEY用來進入ATMode應該沒有爭議.
      EN我猜是讓整個HC-05 enable 或disable用的….
      實際上作用可能, 要用電錶檢測一下……看是接到HC-05哪個pin去

    4. 方才量了一下電路, 發現EN pin跟那個switch button 之間, 串了一個222電阻(2.2K ), 我猜測是這個電阻, 導致EN就算拉high, 也沒有足夠的電壓讓PIO34為high.

      把222電阻解焊, 然後用焊錫讓兩個pin直接讓他導通後, 就沒問題了.

  16. 我朋友說mac的藍芽和我們通用的藍芽是不能相通的
    這很奇怪,藍芽規格應該世界標準統一
    我沒實際測試,驗証過真假
    給大家參考

    1. 不好意思,請問一下說法哪邊錯
      iphone的藍芽真的不能跟android手機藍芽連線
      (狍歉沒有不禮貌,單純提出疑問而已)

    2. 你上上個留言提到Mac,上個留言講到iPhone,這兩個是完全不同的系統,不能相提並論;不過,既然商品有藍牙的註冊商標,就代表是經過藍牙組織認證的相容商品。

      就好像路邊的金色M型拱門商標,代表「麥當勞」,每一家分店販售的食品口味都是一樣的。但是,並非每一家分店的規模大小、遊戲設施和商品種類都一樣,有些小店只有賣冰淇淋和飲料,不賣漢堡。

      藍牙商品分成不同的規範、協議和版本,像藍牙滑鼠和藍牙耳機,雖然都是用藍牙的技術,但卻是不同規範的產品。某些具備藍牙功能的手機,有支援藍牙耳機,可是它不一定支援藍牙滑鼠,因為它並沒有內建對應的驅動程式。

      至於iPhone和Android不能透過藍牙連線,你可以想成蘋果把Android當成「奧客」,遇到Android的連線要求,一律回絕…這不是藍牙的問題。

      thanks,
      jeffrey

  17. 老師我想請問一下 我用ble v1.0低功率藍芽模組但我電腦都無法新增這個裝置
    但裝置管理員藍芽下有我的這個藍芽模組的名稱而且顯示這個裝置正常運作中!!

    1. hi 小黑:

      也許是驅動程式的問題,Windows 8有支援低功耗(BLE)藍牙,但我還沒測試過,拍謝~

      thanks,
      jeffrey

  18. 您好,
    我使用HC-05與PC配對完成後,再裝置管理員裡,為何會產生兩個com?有何作用?
    謝謝

    1. hi jack:

      藍牙的兩個COM埠,類似15-12頁提到的網路連線埠號(port):一個是連出(outgoing)埠,讓電腦的應用程式(如:Arduino開發工具)初始化連線到藍牙控制板。

      另一個則是連入(incoming)埠,讓外部裝置(如:藍牙控制板)初始化連線到電腦上的應用程式。通常只會用到其中一個COM埠。

      thanks,
      jeffrey

  19. 這篇留言回覆刷得太快了,害我找了2個禮拜
    終於找到,只是想知道回覆的答案而已

    抱歉,兩篇留言舉不同產品例子
    不過講的都是APPLE的藍牙
    只是覺得很納悶,藍牙發展那麼成熟了
    你APPLE自訂藍牙PROTOCOL
    自稱自己也有藍牙系統
    結果不能跟非自家藍牙系統的產品相連
    真是任性
    只是說有能力,實力強大的系統,想怎樣都行

    1. 我目前沒有iOS設備,不過在Mac OS X上,透過藍牙在Mac與Android裝置間互傳檔案並沒有問題。

      換個想法,藍牙的傳輸速率不高,而且絕大部分都是用在聲音資料傳送,這方面就沒有相容性問題;無論哪個廠牌的藍牙耳機,PC, Mac, iOS和Android都能支援。

      若要跨裝置無線傳遞檔案,用WiFi比較好。像Fast File Transfer和Feem等App,都有支援在iOS與Android間透過WiFi互傳檔案。

      thanks,
      jeffrey

  20. 老師不好意思
    我是○○高工
    電子三的學生
    因為三年級了
    最近也要開始製作專題

    目前我是想到一個題目可是目前有個架構
    可是不知道要怎麼讓他能夠實現

    我是想做一個裝置
    他可以透過紅外線裝置來感測周圍物體的距離然後再透過藍芽模組回傳給手機提醒使用者
    要注意周圍的物體以免碰撞到

    然而畢竟東西只有想出架構
    卻不知道要用甚麼東西
    是否可以請老師您能夠麻煩老師您指點一下

    這是我的LINE ○○○○

    1. hi chang:

      為了避免困擾,我改掉你的姓名和學校名稱。你的專題作品構想很類似盲胞的輔具,你可以嘗試底下的關鍵字搜尋組合,即可找到一些相關作品:

      project for blind
      ultrasonic blind project
      blind helper stick

      像這個手套腰帶還有背心。這幾個作品都是用超音波測距元件,你可以改用紅外線測距元件試試看,相關模組和程式庫可搜尋「紅外測距模塊」。

      關於這個作品的可行性評估,再麻煩你和專題老師討論。

      thanks,
      jeffrey

  21. 老師您好
    看了您的文章退我來說幫助很大
    但是我目前遇到一個問題
    我的桌電(Win10)搭配CSR的晶片與驅動
    連上HC-05後,只會產生incoming的COM port
    輕吻也甚麼辦法能夠建立outgoing 的COM port嗎??


  22. 我想請問我的HC05已經建立好連線
    在AT指令那邊已經可以輸入指令也都會回傳OK
    但電腦或是手機裝置都偵測不到
    不知道是什麼問題OAO

    1. hi ayuc:

      藍牙模組的AT指令是透過「有線」傳送,請問設定完畢後,你有將「進入AT命令回應模式」的腳位接地嗎?如果藍牙模組處於AT命令模式,它就無法透過無線電通訊。

      thanks,
      jeffrey

  23. 老师您好!我看您文章里的那些模组的图都很可爱,请问这是用什么软体画的?有模板吗?

  24. 老師不好意思打擾了
    請問標榜距離100米的4.0藍芽跟HC-05一起連接那他的距離還是100米嗎??
    謝謝老師

    1. hi 阿楷:

      也許可以接收到長距離模組傳出的訊號,但是長距離模組應該收不到短距離模組的訊號。

      thanks,
      jeffrey

  25. 老師您好~
    我想要請問一下,有辦法設定HC-05自動連接已經連接過的手機嗎,只要手機靠近就會自動連接!
    如果可以可以不要輸入位址到HC-05上,像是將位址作為變數等等~謝謝

  26. Jeffery您好,
    我照著書上做,也來到您的官網來把BT這兩篇認真的看完,
    然後有兩個小問題想跟您請教:
    1.我照著書上的CODE下去跑,AccessPort也Open了,但是都沒有反應?連setup()丟過來的”BT is ready”,都不會收到?於是我再去爬其它人的CODE(當中有提到MAX_BTCMDLEN…但應該跟這個無關哩?),照抄上來+微調,居然正常了!然後我再把您的CODE貼回來跑,也正常了!SEND跟RECV都沒有問題!我完全一整個…查不出原因…您能幫忙猜猜BUG在哪嗎?我不知道這種ISSUE會不會再出現…想知道原因~
    2.網路上買來的HC-05,它的肚子有包一圈透明熱縮管保護,所以我無法量測那個1K的電阻,像這樣的透明熱縮管保護,我需要保留它嗎?還是要剪掉?

    謝謝Jeffery
    Best Regards
    Jim Lu

    1. hi jim:

      除了透過AT命令設置藍牙模組的工作型態之外,序列通訊程式沒有辦法去「微調」藍牙的運作模式。我沒有遇過你提到的狀況,我也覺得很奇怪。對Arduino來說,有線序列連接和藍牙無線連接,兩者並沒有差別。無法收送訊號通常都是TxD和RxD腳接反,或者通訊速率有誤。

      熱縮管可以不用保留,就像Arduino控制板本身,以及多數週邊模組一樣,它們也都沒有保護膜。

      thanks,
      jeffrey

  27. Dear Jeffery,

    Thanks for the reply!!
    我找到Issue了!!Tx跟Rx接反了,我看了一下SoftwareSerialExample的Source code的說明,它提到了
    The circuit:
    * RX is digital pin 10 (connect to TX of other device)
    * TX is digital pin 11 (connect to RX of other device)
    我把HC-05的Rx接到D11,HC-05的Tx接到D10, 然後我在Initial的呼叫寫成醬子:
    SoftwareSerial BTSerial(11,10); //Rx , Tx
    這樣子不會WORK,
    我把它們對調之後=>SoftwareSerial BTSerial(10,11); //Rx , Tx
    就WORK了!!(搭配您的 BT APK , 改成
    void loop() {
    if(BTSerial.available())
    {
    val = BTSerial.read();
    if(val==’s’)
    digitalWrite(ledPin,LOW);
    else
    digitalWrite(ledPin,HIGH);
    }
    }

    變成按 ‘s’ 關燈(LED 13) , 按前後左右會亮燈,
    跟您update 一下status. 謝謝回覆!!(而且是半夜4點半~XD)

    Best Regards
    Jim Lu

  28. 老師你好~我想要請問一下~有辦法在arduino上面寫一套程式辨識連芽是否有連接嗎,是HC-05使否有連接手機,如果有或沒有都執行一個動作那樣。謝謝

  29. 您好!!
    請問HC-05或BC-04可以達成1對多(或對7)的功能嗎??如果不行我該選購什麼模組才可以呢??

    1. hi 小郭:

      理論上一個藍牙主控端可同時連接七個藍牙從端裝置,但實際可連線數需視藍牙裝置的韌體或電腦驅動程式而定。HC-05模組只能一對一連線,某些採用CSR晶片的USB藍牙連接器,只能同時連接5個裝置。

      蘋果的這一篇技術支援文件Connect multiple Bluetooth devices to one computer也有提到,實務上,電腦最多只同時連接3到4個藍牙裝置,尤其在頻繁傳輸數據的場合(如:連接藍牙音箱),可能要降低同時連線數。

      我不知道哪個藍牙模組可支援多個從端連線,但是,與其尋找這類型的模組,不如採用電腦(或樹莓派這種Linux微電腦)、智慧型手機或平板當作主控端,這樣就解決基本的多組連線問題了。

      have fun!
      jeffrey

  30. 趙老师:筆記本電腦如果沒有藍牙接口,到網上買個usb藍牙適配器可以和arduino藍牙串口模塊通信嗎?

    1. hi hann:

      請問你的藍芽模塊上的key引腳是原本就有的嗎?還是你自行從34腳焊接出來的?如果是前者,請先用電錶確認Key引腳是否與34腳相連。

      若是與34腳相連,但是接高電位卻無法讓它進入AT模式…這就要向賣家索取規格書才能確認了。

      thanks,
      jeffrey

  31. 請問一下HC-05可以達到主對從的連結是1對多嗎?

    另外請問一下,HC-08也可以達到同樣的效果嗎?

    謝謝~

  32. 您好
    請問一般手機收音及傳送訊號(音樂)給藍芽耳機的功能,是否可以用mic(收音)->Arduino->藍芽模組->藍芽耳機?
    因為馬偕醫院有開發一個[智慧聽 APP],但是老人家不太會用手機,所以想設計看看簡單的裝置.

    謝謝

    1. hi potterystar:

      如果你需要的功能是「無線傳遞聲音」,那就不一定要使用藍牙,你可以:

      1. 使用無線電麥克風搭配收音機:
      2. 我記得市面上一種類似「對講機」功能的藍牙耳機麥克風,可以互連通話:
      3. 本文使用的藍牙模組是「序列通訊模組」,傳送和接收聲音,你需要的是支援A2DP協定的立體聲模組。普通的Arduino(8位元處理器)無法提供高音質的即時壓縮、解壓縮功能。

      thanks,
      jeffrey

  33. 您好
    請問一種情境,若把Arduino接上BT-05,然後把CAMERA拍到的相片與蒐集到的SENSOR數據放到Arduino 的sd memory,後,透過手機配對BT-05, 將相片檔案與SENSOR數據存到手機, 這樣BT-05有辦法做到嗎? 還是需要其他有FTP profile等傳送檔案之類的profile,才能辦得到?

    謝謝

    1. 應該辦得到,只是藍牙序列傳輸速度不快,用戶體驗可能不好;有影像處裡相關的需求,建議你採用樹莓派之類的高階板子,開發起來會更加得心應手。

      thanks,
      jeffrey

  34. 老師您好
    我現在就讀高職 要製作專題報告
    我想製作透過藍芽用手機APP控制的遙控汽車
    利用HC-05或HC-06連接8051來控制馬達
    可是網路上大部分都是使用Arduino 希望您可以提供一些方向或作法嗎?

    1. 無論哪一種微電腦控制板,連接HC-05藍牙模組的電路和程式原理都一樣。你只要會寫8051的序列通訊程式,即可透過HC-05把有線序列資料轉換成藍牙無線通訊。

      詳細的8051序列通訊程式,再麻煩你參閱相關書籍或文件,或者請教專題指導老師。

      thanks,
      jeffrey

  35. 謝謝老師
    我還想在提問
    在您的《使用App Inventor 2製作的機器昆蟲藍牙控制器之小小改版》裡面有使用AI2來控制輸入單晶片的指令”s” “w”
    而8051的接腳能控制的只有0或1 今天我有問指導老師 老師是說那些英文字是有正式規格的 例如輸入F =0000 0001
    接收到訊息後利用陣列來引導我想執行的指令 可是我上網找卻沒有與規格有關的相關資料
    希望您可以說明一下 app傳送訊息給藍芽 藍芽傳送給晶片到裝置執行動作的的流程 麻煩您了

    1. 序列埠收到的資料是一堆0跟1沒錯,電腦裡面的所有數據也都是0和1組成的,字元’A’的ASCII編碼的十進位是65, 16進位是41,用二進位解讀就是01000001。

      你用8051的C語言宣告一個char類型的陣列,存入的序列資料就是字元值,例如,存入01000001就是存入’A’,當然也能看成數字65,實際要看你自己的程式如何取解讀資料。

      建議你先不要管藍牙怎麼接,也先不要煩惱App怎麼寫。先在完成8051序列埠與電腦通訊的實驗,你就能初步認識整個控制流程。

      thanks,
      jeffrey

  36. 老師 您好喔~~
    我是 arduino 初學者~
    目前使用藍牙模組遭遇了一些小 trouble,

    作業系統是:macOS sierra
    Arduino:Arduino UNO R3
    藍牙模組:HC-06

    用藍牙模組直接連結 Arduino
    HC-06 TXD 接 Arduino 的 11 腳位
    HC-06 RXD 接 10 腳位

    1. 在電腦開啟藍牙時,配對藍牙有出現 HC-06,連線成功,
    但是藍牙模組的紅燈還是一直閃爍,據我所知,成功連線後,
    紅燈應該是恆亮,但藍牙模組的燈仍然閃爍
    直到我在終端機下了指令:
    sudo cu -s 9600 -l /dev/tty.HC-06-DevB
    成功連線後,紅燈才是恆亮,不知為何需要使用 cu 指令來連結?

    2. 在 Arduino 軟體中,選擇序列埠:dev/cu.HC-06-DevB
    然後將程式上傳…
    畫面則顯示 dev/cu.HC-06-DevB:Resource Busy
    Why???是我序列埠選錯嗎?程式連上傳都不能上傳~~

    3. 在 mac 有 cu 和 tty 的連結方式,但 Arduino 軟體的序列埠卻沒有出現,
    dev/tty.HC-06-DevB,一直沒有 tty,
    我有安裝 CH34X 在 mac 上,但貌似沒有任何反應…
    也有照著說明書進行…

    希望老師能幫我解惑一下,是不是中間有哪兒出錯了呢?
    感謝老師~~

    1. 1. 關於序列通訊程式,你有試過screen命令嗎?或者用圖像介面的CoolTermgoSerial

      2. 若要透過藍牙上傳Arduino程式,藍牙序列通訊板要接在Arduino Uno的0和1腳,還要修改通訊速率,請參閱「HC-05藍牙模組補充說明(五):透過藍牙上傳Arduino程式碼」這篇貼文。

      3. 從你的描述看來,你的Arduino Uno是非官方的相容控制板,某些相容板採用CH340 USB轉TTL序列通訊晶片,但是官方的Uno R3(和多數相容板)用的是Atmega16U2,但是它們都和藍牙沒有關係。

      thanks,
      jeffrey

  37. 老師您好,想詢問樹梅派能否接收多個arduino訊號呢?(透過藍芽方式)
    若是要同時接收多個需要用到什麼方式來實現呢? 謝謝您!

    1. 沒試過,應該跟電腦或手機連接多個藍牙裝置一樣,在系統上搜尋藍牙裝置並進行配對,每個「序列通訊」型式的藍牙週邊應該都會被賦予不同的COM埠,程式再依照這些COM埠進行通訊。

      thanks,
      jeffrey

  38. 不好意思 請問我的HC-05會什麼只能在有接USB(PC)時閃爍
    拔除USB(PC)後,就再也不閃爍了(為有通電的情況下)
    不是應該在有正確的通電情況下,會閃爍的嗎?

    1. 我不清楚你的接線,請用電錶測量控制板的3.3V和5V電壓輸出是否正常。

      thanks,
      jeffrey

  39. 你好,我在使用的時候,手機無法偵測到HC 05模組,請問有什麼解決方法嗎?

    1. 因為3C產品也會故障,如果HC 05在「只有接Vcc和接地」的情況下,無法被探索到的話,你需要換一隻手機測試,或者換一片Hc-05。

      thanks,
      jeffrey

  40. 您好!想請問
    我用藍芽模組接Arduino Pro mini
    再另外接一個3.7V的電池,Pro mini可以正常運作,但藍芽模組則是毫無反應,
    如果電源接USB的話Pro mini跟藍芽模組兩者都能夠正常運作,但藍芽模組不是只要3.6V的電壓即可運作嗎?
    想請問原因謝謝!!

    1. 有些藍芽板上面有個5V轉3.3V的直流電壓轉換元件,電壓過低無法運作。

      thanks,
      jeffrey

  41. 好的謝謝,想再請教一個問題,上網查Pro mini,他是說若電壓超過5V需將正極接到RAW而不是VCC,這樣的話,我的LED燈泡接在Pro mini 的VCC會運作嗎,還是就不行了。謝謝 !

    1. RAW接代表「未調節的電壓輸入」,最高允許12V,輸入此接腳的電壓會經過板子上的直流電壓轉換元件,轉成5V或3.3V(視控制板而定)供給微控器。

      LED可以接VCC,你測試就知道了。

      thanks,
      jeffrey

  42. 老師您好,我想請問一下,當我以9V電池當外接電源時
    藍芽板就無法正常運作
    可是當外接電源換成電腦或行動電源的時候又沒有問題
    想請問一下要怎麼解決這個問題

  43. 老師您好,我想問一下,我想用手機連到Arduino藍芽模組HC-05,卻顯示can’t connect to device這串英文,請問該如何解決?

    1. 手機重新開機,HC-05斷電再開測試…換個手機測試,HC-05用AT命令恢復原廠設置試試看。

      thanks,
      jeffrey

發佈留言

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

Related Posts

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

Back To Top