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


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


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

จบ.





วันพฤหัสบดีที่ 27 กันยายน พ.ศ. 2555

Bluetooth ตอนที่ 4 ทดสอบการรับส่งข้อมูลของบลูทูธ


ทดสอบการทำงานของบลูทูธ ระหว่างโทรศัพท์มือถือแอนดรอยด์ที่พัฒนาโปรแกรมด้วย AppInventor ส่งข้อมูลไปยังคอมพิวเตอร์ผ่านทางบลูทูธ และ โดยจะใช้โปรแกรม Hyper Terminal ชื่อว่า Parallax-Serial-Terminal เป็นตัวแสดงผลข้อมูลที่ถูกส่งมาจากโทรศัพท์มือถือ สามารถดาวน์โหลดโปรแกรมใช้งานฟรีได้ที่ http://www.parallax.com/Portals/0/Downloads/sw/propeller/Parallax-Serial-Terminal.zip

ก่อนอื่นเริ่มต้นออกแบบหน้าตาโปรแกรมให้มีปุ่มกดเพิ่มเติมเพื่อทดสอบการส่งข้อมูลดังภาพ


แก้ไขปรับแต่ง Properties Text , Font Size ในตัวอย่างปรับค่าเพื่อให้มองเห็นชัดเจนขึ้นเท่านั้น โดยผู้ใช้สามารถปรับแต่งเพิ่มเติมในส่วน Properties อื่นๆได้ตามต้องการ



ออกแบบหน้าตาให้สวยงามขึ้น ตามแต่ผู้ใช้ต้องการ แต่จะประกอบด้วยปุ่มต่างๆ คือ ปุ่มเชื่อมต่อ ปุ่มยกเลิกการเชื่อมต่อ และปุ่มสำหรับส่งข้อมูล A-D



เปิดโปรแกรม AppInventor EditorBlocks ขึ้นมาเพื่อทำการเขียนโค๊ดคำสั่งการทำงานดังภาพ


เปิดโปรแกรมประเภท Terminal ในตัวอย่างจะใช้เป็น Parallax Serial Terminal  โดยตัวโปรแกรมสามารถดาวน์โหลดและใช้งานได้ฟรีที่  www.parallax.com 


หน้าตาโปรแกรม Parallax Serial Terminal  ที่ปุ่มด้านล่างขวามือให้ทำการคลิกปุ่ม Enable เพื่อเปิดใช้งานซีเรียลพอร์ต


จากนั้นเปิดโปรแกรมที่ได้พัฒนาขึ้นจาก AppInventor ขึ้นมา จะแสดงหน้าตาดังรูป


ทดสอบด้วยการกดปุ่มต่างๆ ABCD ของโทรศัพท์มือถือ  ถ้ามีข้อความขึ้นที่หน้าต่าง Hyper Timinal แสดงว่าการรับส่งข้อมูลสามารถทำได้สำเร็จเรียบร้อย

















วันพุธที่ 26 กันยายน พ.ศ. 2555

Bluetooth ตอนที่ 3 ขั้นตอนการจับคู่อุปกรณ์บลูทูธ ระหว่างโทรศัพท์มือถือกับคอมพิวเตอร์ notebook



ก่อนอื่นให้ทำการเปิดบลูทูธของคอมพิวเตอร์ก่อน สังเกตว่าจะมีสัญลักษณ์รูปบลูทูธเกิดขึ้นบริเวณทากบาร์ขวามือด้านล่าง

คลิกขวาที่รูปสัญลักษณ์บลูทูธ จากนั้นเลือกที่ Open Settings

คลิกถูกที่ Allow Bluetooth devices to find this computer เพื่อกำหนดให้อุปกรณ์บลูทูธอื่นๆ สามารถมองเห็นคอมพิเตอร์เครื่องนี้ได้

หลังจากนั้นคลิกไปที่แถบ COM Ports


หน้าต่างแสดงตำแหน่งพอร์ตที่ใช้สำหรับเชื่อมต่อบลูทูธ 


คลิกขวาที่สัญลักษณ์บลูทูธ  จากนั้นให้คลิกที่ Add a  Device เพื่อจะเริ่มทำการเชื่อมต่อกับอุปกรณ์บลูทูธ


จากนั้นจะแสดงรายชื่ออุปกรณ์บลูทูธที่เปิดอยู่และพร้อมจะทำการจับคู่

คลิกเลือกอุปกรณ์ที่จะเชื่อมต่อจากนั้นคลิกที่ Next



จะแสดงรหัสรักษาความปลอดภัย ให้กับการเชื่อมต่อบลูทูธ  ซึ่งจำเป็นต้องใช้รหัสที่เหมือนกันในการเชื่อมต่อ  จากนั้นคลิกที่ Next ไป


ที่โทรศัพท์มือถือจะแสดงการขอจับคู่บลูทูธ เข้ากับคอมพิวเตอร์ ให้คลิกเลือกที่ปุ่มกดแสดงข้อความ  กำหนดค่าอุปกรณ์ให้ตรงกัน”  

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

ในเมนูเครื่องมือ Device and Printers จะแสดงให้เห็นอุปกรณ์บลูทูธที่ได้ทำการจับคู่ไว้แล้ว