วันอาทิตย์ที่ 20 มกราคม พ.ศ. 2556

BluetoothControl กับการควบคุม POP-BOT XT และ AT-BOT ในการแข่งขันหุ่นยนต์ว่ายน้ำ

             เนื้อหาส่วนหนึ่งของบทความนี้ มาจาก facebook ของ inex  ซึ่งโพสโดย บริษัท อินโนเวตีฟเอกเพอริเม้นต์  จำกัด   ซึ่งมีเนื้อหา เป็นเรื่องราวเกี่ยวกับการเขียน App บนแอนดรอยด์ โดยใช้โปรแกรม AppInventor  เพื่อควบคุมการทำงานของหุ่นยนต์ สำหรับไปประยุกต์ใช้ในการแข่งขันหุ่นยนต์ว่ายน้ำชิงแชมป์ประเทศไทย ที่จะจัดขึ้นในวันที่ 6-8 กุมภาพันธ์นี้  


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

อ้างอิงจากโพสในเฟคบุ๊คของ inex เรื่อง   แอปพลิคชั่น BluetoothControl บนอุปกรณ์แอนดรอยด์เพื่อควบคุมการขับมอเตอร์ทั้งมอเตอร์ไฟตรงและเซอร์โวมอเตอร์ของ POP-BOT XT และ AT-BOT
ที่พัฒนาขึ้นจาก App inventor

ดาวน์โหลดซอร์สโปรแกรมเพื่อเรียนรู้และดัดแปลง แก้ไขด้วย App Inventor ได้ที่

ไฟล์ติดตั้ง นามสกุล .apk ดาวน์โหลดได้ที่
ตัวไฟล์จะสามารถติดตั้งลงบนแอนดรอยด์ได้ทันที โดยผ่านโปรแกรมติดตั้งทั่วไปที่่มีอยู่ในมือถือแอนดรอยด์

ตัวอย่างโปรแกรมที่ต้องอัปโหลดไปยัง POP-BOT XT ดาวน์โหลดได้ที่ :  
 http://www.mediafire.com/?bn1ddru5a5vrbaf  

ตัวอย่างโปรแกรมที่ต้องอัปโหลดไปยัง AT-BOT หรือ Robo-Creator ดาวน์โหลดได้ที่ : 
 http://www.mediafire.com/?wfe68ee3q6pyuow


หลังจากที่เราดาวน์โหลดไฟล์ซอร์สของ app inventor เรียบร้อยแล้ว  ให้ทำการอัพโหลดไฟล์ให้เรียบร้อย  จากนั้นจะปรากฏหน้าตาของแอพให้เห็นดังภาพ
ท่านสามารถเข้าไปดูรายละเอียดเกี่ยวกับการอัพโหลดไฟล์ได้ที่บล็อกนี้ในหัวข้อเรื่อง  การสร้างโปรเจ็คใหม่ ดาวน์โหลด อัพโหลด


เพื่อให้เกิดความเข้าใจมากยิ่งขึ้น ผมจะขออธิบายคำสั่งการทำงานของโปรแกรม AppInventor เพิ่มเติม   แต่ก่อนอื่นควรจะเปิดโปรแกรม app inventor ในส่วนของ Block Edittor จะแสดงให้เห็นคำสั่งในการทำงานร่วมกันของมือถือและหุ่นยนต์  สรุปการทำงานสั้นๆ โดยมือถือแอนดรอยด์จะทำหน้าที่ในการส่งข้อมูลไปยังตัวบอร์ดหุ่นยนต์   ซึ่งได้ติดตั้งโมดูลบูลทูธเอาไว้ แล้วเขียนคำสั่งเพื่อรับค่าที่จะถูกส่งเข้ามาจากมือถือ

ชุดคำสั่งทั้งหมดของโปรแกรม


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



โดยเครื่องมือที่นำมาใช้ทำปุ่มกดคราวนี้ ไม่ใช่ Button แต่เป็นเครื่องมือที่ชื่อว่า canvas  ซึ่งมีคุณสมบัติที่แตกต่างจาก button ตรงที่มีฟังก์ชันที่สามารถตรวจจับการกดและการปล่อยของนิ้วที่เราสัมผัสได้   ชื่อว่า touch up   touch down เดี๋ยวจะอธิบายในส่วนของการทำงานอีกครั้งหนึ่ง


ต่อไปจะเป็นการเขียนคำสั่งการทำงานให้กับโปรแกรม   โดยก่อนอื่นทำการเปิด  Block Editor ขึ้นมาเพื่อทำการศึกษาการทำงานของโปรแกรม จากนั้นอาจจะทำการปรับแต่งแก้ไขได้ตามต้องการ  ซึ่งผมจะขออธิบายส่วนที่สำคัญต่างๆดังนี้
ส่วนแรกจะเป็นส่วนของชุดคำสั่งโปรแกรมที่ใช้ในการติดต่อสื่อสารไร้สายผ่านบลูทูธ และปุ่มสำหรับยกเลิกการเชื่อมต่อ ดังภาพ 
ปุ่มที่ทำหน้าที่ืเชื่อมต่อบลูทูธที่ชื่อ  list_connect  จะเรียกใช้งานคำสั่ง BeforePicking ซึ่งทำหน้าที่แสดงรายชื่อของอุปกรณ์บลูทูธต่างๆที่เครื่องสามารถมองเห็น  อย่าลืมเปิดบลูทูธด้วยน่ะครับ มิฉะนั้นจะไม่เห็นอะไรเลย 
หลังจากที่เลือกเชื่อมต่อกับตัวบลูทูธเรียบร้อยแล้ว โปรแกรมจะทำการเชื่อมต่อกับบลูทูธที่เราได้เลือกไว้ ถือเป็นการเสร็จสิ้นกระบวนการเชื่อมต่อ ซึ่งถือว่าเป็นคำสั่งเชื่อมต่อบลูทูธด้วยคำสั่งง่ายๆ แต่ได้ใจความ 55

ปุ่มกดที่ชื่อ button_disconnect จะทำหน้าที่ยกเลิกการเชื่อมต่อหลังจากกดปุ่ม

มีคำสั่งที่น่าสนใจอยู่หนึ่งคำสั่ง  ซึ่งขอยกตัวอย่างปุ่มกดสำหรับสั่งให้หุ่นยนต์เดินหน้า  ปุ่มกดที่ชื่อว่า button_up จะมีชุดคำสั่งที่ใช้งานอยู่สองตัวด้วยกันคือ TouchUp , TouchDown 

ขออธิบายคำสั่งสองตัวนี้ก่อน หลังจากที่เรากดปุ่ม button_up แล้ว  ชุดคำสั่ง TouchDown จะทำงาน  โดยจะส่งค่า '56' ออกไปทางบลูทูธ   หลังจากที่เรายกนิ้วขึ้นจากปุ่ม button_up แล้ว  ชุดคำสั่ง TouchUp จะทำงานซึ่งจะส่งค่า '48' ออกไปยังบลูทูธ 



ชุดคำสั่งทางฝั่งของหุ่นยนต์จะเป็นดังนี้คือ

สามารถดาวน์โหลดได้ที่นี่  :  http://www.mediafire.com/?bn1ddru5a5vrbaf  
 โปรแกรมทางฝั่งหุ่นยนต์  จะทำหน้าที่ตรวจสอบว่ามีข้อมูลถูกส่งเข้ามาหรือไม่   ถ้ามีข้อมูลนั้นคืออะไร  โดยคำสั่งที่ใช้ตรวจสอบว่ามีข้อมูลหรือไม่นั้นคือคำสั่ง  if(uart1_available())   เมื่อมีข้อมูลถูกส่งเข้ามา เงื่อนไขโปรแกรมจะเป็นจริงจะทำงานในคำสั่งต่อไป โดยจะรับค่าที่ถูกส่งเข้ามานั้นเก็บไว้ในตัวแปรก่อน     int x = uart1_getkey();    จากนั้นจะทำการตรวจสอบอีกครั้งว่าข้อมูลนั้นมีค่าเป็นอะไร ยกตัวอย่างเช่น ถ้าข้อมูลที่เข้ามานั้นมีค่าเป็น 56 เราจะสั่งให้หุ่นยนต์ของเราเคลื่อนที่ไปข้างหน้า เราก็ใช้คำสั่ง  if(x == 56) { forward(10); }      
เนื้อหาที่กล่าวมานี้เป็นเพียงแค่การยกตัวอย่างการทำงานการใช้เครื่องมือบางตัวของ app inventor เท่านั้น หวังว่าคงเป็นประโยชน์สำหรับใครหลายๆคน ที่กำลังศึกษาอยู่ตอนนี้  ผิดพลาดประการใด ต้องขออภัย มา ณที่นี้ด้วยครับ

หน้าตาโปรแกรม หลังติดตั้งลงบน Tablet ของผมเอง สีสวยสดใส 


ติดตามข่าวสารเรื่องราวต่างๆเกี่ยวกับวงการหุ่นยนต์เล็กในบ้านเรา เพิ่มเติมได้ที่เว็บ    www.microbotshop.com  ครับ  

ขอบคุณ inex สำหรับการพัฒนาสื่อการเรียนรู้ใหม่ๆอยู่ตลอดเวลา และเนื้อหาบทความดีๆจากทีมงาน และผู้มีส่วนเกี่ยวข้อง ในการจัดการแข่งขันหุ่นยนต์ว่ายน้ำ  ชิงแชมป์ประเทศไทย ในครั้งนี้ด้วยครับ


2 ความคิดเห็น:

  1. ไม่ระบุชื่อ1 กุมภาพันธ์ 2556 13:49

    ขอบคุณมากครับ (ส่งจาก มือเบส เค-อง เบ็นบ้านตะขบ)

    ตอบลบ
  2. ไม่ระบุชื่อ20 กันยายน 2557 07:36

    พี่ครับถ้าต้องการให้โปรแกรมที่เราสร้างกดปุ่มพร้อมกันได้ 2 ปุ่มจะต้องทำยังไงครับ

    ตอบลบ