วันศุกร์ที่ 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 


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





วันพุธที่ 10 ตุลาคม พ.ศ. 2555

Bluetooth ตอนที่ 7 เขียนโปรแกรมติดต่อกับ UniconBoard


  ในบทความนี้จะเป็นตัวอย่างการเชื่อมต่อบลูทูธระหว่างโทรศัพท์มือถือระบบปฏิบัติการแอนดรอย์ที่พัฒนาด้วยโปรแกรม AppInventor ติดต่อสื่อสารข้อมูลแบบไร้สายบลูทูธโดยใช้โมดูลบลูทูธที่ชื่อว่า BlueStick ที่ทำการเชื่อมต่ออยู่กับบอร์ดทดลองไมโครคอนโทรลเลอร์ UniconBoard ที่ทำหน้าที่ประมวลผลข้อมูลต่างๆที่ถูกมาจากมือถือ 
      สร้างโปรเจ็คขึ้นมาใหม่ ตั้งชื่อตามใจชอบ  หลังจากนั้นออกแบบหน้าตาโปรแกรมดังภาพ ซึ่งประกอบด้วยคอมโพเน้นต่างๆดังนี้คือ    HorizontalArangement1,HorizontalArrangement2 , Button1,Button2 ,Notifier1,BluetoothClient1  เราสามารถปรับเปลี่ยนชื่อของคอมโพเน้นต่างๆได้ตามต้องการเพื่อให้ง่ายต่อการจำหรือการนำไปใช้งาน แล้วยังสามารถปรับแต่งปุ่มต่างด้วยรูปภาพได้ โดยแต่ละปุ่มของผมก็จะใช้สำหรับสื่อความหมายดังนี้คือ ปุ่มบลูทูธคอนเนคสำหรับเชื่อมต่อบลูทูธ  ปุ่มบลูทูธดิสคอนเนคสำหรับยกเลิกการเชื่อมต่อ  ปุ่่มหลอดไฟติด เมื่อกดแล้วไฟที่หลอด Led จะติด และหลอดไฟไม่ติด ใช้แทนการปิดไฟ หลอด Led ก็จะดับ


เปิดเครื่องมือ Blocks Editor ขึ้นมา แล้วทำการเขียนโค๊ดดังภาพ  ซึ่งแบ่งหน้าที่การทำงานเป็นสองส่วนคือ ส่วนที่เกี่ยวข้องกับการเชื่อมต่อบลูทูธ กับส่วนที่เกี่ยวข้องกับการส่งข้อมูลผ่านบลูทูธ  หลังจากเขียนโค๊ดโปรแกรมเสร็จเรียบร้อยแล้วให้ทำการดาวน์โหลดและติดตั้งโปรแกรมลงบนโทรศัพท์มือถือ หรือจะใช้วิธีการจำลองการทำงานบนโทรศัพท์มือถือก่อนก็ได้


ที่บอร์ดไมโครคอนโทรลเลอร์ UniconBoard นั้น ให้เราทำการเชื่อมต่อชุดโมดูลสื่อสารไร้สายบลูทูธ ที่ชื่อว่า BlueStick เข้ากับตำแหน่งขาพอร์ตของ UniconBoard ดังนี้คือ


ขา  RX(0) ของ UniconBoard   ต่อเข้ากับขา  TX ของ BlueStick
ขา  TX(1) ของ UniconBoard   ต่อเข้ากับขา  RX ของ BlueStick
เพื่อให้การเชื่อมต่อเป็นไปง่ายขึ้นสามารถเชื่อมต่อบลูทูธเข้ากับ ADX-Btstick ก่อนแล้วค่อยนำไปเชื่อมต่อกับ UniconBoard


BlueStick


เป็นอุปกรณ์บลูทูธที่ใช้โปรไฟล์พอร์ตอนุกรม (Serial port profile : SPP) ในการติดต่อเพื่อใช้งาน จึงเหมาะอย่างยิ่งสําหรับใชในสื่อสารขอมูลอนุกรมแบบไร้สายผานคลื่นวิทยุระบบบลูทูธ
คุณสมบัติทางเทคนิค
• ความไวในการทํางาน -80dBm
• กําลังส่งสูงสุด +4dBm
• เป็นอุปกรณ์ที่ เข้ากันได้ตามมาตรฐานบลูทูธ V2.0 + EDR (Enhanced Data Rate) ถ่ายทอดข้อมูลด้วยอัตราเร็ว 3 เมกะบิตต่อวินาที
• ความถี่ใช้งาน 2.4GHz
• เป็นอุปกรณ์บลูทูธที่ทํางานในโหมดสเลฟ และใช้โปรไฟล์พอร์ตอนุกรม (SPP)
• ระยะทําการสูงสุด 10 เมตร
• อัตราบอดตั้งต้น 9,600 บิตต่อวินาที โดยใช้รู ปแบบข้อมูล 8 บิต, บิตหยุด 1 บิต และไม่มีบิตตรวจสอบพาริตี้ หรือ 8N1
• ตั้งค่าอัตราบอดใหม่ได้ ประกอบด้วย 1200, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400 บิตต่อวินาที
• รหัสประจําตัวสําหรั บใช้ในการจั บคู่ ตั้งได้ ตั้งแต่ 0000 ถึง 9999 (4 หลัก) ค่าตั้งต้นคือ 1234
• ย่านไฟเลี้ยง +3.3 ถึง +5.5V
• มีวงจรสื่อสารข้อมูลอนุกรมหรือ UART ในตัว
• มีสายอากาศติดตั้งภายในตัว
• ขนาด 1.5 ซม. x 4.0 ซม.
ในชุดประกอบด้วย : โมดูล BlueStick, คอนเน็กเตอร์ IDC ตัวผู้ 4 ขาทั้งแบบขาตรงและขางอ


ADX-Btstick



บอร์ดใช้งานโมดูล BlueStick
มีจุดต่อ IDC ตัวเมียสำหรับติดตั้งโมดูล BlueStick
จุดเชื่อมต่อ TxD และ RxD สามารถเชื่อมต่อกับคอนเน็กเตอร์ JST ของ INEX ได้


Code ตัวอย่างการรับข้อมูลผ่าน SerialPort


void setup() {
  pinMode(30,OUTPUT);
  Serial.begin(9600);
  Serial1.begin(9600);
}
void loop() {
  
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.println(inByte, DEC);  
    if(inByte==1)
    {
      digitalWrite(30,HIGH);
    }
    else {
      digitalWrite(30,LOW);

    }

  }
}

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

Bluetooth ตอนที่ 6 เขียนโปรแกรมมือถือควบคุมหุ่นยนต์ RoboCircle3s



ปรับแต่งแก้ไขงานจากไฟล์โปรเจ็คในบทความตอนที่แล้ว
เลือกเครื่องมือ Table Arrangement

กำหนดรูปแบบตารางขนาด Columns 3 x Row 3

ปรับแต่งแก้ไขหน้าตาของโปรแกรมตามลักษณะการใช้งาน คือ จะมีปุ่มกดอยู่ 5 ปุ่ม ประกอบด้วย ปุ่มเดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา และหยุด



หน้าตาของโปรแกรมที่เราได้ออกแบบเสร็จเรียบร้อย

ปรับแต่งแก้ไขชื่อของ componance แต่ละตัวให้เหมาะสม เพื่อให้ง่ายต่อการเขียนโปรแกรม



เปิด Blocks Editor ขึ้นมา เขียนโปรแกรมคำสั่งดังภาพ  แค่นี้ก็เสร็จสิ้นกระบวนการในการเขียนโปรแกรมบนมือถือแล้ว



เขียนชุดคำสั่งโปรแกรมภาษา LOGO ลงบนตัวหุ่นยนต์ แล้วทดสอบการต่อสายมอเตอร์ว่าสามารถทำงานได้ถูกต้องตามที่ต้องการหรือไม่








วันอังคารที่ 2 ตุลาคม พ.ศ. 2555

Bluetooth ตอนที่ 5 เขียนโปรแกรมสั่งงาน i-box3s


ออกแบบหน้าตาโปรแกรมตามใจชอบ



เขียนโค๊ดคำสั่งใน Blocks Editor


เขียนคำสั่งรับข้อมูลจากมือถือผ่านบลูทูธแล้วทดสอบการทำงาน


วีดีโอตัวอย่างสอนการใช้งาน

จบ.