使用CoolTerm建立藍牙序列埠連線:以Mac OS X為例

本文旨在補充《超圖解 Arduino 互動設計入門》第十四章,「動手做14-1:使用軟體序列埠程式連接Arduino與藍牙模組」(14-10頁 )。由於Arduino軟體的「序列埠監控視窗」預設只和Arduino板子的USB序列埠連線,因此在電腦上測試藍牙序列埠連線時,需要透過其他通訊軟體,本文採用的是免費、跨平台的"CoolTerm"軟體(有Mac, Windows和Linux版本)。

設定Mac OS X的藍牙裝置配對

連線之前,電腦和藍牙無線模組必須先配對。在Mac OS X系統,新增與配對藍牙裝置的步驟如下:

1. 請選擇「藍牙」選單底下的「設定Bluetooth裝置」指令:

設定Bluetooth裝置

系統將在底下的畫面顯示搜尋到的藍牙裝置:

搜尋Bluetooth裝置

2. 從中點選Arduino的藍牙模組後,按下「繼續」鈕,系統將嘗試與藍牙模組配對:

設定Bluetooth配對密碼

若出現像上圖一樣,配對密碼錯誤而不成功的畫面,請按左下角的「密碼選項」鈕,自行指定密碼:

使用一個特定的密碼

4. 配對成功之後,將顯示底下的畫面:

完成配對

使用CoolTerm建立藍牙序列埠連線

與藍牙模組完成配對之後,即可開啟CoolTerm進行藍牙序列埠連線,CoolTerm的操作畫面如下:

CoolTerm操作畫面

請按下Options(選項)按鈕,選擇藍牙序列埠:

設定藍牙序列埠

接著按一下Connect(連線)鈕,將能接收到Arduino傳來的"BT is ready!"訊息:

從藍牙模組接收到Arduino傳入的訊息

若要透過序列埠傳出訊息,請選擇主功能表的"Connection / Send String…"(連線→傳送字串)指令:

連線→傳送字串

在底下的視窗中輸入1,再按下Send(送出)鈕,即可點亮Arduino上的LED。

傳送文字

延伸閱讀

17 thoughts on “使用CoolTerm建立藍牙序列埠連線:以Mac OS X為例

  1. 您好
    百忙之中能否請教您一個問題?
    在下有一類比輸出的sensor(10v-+10v, 10ms採樣頻率)想接上一個無線發射模組
    把讀取得的量測值傳送到50公尺外的pc這樣的架構要如何進行呢?
    1.請問連接sensor該選用的模組(硬體&軟體)是?
    2.pc端的接收模組是(硬體&軟體)?

    感謝您

    jimmy

    1. hi jimmy:

      若要採用無線方式連接PC,考量到PC端現成的介面是藍牙,你可以把感測器的類比輸入,連接到微控器(例如,Arduino),再透過微控器的藍牙介面(有些模組的理論傳送距離可達100公尺),傳送資料到PC。

      如果不用藍牙,就要透過另一個微控器來接收,再將資料(通常是透過USB序列埠)傳遞給PC。電子材料行和網拍都有販售無線序列傳輸模組,通常是成對出售的,頻率有2.4GHz, 315MHz, 433MHz等可選擇。

      至於PC端的軟體,可以用本文的CoolTerm來接收,或者自行撰寫序列埠接收程式。

      thanks,
      jeffrey

  2. cubie您好:

    我有購買超圖解Arduino互動設計入門第2版這本書
    看到藍芽連結這部份時,我有下載了coolTerm這個軟體
    經測試後,藍芽模組順利跟MAC連線,但是連線訊息卻出現亂碼
    而且只有在燒錄程式碼第一次連結的時候才會出現訊息
    請問這該如何排除呢?

    在程式碼輸入如下:
    void setup(){
    pinMode(ledPin, OUTPUT);
    BT.begin(9600);
    BT.print(“Connection!”);
    }

    coolTerm畫面呈現如下:
    ……..P…….@…A……@…….XP……<.r.V..V.Tr<..RRRR……….P….p……4t………….R..~..p..z…^…RZ…….X.V………tR….<…………………………………………….

    1. hi mori:

      從你的描述看來,似乎是因為藍牙模組的傳送和接收腳位接在Arduino的0和1腳的緣故,請把它們改接在其他腳位,例如:

      SoftwareSerial BT(10, 9); // 接收, 傳送

      thanks,
      jeffrey

  3. Hi Cubie:

    抱歉我一時沒有說清楚,我購買的模組是XBee BlutTooth模組加擴展板,Arduino UNO板整個都被插滿
    我也沒辦法去調整該插哪個腳位,而程式碼則跟第二版的書上寫的一模一樣,如下:

    #include <SoftwareSerial.h>
    SoftwareSerial BT(10,9);
    const byte ledPin=13;
    char val;

    void setup(){
    pinMode(ledPin, OUTPUT);
    BT.begin(9600);
    BT.print(“Connection!”);
    }

    void loop(){
    if(BT.available()){
    val=BT.read();
    switch(val){
    case ‘0’:
    digitalWrite(ledPin, LOW);
    break;

    case ‘1’:
    digitalWrite(ledPin, HIGH);
    break;
    }
    }
    }

    所以我現在還未排除訊息亂碼這個問題

    1. 我沒有用過這塊擴充板,你確定它的藍牙序列通訊埠就是接在Arduino的第10和9腳嗎?你可以跟廠商索取擴充板的電路圖,這樣就能釐清它的接腳。

      thanks,
      jeffrey

  4. 老師您好
    我用的板子是UNO
    程式碼與您寫的書上一模一樣
    LED 能隨著輸入的數字而正常作用
    但是
    Arduino傳來的”BT is ready!”訊息 無法收到
    請問這是什麼問題呢?

    1. hi eric:

      請問你是說在Mac上收不到藍牙的訊息嗎?應該是因為”BT is ready!”是經由 Serial 物件送往有線序列埠,藍牙序列埠的訊息則是經由 BT 序列埠物件送出的。

      請修改Arduino程式碼,在接收到藍牙訊息時,透過 BT.println() 隨便送出一段訊息,Mac就能收到了。

      thanks,
      jeffrey

    2. 老師
      我試了一下發現
      我用 BT.println(“BT is ready!”); 就可以正常顯示
      但是BT.print(“BT is ready!”); 卻無法顯示
      為什麼呢?
      兩個不是應該都是BT物件嗎?

    3. println()會在字串結尾加上’\n’,應該是你的接收端程式包含判斷這個字元的條件,認定已經收到完整的字串,再進行後續的處理。

      thanks,
      jeffrey

  5. Hello,
    我參考”Arduino 互動設計入門“的第14章,我遇到一個問題小問題,我的CoolTerm沒有print出BT is ready,感到十分納悶。不知道是哪個地方出了問題,我使用的板子是官方的UNO。我採用的library如同書本所述SoftwareSerial.h這個library,我用mac參考該篇文章使用coolterm這個軟體,arduino有成功和mac的藍牙連上,可是無法看到print的文字,請問會是哪個環節的問題,謝謝。

    1. hi jeff:

      那個 “BT is ready” 訊息是從SoftwareSerial物件的print,而非Serial物件的print送出的嗎?

      thanks,
      jeffrey

    2. HI,
      今日重試,重新再檢查並且參閱了其他的教學,發現原來是自己的兩個地方錯誤:
      1. TX RX線的位置,用AT模式藍牙模組的TX要對應到Arduino的RX;RX要對應到Arduino的TX。於程式碼BT(10, 11) // RX | TX;10號是Arduino我設定RX的位置,11號是我設定TX的位置。改好ledPin 13號的燈號可以用0/1打開了
      2. 可以透過coolterm用0/1打開led燈號,但是BT.print還是沒出來,我重新再用arduino的complier重新上傳一次,coolterm有印出字樣”BT is ready“。可能是字樣已經印出,但cool term還沒有connection,所以重新透過arduino的編譯器再上傳一次程式碼,coolterm就出現了字樣。

      抱歉把這樣的問題提出,十分感謝回應!!

  6. 你好!想請教arduino的序列埠跟CoolTerm上設定的Port是不同的吧?
    我使用的HC-05在連線時無法print出訊息,在CoolTerm上設定的是藍芽序列埠,有連線但卻無法收到訊息

    1. hi allen:

      我在Mac上連線時,直接從port選單選擇已配對的藍牙裝置名稱,即可連線並收發訊息。

      thanks,
      jeffrey

發表迴響

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