วันอาทิตย์ที่ 26 พฤษภาคม พ.ศ. 2556

Arduino: การสั่งงานผ่าน Android โดยใช้ ADK


ADK (Android Open Accessory Development Kit) คือ เครื่องมือที่ใช้ในการเชื่อมต่อระหว่าง Arduino และ Android (รุ่น 2.3.4+) ทาง Google ได้เลือก Arduino ให้เป็นอุปกรณ์ที่ใช้เชื่อมต่อกับอุปกรณ์ Android ผ่านทาง USB Host เพื่อใช้ในการสั่งงานหรืออ่านค่าจาก Android ได้ ซึ่งเป็นเพิ่มขยายขีดความสามารถให้กับอุปกรณ์ทั้ง 2 ชนิดคือไมโครคอนโทรลเลอร์และมือถือหรือ Tablet ที่มี Android เป็น OS นั่นเอง
ติดตั้ง ADK Demo Kit บน Android
ใช้อุปกรณ์มือถือหรือ Tablet เพื่อเข้าไปยัง Android Market แล้วค้นหาด้วยคำว่า "ADK" จากนั้นให้ติดตั้งโปรแกรมที่ชื่อ Standard Android ADK Demo Kit หาถ้าไม่เจอแสดงว่าอุปกรณ์ของเราไม่สนับสนุนโปรแกรมที่มีอยู่ใน Market เช่นใช้ Android รุ่นที่ต่ำกว่า 2.3.4 หรืออาจเป็นรุ่น 4.0 ซึ่งปัจจุบันยังไม่มีคนทำออกมาให้ดาวโหลดใน Market
โปรแกรมบน Arduino ADK
ขอให้เปิดโปรแกรม Arduino (ขอให้ใช้ รุ่น 0023 นะครับ อย่าใช้รุ่น 1.0 เพราะอาจใช้งานไม่ได้) ขึ้นมาแล้วเขียนโค๊ดดังนี้
#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>
#define LED1_RED 13 // use pin 13 to display analog value
AndroidAccessory acc("Google, Inc.",
    "DemoKit",
    "DemoKit Arduino Board",
    "1.0",
    "http://www.android.com",
    "0000000012345678");
boolean flagval = true;

void setup()
{
    Serial.begin(115200);
    pinMode(LED1_RED, OUTPUT);
    Serial.print("\r\nStart");
    acc.powerOn();
}
void loop()
{
    byte msg[3];
    if (acc.isConnected()) {
        if (flagval) {
            Serial.println("Accessory connected. ");
            int len = acc.read(msg, sizeof(msg), 1);
            Serial.print("Message length: ");
            Serial.println(len, DEC);
            flagval = false;
        }
        int len = acc.read(msg, sizeof(msg), 1);
        if (msg[0] == 0x2) {
            if (msg[1] == 0x0)
            analogWrite(LED1_RED, msg[2]);
        }
    }
    delay(400);
/*
Delay time shall be long enough to make sure Android can detect USB Host.
For my HTC Desire, this value shall not less than 400 ms.
*/
}

จากนั้น Upload ไปที่บอร์ด(บอร์ดจะต้องรองรับ ADK) แล้วจะได้ผลดังวิดิโอ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น