1. Android mobile หรือ Tablet
2. สาย USB OTG
3. บอร์ด Arduino
โปรแกรมที่ต้องลงในบอร์ด Arduino
void setup(){
pinMode(11,OUTPUT);
digitalWrite(11,LOW);
Serial.begin(9600);
}
void loop(){
if(Serial.available() > 0){
while(Serial.available()){
if(Serial.read() == 'B')
digitalWrite(11, !digitalRead(11));
}
}
else
{
Serial.println(random(255));
delay(100);
}
}
ทดสอบการทำงานด้วย Serial monitor เห็นตัวเลขวิ่ง และเมื่อป้อนอักษร B กดปุ่ม Send หลอด LED ติด ป้อน B กดปุ่ม Send หลอด LED ดับ เป็นโอเค
เปืดโปรแกม Processing เลือก Android mode เรียก Sketch ที่ทดลองกับ PC แต่ต้องปรับโปรแกรมเล็กน้อย ตามนี้
ให้ทำการ import library -> Android Serial Library for Processing
import com.yourinventit.processing.android.serial.*;
import controlP5.*;
//import processing.serial.*; ลบบรรทัดนี้ทิ้งได้เลยครับ หรือใส่ // ไว้ด้านหน้าก็ได้
ControlP5 cp5;
Serial port;
String inData="";
void setup(){
size(600,600);
println(Serial.list());
port = new Serial(this, Serial.list()[1], 9600);
port.clear();
port.bufferUntil('\n');
cp5 = new ControlP5(this);
cp5.addTextfield("text1")
.setPosition(100,100)
.setSize(100,20)
.setCaptionLabel("Data")
.setFont(createFont("Verdana", 16))
;
cp5.addButton("button1")
.setValue(0)
.setPosition(250, 100)
;
cp5.addSlider("slider1")
.setPosition(150,200)
.setValue(100)
.setMax(255)
.setMin(0)
;
cp5.addKnob("knob1").setSize(100,200)
.setPosition(150,250)
.setMax(255)
.setMin(0)
.setValue(100)
;
}
void draw(){
Textfield t = (Textfield) cp5.getController("text1");
t.setText(inData);
cp5.getController("slider1").setValue(int(inData));
cp5.getController("knob1").setValue(int(inData));
}
void button1(int value)
{
println("Button pressed");
port.write("B");
}
void serialEvent(Serial port){
inData = port.readStringUntil('\n');
inData = trim(inData);
}
เสียบสาย USB OTG เข้ากับเครื่อง Android ปลายอีกด้านนำสาย USB จากบอร์ด Android เสียบเข้า
ปิดหน้าต่าง Serial monitor เสียก่อน กดปุ่ม Run ของ Processing เครื่องทำการลงโปรแกรมไปที่ Android และเริ่มทำงาน ถ้าเกิดเออเร่อร์ เหตุที่เป็นไปได้คือ ตัเลขในวงเล็บระบุหมายเลข COM Port ไม่ถูกต้องให้เลือนบรรทัดที่แสดงเออเร่อร์ขึ้นไปหาตัวเลขเพื่อนำไปป้อนในโปรแกรม ส่วนใหญ่แล้วจะเป็น [0] ครับ
กดปุ่ม Run อีกครั้ง ตอนนี้เอง Android จะแสดงป๊อบอัพ ขึ้นมาถามว่าจะใช้โปรแกรมไหนเมื่อมีการเสียบสายเข้ากับ Arduino ให้เลือกชื่อโปรแกรมที่เราเพิ่งติดตั้งไป จะเห็นหน้าตาโปรแกรมเหมือนกับที่ทดสอบบน PC ทดลองกดปุ่ม สังเกตุหลอด LED
ปัญหาที่น่าจะพบคือ Android ไม่แสดงป๊อบอัพ นั่นก็หมายถึงไฟล์ AndroidMaifest.xml ไม่ได้แก้ไข ตามที่ได้แนะนำ ให้ทำการแก้ไขไฟล์ AndroidManifest.xml จากตอนที่แล้ว
ทั้งหมดที่เขียนมา หวังว่าพอจะจุดประกายไอเดีย ในการนำไปใช้งาน
สำหรับผมเองมองว่าตัว Android จะมี Sensor อยู่ภายในตัวมันเองเยอะมาก แทบจะเรียกได้ว่าใช้แทน Arduino shield ได้เป็นอย่างดี เช่น Camera, GPS, Bluetooth, Accelerometer, Compass, NFC, Clock, SD Card, WiFi หน้าจอ LCD ขนาดใหญ่ พร้อม Touch screen (ถ้าเป็น Tablet ต่อออก HDMI เหมือนที่ผมทำคลิปตัวอย่าง อันนี้ยิ่งไอเดียบรรเจิด) รวมๆแล้ว ถ้าซื้อ Shield ทั้งหมดก็หลายตังค์ แต่ซื้อ Android ตัวเดียว ประมาณ 3 - 4 พัน มีครบเลย ถ้ามีไอเดียดีๆ งานที่ออกมาจะดูทันสมัย ขายได้ราคาเลยหละ
ถ้าใครได้แนวคิดแล้วทำเป็นเรื่องเป็นราว สละเวลามาแบ่งปันกันบ้างก๊ดีนะครับ
ตอนต่อไปผมจะแนะนำ Library อีกตัว ชื่อ Ketai ตัวนี้จะนำเอา Sensor ทั้งหมดที่มีใน Android มาประยุกต์ใช้งาน เขียนบน Processing เชื่อมเข้า Arduino เพื่อขับ Hardware รอติดตามนะครับ
ในส่วนของบทความที่เขียนไป ผมว่าต้องมีข้อบกพร่องอยู่ ถ้าติดตามแล้วเห็นส่วนไหนไม่ถูกต้อง มีข้อสงสัยหรือติดขัดตรงไหน เขียนลงในส่วนแสดงความคิดเห็นได้เลยครับ จะเข้ามาตอบให้ทุกคำถามครับ
AndroidSerial Library
ไม่มีความคิดเห็น:
แสดงความคิดเห็น