2011年3月14日 星期一

Android-Firmata 與 Amarino 簡介

想像一下,把 Android 手機跟 Arduino 板子結合起來可以做什麼呢?用 Android 手機遙控機器人、自走車、飛行器? 或者是控制家電,例如電燈、電風扇、電視、冷氣機、窗簾、音響? 只要你有決心,這些都是可能的。

image
AR.Drone – iPhone 無線(Wi-Fi)遙控直升機

目前透過藍芽傳輸連接 Android 與 Arduino 的方案有兩個,一個是 Android-Firmata,另一個是 Amarino,這兩個方案作者是同一個人,叫做 Bonifaz Kaufmann。底下將簡介這兩個方案。

Android-Firmata

Android-Firmata 可以讓 Android 手機透過藍芽傳輸來控制 Arduino,它講的是 Firmata 協定。Firmata 是一個通用的通訊協定,它可以讓你的 Arduino 跟 Android 用同一套語言對話。底下是 Android-Firmata 應用架構示意圖:

 image
▲ Android-Firmata 應用架構示意圖,Arduino 這端的 Firmata 程式在 Arduino IDE 裏就有內附。

Android-Firmata 目前只支援 Firmata 1.0,可以讓你設定數位腳位 (Digital Pins) 的輸入輸出模式 (input/output mode),讀取數位和類比 (Analog) 輸入腳位,以及開關數位腳位,另外也可以控制 PWM 腳位。可以控制 Arduino 的函式有:

  • int digitalRead(int pin);
  • int analogRead(int pin);
  • void pinMode(int pin, int mode);
  • void digitalWrite(int pin, int value);
  • void analogWrite(int pin, int value);

使用 Android-Firmata 連接 Android 與 Arduino 的步驟大概如下:

  1. 上傳 StandardFirmata.pde 到 Arduino 板子上(Arduino IDE 內附,Android-Firmata 套件裏也找得到)
  2. 設定 Bluetooth 的通訊速率為 57600 bps
  3. 上傳使用 Android-Firmata 開發的 Android app 到手機上
  4. 掃瞄 Arduino Bluetooth 設備
  5. 跟 Arduino Bluetooth 配對並建立連線
Amarino

image
▲ Amarino Logo

Amarino (Android meets Arduino) 是 Bonifaz Kaufmann 寫的另一個連接 Android 與 Arduino 的軟體套件(Toolkit),跟 Android-Firmata 比起來,Amarino 一樣是走藍芽傳輸,不一樣的地方在於 Amarino 用的不是 Firmata 通訊協定,而是作者自創的一個很簡單的協定。 Amarino 的應用架構示意圖如下:

image
▲ Amarino 應用架構示意圖

Amarino 協定封包格式非常單純,只是把要傳輸的資料夾在一個 0x12 起始符號和 0x13 確認符號中間而已。也許是比較簡單的關係,作者後來似乎把重心移到 Amarino,Android-Firmata 從 2010 年 1 月之後便沒再更新了。

要開發 Amarino 的互動應用,Arduino 這端的程式要用 MeetAndroid 函式庫,而 Android 這端的程式則要使用 AmarinoLibrary.jar 函式庫,這兩個函式庫都可以在 Amarino 官網取得。

總結

不管是用 Android-Firmata 或 Amarino,你都將需要幾樣東西:

  1. 一台 Android 手機或平板
  2. 一塊可以走藍芽傳輸的 Arduino 板子
  3. Android-Firmata 或 Amarino 軟體套件
  4. Android SDKEclipse SDK,App 的程式開發工具

在 Arduino 藍芽傳輸這部份,你有兩種選擇,一種是用內建藍芽通訊的 Arduino BT,另一種則是用像 Bluetooth Mate 這類藍芽模組來擴充你 Arduino 的能力。

image
▲ Arduino BT (圖片來源: Sparkfun)

image
▲ Bluetooth Mate (圖片來源: Sparkfun)

延伸閱讀

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。