2012年7月26日 星期四

Maker Faire Taiwan 2012

Maker Faire 聚集了一群喜歡探究事物、凡事好奇想追根究柢、並樂於與人分享個人創作的手作達人,透過活動所提供的場地可以讓他們展示自己的作品,也讓他們有機會與人互「尬」技術。其實Make雜誌每年定期舉辦這種DIY創意盛會是因為許多Maker迷都表示,他們沒有適合的場所可以與人分享自己的創作, 一些DIY的成品常常只出現在社區或是小商店裡,甚至有的隱身在車庫和廚房餐桌上僅供自己獨賞。他們沒有傳統藝術、科學或工藝這類創作的光環,也未受到同等的關注與重視,如今這些平日難得一見的作品與想法,終於能透過 Maker Faire 這個舞台完整地呈現在眾人面前。今年將首度在花博公園天使生活館內展出,展出日期 7/28~7/29,共計 2 天,當天將推出智動工作坊活動,讓孩子透過動手實作組裝機器人,學會觀察、思考、執行,在學習的過程中達到寓教於樂的效果。消息來源: 智動館 (花博天使生活館)27199385527

2012年7月22日 星期日

SpeakToArduino

這篇是寫給 amarino 初學者看的,目的是教導你如何執行 Amarino 的 SpeakToArduino 範例程式。SpeakToArduino 這個範例示範如何用 Android 手機聲控 Arduino。

所需材料
  • Android 手機一支
  • Arduino x1
  • bluetooth module x 1
  • 紅色 LED, 綠色 LED 及藍色 LED 各一顆(若無特定顏色 LED,可用其它顏色的 LED 取代),或一顆 RGB Led
  • 220 歐姆電阻 x 3
Step 1:安裝 Amarino

http://www.amarino-toolkit.net/ 下載下列 App 並安裝到 Android 手機上:

1) Amarino

2) Amarino Plug-in Bundle

3) SpeakToArduino

Step 2: 安裝 Arduino IDE 與 MeetAndroid Library

如果你電腦上還沒有 Arduino IDE,請先到 http://arduino.cc/en/Main/Software 下載軟體,下載後解壓縮即可。

接著下載 MeetAndroid Library,把 MeetAndroid 解到 Arduino IDE 安裝目錄下的 libraries 資料夾。

重新啟動 Arduino IDE,在 Sketch > Import Library 底下應該會看到 MeetAndroid,如下圖:

image_thumb422

Step 3:連接 LED

參考下圖,把紅、綠、藍三顆 LED 分別接到 pin 9, 10, 11,LED 的接法為: 長腳(陽極)接到 pin 腳,而短腳(陰極)串接一顆 220 ohm 電阻接到 GND:

image_thumb6

Step 4: 上傳 SpeakToArduino 程式

這裏下載,並使用 Arduino IDE 打開 SpeakToArduino 程式。

程式所用的 baud rate 預設是 57600 bps,如果你的藍芽模組不是 57600 bps,請做適當的調整:

image

然後把程式上傳到 Arduino 板子上。

Step 5:連接藍芽模組

我用的是廣州匯承信息科技的 HC-0x 系列藍芽模組,下圖是 HC-0x 藍芽模組的外觀:

image_thumb352222 image_thumb642222
▲ HC-0x 藍芽模組 (圖左:正面圖,圖右:背面圖)

連接方法很簡單,照下表把 Arduino 和藍芽模組連接起來就好:

Arduino 藍芽模組 備註
5V VCC 注意電源不可接錯
GND GND 注意電源不可接錯
RXD TXD  
TXD RXD  

image_thumb13222

有兩點要注意:第一是電源千萬不可接錯,不然可能會燒壞藍芽模組,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。

通電之後,藍芽模組上的 LED 會一直閃爍:

image_thumb1332222

Step 6:執行 SpeakToArduino App

首先,先利用 Amarino 搜尋藍芽設備,找到設備後,將藍芽設備的 MAC Address 抄起來(記得不要在 Amarino 設定任何 Event!):

image_thumb1432

打開 Android 手機上的 SpeakToArduino App,你會看到這樣的畫面:

image

選手機 Menu 鍵 Set BT Device Address,手機會跳出這個畫面,此時請輸入剛剛抄下來的 MAC Address,然後按下【Save】鈕:

image

按一下手機 Back 鍵退出 SpeakToArduino App,然後重新啟動 SpeakToArduino,這樣 App 才會用新的 Mac Adress 跟藍芽模組連線。

如果一切順利,Android 手機就會跟 Arduino 建立連線,並且呈現如下圖的畫面(注意手機上方的 Status bar,若有成功與 Arduino 連線,status bar 上會顯示 Active connection: … 的訊息):

image

按下【Click and order your color】鈕,手機會跳出語音辨識的畫面:

image

這時便可以說出想要的顏色,例如 red, green, blue, white, pink, orange, yellow, dark 或 off,這時候 Arduino 上三顆 LED 便會同步改變亮度。比如當我說 red,這時 Android 手機就會叫 Arduino 把紅色 LED 打開:

image

如果你有 RGB Led,可以用一顆 RGB Led 取代三顆 Led,這樣更可以呈現 LED 顏色變化的效果。

參考資料

2012年7月20日 星期五

Arduino 簡介影片

這禮拜三 (7/20) 我到 Taipei GTUG 跟大家分享 Arduino 簡介,當天的實況錄影已經上線了,如下。非常感謝 gasolin 的邀請以及當天眾多朋友的協助,讓這次活動可以順利進行,謝謝大家。^o^

參考資料

2012年7月15日 星期日

Getting Started with Amarino 簡報

image
▲ Drawn by honki

我做了一份 Amarino 入門簡報,如下。我預計在 2012/7/18 這天會到 Taipei GTUG 介紹 Arduino 這個開放硬體平台,當天會先講 Arduino Introduction,假如還有時間的話,我就接著講 Amarino 入門。(但是可能會有點困難,因為 2 個多月前 Arduino Introduction 簡報剛出爐時總頁數為 78 頁,剛剛更新後,總頁數已經來到 89 頁,我看到時時間恐怕會不夠用! ^o^)

2012年7月14日 星期六

HC-0x bluetooth module 選購指南

image_thumb

廣州匯承信息科技的 HC-0x 系列 bluetooth module 有很多種款式,我所知道的就有 HC-03, HC-04, HC-05, HC-06 和 HC-07 這麼多種。如果你有在使用這家公司的藍芽模組,可能會發現一個問題:「怎麼這家公司生產的藍芽模組每個都長得很像?」,而且有點麻煩的是,因為模組上沒有標示產品型號,所以要知道哪個才適用,在購買的時候可能會讓人有點頭痛。

如果你有這方面的困擾,這篇 HC-0x bluetooth module 選購指南也許可以幫助你。

產品差別

根據廣州匯承信息科技網站上的說明,HC-0x 系列產品主要差別有兩個:

1) HC-03 和 HC-05 是相容產品,HC-03 是工業用的,成本較高,需要低成本的可選擇 HC-05。HC-04 和 HC-06 是相容產品,HC-04 是工業用的,成本較高,需要成本低的可選擇 HC-06

2) HC-03/05 是主從一體化,可以用 AT 指令修改主從模式 (Master/Slave mode),功能比較豐富,使用靈活,價格比 HC-04/06 貴 2 塊 RMB。而 HC-04/06 使用簡單,價格低,需要低成本的用戶可以選擇,不過 HC-04/06 不能修改主從模式,因為出廠的時候就確定了。

簡而言之,HC-03 和 HC-04 是工業用的,HC-05 和 HC-06 是一般用的。奇數的 HC-03/05 是主從一體化的,而偶數的 HC-04/06 只有一種模式 (主機或從機,出廠時已確定)。另外,HC-07 則是精簡型的 HC-06,原本 HC-06 模組上有兩顆晶片,HC-07 只用一顆晶片,封裝完全兼容。

底下是一張簡易比較表:

模組型號 用途 模式
HC-03 工業用 (成本高) 主從一體
HC-04 工業用 (成本高) 單一模式 (主機或從機,出廠已確定)
HC-05 一般用 (成本便宜) 主從一體
HC-06 一般用 (成本便宜) 單一模式 (主機或從機,出廠已確定)
HC-07 一般用 (成本便宜),精簡型 HC-06 單一模式 (主機或從機,出廠已確定)
選購決策

1) 如果你只需要從機的話,那麼選擇 HC-06 或 HC-07 就夠用了。從機可以跟主機配對,和電腦 Bluetooth dongle 配對,也可以跟智慧型手機配對。

2) 如果希望藍芽模組一會兒是主機,可以跟另一個從機通信,一會兒又希望它是從機,可以跟另一個主機通信,那就要用 HC-05,利用 AT 指令動態切換主從模式。

3) 如果是環境比較惡劣、溫差大,容易受干擾的情況,建議選擇工業級的。

4) 第一次使用建議買帶底板的 (下圖),帶底板的模組通常已幫你做好了 5V 與 3.3V 電壓轉換,而且還拉引腳方便連接

image
▲ 帶底板的藍芽模組

如何分辨模組型號?

前面提到,這系列藍芽模組上沒有標示產品型號,那到底要怎樣分辨是否買對板子呢?底下有個簡單的方法(僅適用 HC-05/06 和 HC-7):

HC-06 主機有標白點:

image

HC-06 從機沒標白點:

image

HC-05 有標紅點:

image

至於 HC-07 的話,因為模組上只有一顆晶片,所以外觀比較迷你:

image 

Stackable Bluetooth Shield

另外,市面上也有把 HC-0x 模組做成 Arduino 擴充板的,也是一個不錯的選擇,例如 Stackable Bluetooth Shield:

image

這個板子的特點是可以直接插在 Arduino 板子上:

image

除了可以擴充 Arduino 藍芽通訊能力外,板子上還有兩個開關。一個是用來選擇 5V 或 3.3V 相容電壓,一般 Arduino 是用 5V 電壓,但若用其它板子如 LeafLabs Mapple (STM32) 和 Digilent 的 chipKit (PIC32),此時便可以切換到 3.3V 電壓與之相容。另一個開關是用來選擇 UART 的通訊方式,可選擇通過 UART 連接 Arduino,或是直接通過 USB 晶片 (FT232/Atmega32u4) 連接到電腦上,用 Serial Monitor 直接跟藍芽模組通信。

以上的資訊若有錯誤,請不吝指正,謝謝。

參考資料

2012年7月11日 星期三

C# and Arduino over Bluetooth

在 "Talk with Arduino using C# and Firmata" 一文中,我們提到如何利用 Firmata.NET 跟 Arduino 建立通訊。當時PC 是通過 COM 連接埠跟 Arduino通訊 (也就是用 USB cable 連接 Arduino 與 PC),這次我們將改用藍芽讓 C# 程式與 Arduino 建立通訊。底下以 HC-0x 藍芽模組為例說明:

1) 確定藍芽模組 baud rate 為 57600 bps。藍芽模組 baud rate 設定方法請參考 "Bluetooth module configuration", "Config bluetooth baud rate w/ Arduino" 或 "Arduino as an USB to TTL adapter"

2) 上傳 StandardFirmata 到 Arduino:打開 Arduino IDE,點選 File > Examples > Firmata > StandardFirmata,把程式上傳到 Arduino 板子上,切記在上傳程式的時候不要接藍芽模組,不然可能會影響上傳程序。

連接 Arduino 與藍芽模組

把 Arduino 5V  接到藍芽模組的 VCC,而 GND 接到 GND:

image_thumb1

有兩點要注意:第一是電源千萬不可接錯,不然可能會把藍芽模組燒壞,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。可參考下表:

Arduino 藍芽模組 備註
5V VCC 注意電源不可接錯
GND GND 注意電源不可接錯
RXD TXD  
TXD RXD  

通電之後,藍芽模組上的 LED 會一直閃爍:

image_thumb133

執行 C# Example

參考 "Loop back test" 一文建立電腦跟藍芽模組之間的配對,並且記住配對完成之後的藍芽連接埠號碼,本例用的是 COM21。

下載 C# 範例程式,打開 Blink 範例。選好 Serial Port (本例為 COM21),按下 Open 鈕:

2012-05-06 23h56_55

順利的話,Arduino 板子上的 LED 燈就會不斷地閃爍,亮一秒,滅一秒,如此循環不已:

image
▲ pin 13 上的 LED (L)

如果你有興趣,可以進一步參考 "Talk with Arduino using C# and Firmata" 一文,然後試一試 AnalogRead 和 Fade 這兩個範例。

參考資料

2012年7月9日 星期一

Arduino as an USB to TTL adapter

Arduino 也可以當成 USB to TTL 轉換器使用,方法很簡單,參考下圖,只要在 GND 和 Reset Pin 之間拉一條線就搞定了:

image 

這樣做會讓 MCU 停留在 reset mode,你便可以使用 RX (pin 0) 和 TX (pin 1) 直接與 USB to Serial Converter 晶片 (FT232R 或 Atmegaxxux) 溝通。

設定 HC-0x 藍芽模組

把 Arduino 變成 USB to TTL 轉換器可以做什麼?嗯...我首先想到的是可以拿來改 HC-0x 藍芽模組的設定。我在這篇介紹過如何用 USB to TTL 轉換器設定 HC-0x 藍芽模組,同樣的事 Arduino 完全可以勝任。

底下以修改 HC-0x 藍芽模組的 baud rate 為例說明:

1) 首先,參考上圖在 GND 和 Reset Pin 之間拉一條線

2) 把 Arduino 與藍芽模組連接起來

image

接線方法可以參考下表:

Arduino 藍芽模組 備註
5V VCC 注意電源不可接錯
GND GND 注意電源不可接錯
RXD (pin 0) RXD  
TXD (pin 1) TXD  

通電之後,藍芽模組上的 LED 會一直閃爍:

image_thumb133

先做個簡單的測試,看看藍芽模組通信正不正常。

打開 Serial Monitor,把換行模式改成 "No line ending",接著輸入 AT 指令(指令全部大寫),然後按下 Send 按鈕或 Enter 鍵,這時藍芽模組應該會回應 OK:

image

3) HC-0x 藍芽模組 baud rate 預設是 9600 bps,有些時候你可能會需要改變它的 baud rate,比如改成 57600 bps。要怎麼把 baud rate 修改為 57600 bps 呢?方法為:

輸入指令:

AT+BAUD7

這時藍芽模組應該會回應:

OK57600

像下圖這樣:

2012-06-25_00h21_10

以上的資訊,希望對你有幫助。

參考資料

2012年7月3日 星期二

Loop back test

Loop back test 是什麼?它是最快最簡單的測試方法,可以測試藍芽模組的接收和發送功能,用來檢查模組有沒有故障。HC-0x bluetooth module 可以做 Loop back test,也就是自己接收自己所發送的資料,方法很簡單,只要把藍芽模組的 TXD 接到自己的 RXD 就好。底下教你怎麼做:

材料
  • Arduino 板子 x 1
  • HC-0x 藍芽模組 x 1
  • 杜邦線和跳線些許
  • sscom 工具(英文版點此下載,簡體版點此下載)
連接 Arduino 與藍芽模組

下圖是 HC-0x 藍芽模組的外觀:

image_thumb35 image_thumb64
▲ HC-0x 藍芽模組(圖左:正面圖,圖右:背面圖)

只要把 Arduino 5V  接到藍芽模組的 VCC,而 GND 接到 GND:

2012-05-06 21h54_09

要注意電源千萬不可接錯,不然可能會把藍芽模組燒壞。可參考下表:

Arduino 藍芽模組 備註
5V VCC 注意電源不可接錯
GND GND 注意電源不可接錯

通電之後,藍芽模組上的 LED 會一直閃爍:

image_thumb133

與電腦配對 (paring)

首先,打開藍芽裝置:

2012-05-06 21h57_51

按下【新增(D)…)】打開新增藍芽裝置精靈:

2012-05-06 21h58_08

勾選「我的裝置已設定並就緒可以找到」後按【下一步】,系統會將搜尋藍芽裝置,接著選 linvor 裝置,然後點【下一步】:

image

選擇「使用文件中的密碼金鑰】並輸入配對密碼 1234:

image

按下一步,系統會開始進行配對:

2012-05-06 22h07_31

配對成功:

2012-05-06 22h07_49

按下【完成】,回到藍芽裝置視窗,切到 COM 連接埠頁面,請記住名稱為 linvor 'Dev B' 的連接埠,例如下圖是 COM21:

image

Loop Back 測試

1) 拿一條跳線把藍芽模組的 TXD 和 RXD 對接起來,如下圖的綠線:

2012-05-06 22h14_21

2) 打開 SSCOM 工具,ComNum 選擇藍芽裝置的連接埠,例如 COM21:

image

這時候藍芽模組上的 LED 會停止閃爍變成恆亮。

點下方的 SEND 鈕,電腦就會發送訊息給藍芽模組,由於會 Loop back,所以正常的話,訊息便會馬上從藍芽模組傳回來顯示在視窗上方:

image

你可以試著修改要發送的訊息 (Data input),並且設定發送的間隔時間,勾選 Send every,SSCOM 就會每定期發送訊息持續的測試:

image

以上的資訊,希望對你有幫助。

參考資料

2012年7月1日 星期日

Config bluetooth baud rate w/ Arduino

image_thumb3 image_thumb6
▲ HC-0x 藍芽模組 (圖左:正面圖,圖右:背面圖)

HC-0x 藍芽模組的 baud rate 預設是 9600 bps,有些時候你可能會需要改它的 baud rate,要改 baud rate,用 USB to TTL 是最簡單的,這部份可以參考這篇,不過如果手邊沒有 USB to TTL,用 Arduino 也是可以的,底下教你怎麼做。

首先,你得知道怎麼把 Arduino 跟藍芽模組連接起來,參考下圖:

image

連接的時候有兩點要注意:第一是電源千萬不可接錯,不然可能會燒錄藍芽模組,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。可參考下表:

Arduino 藍芽模組 備註
5V VCC 注意電源不可接錯
GND GND 注意電源不可接錯
RXD (pin 0) TXD  
TXD (pin 1) RXD  

通電之後,藍芽模組上的 LED 會一直閃爍:

image_thumb[13]

改 Baud rate 的步驟

底下示範如何把藍芽模組 baud rate 改成 57600 bps:

1) 把底下的 sketch 上傳到 Arduino 板子上(注意!在上傳程式的時候,切記不要插著藍芽模組):

2) 打開 Serial Monitor,過 6 秒鐘之後,你應該會看到 AT+BAUD7 的訊息:

 2012-05-06 18h44_12

3) 關閉 Serial Monitor

4) 拔掉 Arduino 的電源

5) 插上藍芽模組

6) 給 Arduino 上電,請在上電後 6 秒鐘之內打開 Serial Monitor,過 6 秒後應該就會看到 AT+BAUD7OK57600 的訊息,代表你已經正確把藍芽模組 baud rate 修改成 57600 bps 了,如下圖所示:

image  

由於藍芽模組 baud rate 已經改成 57600 bps,如果想改回 9600 bps,可以照底下的步驟做。

如何把 baud rate 改回 9600?

1) 把 Sketch 的 setup() 改成如下:

void setup()
{
   Serial.begin(57600);         // Baud rate of HC-0x bluetooth module
   delay(6000);
   Serial.write("AT+BAUD4");   // Set baud rate as 9600
}

2) 把 Sketch 上傳到 Arduino 板子上(注意!在上傳程式的時候,切記不要插著藍芽模組):

3) 打開 Serial Monitor,將下方的 baud rate 設定改成 57600 bps:

image

接著等 6 秒後,應該會看到 AT+BAUD4 的訊息:

2012-05-06 18h57_41

4) 關閉 Serial Monitor

5) 拔掉 Arduino 的電源

6) 插上藍芽模組

7) 給 Arduino 上電,請在上電後 6 秒鐘之內打開 Serial Monitor,過 6 秒後應該就會看到 AT+BAUD4OK9600 的訊息,代表已經正確把藍芽模組 baud rate 改回預設值 9600 bps 了,如下圖所示:

2012-05-06 19h00_02

以上的方法,希望對你有幫助。

參考資料