วันศุกร์ที่ 19 ตุลาคม พ.ศ. 2555

AppInventor กับการใช้งาน POPBOT XT ตอนที่ 1

เริ่มต้นการเขียนโปรแกรม  ไปที่เว็บ appinventor.mit.edu



คลิกเลือกที่ Invent  สำหรับเริ่มต้นเข้าใช้งาน AppInventor



ทำการ Login เข้าสู่ระบบ โดยใส่ชื่อที่อยู่อีเมลล์และรหัสผ่าน ที่เราได้สมัครไว้แล้ว
สำหรับผู้เริ่มต้นใช้งานซึ่งยังไม่มี google account นั้น  สามารถใช้ที่อยู่ของ gmail ในการเข้าใช้งานได้
***วิธีการสมัครเข้าใช้งาน AppInventor ดูได้จากเนื้อหาในบทความตอนต้นได้



การขออนุญาตในการเข้าถึงที่อยู่อีเมลล์ของเรา   ให้เราคลิกเลือกที่อนุญาต 



เริ่มต้นสร้างโปรเจ็คขึ้นมาใหม่  คลิกที่ New ตั้งชื่องานที่ต้องการ ในที่นี้ผมตั้งชื่อโปรเจ็คผมว่า bluetooth_popxt 


เริ่มต้นเข้าสู่หน้าต่างการออกแบบ ดังภาพ



เริ่มต้นออกแบบหน้าตาโปรแกรม โดยจะเพิ่มเครื่องมือตัวแรก คือ ListPicker



หลังจากนั้นเพิ่มเครื่องมือ Button เข้ามาอีก 5 ตัว ปรับแต่งแก้ไขหน้าตาตามใจชอบ  ตัวอย่าง เลือกเครื่องมือที่ต้องการปรับแต่ง  ที่เมนู Properties  เลือกที่คุณสมบัติ FontSize เพื่อปรับขนาดตัวอักษรเลือกที่ Text เพื่อปรับเปลี่ยนข้อความใหม่  เลือกที่ TextAlignment เพื่อปรับตำแหน่งของข้อความ



ปรับเปลี่ยนชื่อของเครื่องมือต่างๆเพื่อให้ง่ายต่อการจดจำและสะดวกในการเขียนโปรแกรมคำสั่ง  ทำได้ดังนี้คือ  เลือกเครื่องมือที่ต้องการเปลี่ยนชื่อ   คลิกที่ Rename แก้ไขชื่อใหม่ที่ต้องการให้สอดคล้องกับชนิดและการทำงานของเครื่องมือนั้นๆ แล้วคลิกที่ OK




ทำการเปลี่ยนชื่อเครื่องมือที่เหลือทั้งหมด




เครื่องมือที่สำคัญที่ทำหน้าที่เชื่อมต่อสื่อสารข้อมูลผ่านบลูทูธคือ BluetoothClient 


เปิดหน้าต่างโปรแกรม Blocks Editor ขึ้นมา เพื่อทำการเขียนคำสั่งให้กับโปรแกรม


หน้าตาของ Blocks Editor ก่อนเริ่มต้นเขียนคำสั่งโปรแกรม


เริ่มต้นเขียนโค้ดคำสั่งสำหรับทำหน้าที่เชื่อมต่อบลูทูธ



ชุดคำสั่งที่คอยทำหน้าที่เชื่อมต่อบลูทูธ ของโทรศัพท์มือถือกับอุปกรณ์บลูทูธอื่นๆ




เขียนโค้ดโปรแกรมดังนี้



คำอธิบายโปรแกรม
หลังจากที่ปุ่มกดแต่ละปุ่มทำงาน จะมีการส่งค่าข้อมูล ตามที่ได้กำหนดไว้ออกไป ด้วยคำสั่ง BTClient.Sent1ByteNumber >  ตามด้วยข้อมูลที่มีชนิดของข้อมูลเป็น Byte ส่งออกไปในที่นี้คือ 1


หน้าตาโปรแกรมบนมือถือที่ได้ออกแบบไว้สำหรับควบคุมการทำงานของหุ่นยนต์ popbot xt


คำอธิบาย
โปรแกรมออกแบบมาเพื่อใช้เป็นตัวอย่างในการส่งข้อมูแบบง่าย โดยจะประกอบไปด้วย 
  • ปุ่ม Connect  สำหรับเชื่อมต่อกับอุปกรณ์บูลทูธ ในที่นี้ก็คือหุ่นยนต์ popbot xt ที่ได้ติดตั้งโมดูลสื่อสารไร้สายบลูทูธ ชื่อว่า BlueSticks
  • ปุ่ม Disconnect สำหรับยกเลิกการเชื่อมต่อ
  • ปุ่ม Motor 1 ON สำหรับส่งข้อมูลค่า 1 ออกไป เพื่อให้มอเตอร์ตัวที่ 1 ของหุ่นยนต์ popxt ทำงาน
  • ปุ่ม Motor 1 OFF สำหรับส่งข้อมูลค่า 2 ออกไป เพื่อให้มอเตอร์ตัวที่ 1 ของหุ่นยนต์ popxt หยุดทำงาน
  • ปุ่ม Motor 2 ON  สำหรับส่งข้อมูลค่า 3 ออกไป เพื่อให้มอเตอร์ตัวที่ 2 ของหุ่นยนต์ popxt ทำงาน
  • ปุ่ม Motor 2 OFF สำหรับส่งข้อมูลค่า 4 ออกไป เพื่อให้มอเตอร์ตัวที่ 2 ของหุ่นยนต์ popxt หยุดทำงาน



ติดตั้ง BlueSticks 

โมดูลสำหรับการเชื่่อมต่อบลูทูธ เข้ากับบอร์ดหุ่นยนต์ POPXT

RX ที่ตัวโมดูล BlueSticks  ต่อกับ  TX ของบอร์ดหุ่นยนต์ POPXT 
TX ที่ตัวโมดูล BlueSticks  ต่อกับ  RX ของบอร์ดหุ่นยนต์ POPXT 




Source Code โปรแกรมสำหรับ POPBOT-XT














สามารถเรียกใช้งานคำสั่งต่างๆที่อยู่ภายในไลบารี่ popxt.h กับคำสั่งมาตรฐานของ arduino ได้
โดยเริ่มต้นทำการดึงไฟล์ไลบารี่ popxt.h เข้ามาใช้งาน  ประกาศค่าบอดเรด ที่จะใช้ในการเชื่อมต่อ ในที่นี้ตั้งเป็น 9600 ซึ่งโดยปกติจะเป็นค่าดีฟอล ซึ่งอาจจะไม่ต้องใส่ก็ได้


Code POPBOT XT

#include <popxt.h>
void setup() {
  glcdClear();
  Serial.begin(9600);
  Serial1.begin(9600);
}
void loop() {

  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.println(inByte, DEC);  
    if(inByte==1)
    {
      motor(1,50);
      sleep(100);
    }
    else if(inByte==2)
    {
      motor(1,0);
      sleep(100);
    }
    else if(inByte==3)
    {
      motor(2,50);
      sleep(100);
    }
    else if(inByte==4)
    {
      motor(2,0);
      sleep(100);
    }
  }
}


  • คำสั่ง Serial.begin(9600)  เป็นการสั่งให้มีการส่งข้อมูลผ่านทาง Serial Port ด้วยอัตราความเร็ว 9600 bit /sec  *** การสื่่อสารระหว่างบอร์ดไมโครคอนโทรลเลอร์กับคอมพิวเตอร์
  • คำสั่ง Serial1.begin(9600)  เป็นการสั่งให้มีการส่งข้อมูลผ่านทาง Serial Port ที่ ด้วยอัตราความเร็ว 9600 bit /sec  ***การสื่อสารระหว่างบอร์ดไมโครคอนโทรลเลอร์กับโทรศัพท์มือถือ
  • Serial1.available() ชุดคำสั่งใช้ตรวจสอบข้อมูลว่ามีข้อมูลถูกส่งเข้ามาหรือไม่
  • Int  inByte   ประกาศตัวแปรชื่อ inByte มีชนิดข้อมูลเป็น integer
  • Serial.read()  อ่านค่าข้อมูลที่ถูกส่งเข้ามาแล้วไปเก็บไว้ที่ตัวแปร inByte
  • Serial.Println()  แสดงผลข้อมูลที่รับเข้ามาผ่านทางซีเรียลพอร์ต ซึ่งสามารถดูได้จากการเปิดหน้าต่าง Terminal ที่อยู่บริเวณมุมด้านขวาของโปรแกรม Arduino
  • If(inByte==1)  ตรวจสอบข้อมูลที่เข้ามาว่าเป็น ใช่หรือไม่ ถ้าใช่ให้ทำงานชุดคำสั่งในเครื่องหมายปีกกา ในที่นี่เราจะสั่งให้มอเตอร์ตัวที่หนึ่งของหุ่นยนต์หมุน แต่ถ้าข้อมูลที่ส่งเข้ามาไม่ตรงกับเงื่อนไขที่ได้ทำการประกาศไว้นั้น โปรแกรมจะทำการตรวจสอบเงื่อนไขต่อไปด้วยคำสั่ง else if 


****  บทความในตอนนี้เป็นตัวอย่างการเขียนโปรแกรมบนมือถือแอนดรอย์แบบง่ายๆ เพื่อใช้เชื่อมต่อกับอุปกรณ์ฮาร์ดแวร์ภายนอกได้  ซึ่งจะช่วยทำให้ผู้เริ่มต้นที่สนใจในการเขียนโปรแกรมบนมือถือ นำไปประยุกต์ใช้งานต่อไป  





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

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