วันพฤหัสบดีที่ 18 ตุลาคม พ.ศ. 2555
การควบคุมหุ่นยนต์ POP-BOT XT ด้วยแอนดรอยด์ผ่านบลูทูธด้วย BlueStick
เนื้อหาของบทความนี้คัดลอกมาจาก facebook ของบริษัท Innovetive Experiment เห็นว่าน่าสนใจเลยนำมาฝากครับ ดูรายละเอียดได้ที่ facebook ของ inex นะครับ
www.inex.co.th
โมดูล BlueStick เป็นโมดูลบลูทูธที่แปลงสัญญาณออกมาเป็นอนุกรม มีขา TxD ส่งข้อมูล ขา RxD รับข้อมูล ซึ่งสามารถนำโมดูลนี้ไปสื่อสารไร้สายกับคอมพิวเตอร์หรือโทรศัพท์สมาร์ทโฟนต่างๆ ที่มีโปรแกรมสื่อสารอนุกรมได้ ในที่นี้จะยกตัวอย่างการเชื่อมต่อกับ Android ครับ
อุปกรณ์ที่ต้องใช้
1. หุ่นยนต์ POP-BOT XT http://goo.gl/avAEE
2. โมดูล Blue stick http://goo.gl/FP017
3. ADX-BTstick http://goo.gl/MUjS9 สำหรับติดตั้งโมดูล BlueStick จุดเชื่อมต่อ TxD และ RxD สามารถเชื่อมต่อกับคอนเน็กเตอร์ JST ของ INEX ได้
3. โทรศัพท์เคลื่อนที่ระบบปฏิบัติการแอนดรอยด์
ติดตั้งโมดูล BlueStick เข้ากับหุ่นยนต์ POP-BOT XT
ให้นำ ADX-BTStick ยึดติดเข้ากับโครงสร้างของหุ่นยนต์ POP-BOT-XT จากนั้นเสียบสัญญาณ จากขั้ว TxD ของ ADX-BTStick เข้ากับขั้ว RxD ของ POP-XT และ ขั้ว RxD ของ ADC-BTStick เข้ากับขั้ว TxD ของ POP-XT
ตัวอย่างโปรแกรม
#include <popxt.h>
char key;
void setup(){
glcdMode(1);
setTextSize(2);
glcd(1,1,"Press OK");
sw_ok_press();
glcdClear();
}
void loop(){ if(uart1_available()) { key=uart1_getkey();
if(key==0x38){
glcd(1,1,"Forward ");
fd(50);
}
else if (key==0x32){
glcd(1,1,"Backward ");
bk(50);
}
else if (key==0x34){
glcd(1,1,"Spin Left ");
sl(50);
}
else if (key==0x36){
glcd(1,1,"Spin Right");
sr(50);
}
}
else {
glcd(1,1,"Motor Stop");ao();
}
}
การทำงานของโปรแกรม
POPBOT-XT มีไลบรารี่สำหรับการสื่อสารอนุกรมไว้ให้ใช้งานเรียบร้อยแล้ว โดยใช้คำสั่ง uart สำหรับการสื่อสารอนุกรมผ่านสาย usb และ uart1 สำหรับการสื่อสารอนุกรมผ่านจุดต่อ JST บนบอร์ด POP-XT ซึ่งเราจะเลือกใช้ uart1 มาใช้งาน
การทำงานในเบื้องต้นจะตรวจสอบว่ามีการส่งข้อมูลจากบลูทูธเข้ามาหรือไม่ ถ้ามีการส่งเข้ามาก็ตรวจสอบว่าตรงกับค่าคีย์สำหรับการ เดินหน้า (0x38) ถอยหลัง (0x32) เลี้ยวซ้าย (0x34) หรือเลี้ยวขวา (0x36) หรือไม่ ถ้าใช่ก็เรียกคำสั่งสำหรับเดินหน้าถอยหลังเหล่านั้น โดยแสดงข้อความที่หน้าจอออกมาด้วย แต่ถ้าไม่มีการส่งข้อมูลออกมา จะมีคำสั่งให้หุ่นยนต์หยุดการเคลื่อนที่
การทดสอบในส่วนนี้สามารถใช้คอมพิวเตอร์โน๊ตบุ๊คที่มีบลูทูธ เขียนเชื่อมต่ออนุกรมกับหุ่นยนต์แล้วกดคีย์ตัวเลขเพื่อควบคุมหุ่นยนต์ได้เลย ผ่านโปรแกรม Terminal ต่างๆ
การเชื่อมต่อหุ่นยนต์กับมือถือ Android
ก่อนอื่นครับให้ไปดาวน์โหลดซอฟต์แวร์ BlueStick Control ใน Google Play กันก่อน โดยเข้าไปที่หน้า Google Play จากนั้นกดค้นหา "Bluestick" ดังรูป
การเชื่อมต่อหุ่นยนต์กับมือถือ Android
ก่อนอื่นครับให้ไปดาวน์โหลดซอฟต์แวร์ BlueStick Control ใน Google Play กันก่อน โดยเข้าไปที่หน้า Google Play จากนั้นกดค้นหา "Bluestick" ดังรูป
เข้าไปที่ BlueStick Control แลัวเลือกติดตั้ง
จะได้เป็น App BlueStick Control ดังรูป
เมื่อเปิดโปรแกรมเข้าไปจะพบหน้าต่างตัวเลือกสำหรับรูปแบบการควบคุม 2 รูปแบบคือ แบบกดที่หน้าจอ (Button Mode) หรือแบบโยกหน้าจอ Tilt โหมด ให้เลือกแบบ Button Mode ก่อนครับ
จะพบกับหน้าจอสีฟ้าดังรูป ให้กดไปที่รูปเฟืองมุมล่างด้านซ้ายเพื่อค้นหาและจับคู่กับโมดูล BlueStick
เมื่อพบโมดูล BlueStick ให้กดเลือกแล้วจะต้องป้อนรหัสผ่านเพื่อจับคู่ โดยปกติจะใช้ค่า 1234
นอกจากการควบคุมแบบ Button Mode แล้ว ยังสามารถเปลี่ยนเป็นโหมด Tilt Mode ได้จากแถวข้อความด้านล่าง
ทดสอบใช้งาน
เป็นไฟล์ YOUTUBE ครับติดตามได้ตามลิงก์เลยครับ
http://youtu.be/gy8bdeXMagA
www.inex.co.th
โมดูล BlueStick เป็นโมดูลบลูทูธที่แปลงสัญญาณออกมาเป็นอนุกรม มีขา TxD ส่งข้อมูล ขา RxD รับข้อมูล ซึ่งสามารถนำโมดูลนี้ไปสื่อสารไร้สายกับคอมพิวเตอร์หรือโทรศัพท์สมาร์ทโฟนต่างๆ ที่มีโปรแกรมสื่อสารอนุกรมได้ ในที่นี้จะยกตัวอย่างการเชื่อมต่อกับ Android ครับ
อุปกรณ์ที่ต้องใช้
1. หุ่นยนต์ POP-BOT XT http://goo.gl/avAEE
2. โมดูล Blue stick http://goo.gl/FP017
3. ADX-BTstick http://goo.gl/MUjS9 สำหรับติดตั้งโมดูล BlueStick จุดเชื่อมต่อ TxD และ RxD สามารถเชื่อมต่อกับคอนเน็กเตอร์ JST ของ INEX ได้
3. โทรศัพท์เคลื่อนที่ระบบปฏิบัติการแอนดรอยด์
ติดตั้งโมดูล BlueStick เข้ากับหุ่นยนต์ POP-BOT XT
ให้นำ ADX-BTStick ยึดติดเข้ากับโครงสร้างของหุ่นยนต์ POP-BOT-XT จากนั้นเสียบสัญญาณ จากขั้ว TxD ของ ADX-BTStick เข้ากับขั้ว RxD ของ POP-XT และ ขั้ว RxD ของ ADC-BTStick เข้ากับขั้ว TxD ของ POP-XT
ตัวอย่างโปรแกรม
#include <popxt.h>
char key;
void setup(){
glcdMode(1);
setTextSize(2);
glcd(1,1,"Press OK");
sw_ok_press();
glcdClear();
}
void loop(){ if(uart1_available()) { key=uart1_getkey();
if(key==0x38){
glcd(1,1,"Forward ");
fd(50);
}
else if (key==0x32){
glcd(1,1,"Backward ");
bk(50);
}
else if (key==0x34){
glcd(1,1,"Spin Left ");
sl(50);
}
else if (key==0x36){
glcd(1,1,"Spin Right");
sr(50);
}
}
else {
glcd(1,1,"Motor Stop");ao();
}
}
การทำงานของโปรแกรม
POPBOT-XT มีไลบรารี่สำหรับการสื่อสารอนุกรมไว้ให้ใช้งานเรียบร้อยแล้ว โดยใช้คำสั่ง uart สำหรับการสื่อสารอนุกรมผ่านสาย usb และ uart1 สำหรับการสื่อสารอนุกรมผ่านจุดต่อ JST บนบอร์ด POP-XT ซึ่งเราจะเลือกใช้ uart1 มาใช้งาน
การทำงานในเบื้องต้นจะตรวจสอบว่ามีการส่งข้อมูลจากบลูทูธเข้ามาหรือไม่ ถ้ามีการส่งเข้ามาก็ตรวจสอบว่าตรงกับค่าคีย์สำหรับการ เดินหน้า (0x38) ถอยหลัง (0x32) เลี้ยวซ้าย (0x34) หรือเลี้ยวขวา (0x36) หรือไม่ ถ้าใช่ก็เรียกคำสั่งสำหรับเดินหน้าถอยหลังเหล่านั้น โดยแสดงข้อความที่หน้าจอออกมาด้วย แต่ถ้าไม่มีการส่งข้อมูลออกมา จะมีคำสั่งให้หุ่นยนต์หยุดการเคลื่อนที่
การทดสอบในส่วนนี้สามารถใช้คอมพิวเตอร์โน๊ตบุ๊คที่มีบลูทูธ เขียนเชื่อมต่ออนุกรมกับหุ่นยนต์แล้วกดคีย์ตัวเลขเพื่อควบคุมหุ่นยนต์ได้เลย ผ่านโปรแกรม Terminal ต่างๆ
การเชื่อมต่อหุ่นยนต์กับมือถือ Android
ก่อนอื่นครับให้ไปดาวน์โหลดซอฟต์แวร์ BlueStick Control ใน Google Play กันก่อน โดยเข้าไปที่หน้า Google Play จากนั้นกดค้นหา "Bluestick" ดังรูป
การเชื่อมต่อหุ่นยนต์กับมือถือ Android
ก่อนอื่นครับให้ไปดาวน์โหลดซอฟต์แวร์ BlueStick Control ใน Google Play กันก่อน โดยเข้าไปที่หน้า Google Play จากนั้นกดค้นหา "Bluestick" ดังรูป
เข้าไปที่ BlueStick Control แลัวเลือกติดตั้ง
จะได้เป็น App BlueStick Control ดังรูป
เมื่อเปิดโปรแกรมเข้าไปจะพบหน้าต่างตัวเลือกสำหรับรูปแบบการควบคุม 2 รูปแบบคือ แบบกดที่หน้าจอ (Button Mode) หรือแบบโยกหน้าจอ Tilt โหมด ให้เลือกแบบ Button Mode ก่อนครับ
จะพบกับหน้าจอสีฟ้าดังรูป ให้กดไปที่รูปเฟืองมุมล่างด้านซ้ายเพื่อค้นหาและจับคู่กับโมดูล BlueStick
เมื่อพบโมดูล BlueStick ให้กดเลือกแล้วจะต้องป้อนรหัสผ่านเพื่อจับคู่ โดยปกติจะใช้ค่า 1234
นอกจากการควบคุมแบบ Button Mode แล้ว ยังสามารถเปลี่ยนเป็นโหมด Tilt Mode ได้จากแถวข้อความด้านล่าง
ทดสอบใช้งาน
เป็นไฟล์ YOUTUBE ครับติดตามได้ตามลิงก์เลยครับ
http://youtu.be/gy8bdeXMagA
หุ่นยนต์ POP-BOT-XT ควบคุมด้วยรีโมตคอนโทรล RC
เนื้อหาของบทความนี้คัดลอกมาจาก facebook ของบริษัท Innovetive Experiment
www.inex.co.th
สำหรับเครื่องบินบังคับวิทยุ หรือรถบังคับวิทยุจะใช้รีโมตแบบคลื่อนวิทยุในการควบคุม เอาต์พุตที่ได้จากตัวมันก็จะมีภาครับหรือ รีซีฟเวอร์เป็นตัวจัดการ ปัจจุบันราคาของอุปกรณ์เหล่านี้มีราคาถูกลงมาก (แต่บางตัวฟังก์ชั่นเยอะๆ ก็แพงเหมือนกัน)
ภาครีซีฟเวอร์เมื่อรับสัญญาณมาแล้วก็เปลี่ยนสัญญาณเหล่านั้นไปควบคุมเซอร์โวมอเตอร์
ดังนั้นถ้าเราจับสัญญาณเซอร์โวที่มาจากรีซีฟเวอร์ได้ ก็นำรีโมตของรถบังคับไปใช้งานได้
สำหรับ Arduino มีคำสั่งชื่อ PulseIn ใช้สำหรับอ่านค่าความกว้างพัลล์ที่ป้อนเข้ามา โดยให้ค่าออกมาหน่วยเป็นไมโครวินาที
รูปแบบการใช้งานคำสั่ง
pulseIn(pin, value ,timeout)
โดย pin คือขาดิจิตอลอินพุตที่ต้องการอ่านค่า
value คือลอจิกที่จะอ่านค่าความกว้างพัลส์ออกมา
timeout คือช่วงเวลาที่เรากำหนดว่าถ้าไม่เกิดพัลส์ขึ้นมาในช่วงเวลากี่ไมโครวินาที ให้ไปทำงานคำสั่งถัดไป
การเชื่อมต่อ
ขั้นตอนในส่วนนี้แนะนำให้ไปประยุกต์หาอุปกรณ์ตามที่มีอยู่ใหล้ๆตัวนะครับ เพื่อเชื่อมต่อสายสัญญาณ
สายสัญญาณของเซอร์โวมอเตอร์ที่ใช้กับชุดรีซีฟเวอร์จะแตกต่างกับสายสัญญาณ JST ที่ใช้งานกับหุ่นยนต์ POP-BOT XT จึงจำเป็นต้องมีการตัดต่อสายเล็กน้อย (หรือถ้าไม่มีการใช้งานช่องเซอร์โวมอเตอร์ สามารถเชื่อมต่อสายเข้ากับช่องของเซอร์โวมอเตอร์ก็ได้) ตามขั้นตอนดังนี้
1. นำสายเซอร์โวมอเตอร์ มาตัดปลายออกด้านหนึ่ง ปอกปลายสายเล็กน้อย ให้ทั้งสามสายเหลื่อมกันดังรูป เมื่อบัดกรีแล้วจะได้ไม่ชอร์ตกัน
2. ทำแบบเดียวกันกับสาย JST ปอกปลายสายเช่นเดียวกัน
3. นำสายทั้งสองมาเชื่อมกัน อาจใช้เทปพันสายไฟหรือท่อหดพันไว้เพื่อป้องกันการชอร์ต
4. เสียบสายด้านเซอร์โวมอเตอร์เข้าที่ช่องที่ 1 2 และ 3 ครับ สังเกตทิศทางของสาย สีดำคือไฟลบหรือกราวด์ต้องจำไว้เสมอ
5. เชื่อมต่อสายอีกด้านเข้ากับบอร์ด POP-BOT XT ในที่นี้เลือกต่อตามนี้ครับ
CH1 ==== 21
CH2 ==== 22
CH3 ==== 23
ที่เหลือก็คือการเขียนโปรแกรมทดสอบละครับ เริ่มจากนำค่าที่อ่านได้มาโชว์ที่หน้าจอ GLCD กันก่อน
ทดสอบปรับค่าคันโยกที่รีโมตคอนโทรล แล้วสังเกตค่าตัวเลขที่เปลี่ยนแปลงที่หน้าจอของ GLCD ครับ จะเห็นว่าค่าของทั้ง 3 ช่องจะอยู่ในช่วง 1000 ถึง 2000 โดยค่าประมาณตรงกลางจะอยู่ที่ 1500
ทีนี้ก็เอาค่าเหล่านี้ไปควบคุมหุ่นยนต์ได้แล้วครับ
#include
int ch1;
int ch2;
int ch3;
void servo_open(){
servo(2,80);sleep(400);
servo(1,140);sleep(400);
servo(1,-1);servo(2,-1);
}
void servo_close(){
servo(1,0);sleep(1000);
servo(2,0);sleep(1000);
servo(1,-1);servo(2,-1);
}
void setup() {
pinMode(21, INPUT);
pinMode(22, INPUT);
pinMode(23, INPUT);
glcdMode(1);
setTextSize(2);
glcd(1,1,"Press OK");
sw_ok_press();
glcdClear();
}
void loop() {
ch1 = pulseIn(21, HIGH, 25000);
if (ch1>1200&&ch1
ao();
}
else if (ch1
fd(70);
}
else if (ch1>1500) {
bk(70);
}
ch2 = pulseIn(22, HIGH, 25000);
if (ch2>1200&&ch2
ao();
}
else if (ch2
sl(60);
}
else if (ch2>1500){
sr(60);
}
ch3 = pulseIn(23, HIGH, 25000);
if (ch3>1500) {
servo_close();
}
else if (ch3
servo_open();
}
}
เขียนโปรแกรมบนมือถือง่ายๆด้วย AppInventor ควบคุมหุ่นยนต์ POPBOT XT
เริ่มต้นการเขียนโปรแกรม ไปที่เว็บ appinventor.mit.edu
คลิกเลือกที่ Invent สำหรับเริ่มต้นเข้าใช้งาน AppInventor
ทำการ Login เข้าสู่ระบบ โดยใส่ชื่อที่อยู่อีเมลล์และรหัสผ่าน ที่เราได้สมัครไว้แล้ว
สำหรับผู้เริ่มต้นใช้งานซึ่งยังไม่มี google account นั้น สามารถใช้ที่อยู่ของ gmail ในการเข้าใช้งานได้
***วิธีการสมัครเข้าใช้งาน AppInventor ดูได้จากเนื้อหาในบทความตอนต้นได้
สำหรับผู้เริ่มต้นใช้งานซึ่งยังไม่มี 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
ติดตั้ง BlueSticks โมดูลสำหรับการเชื่่อมต่อบลูทูธ เข้ากับบอร์ดหุ่นยนต์ POPXT
RX ที่ตัวโมดูล BlueSticks ต่อกับ TX ของบอร์ดหุ่นยนต์ POPXT
TX ที่ตัวโมดูล BlueSticks ต่อกับ RX ของบอร์ดหุ่นยนต์ POPXT
Source Code โปรแกรมสำหรับ POPBOT-XT
โดยเริ่มต้นทำการดึงไฟล์ไลบารี่ popxt.h เข้ามาใช้งาน ประกาศค่าบอดเรด ที่จะใช้ในการเชื่อมต่อ ในที่นี้ตั้งเป็น 9600 ซึ่งโดยปกติจะเป็นค่าดีฟอล ซึ่งอาจจะไม่ต้องใส่ก็ได้
- คำสั่ง Serial.begin(9600) เป็นการสั่งให้มีการส่งข้อมูลผ่านทาง Serial Port ด้วยอัตราความเร็ว 9600 bit /sec *** การสื่่อสารระหว่างบอร์ดไมโครคอนโทรลเลอร์กับคอมพิวเตอร์
- คำสั่ง Serial1.begin(9600) เป็นการสั่งให้มีการส่งข้อมูลผ่านทาง Serial Port ที่ 1 ด้วยอัตราความเร็ว 9600 bit /sec ***การสื่อสารระหว่างบอร์ดไมโครคอนโทรลเลอร์กับโทรศัพท์มือถือ
- Serial1.available() ชุดคำสั่งใช้ตรวจสอบข้อมูลว่ามีข้อมูลถูกส่งเข้ามาหรือไม่
- Int inByte ประกาศตัวแปรชื่อ inByte มีชนิดข้อมูลเป็น integer
- Serial.read() อ่านค่าข้อมูลที่ถูกส่งเข้ามาแล้วไปเก็บไว้ที่ตัวแปร inByte
- Serial.Println() แสดงผลข้อมูลที่รับเข้ามาผ่านทางซีเรียลพอร์ต ซึ่งสามารถดูได้จากการเปิดหน้าต่าง Terminal ที่อยู่บริเวณมุมด้านขวาของโปรแกรม Arduino
- If(inByte==1) ตรวจสอบข้อมูลที่เข้ามาว่าเป็น 1 ใช่หรือไม่ ถ้าใช่ให้ทำงานชุดคำสั่งในเครื่องหมายปีกกา ในที่นี่เราจะสั่งให้มอเตอร์ตัวที่หนึ่งของหุ่นยนต์หมุน แต่ถ้าข้อมูลที่ส่งเข้ามาไม่ตรงกับเงื่อนไขที่ได้ทำการประกาศไว้นั้น โปรแกรมจะทำการตรวจสอบเงื่อนไขต่อไปด้วยคำสั่ง else if
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); } } }
วันอังคารที่ 16 ตุลาคม พ.ศ. 2555
การควบคุมหุ่นยนต์ POP-BOT XT ด้วยสวิตช์ 6 ตัว
เนื้อหาของบทความนี้คัดลอกมาจาก facebook ของบริษัท Innovetive Experiment
www.inex.co.th
ก่อนหน้านี้มีการใช้บลูทูธเพื่อควบคุมหุ่นยนต์กันแล้วครับ มาตอนนี้เอาวิธีการง่ายๆ ด้วยการใช้ ZX-SWITCH มาเชื่อมต่อสายโดยตรงเข้ากับตัวหุ่นยนต์กันบ้าง สำหรับคนที่ไม่ต้องการเขียนโปรแกรมที่ซับซ้อนแต่ควบคุมหุ่นยนต์ได้อย่างง่ายๆ
1. นำสวิตช์ ZX-SWITCH มายึดติดเข้ากับแผ่นไม้หรือแผ่นกริด ดังแสดงในรูป โดยสวิตช์ที่ใช้จะมี 6 ตัว
สำหรับเดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา คีบกระป๋อง และปล่อยวางกระป๋อง
สาย JST ขนาด 24 นิ้ว
คอนเน็กเตอร์ JST สำหรับเชื่อมต่อสายสองเส้นเข้าด้วยกัน
2. นำสายไฟแบบ JST ขนาด 24 นิ้ว จำนวนสองเส้นต่อเข้าด้วยกันเพื่อให้ได้ความยาว 48 นิ้ว
3. นำสายไฟเสียบเข้ากับสวิตช์ทั้ง 6 ตัว ส่วนปลายอีกด้านเสียบเข้ากับ POP-BOT XT ในตำแหน่งดังนี้
สวิตช์เดินหน้า ---> ช่อง 18
สวิตช์ถอยหลัง ---> ช่อง 19
สวิตช์เลี้ยวซ้าย ---> ช่อง 20
สวิตช์เลี้ยวขวา ---> ช่อง 21
สวิตช์วางกระป๋อง ---> ช่อง 22
สวิตช์คีบกระป๋อง ---> ช่อง 23
4. ทำการมัดสายให้เรียบร้อย
5 จากนั้นเขียนโปรแกรมทดสอบดังนี้
#include
void servo_open(){
servo(2,80);sleep(400);servo(1,140);sleep(400);
servo(1,-1);servo(2,-1);
}
void servo_close(){
servo(1,0);sleep(1000); servo(2,0);sleep(1000);
servo(1,-1);servo(2,-1);
}
void setup(){
glcdMode(1);
setTextSize(2);
glcd(1,1,"Press OK");
sw_ok_press();
glcdClear();
}
void loop(){
if(in(18)==0){
fd(50);glcd(1,1,"Forward ");
}
else if(in(19)==0){
bk(50);glcd(1,1,"Backward ");
}
else if(in(20)==0){
sl(50);glcd(1,1,"Spin Left ");
}
else if(in(21)==0){
sr(50);glcd(1,1,"Spin Right");
}
else if(in(22)==0){
servo_open();glcd(1,1,"Servo Open ");
}
else if(in(23)==0){
servo_close();glcd(1,1,"Servo Close");
}
else {
ao();glcd(1,1,"Motor Stop");
}
}
สมัครสมาชิก:
บทความ (Atom)