POP-BOT-XT - WordPress.com

Download Report

Transcript POP-BOT-XT - WordPress.com

ขัน้ ตอนกำรอบรม
• แนะนำให้ร้จู กั กับ Arduino
• แกะกล่อง ตรวจสอบอุปกรณ์ในชุด
• กำรติดตัง้ ซอฟต์แวร์
• สร้ำงหุ่นยนต์ POP-BOT XT
• ขัน้ ตอนกำรเขียนโปรแกรมเพื่อควบคุมหุ่นยนต์
• พัฒนำหุ่นยนต์ให้ทำตำมภำรกิจต่ำงๆ
• กำรเคลื่อนที่เบือ้ งต้น
• กำรใช้เซนเซอร์สวิ ตช์
• หุ่นยนต์เคลื่อนที่ตำมเส้น
ต้นกำเนิด
Arduino
www.arduino.cc
• คู่มืออ้ำงอิงกำรใช้งำน
• ตัวอย่ำงฮำร์ดแวร์
• จุดกำเนิด IDEA
• ที่ดำวน์ โหลดโปรแกรม
• ที่ซกั ถำมปัญหำ
ข้อมูลอ้ำงอิงสำหรับเขียนโปรแกรม
• ชุดคำสัง่
• ไลบรำรี่
• ตัวแปร
• คำสงวน
ต้นกำเนิด POP-XT
HARDWARE
โครงกำร Opensource จำก Arduino
POP-XT ของ inex
คอมไพเลอร์ Opensource
SOFTWARE
C/C++
Edit + Compile + Download
POP-XT
คุณสมบัติของ POP-XT
• ใช้ไมโครคอนโทรลเลอร์ ATMEGA32U4 ของ ATMEL
• ควำมละเอียดอ่ำนค่ำอะนำลอก 10 บิต (0-1023) 1024 ระดับ
• หน่ วยควำมจำโปรแกรม 32 กิโลไบต์
• ทำงำนที่ควำมเร็ว 16 ล้ำนคำสังต่
่ อวินำที
• เชื่อมต่อกับคอมพิวเตอร์ผำ่ นพอร์ต USB โดยตรงผ่ำนสำย Mini-B
100
220mF
ATMega32U4
• ขับมอเตอร์ไฟตรงได้ 2 ตัว เซอร์โวมอเตอร์ได้ 3 ตัว
TB6612
• มีจอ LCD กรำฟิกสีควำมละเอียด 128x160 พิกเซล
• ต่อเซนเซอร์อะนำลอกได้ 8 ช่อง
100mF
ตำแหน่ งกำรวำงอุปกรณ์ของ POP-XT
อุปกรณ์อินพุต
ปุ่ ม OK (Digital)
Switch (Digital)
Reflect (Analog)
Distance (Analog)
knob (Analog)
อุปกรณ์เอำต์พตุ
Servo Motor
DC Motor
จอ GLCD
128x160
ZX-LED
ลำโพงเปี ยโซ
ติดตัง้ ซอฟต์แวร์
Arduino1.0 POP-BOT XT Setup.exe
ประกอบด้วย
• ซอฟต์แวร์ Arduino 1.0
•
ไลบรำรี่ POP-BOT XT
•
ตัวอย่ำง POP-BOT XT
•
ไดรเวอร์ USB
1
3
2
4
ติดตัง้ ซอฟต์แวร์ POP-BOT ลงในเครื่องคอมพิวเตอร์ พร้อมทัง้ ตัวติดตัง้ ไดรเวอร์ USB
6
5
8
7
เปิดโปรแกรมจำก Start Menu
เริ่มต้นเชื่อมต่อกับคอมพิวเตอร์
2.เสียบสาย Mini USB
1. ใส่ถ่านชาร์จหรือถ่านอัลคาไลน์ AA 4 ก้ อน
3.เปิ ดสวิตช์จ่ายไฟให้ POP-XT ก่อน
4.เสียบสาย USB เข้ ากับคอมพิวเตอร์
กำรติดตัง้ ไดรเวอร์กบั Windows XP
หน้ ำตำของโปรแกรม Arduino
void setup()
{
สำหรับกำหนดค่ำ เกิดขึน้ ครัง้ เดียว
}
void loop()
{
โปรแกรมหลักทำงำนต่อเนื่ อง
}
เลือกชื่อบอร์ดเป็ น POP-XT
เลือกตำแหน่ งพอร์ตอนุกรม
เปิดโปรแกรมตัวอย่ำง
เป็ นโปรแกรมแสดงข้อควำมที่หน้ ำจอ GLCD
คอมไพล์ (แปลโปรแกรมที่เขียนว่ำถูกไวยกรณ์หรือไม่)
กดปุ่ มนี้ กไ็ ด้
ต่อสำย USB กับคอมพิวเตอร์
upload โปรแกรมไปยังหุ่นยนต์
หรือกดปุ่ มนี้ กไ็ ด้
แสดงผลจอภำพ
POP-BOT XT
COLOR
GLCD_RED
GLCD_GREEN
GLCD_BLUE
GLCD_YELLOW
GLCD_BLACK
GLCD_WHITE
GLCD_SKY
GLCD_MAGENTA
สีแดง
สีเขียว
สีน้ ำเงิน
สีเหลือง
สีดำ
สีขำว
สีฟ้ำ
สีแดงเข้ม
คำสัง่
glcd
glcd เป็ นฟังก์ชนแสดงผลบน
ั่
POP-XT
รูปแบบ
glcd(คอลัมภ์,บรรทัด,”ข้อความ”)
ตัวอย่ำง
glcd(1,0,"Hello World");
คำสัง่ setTextSize(),setTextColor()
setTextSize เป็ นฟังก์ชนแสดงขนำดข้
ั่
อควำมบน POP-XT
setTextColor เป็ นฟังก์ชนั ่ แสดงสีขอ้ ควำมบน POP-XT
รูปแบบ
setTextSize(ขนาดตัวอักร);
setTextColor(สี);
ตัวอย่ำง
setTextSize(1);
setTextColor(GLCD_GREEN);
คำสัง่ glcdFillScreen()
setTextBackgroundColor()
glcdFillScreen เป็ นฟังก์ชนแสดงสี
ั่
พืน้ จอบน POP-XT
setTextBackgroundColor เป็ นฟังก์ชนแสดงสี
ั่
พืน้ ข้อควำม
บน POP-XT
รูปแบบ
glcdFillScreen(สีพนจอ)
ื้
setTextBackgroundColor(สีพนข้
ื้ อควำม)
ตัวอย่ำง
glcdFillScreen(GLCD_WHITE);
setTextBackgroundColor(GLCD_GREEN);
คำสัง่ glcdMode()
setTextBackgroundColor()
glcdClear เป็ นฟังก์ชนล้
ั ่ ำงหน้ ำจอบน POP-XT
ิ ศทำงข้อควำมบน POP-XT
glcdMode เป็ นฟั งก์ชนแสดงท
ั่
รูปแบบ
glcdClear()
glcdMode(ตัวเลขโหมด)
ตัวอย่ำง
glcdClear();
glcdMode(0);
//
ตัวอย่ำงกำรแสดงข้อควำมหลำยบรรทัด
#include <popxt.h>
int i,j;
void setup(){
glcdFillScreen(GLCD_WHITE);
setTextColor(GLCD_BLACK);
setTextBackgroundColor(GLCD_WHITE);
for (i=0;i<16;i++){
glcd(i,i,"Row %d ",i);
}
}
void loop(){}
หมุนจอ ขยำยขนำด
ลำโพง
POP-BOT XT
สร้ำงเสียงออกลำโพง
beep()
sound(freq,time)
ลำโพงเปี ยโซ
คำสังสร้
่ ำงเสียง
ฟั งก์ ช่ ันกำเนิดเสียงอย่ ำงง่ ำย
500 Hz นำน 100 มิลลิวินำที
beep : ทำหน้ ำที่กำเนิดเสียงควำมถี่
void beep(void);
ฟั งก์ ช่ันกำเนิดเสียงควำมถี่ใดๆ sound : ทำหน้ ำที่กำเนิดเสียง
ควำมถี่ ตำมช่วงเวลำที่กำหนด
void sound(int freq,int time);
พารามิ เตอร์
freq ใช้ กำหนดค่ำควำมถี่ค่ำสัญญำณเสียง
time ใช้ กำหนดช่วงเวลำในกำรกำเนิดสัญญำณเสียงใน
หน่วยมิลลิวินำที
#include <popxt.h>
void setup(){
}
void loop(){
beep();
sleep(1000);
}
#include <popxt.h>
void setup(){
}
void loop(){
sound(1200,500);
sleep(1000);
}
ตัวเลือก knob
POP-BOT XT
knob()
knob เป็ นฟังก์ชนอ่
ั ่ ำนค่ำ knob บน POP-XT เหมือนคำสัง่
analog(8) ค่ำอยู่ในช่วง 80-1023
รูปแบบ
unsigned int knob()
กำรคืนค่ำ
ค่ำที่อ่ำนได้จำก knob มีค่ำระหว่ำง 80-1023
ตัวอย่ำง
int val=0;
val=knob();
glcd("%d",val);
// กำหนดค่ำตัวแปรสำหรับเก็บค่ำอะนำลอก
// อ่ำนค่ำจำก knob เก็บค่ำในตัวแปร val
// นาค่าแสดงที่ GLCD
#include <popxt.h>
void setup()
{
}
void loop()
{
glcd(1,0,"Knob value");
glcd(2,2,"%d ",knob());
}
หน่ วงเวลำ sleep
POP-BOT XT
Sleep() เป็ นฟังก์ชนหน่
ั ่ วงเวลำ บน POP-XT
รูปแบบ
unsigned int sleep()
กำรคืนค่ำ
ค่ำที่อ่ำนได้จำก sleep จะกำหนดค่ำเป็ น Microsecond
เช่น หำกต้องกำรกำหนดเวลำ 1 วินำทีให้กำหนดค่ำดังนี้
sleep(1000);
กำรใช้ SW
POP-BOT XT
sw_ok_press()
ิ ตช์ OK บนบอร์ด
เป็ นฟั งก์ชนวนตรวจสอบกำรกดสว
ั่
POP-XT ต้องรอจนกระทัง่ SW1 ถูกปล่อยหลังจำกมีกำรกดสวิตช์
จึงจะผ่ำนฟั งก์ชนนี
ั ่ ้ ไปทำงำนคำสังอื
่ ่นๆ
ตัวอย่ำง
......
sw_ok_press();
......
ิ ตช์ OK
// รอจนกระทังกดสว
่
sw_ok()
sw_ok() เป็ นฟั งก์ช ั ่นตรวจสอบสวิตช์ OK บน POP-XT ให้สถำนะจริงเมื่อกด
สวิตช์และเป็ นเท็จเมื่อไม่กดสวิตช์
รูปแบบ
unsigned char sw_ok()
กำรคืนค่ำ
1 (เป็ นจริง) เมื่อกดสวิตช์
0 (เป็ นเท็จ) เมื่อไม่กดสวิตช์
ตัวอย่ำง
if(sw_ok())
{
beep();
}
กำรขับเคลื่อน
POP-BOT XT
ชุดเฟื องขับมอเตอร์อตั รำทด 48:1
ภำยในชุดเฟื องขับมอเตอร์
กำรกำหนดทิศทำงของมอเตอร์
M
-
M
+
BATTERY
+
-
BATTERY
ฟั งก์ ช่ัน motor สำหรั บขับมอเตอร์ ไฟตรง
รู ปแบบ
void motor(char ch,int pow)
พำรำมิเตอร์
ใช้ กำหนดช่ องขับตัง้ แต่ 1 ถึง 2
pow ใช้ กำหนดขนำดกำลังขับ -100 ถึง 100
ch
•กรณีขับด้ วยกำลัง 1 ถึง 100 ไฟสถำนะประจำช่ องติดเป็ นสีเขียว
•กรณีขับด้ วยกำลัง -1 ถึง -100 ไฟสถำนะประจำช่ องติดเป็ นสีแดง(ทิศกำรหมุนตรงข้ ำมกับขับ
ด้ วยกำลังเป็ นบวก)
Speed คือควำมเร็วหุ่นยนต์ 0-100
ฟั งก์ ช่ัน motor
เดินหน้ ำ
รู ปแบบ
motor(1,กำลังมอเตอร์);
motor(2,กำลังมอเตอร์);
ตัวอย่ ำง
motor(1,100);
motor(2,100);
ฟั งก์ ช่ัน motor
ถอยหลัง
รู ปแบบ
motor(1,-กำลังมอเตอร์);
motor(2,-กำลังมอเตอร์);
ตัวอย่ ำง
motor(1,-100);
motor(2,-100);
ฟั งก์ ช่ัน motor
เลี้ยวซ้ ำยล้ อเดียว (เลี้ยววงกว้ ำง)
รู ปแบบ
motor(1,0);
motor(2,กำลังมอเตอร์);
ตัวอย่ ำง
motor(1,0);
motor(2,100);
ฟั งก์ ช่ัน motor
เลี้ยวขวำล้ อเดียว (เลี้ยววงกว้ ำง)
รู ปแบบ
motor(1, กำลังมอเตอร์);
motor(2,0);
ตัวอย่ ำง
motor(1,100);
motor(2,0);
ฟั งก์ ช่ัน motor
เลี้ยวซ้ ำย 2 ล้ อ (เลี้ยววงแคบ)
รู ปแบบ
motor(1,-กำลังมอเตอร์);
motor(2, กำลังมอเตอร์);
ตัวอย่ ำง
motor(1,-100);
motor(2,100);
ฟั งก์ ช่ัน motor
เลี้ยวขวำ 2 ล้ อ (เลี้ยววงแคบ)
รู ปแบบ
motor(1, กำลังมอเตอร์);
motor(2, -กำลังมอเตอร์);
ตัวอย่ ำง
motor(1,100);
motor(2,-100);
ฟั งก์ ช่ัน motor_stop สำหรั บ
หยุดขับมอเตอร์ ไฟตรงตำมช่ องที่กำหนด
รูปแบบ
void motor_stop(char ch)
พารามิเตอร์
ch ใช้กำหนดช่องขับตัง้ แต่ 1 ถึง 2 ในกรณี ที่ต้อง
กำรหยุดขับทุกช่องพร้อมกันสำมำรถกำหนดเป็ น ALL
กรณี หยุดมอเตอร์ 2 ตัวพร้อมกัน สามารถใช้คาสัง่ ao() แทนได้
motor_stop(1); มอเตอร์ 1 หยุด
motor_stop(2); มอเตอร์ 2 หยุด
motor_stop(ALL); มอเตอร์ 2 ตัวหยุดพร้อมกัน
fd(Speed); เดินหน้ ำ
bk(Speed); ถอยหลัง
tl(Speed); เลี้ยวซ้ำยล้อเดียว(วงกว้ำง)
tr(Speed);เลี้ ยวขวำล้อเดียว(วงกว้ำง)
sl(Speed); เลี้ยวซ้ำย 2 ล้อ(วงแคบ)
sr(Speed); เลี้ยวขวำ 2 ล้อ (วงแคบ)
ao()
;หยุด
กำรปรับแต่งเพื่อให้ห่นุ ยนต์เคลื่อนที่ตรง
#include <popxt.h>
void setup()
{
fd(100);
}
void loop()
{
}
fd2(Speed1,speed2); เดินหน้ ำ
bk2(Speed1,speed2); ถอยหลัง
Speed1 คือมอเตอร์ด้ำนซ้ำย
Speed2 คือมอเตอร์ด้ำนขวำ
หุ่นยนต์ เดินวนเป็ นรู ปสี่เหลี่ยม
Rectangle_running.ino
กำรใช้ ZX-SWITCH
POP-BOT XT
แผงวงจรสวิตช์: ZX-SWITCH
คุณสมบัติทำงเทคนิค
•ถ้ ำสวิตช์ ถกู กดจะอ่ ำนค่ ำข้ อมูลได้ เป็ นลอจิก “0” พร้ อมกับไฟแสดง
สถำนะติดสว่ ำง
•ถ้ ำสวิตช์ ไม่ ถกู กดจะอ่ ำนค่ ำข้ อมูลได้ เป็ นลอจิก “1”
ฟั งก์ ช่ัน
in
สำหรับอ่ ำนค่ ำสัญญำณแบบดิจติ อลจำกขำพอร์ ตใดๆของ
บอร์ ดควบคุมหลัก
รูปแบบ
char in(char _bit);
พำรำมิเตอร์ _bit ใช้ กำหนดตำแหน่ งหมำยเลขพอร์ ตที่
ต้ องกำรติดต่ อ
กำรคืนค่ ำ
ฟั งก์ ช่ ันจะทำกำรคืนค่ ำสัญญำณดิจติ อลของ
ตำแหน่ งขำพอร์ ตที่อ่ำนซึ่งอำจมีค่ำเป็ น 0 หรือ 1 เท่ ำนัน้
ต่อ ZX-SWITCH เข้ำกับพอร์ต 22 และ 23
หุ่นยนต์รถบังคับ
ลักษณะเงื่อนไข
เดินหน้ ำ
เลี้ยวซ้ำย
เลี้ยวขวำ
หยุด
ซ้ำย(22)
ขวำ(23)
กด (0)
กด (0)
ไม่กด(1)
ไม่กด(1)
กด(0)
ไม่กด(1)
กด(0)
ไม่กด(1)
หุ่นยนต์รถบังคับ
void loop()
{
if(in(22)==0 && in(23)==0)
{
fd(60);
}
else if(in(22)==0)
{
tl(60);
}
else if(in(23)==0)
{
tr(60);
}
else
{
ao();
}
}
เมื่อมีกำรติดตัง้ เซนเซอร์ตรวจจับกำรชน
หุ่นยนต์เดินหลบกำแพง
ลักษณะเงื่อนไข
ถอยหลังกลับตัว
ถอยหลังเลี้ ยวขวำ
ถอยหลังเลี้ ยวซ้ำย
เดินหน้ ำ
ซ้ำย(22)
ขวำ(23)
กด (0)
กด (0)
ไม่กด(1)
ไม่กด(1)
กด(0)
ไม่กด(1)
กด(0)
ไม่กด(1)
ต่อ ZX-SWITCH เข้ำกับพอร์ต 22 และ 23
แผงวงจรตรวจจับแสงสะท้อน
: ZX-03
อ่ำนค่ำผลแสงสะท้อน
: ZX-03
#include <popxt.h>
void setup()
{
glcd(1,1,“Press OK“);
sw_ok_press();
}
void loop()
{
glcd(1,1,"L=%d",analog(0));
glcd(1,1,"L=%d",analog(1));
sleep(100);
}
อ่ำนค่ำผลลัพธ์จำกกำรสะท้อนแสง
อ่ำนค่ำพืน้ ผิวสีขำว
อ่ำนค่ำพืน้ ผิวสีดำ
หำค่ำกลำง =(ค่ำของสีขำว-ค่ำของสีดำ)/2
400 = (900-100)/2
ยกหุ่นยนต์ขึน้ จำกพืน้ แล้วมีเสียงเตือน
void loop()
{
if(analog(0)<20)
{
sound(2500,500);
glcdFillScreen(GLCD_RED);
}
else
{
glcdClear();
}
}
หุ่นยนต์เดินไม่ตกโต๊ะ
ลักษณะเงื่อนไข
ถอยหลังกลับตัว
ถอยหลังเลี้ ยวขวำ
ถอยหลังเลี้ ยวซ้ำย
เดินหน้ ำ
ซ้ำย(0)
ขวำ(1)
<400
<400
>400
>400
<400
>400
<400
>400
หุ่นยนต์เดินไม่ตกโต๊ะ
void loop()
{
if(analog(0)<400 && analog(1)<400)
{
bk(50);sleep(500);
sr(50);sleep(500);
}
else if(analog(0)<400)
{
bk(50);sleep(500);
tr(50);sleep(300);
}
else if(analog(1)<400)
{
bk(50);sleep(500);
sl(50);sleep(300);
}
else fd(50);
}
หุ่นยนต์เดินมำหยุดที่เส้นสีดำ
หุ่นยนต์เดินมำหยุดที่เส้นสีดำ แบบที่ 1
#include <popxt.h>
void setup()
{
glcd(1,1,“Press OK“);
sw_ok_press();
fd(60);
while(analog(0)>400);
ao();
}
void loop()
{)
หุ่นยนต์เดินมำหยุดที่เส้นสีดำด้วยกำรเบรก
#include <popxt.h>
void setup()
{
glcd(1,1,“Press OK“);
sw_ok_press();
fd(60);
while(analog(0)>400);
bk(100);
Sleep(100);
ao();
}
สั่งให้ ห่ นุ ยนต์ เดินหน้ ำตรงต่ อไป
1
if(analog(0)>400 && analog(1)>400)
{
fd(50);
sleep(10);
}
สั่งให้ ห่ นุ ยนต์ เลีย้ วซ้ ำยเพื่อกลับไปคร่ อมเส้ น
2
if(analog(0)<400 && analog(1)>400)
{
tr(50);
sleep(10);
}
สั่งให้ ห่ นุ ยนต์ เลีย้ วขวำเพื่อกลับไปคร่ อมเส้ น
3
if(analog(0)>400 && analog(1)<400)
{
tl(50);
sleep(10);
}
กำหนดกำรทำงำนหยุด
4
if(analog(0)<400 && analog(1)<400)
{
ao();
}
เขียนโปรแกรมทดสอบกับสนำมขัน้ พืน
้ ฐำน
เมื่อเจอเส้นตัดส่งเสียงบีป
๊
กำรเลีย้ ว 90 องศำพอดีเมื่อเจอเส้นตัด
เดินตำมเส้นทำงแยกที่ซบ
ั ซ้อน
เดินตำมเส้นทำงแยกที่ซบ
ั ซ้อน
ณัฏฐิกำ หลอดแก้ว
โรงเรียนบำงปลำม้ำ “สูงสุมำรผดุงวิทย์”
[email protected]
โทร .081-1968869
click on the images to enlarge
POPBOT-XT Features:
•ATmel ATmega32U4 MCU, 10-bit A/D
converter with 12-channel, 32KB of flash
program memory, 1KB of EEPROM, 2.5KB
of RAM and 16MHz clock frequency.
•25-I/O port and assign to 12 of 3-pin JST
connectors for interfacing with sensors
and peripherals
•Screw terminal block for battery
connections. It supports +4.8 to +12Vdc
and has an on-board power switch.
•+5Vdc switching regulator power supply
circuit. Its regulates the supply voltage for
microcontroller devices and all sensor
ports.
•128x160 pixels color graphic LCD stack
board. includes KNOB, OK and RESET
button. This display board onlu supports
line-art graphic, vector graphic, color
background and text (no support the
image file).
•8-Universal port support Analog input
functions and Digital input/output
function; A0 to A7 (18 to 23, 4 and 6
digital pin)
•I2C bus port; SDA (2) and SCL (3)
•UART port; RxD (0) and TxD (1)
•2-ch. DC motor driver with indicators.
Supports motor voltage of 2.5 to 13.5Vdc.
•3-Servo motor output; connect with the
digital port 30 (SV1), 12 (SV2) and 13
(SV3).
•Piezo speaker connections. It is
connected with digital port 11.
•LED power and Low battery indicator
•Direct USB port connection for
communication and upload the running
code
•ISP pad for upgrading and firmware
recovery by using the external In-System
Programming (AVR-ISP mark II from
Atmel is recommended)
• อบรมการเขียนโปรแกรมควบคุมสมองกลฝงั ตัวด้วยภาษาซี
วันที่ 15-16 ตุลาคม 2555
จัดโดย คณะวิศวกรรมศาสตร์ ม.เทคโนโลยีราชมงคล
ณ โรงเรียนแม่ลาน้อยดรุณสิกข์
• โครงงานที่ 1 ตรวจควันไฟในห้อง
โครงงานที่ 2 นับผูเ้ ข้าห้องสมุด
ื
โครงงานที่ 3 คัดแยกมะเขีอเทศ
โครงงานที่ 4 เครือ่ งเตือนไฟไหม้ปา่
โครงงานที่ 5 เครือ่ งเปิดปิดน้าอัตโนมัตเิ พือ่ เลีย้ งไก่
• โครงงานที่ 6 รถน้าผักอัตโนมัติ กาหนดเวลา
โครงงานที่ 7 แท่นโชว์สนิ ค้านิรภัย
โครงงานที่ 8 เครือ่ งวัดส่วนสูงดิจติ อล
• ใช้สอ่ื ภาพประกอบ งานนาเสนอ พูดปากเปล่า
• ไอเดียร์ดี ใช้เรือ่ งใกล้ตวั
• ฟงั ให้เยอะ บอร์ดทาอะไรได้บา้ ง