POP-POP-Arduino
ชุดที่ชุดที่
11
• แนะนำำให้รู้จักกับ Microcontroll
& Arduino
• ติดตั้งซอฟต์แวร์
• หุ่นยนต์ POP-BOT
• ขั้นตอนกำรเขียนโปรแกรมเพื่อ
ควบคุมหุ่...
ไมโครคอนโทรลเลอร์ที่มี
ใช้งำนทั่ว ๆ ไป
ไมโคร
โปรเซสเซอร์
ไมโคร
คอนโทรลเลอร์
PIC
ไมโครคอนโทรลเลอร์
MCS-51
ไมโครคอนโทรลเลอร...
เรียนรู้ไปสู่กำรใช้
งำนจริง
ตัวอย่ำงกำรใช้งำนไมโครคอนโทรลเลอร์
ในเครื่องปรับอำกำศ
ต ร ว จ ส อ บ ก ำ ร เ ปิ ด
จ ำ ก รีโ ม ต ห รือ ส วิต ช์
ร ะ บ บ ค ว ...
อินพุตอินพุต เอำต์พุเอำต์พุ
ตต
ประมวลประมวล
ผลผล
หลักกำรของระบบ
ควบคุม
www.arduino.cc
ต้นกำำเนิด
Arduino
ข้อมูลอ้ำงอิงสำำหรับ
เขียนโปรแกรม
ต้นกำำเนิด POP-168
Arduino
POP-POP-Edit + Compile +Edit + Compile +
DownloadDownload
C/C+C/C+
++
คอมไพเลอร์คอมไพเลอร์
OpensourceOpensource
AV...
คุณสมบัติของคุณสมบัติของ POP-POP-
168168
• ใช้ไมโครคอนโทรลเลอร์ ขนำด 8 บิตเบอร์
ATmega168 ของ Atmel
• มีโมดูลแปลงสัญญำณอะน...
นำำไปสร้ำงเป็นบอร์ดควบคุมหุ่น
ยนต์
อินพุตอินพุต
เอำต์พุตเอำต์พุต
ประมวลประมวล
ผลผล
หลักกำรของระบบ
ควบคุม
อุปกรณ์อินพุตSwitcSwitc
hh
(Digit(Digit
al)al)
ReflecReflec
tt
(Anal(Anal
og)og)
DistaDista
ncence
(Anal(Anal
SwitcSwitc
h...
อุปกรณ์เอำต์พุต
ServoServo
MotorMotor
DCDC
MotorMotor
LEDLED
แสดงผลแสดงผล
ติดตั้งซอฟต์แวร์
Arduino0022_POPBot_Setup.e
ประกอบ
ด้วย• ซอฟต์แวร์ Arduino
• ตัวอย่ำง POP-BOT
• ไดรเวอร์ UCON-4
• ไลบรำรี่...
1 2
3 4
ติดตั้งซอฟต์แวร์ POP-BOT ลงในเครื่อง
คอมพิวเตอร์
พร้อมทั้งตัวติดตั้งไดรเวอร์ USB
5 6
7
หน้ำตำของโปรแกรมหน้ำตำของโปรแกรม ArduinoArduino
void setup()
{
}
void loop()
{
}
สำำหรับกำำหนดค่ำ เกิด
ขึ้นครั้งเดียว
โปรแ...
หน้ำตำของโปรแกรมหน้ำตำของโปรแกรม ArduinoArduino
คอมคอม
ไพล์ไพล์
หยุดหยุด ((ไมไม
ใช้ใช้))
NewNew
OpenOpen
SaveSave
UploaUpl...
DeviceDevice
ManagerManager
เลือกพอร์ตอนุกรมที่ใช้เลือกพอร์ตอนุกรมที่ใช้
เปิดโปรแกรมตัวอย่ำงเปิดโปรแกรมตัวอย่ำง
ไฟกะพริบที่ขำไฟกะพริบที่ขำ 22 และและ 44
กดปุ่มนี้กดปุ่มนี้
แถบสถำนะด้ำนล่ำงแสดงผลลัพธ์แถบสถำนะด้ำนล่ำงแสดงผลลัพธ์
ขนำดหน่วยควำมขนำดหน่วยควำม
จำำที่ใช้จำำที่ใช้
ขนำดหน่วยควำมขนำดหน่ว...
สี
ดำำ
กดเพื่อ
อัพโหลด
ผลลัพธ์
ติดดับ
สลับกัน
กำรขับเคลื่อน POP-
BOT
ชุดเฟืองขับมอเตอร์อัตรำทด 48:1
ภำยในชุดเฟืองขับมอเตอร์
11 22 33 44 55
กำรคำำนวณอัตรำทดกำรคำำนวณอัตรำทด
ชุดเฟืองขับมอเตอร์อัตราทดชุดเฟืองขับมอเตอร์อัตราทด 8787:1:1
11
22 33 44 55
B A T T E R Y
+-
M
B A T T E R Y
-+
M
การกำาหนดทิศทางของมอเตอร์การกำาหนดทิศทางของมอเตอร์
L293
M1
Di7
Di8
Di6
Di4 1A
1B
1E
2A
2B
2E
Di5
Di3
M2
B A T T E R Y
+-
M
B A T T E R Y
-+
M
การกำาหนดทิศทางของมอเตอร์
Di3
ไอซีขับมอเตอร์ควบคุมด้วย POP-168
Di5
Di6
Di9
ตัวอย่างโปรแกรมในภาษา C/C+
+สำาหรับ POP-BOT
#include <popbot.h>
void setup()
{
}
void loop()
{
}
popbot.h คือไลบรารีหลักใน...
กลุ่มฟังก์ชั่นขับมอเตอร์ไฟตรง
ฟังก์ชั่น motor : สำาหรับขับมอเตอร์ไฟ
ตรง
รูปแบบ
void motor(char ch,int pow)
พารามิเตอร์ ch ...
กลุ่มฟังก์ชั่นขับมอเตอร์ไฟตรง(ต่อ)
ฟังก์ชั่น motor_stop : สำาหรับหยุดขับ
มอเตอร์ไฟตรงตามช่องที่กำาหนด
รูปแบบ
void motor_st...
motor_stop(ALL))
คำาสั่งขับเคลื่อนมอเตอร์
motor(1,100); มอเตอร์ 1 เดินหน้าความเร็ว 1 0 0 เปอร์เซ็นต์
motor(2,-50); มอเตอร์...
การเชื่อมต่อฮาร์ดแวร์เพิ่มเติม
-ต่อมอเตอร์ล้อด้านซ้ายเข้ากับ
มอเตอร์ช่อง 1
-ต่อมอเตอร์ล้อด้านขวาเข้ากับ
มอเตอร์ช่อง 2
ทำาก...
#include <popbot.h>
void setup()
{
motor(1,50);
motor(2,50);
}
void loop()
{
}
การปรับแต่ง
ทำาการปรับขั้วมอเตอร์ช่อง 1 และ...
โปรแกรมเคลื่อนที่เป็นวงกลมโปรแกรมเคลื่อนที่เป็นวงกลม
หลักการคือปรับความเร็วของมอเตอร์ทั้งหลักการคือปรับความเร็วของมอเตอร์ท...
โปรแกรมเคลื่อนที่เป็นสี่เหลี่ยมโปรแกรมเคลื่อนที่เป็นสี่เหลี่ยม
หลักการขับเคลื่อนหุ่นยนต์
เบื้องต้นและการสร้างฟังก์ชั่
นขับเคลื่อนหุ่นยนต์
1 การขับเคลื่อนหุ่นยนต์เดินหน้า
หลักการ เกิดจากล้อมอเตอร์ทั้ง 2 ด้านถูก
ขับไปข้างหน้า ด้วยคำาสั่ง motor กำาลังเป็นบวก
ทั้ง...
2 การขับเคลื่อนหุ่นยนต์ถอยหลัง
หลักการ เกิดจากล้อมอเตอร์ทั้ง 2 ด้านถูก
ขับไปข้างหลัง ด้วยคำาสั่ง motor กำาลังเป็นลบ
ทั้งหม...
3 การขับเคลื่อนหุ่นยนต์เลี้ยวซ้าย
หลักการ เกิดจากล้อมอเตอร์ซ้ายหมุนถอย
หลัง ส่วนล้อมอเตอร์ขวาหมุนไปข้างหน้า
ตัวอย่างฟังก์ช...
4 การขับเคลื่อนหุ่นยนต์เลี้ยวขวา
หลักการ เกิดจากล้อมอเตอร์ซ้ายหมุนไป
ข้างหน้า ส่วนล้อมอเตอร์ขวาหมุนถอยหลัง
ตัวอย่างฟังก์ชั...
5 หยุดการทำางานของหุ่นยนต์
หลักการ เกิดจากล้อมอเตอร์ทั้ง 2 หยุดขับ
พร้อมๆกันด้วยคำาสั่ง motor_stop
ตัวอย่างฟังก์ชั่น pause...
(Forward_Backward.pde) ทดสอบ
ขับเคลื่อนหุ่นยนต์เดินหน้าและถอย
หลังพื้นฐาน
คำาสั่งสร้างเสียงคำาสั่งสร้างเสียง
ฟังก์ชั่นกำาเนิดเสียงอย่างง่าย beep : ทำา
หน้าที่กำาเนิดเสียงความถี่ 500 Hz นาน 100
มิล...
#include <popbot.h>
void setup(){
}
void loop(){
beep();
sleep(1000);
}
#include <popbot.h>
void setup(){
}
void loop(){
sound(1200,500);
sleep(1000);
}
การใช้งานโมดูล LCD
ต่อเข้ากับขา
1 6 /A2
ฟังก์ชั่นควบคุมการแสดงผลที่โมดูลฟังก์ชั่นควบคุมการแสดงผลที่โมดูล
LCDLCD
lcd หรือ LCD : แสดงข้อความที่โมดูล
LCD แบบ 16 ตัวอ...
รหัสบังคับ การทำางาน
%c หรือ %C แสดงผลอักขระ 1 ตัว
%d หรือ %D แสดงผลตัวเลขฐานสิบ
ช่วง -32,768 ถึง
+32,767
%l หรือ %L แสดงผ...
แสดงข้อความ
“Hello World!”
#include <popbot.h>
void setup(){
lcd("Hello World!");
}
void loop(){
}
แสดงผลลัพธ์เมื่อตัวอักขระติดกัน
เกิน 16 ตัวอักษร
#include <popbot.h>
void setup(){
lcd("abcdefghijklmnopqrstuvwxyz");
}
vo...
แสดงผลลัพธ์ค่าข้อมูลตัวเลข
จำานวนเต็ม(int)
#include <popbot.h>
int x=158;
void setup(){
lcd("Value: %d ",x);
}
void loop()...
แสดงตัวอย่างโปรแกรมนับค่าทุกๆ 1
วินาที
#include <popbot.h>
int i=0;
void setup()
{
}
void loop()
{
lcd("Count: %d ",i);
sl...
แสดงตัวอย่างโปรแกรมนับค่าลง
(เปลี่ยนเสียง)
#include <popbot.h>
int i=100;
void setup(){}
void loop(){
lcd("Count: %d ",i);...
#include <popbot.h>
void setup()
{
lcd("Sawaddee#nThailand");
}
void loop()
{
}
แผงวงจรสวิตช์: ZX-SWITCH
คุณสมบัติทางเทคนิค
•ถ้าสวิตช์ถูกกดจะอ่านค่าข้อมูลได้เป็นลอจิก “0”
พร้อมกับไฟแสดงสถานะติดสว่าง
•ถ้...
ฟังก์ชั่น
in : สำาหรับอ่านค่าสัญญาณแบบดิจิตอล
จากขาพอร์ตใดๆของบอร์ดควบคุมหลัก
รูปแบบ
char in(char _bit);
พารามิเตอร์ _bit ...
ZX-SWITCHเข้ากับพอร์ต 17/A3
แสดงค่าสถานะการกดสวิตช์ที่โมดูล
LCD
#include <popbot.h>
void setup(){
}
void loop(){
lcd("Switch1: %d ",in(17));
}
รถบังคับสาย
#include <popbot.h> // Include Library for POP-BOT
void setup(){}
void loop(){
if((in(17)==0)&&(in(15)==0)){
f...
(RobotBumper1.pde)ทดสอบขับเคลื่อนหุ่นยนต์โดยจะมี
การตรวจจับการชนจากเซนเซอร์สวิตช์ 1 ตัวอย่างต่อ
เนื่อง
การเชื่อมต่อทางฮาร์...
1. ในกรณีที่พบว่าสวิตช์ถูก
กด(เกิดการชน)จะส่งเสียงดัง 1 ติ๊ด
และหุ่นยนต์จะถอยหลังหลบสิ่ง
กีดขวางแล้วทำาการเลี้ยวซ้ายพอ
ประ...
หุ่นยนต์โดยจะมีการตรวจจับการชนจาก
เซนเซอร์สวิตช์ 2 ตัวอย่างต่อเนื่อง
การเชื่อมต่อทางฮาร์ดแวร์(เพิ่มเติมจากหุ่น
ยนต์)
1. ต่...
1
2
3
ชนกำาแพงชนกำาแพง((ซ้ายซ้าย)) ถอยหลังเลี้ยวถอยหลังเลี้ยว
ชนกำาแพงชนกำาแพง((ขวาขวา)) ถอยหลังเลี้ยวถอยหลังเลี้ยวซ
1
2
3
เมื่อมีการติดตั้งเซนเซอร์ตรวจ
จับการชน
เคลื่อนที่หลบหลีกสิ่ง
กีดขวาง
#include <popbot.h> // Include Library for POP-BOT
#define POW 80
void setup(){}
void loop()...
จะตอบสนองให้หุ่นยนต์เดินหน้าตรงเป็นระยะเวลา
สั้นๆ เนื่องจากยังไม่พบสิ่งกีดขวาง
2. ถ้าตรวจพบว่าสวิตช์ทางด้านซ้ายถูกกด
เพียง...
โมดูลวัดระยะทางแบบอินฟราเรด:
GP2D120
คุณสมบัติหลัก
•ทำางานที่ไฟเลี้ยง 5 โวลต์
•วัดระยะทางใช่วงตั้งแต่ 4 ถึง 32
เซนติเมตร
หลักการทำางานของ
GP2D120
ไลบรารีและชุดคำาสั่งที่แนะนำา
ไลบรารี gp2d120_lib.h
เป็นไลบรารีที่บรรจุชุดคำาสั่งเรียก
อ่านค่าระยะทางจากโมดูล GP2D120
ก่อน...
ฟังก์ชั่น
getdist : อ่านค่าระยะทางในหน่วย
เซนติเมตรจากโมดูล GP2D120 ซึ่ง
ค่าที่มีความเชื่อถือได้จะมีค่าตั้งแต่ 4 ถึง
32 เซ...
อ GP2D120 เข้ากับพอร์ต A5
#include <popbot.h>
#include <gp2d120_lib.h>
unsigned int dist;
void setup(){
}
void loop(){
dist = getdist(3);
if(dist>=4...
ติดตั้งด้านหน้าหุ่นยนต์เพื่อตรวจจับสิ่ง
กีดขวาง
เคลื่อนหุ่นยนต์โดยจะมีการตรวจจับสิ่ง
กีดขวางจากโมดูลวัดระยะทาง
GP2D120 อย่างต่อเนื่อง
การเชื่อมต่อทางฮาร์ดแวร์(เพิ่มเติม
จ...
#include <popbot.h>
#include <gp2d120_lib.h>
int dist;
void setup(){}
void loop()
{
dist = getdist(5);
if (dist<6){
bk(80)...
ในระยะที่ตำ่ากว่า 15 เซนติเมตร จะถอย
หลังหลบสิ่งกีดขวางแล้วทำาการเลี้ยวซ้าย
พอประมาณเพื่อเปลี่ยนเส้นทางในการ
เคลื่อนที่
2....
แผงวงจรตรวจจับแสงสะท้อน: ZX-
03
เปรียบเทียบ
การเชื่อมต่อทางฮาร์ดแวร์(เพิ่ม
เติมจากหุ่นยนต์)
1. ต่อสายจากพอร์ต A6 เข้ากับเซนเซอร์
ZX-03 ตรงด้านหน้าซ้าย
2. ...
ปรแกรมทดสอบอ่านค่าจากเซนเซอร์อะนปรแกรมทดสอบอ่านค่าจากเซนเซอร์อะน
ทดสอบอ่านค่าการสะท้อนกลับขอทดสอบอ่านค่าการสะท้อนกลับขอ
ประมาณ 50-200 ประมาณ 800-950
สามารถหาค่าอ้างอิงโดยใช้ค่ากลางระหว่าง...
ดตั้งเซนเซอร์สำาหรับหุ่นยนต์เคลื่อนที่ไม่ตดตั้งเซนเซอร์สำาหรับหุ่นยนต์เคลื่อนที่ไม่ต
ออกนอกโต๊ะ (ไม่สะท้อน)
ค่าที่อ่านได้น...
โปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ตโปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ต
ปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ตกโต๊ะปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ตกโต๊ะ
ขั้นตอนการทดลอง
1. ทดสอบอ่านค่าปริมาณแสง
สะท้อนอินฟราเรดที่บริเวณเส้นสีดำา
สมมุติว่าอ่านค่าได้
เฉลี่ยประมาณ
200
ขั้นตอนการทดลอง(ต่อ)
2. ทดสอบอ่านค่าปริมาณแสง
สะท้อนอินฟราเรดที่บริเวณพื้นสนามสี
ขาว
สมมุติว่าอ่านค่าได้
เฉลี่ยประมาณ
800
จากขั้นตอนการทดลอง
จากการทดสอบอ่านค่าปริมาณ
แสงสะท้อนอินฟราเรดก่อนหน้านี้
บริเวณส้นสีดำาอ่านได้ประมาณ 200
พื้นสีขาวอ่านได้...
หลักการพื้นฐานสำาหรับขับ
เคลื่อนหุ่นยนต์เคลื่อนที่ตามเส้น
แบบใช้เซนเซอร์ 2 ตัว
สั่งให้หุ่นยนต์
เดินหน้าตรง
ต่อไป
1
if(leftพบพื้น && rightพบพื้น)
{
forward(เวลาสั้นๆ);fd
}
สั่งให้หุ่นยนต์
เลี้ยวซ้ายเพื่อ
กลับไปคร่อม
เส้น
2
if(leftพบเส้น && rightพบพื้น)
{
turn_left(เวลาสั้นๆ);
}
สั่งให้หุ่นยนต์
เลี้ยวขวาเพื่อ
กลับไปคร่อม
เส้น
3
if(leftพบพื้น && rightพบเส้น)
{
turn_right(เวลาสั้นๆ);
}
กำาหนดการ
ทำางานตาม
อิสระ
4
if(leftพบเส้น && rightพบเส้น)
{
// ตอบสนองอิสระ
}
หาค่าเปรียบเทียบ
การเชื่อมต่อทางฮาร์ดแวร์(เพิ่ม
เติมจากหุ่นยนต์)
1. ต่อสายจากพอร์ต A3 เข้ากับเซนเซอร์
ZX-03 ตรงด้านหน้าซ้า...
1. ในกรณีที่พบว่าเซนเซอร์คร่อมเส้นอยู่แล้ว
จะสั่งการให้หุ่นยนต์เดินหน้าตรงต่อไปช่วงเวลา
สั้นๆ
2. ในกรณีที่พบว่าหุ่นยนต์เริ...
ตัวอย่างที่ 7-10 จะแสดงการ
สร้างฟังก์ชั่นขับเคลื่อนหุ่นยนต์
จากจุด START ไปจนถึงจุด
FINISH เป็นลำาดับ
START
FINISH
จับพื้นสนามอย่างต่อเนื่อง
การเชื่อมต่อทางฮาร์ดแวร์(เพิ่มเติม
จากหุ่นยนต์)
1. ต่อสายจากพอร์ต A3 เข้ากับเซนเซอร์ ZX-03 มุมด้...
โปรแกรมทดสอบหุ่นยนต์ที่ 8 (Robot_path02.pde)
ตัวอย่างนี้ได้นำาเสนอแนวทางการควบคุมหุ่นยนต์
ให้ข้ามทางแยกเมื่อพบทางแยก โดยใช...
โปรแกรมทดสอบหุ่นยนต์ที่ 9 (Robot_path03.pde)
ตัวอย่างนี้ได้นำาเสนอแนวทางการควบคุมหุ่นยนต์ให้เลี้ยวซ้ายเพื่อ
เปลี่ยนเส้นทาง...
โปรแกรมทดสอบหุ่นยนต์ที่ 10 (Robot_path04.pde)
ตัวอย่างนี้ได้นำาเสนอแนวทางการควบคุมหุ่นยนต์ให้หยุดเมื่อพบ
ทางแยก โดยใช้เซนเ...
การใช้งานเซอร์โวมอเตอการใช้งานเซอร์โวมอเตอ
ฟังก์ชั่น
servo : กำาหนดตำาแหน่งเซอร์โวมอเตอร์ โดย
เมื่อใช้งานกับรุ่นมาตรฐานจะทำาให้หมุนไปยัง
ตำาแหน่ง 0 ถึง 180 องศาได้แล...
ฟังก์ชั่น
servo_stop : ปิดการขับเซอร์โวมอเตอร์
ทุกช่องพร้อมกัน
รูปแบบ
void servo_stop(void);
ทดสอบขับเซอร์โวมอเตอร์ช่อง 0
หมุนไปมาระหว่างตำาแหน่ง 20 และ
60 ทิศทางทุกๆ 2 วินาที#include <popbot.h>
void setup()
{
}
voi...
#include <popbot.h>
void setup(){
}
void loop()
{
if( in(15)==0 &&in(17)==0){
fd(80);
}
else if (in(15)==1&&in(17)==1){
mo...
ขั้นตอนการสร้างหุ่น
ยนต์
สร้างหุ่นยนต์สร้างหุ่นยนต์ POP-POP-
BOTBOT
Step1Step1
Step2Step2
Step3Step3
Step4Step4 ติดตั้งเซนเซอร์ตรวจติดตั้งเซนเซอร์ตรวจ
จับการสะท้อนจับการสะท้อน
ชิ้นต่อตรงชิ้นต่อตรง
StepStep55 ติดตั้งเซนเซอร์สวิตช์ติดตั้งเซนเซอร์สวิตช์
ZX-SWITCHZX-SWITCH
ชิ้นต่อมุมชิ้นต่อมุม
ป้านป้าน
ชิ้นต่อชิ้นต่อ
มุมฉากมุมฉาก
StepStep55 ติดตั้งเซนเซอร์สวิตช์ติดตั้งเซนเซอ...
StepStep55 ติดตั้งเซนเซอร์สวิตช์ติดตั้งเซนเซอร์สวิตช์
StepStep66 ติดตั้งโมดูลวัดระยะติดตั้งโมดูลวัดระยะ
ทางทาง GP2D120GP2D120
StepStep77 ใส่ขายึดให้โมดูลใส่ขายึดให้โมดูล
SLCDSLCD
สกรูสกรู 2.52.5 มมมม..
เสารองเสารอง
โลหะโลหะ
ชิ้นต่อตรชิ้นต่อตร
Step7Step7 ติดตั้งโมดูลติดตั้งโมดูล SLCDSLCD
Step7Step7 วางบอร์ดเสียบสายวางบอร์ดเสียบสาย
ZX-03ZX-03 ซ้ายซ้าย
ZX-03ZX-03 ขวาขวา
SLCDSLCD
ZX-SWITCZX-SWITCH
ขวาขวา
ZX-SWITCHZX-SWITCH
ซ้ายซ้าย
เสร็จสมบูรณ์เสร็จสมบูรณ์
เสร็จสมบูรณ์เสร็จสมบูรณ์อีกรูปแบบอีกรูปแบบ
เสร็จสมบูรณ์เสร็จสมบูรณ์อีกรูปแบบอีกรูปแบบ
เสร็จสมบูรณ์เสร็จสมบูรณ์อีกรูปแบบอีกรูปแบบ
Pop bot
Pop bot
Pop bot
Pop bot
Pop bot
Pop bot
Pop bot
Pop bot
Pop bot
Pop bot
of 143

Pop bot

Published on: Mar 4, 2016
Source: www.slideshare.net


Transcripts - Pop bot

  • 1. POP-POP-Arduino ชุดที่ชุดที่ 11
  • 2. • แนะนำำให้รู้จักกับ Microcontroll & Arduino • ติดตั้งซอฟต์แวร์ • หุ่นยนต์ POP-BOT • ขั้นตอนกำรเขียนโปรแกรมเพื่อ ควบคุมหุ่นยนต์ • พัฒนำหุ่นยนต์ให้ทำำตำมภำรกิจ POP-POP- BOTBOT ขั้นตอนกำรอบรม
  • 3. ไมโครคอนโทรลเลอร์ที่มี ใช้งำนทั่ว ๆ ไป ไมโคร โปรเซสเซอร์ ไมโคร คอนโทรลเลอร์ PIC ไมโครคอนโทรลเลอร์ MCS-51 ไมโครคอนโทรลเลอร์ BASIC Stamp ไมโครคอนโทรลเลอร์ AVR POP-168
  • 4. เรียนรู้ไปสู่กำรใช้ งำนจริง
  • 5. ตัวอย่ำงกำรใช้งำนไมโครคอนโทรลเลอร์ ในเครื่องปรับอำกำศ ต ร ว จ ส อ บ ก ำ ร เ ปิ ด จ ำ ก รีโ ม ต ห รือ ส วิต ช์ ร ะ บ บ ค ว บ คุ ม ข อ ง เ ค รื่อ ง ป รับ อ ำ ก ำ ศ สั่ ง ใ ห้ ค อ ม เ พ ร ส เ ซ อ ร์ทำำ ง ำ น ต ร ว จ ส อ บ อุ ณ ห ภู มิ จ ำ ก เ ซ น เ ซ อ ร์ กั บ ค่ ำ ที่ ตั้ ง ไ ว้ สั่ ง ใ ห้ ค อ ม เ พ ร ส เ ซ อ ร์ห ยุ ด ทำำ ง ำ น ม ำ ก ก ว่ำ ค่ ำ ที่ ตั้ ง ไ ว้ น้ อ ย ก ว่ำ ค่ ำ ที่ ตั้ ง ไ ว้ + V 2 2 0 V C o m p r e s s o r M ic r o c o n t r o lle r A / D in D ig it a l I n D a t a I n D ig it a l O u t
  • 6. อินพุตอินพุต เอำต์พุเอำต์พุ ตต ประมวลประมวล ผลผล หลักกำรของระบบ ควบคุม
  • 7. www.arduino.cc ต้นกำำเนิด Arduino
  • 8. ข้อมูลอ้ำงอิงสำำหรับ เขียนโปรแกรม
  • 9. ต้นกำำเนิด POP-168
  • 10. Arduino POP-POP-Edit + Compile +Edit + Compile + DownloadDownload C/C+C/C+ ++ คอมไพเลอร์คอมไพเลอร์ OpensourceOpensource AVAV RR
  • 11. คุณสมบัติของคุณสมบัติของ POP-POP- 168168 • ใช้ไมโครคอนโทรลเลอร์ ขนำด 8 บิตเบอร์ ATmega168 ของ Atmel • มีโมดูลแปลงสัญญำณอะนำลอกเป็นดิจิตอลควำม ละเอียด 10 บิต • หน่วยควำมจำำโปรแกรมแบบแฟลช 16 kByteโปรแกรมใหม่ ได้ 10,000 ครั้ง • มีหน่วยควำมจำำ ข้อมูลอีอีพรอม 512 ไบต์ หน่วย ควำมจำำข้อมูลแรม 1 kByte
  • 12. นำำไปสร้ำงเป็นบอร์ดควบคุมหุ่น ยนต์
  • 13. อินพุตอินพุต เอำต์พุตเอำต์พุต ประมวลประมวล ผลผล หลักกำรของระบบ ควบคุม
  • 14. อุปกรณ์อินพุตSwitcSwitc hh (Digit(Digit al)al) ReflecReflec tt (Anal(Anal og)og) DistaDista ncence (Anal(Anal SwitcSwitc hh (Digit(Digit
  • 15. อุปกรณ์เอำต์พุต ServoServo MotorMotor DCDC MotorMotor LEDLED แสดงผลแสดงผล
  • 16. ติดตั้งซอฟต์แวร์ Arduino0022_POPBot_Setup.e ประกอบ ด้วย• ซอฟต์แวร์ Arduino • ตัวอย่ำง POP-BOT • ไดรเวอร์ UCON-4 • ไลบรำรี่ POP-BOT
  • 17. 1 2 3 4
  • 18. ติดตั้งซอฟต์แวร์ POP-BOT ลงในเครื่อง คอมพิวเตอร์ พร้อมทั้งตัวติดตั้งไดรเวอร์ USB 5 6 7
  • 19. หน้ำตำของโปรแกรมหน้ำตำของโปรแกรม ArduinoArduino void setup() { } void loop() { } สำำหรับกำำหนดค่ำ เกิด ขึ้นครั้งเดียว โปรแกรมหลักทำำงำน ต่อเนื่อง
  • 20. หน้ำตำของโปรแกรมหน้ำตำของโปรแกรม ArduinoArduino คอมคอม ไพล์ไพล์ หยุดหยุด ((ไมไม ใช้ใช้)) NewNew OpenOpen SaveSave UploaUploa dd TermiTermi nalnal
  • 21. DeviceDevice ManagerManager
  • 22. เลือกพอร์ตอนุกรมที่ใช้เลือกพอร์ตอนุกรมที่ใช้
  • 23. เปิดโปรแกรมตัวอย่ำงเปิดโปรแกรมตัวอย่ำง
  • 24. ไฟกะพริบที่ขำไฟกะพริบที่ขำ 22 และและ 44
  • 25. กดปุ่มนี้กดปุ่มนี้
  • 26. แถบสถำนะด้ำนล่ำงแสดงผลลัพธ์แถบสถำนะด้ำนล่ำงแสดงผลลัพธ์ ขนำดหน่วยควำมขนำดหน่วยควำม จำำที่ใช้จำำที่ใช้ ขนำดหน่วยควำมขนำดหน่วยควำม จำำทั้งหมดจำำทั้งหมด แจ้งว่ำคอมไพล์แจ้งว่ำคอมไพล์ ผ่ำนผ่ำน
  • 27. สี ดำำ
  • 28. กดเพื่อ อัพโหลด
  • 29. ผลลัพธ์ ติดดับ สลับกัน
  • 30. กำรขับเคลื่อน POP- BOT
  • 31. ชุดเฟืองขับมอเตอร์อัตรำทด 48:1
  • 32. ภำยในชุดเฟืองขับมอเตอร์
  • 33. 11 22 33 44 55 กำรคำำนวณอัตรำทดกำรคำำนวณอัตรำทด
  • 34. ชุดเฟืองขับมอเตอร์อัตราทดชุดเฟืองขับมอเตอร์อัตราทด 8787:1:1
  • 35. 11 22 33 44 55
  • 36. B A T T E R Y +- M B A T T E R Y -+ M การกำาหนดทิศทางของมอเตอร์การกำาหนดทิศทางของมอเตอร์
  • 37. L293 M1 Di7 Di8 Di6 Di4 1A 1B 1E 2A 2B 2E Di5 Di3 M2
  • 38. B A T T E R Y +- M B A T T E R Y -+ M การกำาหนดทิศทางของมอเตอร์
  • 39. Di3 ไอซีขับมอเตอร์ควบคุมด้วย POP-168 Di5 Di6 Di9
  • 40. ตัวอย่างโปรแกรมในภาษา C/C+ +สำาหรับ POP-BOT #include <popbot.h> void setup() { } void loop() { } popbot.h คือไลบรารีหลักในการพัฒนาหุ่นยนต์ POP-BOT setup คือฟังก์ชั่นที่จะทำางานเพียงครั้งเดียวหลัง จากโปรแกรมเริ่มทำางาน
  • 41. กลุ่มฟังก์ชั่นขับมอเตอร์ไฟตรง ฟังก์ชั่น motor : สำาหรับขับมอเตอร์ไฟ ตรง รูปแบบ void motor(char ch,int pow) พารามิเตอร์ ch ใช้กำาหนดช่องขับตั้งแต่ 1 ถึง 2 pow ใช้กำาหนดขนาดกำาลังขับ -100 ถึง 100 •กรณีขับด้วยกำาลัง 1 ถึง 100 ไฟสถานะประจำาช่อง
  • 42. กลุ่มฟังก์ชั่นขับมอเตอร์ไฟตรง(ต่อ) ฟังก์ชั่น motor_stop : สำาหรับหยุดขับ มอเตอร์ไฟตรงตามช่องที่กำาหนด รูปแบบ void motor_stop(char ch) พารามิเตอร์ ch ใช้กำาหนดช่องขับตั้งแต่ 1 ถึง 2 ในกรณีที่ต้อง การหยุดขับทุกช่องพร้อมกันสามารถ กำาหนดเป็น ALL การคืนค่า ไม่มี
  • 43. motor_stop(ALL)) คำาสั่งขับเคลื่อนมอเตอร์ motor(1,100); มอเตอร์ 1 เดินหน้าความเร็ว 1 0 0 เปอร์เซ็นต์ motor(2,-50); มอเตอร์ 2 ถอยหลัง ความเร็ว 50 เปอร์เซ็นต์ eed คือค่าความเร็วมีค่าตั้งแต่ -100 ถึง 10 motor_stop(1)) motor_stop(22)) หยุดมอเตอร์ทั้งสองตัว หยุดมอเตอร์ 1 หยุดมอเตอร์ 2
  • 44. การเชื่อมต่อฮาร์ดแวร์เพิ่มเติม -ต่อมอเตอร์ล้อด้านซ้ายเข้ากับ มอเตอร์ช่อง 1 -ต่อมอเตอร์ล้อด้านขวาเข้ากับ มอเตอร์ช่อง 2 ทำาการปรับแต่งขั้วมอเตอร์ มารตฐาน
  • 45. #include <popbot.h> void setup() { motor(1,50); motor(2,50); } void loop() { } การปรับแต่ง ทำาการปรับขั้วมอเตอร์ช่อง 1 และ 2 ที่ทำาให้ล้อทั้ง สองด้านหมุนไปข้างหน้าตามรูปให้ได้
  • 46. โปรแกรมเคลื่อนที่เป็นวงกลมโปรแกรมเคลื่อนที่เป็นวงกลม หลักการคือปรับความเร็วของมอเตอร์ทั้งหลักการคือปรับความเร็วของมอเตอร์ทั้ง สองไม่เท่ากันสองไม่เท่ากัน
  • 47. โปรแกรมเคลื่อนที่เป็นสี่เหลี่ยมโปรแกรมเคลื่อนที่เป็นสี่เหลี่ยม
  • 48. หลักการขับเคลื่อนหุ่นยนต์ เบื้องต้นและการสร้างฟังก์ชั่ นขับเคลื่อนหุ่นยนต์
  • 49. 1 การขับเคลื่อนหุ่นยนต์เดินหน้า หลักการ เกิดจากล้อมอเตอร์ทั้ง 2 ด้านถูก ขับไปข้างหน้า ด้วยคำาสั่ง motor กำาลังเป็นบวก ทั้งหมด ตัวอย่างฟังก์ชั่น forward สำาหรับขับเคลื่อนหุ่นยนต์เดิน หน้า #define POW 80 void forward(unsigned int time) { motor(1,POW); motor(2,POW); sleep(time); }
  • 50. 2 การขับเคลื่อนหุ่นยนต์ถอยหลัง หลักการ เกิดจากล้อมอเตอร์ทั้ง 2 ด้านถูก ขับไปข้างหลัง ด้วยคำาสั่ง motor กำาลังเป็นลบ ทั้งหมด ตัวอย่างฟังก์ชั่น backward สำาหรับขับเคลื่อนหุ่นยนต์ถอย หลัง #define POW 80 void backward(unsigned int time) { motor(1,-POW); motor(2,-POW); sleep(time); }
  • 51. 3 การขับเคลื่อนหุ่นยนต์เลี้ยวซ้าย หลักการ เกิดจากล้อมอเตอร์ซ้ายหมุนถอย หลัง ส่วนล้อมอเตอร์ขวาหมุนไปข้างหน้า ตัวอย่างฟังก์ชั่น turn_left สำาหรับขับเคลื่อนหุ่นยนต์เลี้ยว ซ้าย #define POW 80 void turn_left(unsigned int time) { motor(1,-POW); motor(2,POW); sleep(time); }
  • 52. 4 การขับเคลื่อนหุ่นยนต์เลี้ยวขวา หลักการ เกิดจากล้อมอเตอร์ซ้ายหมุนไป ข้างหน้า ส่วนล้อมอเตอร์ขวาหมุนถอยหลัง ตัวอย่างฟังก์ชั่น turn_right สำาหรับขับเคลื่อนหุ่นยนต์เลี้ยว ขวา #define POW 80 void turn_right(unsigned int time) { motor(1,POW); motor(2,-POW); sleep(time); }
  • 53. 5 หยุดการทำางานของหุ่นยนต์ หลักการ เกิดจากล้อมอเตอร์ทั้ง 2 หยุดขับ พร้อมๆกันด้วยคำาสั่ง motor_stop ตัวอย่างฟังก์ชั่น pause สำาหรับหยุดการขับเคลื่อนหุ่น ยนต์ void pause() { motor_stop(ALL); }
  • 54. (Forward_Backward.pde) ทดสอบ ขับเคลื่อนหุ่นยนต์เดินหน้าและถอย หลังพื้นฐาน
  • 55. คำาสั่งสร้างเสียงคำาสั่งสร้างเสียง ฟังก์ชั่นกำาเนิดเสียงอย่างง่าย beep : ทำา หน้าที่กำาเนิดเสียงความถี่ 500 Hz นาน 100 มิลลิวินาที void beep(void); ฟังก์ชั่นกำาเนิดเสียงความถี่ใดๆ sound : ทำา หน้าที่กำาเนิดเสียงความถี่ ตามช่วงเวลาที่ กำาหนด void sound(int freq,int time); พารามิเตอร์ freq ใช้กำาหนดค่าความถี่ค่า สัญญาณเสียง
  • 56. #include <popbot.h> void setup(){ } void loop(){ beep(); sleep(1000); }
  • 57. #include <popbot.h> void setup(){ } void loop(){ sound(1200,500); sleep(1000); }
  • 58. การใช้งานโมดูล LCD ต่อเข้ากับขา 1 6 /A2
  • 59. ฟังก์ชั่นควบคุมการแสดงผลที่โมดูลฟังก์ชั่นควบคุมการแสดงผลที่โมดูล LCDLCD lcd หรือ LCD : แสดงข้อความที่โมดูล LCD แบบ 16 ตัวอักขระ 2 บรรทัด รูปแบบ void lcd(char *p,…); พารามิเตอร์ p ใช้กำาหนดรูปแบบการ แสดงผลที่โมดูล LCD โดยสามารถ กำาหนดรูปแบบการแทรกสัญลักษณ์ พิเศษเพื่อร่วมแสดงผลค่าข้อมูลตัวเลข
  • 60. รหัสบังคับ การทำางาน %c หรือ %C แสดงผลอักขระ 1 ตัว %d หรือ %D แสดงผลตัวเลขฐานสิบ ช่วง -32,768 ถึง +32,767 %l หรือ %L แสดงผลตัวเลขฐานสิบ ช่วง -2,147,483,648 ถึง +2,147,483,647 %f หรือ %F แสดงผลตัวเลข จำานวนจริงทศนิยม 3 หลัก #c คีย์คำาสั่งพิเศษเพื่อสั่งเคลียร์
  • 61. แสดงข้อความ “Hello World!” #include <popbot.h> void setup(){ lcd("Hello World!"); } void loop(){ }
  • 62. แสดงผลลัพธ์เมื่อตัวอักขระติดกัน เกิน 16 ตัวอักษร #include <popbot.h> void setup(){ lcd("abcdefghijklmnopqrstuvwxyz"); } void loop(){ }
  • 63. แสดงผลลัพธ์ค่าข้อมูลตัวเลข จำานวนเต็ม(int) #include <popbot.h> int x=158; void setup(){ lcd("Value: %d ",x); } void loop(){ }
  • 64. แสดงตัวอย่างโปรแกรมนับค่าทุกๆ 1 วินาที #include <popbot.h> int i=0; void setup() { } void loop() { lcd("Count: %d ",i); sleep(1000); i=i+1; // i++; }
  • 65. แสดงตัวอย่างโปรแกรมนับค่าลง (เปลี่ยนเสียง) #include <popbot.h> int i=100; void setup(){} void loop(){ lcd("Count: %d ",i); sleep(200-i);sound(120*i,500); i=i-1; // i++; if(i<1){ sound(1200,500); while(1); } }
  • 66. #include <popbot.h> void setup() { lcd("Sawaddee#nThailand"); } void loop() { }
  • 67. แผงวงจรสวิตช์: ZX-SWITCH คุณสมบัติทางเทคนิค •ถ้าสวิตช์ถูกกดจะอ่านค่าข้อมูลได้เป็นลอจิก “0” พร้อมกับไฟแสดงสถานะติดสว่าง •ถ้าสวิตช์ไม่ถูกกดจะอ่านค่าข้อมูลได้เป็นลอจิก “1”
  • 68. ฟังก์ชั่น in : สำาหรับอ่านค่าสัญญาณแบบดิจิตอล จากขาพอร์ตใดๆของบอร์ดควบคุมหลัก รูปแบบ char in(char _bit); พารามิเตอร์ _bit ใช้กำาหนดตำาแหน่ง หมายเลขพอร์ตที่ต้องการติดต่อ การคืนค่า ฟังก์ชั่นจะทำาการคืนค่า สัญญาณดิจิตอลของตำาแหน่งขาพอร์ตที่ อ่านซึ่งอาจมีค่าเป็น 0 หรือ 1 เท่านั้น
  • 69. ZX-SWITCHเข้ากับพอร์ต 17/A3
  • 70. แสดงค่าสถานะการกดสวิตช์ที่โมดูล LCD #include <popbot.h> void setup(){ } void loop(){ lcd("Switch1: %d ",in(17)); }
  • 71. รถบังคับสาย #include <popbot.h> // Include Library for POP-BOT void setup(){} void loop(){ if((in(17)==0)&&(in(15)==0)){ fd(100); } if((in(17)==1)&&(in(15)==1)){ motor_stop(ALL); } if((in(17)==0)&&(in(15)==1)){ tl(100); } if((in(17)==1)&&(in(15)==0)){ tr(100); } }
  • 72. (RobotBumper1.pde)ทดสอบขับเคลื่อนหุ่นยนต์โดยจะมี การตรวจจับการชนจากเซนเซอร์สวิตช์ 1 ตัวอย่างต่อ เนื่อง การเชื่อมต่อทางฮาร์ดแวร์(เพิ่มเติมจากหุ่น ยนต์) 1. ต่อสายจากพอร์ตช่อง 15 เข้ากับแผงวงจรสวิตช์โดย ติดตั้งด้านหน้าตรงกลางของหุ่นยนต์ เซนเซอร์สวิตช์ต่อกับพอร์ต 15
  • 73. 1. ในกรณีที่พบว่าสวิตช์ถูก กด(เกิดการชน)จะส่งเสียงดัง 1 ติ๊ด และหุ่นยนต์จะถอยหลังหลบสิ่ง กีดขวางแล้วทำาการเลี้ยวซ้ายพอ ประมาณเพื่อเปลี่ยนเส้นทางในการ เคลื่อนที่ 2. ในกรณีที่ไม่พบว่าสวิตช์ถูกกด หุ่นยนต์จะเดินหน้าต่อไป
  • 74. หุ่นยนต์โดยจะมีการตรวจจับการชนจาก เซนเซอร์สวิตช์ 2 ตัวอย่างต่อเนื่อง การเชื่อมต่อทางฮาร์ดแวร์(เพิ่มเติมจากหุ่น ยนต์) 1. ต่อสายจากพอร์ต 15 เข้ากับแผงวงจรสวิตช์ตัวที่ 1 โดย ติดตั้งด้านซ้ายของหุ่นยนต์ 2. ต่อสายจากพอร์ต 17 เข้ากับแผงวงจรสวิตช์ตัวที่ 2 โดย ติดตั้งด้านขวาของหุ่นยนต์ เซนเซอร์สวิตช์ ต่อกับพอร์ต 15 เซนเซอร์สวิตช์ ต่อกับพอร์ต 17
  • 75. 1 2 3 ชนกำาแพงชนกำาแพง((ซ้ายซ้าย)) ถอยหลังเลี้ยวถอยหลังเลี้ยว
  • 76. ชนกำาแพงชนกำาแพง((ขวาขวา)) ถอยหลังเลี้ยวถอยหลังเลี้ยวซ 1 2 3
  • 77. เมื่อมีการติดตั้งเซนเซอร์ตรวจ จับการชน
  • 78. เคลื่อนที่หลบหลีกสิ่ง กีดขวาง #include <popbot.h> // Include Library for POP-BOT #define POW 80 void setup(){} void loop(){ if(in(17)==1 && in(15)==1){ fd(60); } else if(in(17)==0 && in(15)==1) { bk(60);sleep(300);tr(50);sleep(400); } else if(in(17)==1 && in(15)==0) { bk(60);sleep(300);tl(50);sleep(400); } }
  • 79. จะตอบสนองให้หุ่นยนต์เดินหน้าตรงเป็นระยะเวลา สั้นๆ เนื่องจากยังไม่พบสิ่งกีดขวาง 2. ถ้าตรวจพบว่าสวิตช์ทางด้านซ้ายถูกกด เพียงตัวเดียวจะตอบสนองให้กำาเนิดเสียง 1 ติ๊ด จากนั้นหุ่นยนต์ถอยหลังแล้วทำาการเลี้ยวขวาเพื่อ หลบสิ่งกีดขวาง 3. ถ้าตรวจพบว่าสวิตช์ทางด้านขวาถูกกด เพียงตัวเดียวจะตอบสนองให้กำาเนิดเสียง 1 ติ๊ด จากนั้นหุ่นยนต์ถอยหลังแล้วทำาการเลี้ยวซ้ายเพื่อ หลบสิ่งกีดขวาง 4. ถ้าตรวจพบว่าแผงวงจรสวิตช์ทั้งสองด้าน ถูกกดพร้อมกันจะตอบสนองให้กำาเนิดเสียง 1 ติ๊ด จากนั้นหุ่นยนต์ถอยหลังแล้วทำาการเลี้ยวซ้ายเพื่อ หลบสิ่งกีดขวาง
  • 80. โมดูลวัดระยะทางแบบอินฟราเรด: GP2D120 คุณสมบัติหลัก •ทำางานที่ไฟเลี้ยง 5 โวลต์ •วัดระยะทางใช่วงตั้งแต่ 4 ถึง 32 เซนติเมตร
  • 81. หลักการทำางานของ GP2D120
  • 82. ไลบรารีและชุดคำาสั่งที่แนะนำา ไลบรารี gp2d120_lib.h เป็นไลบรารีที่บรรจุชุดคำาสั่งเรียก อ่านค่าระยะทางจากโมดูล GP2D120 ก่อนเรียกใช้งานฟังก์ชั่นที่บรรจุอยู่ ภายในผู้พัฒนาจะต้องทำาการผนวก ไฟล์ไลบรารีไว้ที่ตอนต้นของโปรแกรม ภาษา C ด้วยคำาสั่ง #include <gp2d120_lib.h>
  • 83. ฟังก์ชั่น getdist : อ่านค่าระยะทางในหน่วย เซนติเมตรจากโมดูล GP2D120 ซึ่ง ค่าที่มีความเชื่อถือได้จะมีค่าตั้งแต่ 4 ถึง 32 เซนติเมตร รูปแบบ unsigned int getdist(char adc_ch)พารามิเตอร์ adc_ch ใช้ กำาหนดขาพอร์ตที่ต้องการในช่วง 1 ถึง 7 จากพอร์ต A1 ถึง A7 ตามลำาดับ การคืนค่า ฟังก์ชั่นจะทำาการคืนค่า
  • 84. อ GP2D120 เข้ากับพอร์ต A5
  • 85. #include <popbot.h> #include <gp2d120_lib.h> unsigned int dist; void setup(){ } void loop(){ dist = getdist(3); if(dist>=4 && dist<=32){ lcd("Distance: %d cm ",dist); } else{ lcd("Out of Range!"); } sleep(100); }
  • 86. ติดตั้งด้านหน้าหุ่นยนต์เพื่อตรวจจับสิ่ง กีดขวาง
  • 87. เคลื่อนหุ่นยนต์โดยจะมีการตรวจจับสิ่ง กีดขวางจากโมดูลวัดระยะทาง GP2D120 อย่างต่อเนื่อง การเชื่อมต่อทางฮาร์ดแวร์(เพิ่มเติม จากหุ่นยนต์) 1. ต่อสายจากพอร์ต A5 เข้ากับโมดูล GP2D120 โมดูลGP2D120ต่อกับ A5
  • 88. #include <popbot.h> #include <gp2d120_lib.h> int dist; void setup(){} void loop() { dist = getdist(5); if (dist<6){ bk(80);sleep(500);tl(80);sleep(200); } fd(80); }
  • 89. ในระยะที่ตำ่ากว่า 15 เซนติเมตร จะถอย หลังหลบสิ่งกีดขวางแล้วทำาการเลี้ยวซ้าย พอประมาณเพื่อเปลี่ยนเส้นทางในการ เคลื่อนที่ 2. นอกเหนือจากกรณีแรกหุ่นยนต์จะ เดินหน้าต่อไป
  • 90. แผงวงจรตรวจจับแสงสะท้อน: ZX- 03
  • 91. เปรียบเทียบ การเชื่อมต่อทางฮาร์ดแวร์(เพิ่ม เติมจากหุ่นยนต์) 1. ต่อสายจากพอร์ต A6 เข้ากับเซนเซอร์ ZX-03 ตรงด้านหน้าซ้าย 2. ต่อสายจากพอร์ต A7 เข้ากับเซนเซอร์ ZX-03 ตรงด้านหน้าขวา เซนเซอร์สวิตช์ ต่อกับพอร์ต A6 เซนเซอร์สวิตช์ ต่อกับพอร์ต A7
  • 92. ปรแกรมทดสอบอ่านค่าจากเซนเซอร์อะนปรแกรมทดสอบอ่านค่าจากเซนเซอร์อะน
  • 93. ทดสอบอ่านค่าการสะท้อนกลับขอทดสอบอ่านค่าการสะท้อนกลับขอ ประมาณ 50-200 ประมาณ 800-950 สามารถหาค่าอ้างอิงโดยใช้ค่ากลางระหว่าง ขาวและดำา ประมาณ 500
  • 94. ดตั้งเซนเซอร์สำาหรับหุ่นยนต์เคลื่อนที่ไม่ตดตั้งเซนเซอร์สำาหรับหุ่นยนต์เคลื่อนที่ไม่ต ออกนอกโต๊ะ (ไม่สะท้อน) ค่าที่อ่านได้น้อยมาก
  • 95. โปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ตโปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ต
  • 96. ปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ตกโต๊ะปรแกรมสำาหรับหุ่นยนต์เคลื่อนที่ไม่ตกโต๊ะ
  • 97. ขั้นตอนการทดลอง 1. ทดสอบอ่านค่าปริมาณแสง สะท้อนอินฟราเรดที่บริเวณเส้นสีดำา สมมุติว่าอ่านค่าได้ เฉลี่ยประมาณ 200
  • 98. ขั้นตอนการทดลอง(ต่อ) 2. ทดสอบอ่านค่าปริมาณแสง สะท้อนอินฟราเรดที่บริเวณพื้นสนามสี ขาว สมมุติว่าอ่านค่าได้ เฉลี่ยประมาณ 800
  • 99. จากขั้นตอนการทดลอง จากการทดสอบอ่านค่าปริมาณ แสงสะท้อนอินฟราเรดก่อนหน้านี้ บริเวณส้นสีดำาอ่านได้ประมาณ 200 พื้นสีขาวอ่านได้ประมาณ 800 ดังนั้น จะได้ค่าเฉลี่ยในการเปรียบเทียบ ประมาณ (200+800)/2 = 500
  • 100. หลักการพื้นฐานสำาหรับขับ เคลื่อนหุ่นยนต์เคลื่อนที่ตามเส้น แบบใช้เซนเซอร์ 2 ตัว
  • 101. สั่งให้หุ่นยนต์ เดินหน้าตรง ต่อไป 1 if(leftพบพื้น && rightพบพื้น) { forward(เวลาสั้นๆ);fd }
  • 102. สั่งให้หุ่นยนต์ เลี้ยวซ้ายเพื่อ กลับไปคร่อม เส้น 2 if(leftพบเส้น && rightพบพื้น) { turn_left(เวลาสั้นๆ); }
  • 103. สั่งให้หุ่นยนต์ เลี้ยวขวาเพื่อ กลับไปคร่อม เส้น 3 if(leftพบพื้น && rightพบเส้น) { turn_right(เวลาสั้นๆ); }
  • 104. กำาหนดการ ทำางานตาม อิสระ 4 if(leftพบเส้น && rightพบเส้น) { // ตอบสนองอิสระ }
  • 105. หาค่าเปรียบเทียบ การเชื่อมต่อทางฮาร์ดแวร์(เพิ่ม เติมจากหุ่นยนต์) 1. ต่อสายจากพอร์ต A3 เข้ากับเซนเซอร์ ZX-03 ตรงด้านหน้าซ้าย 2. ต่อสายจากพอร์ต A1 เข้ากับเซนเซอร์ ZX-03 ตรงด้านหน้าขวา เซนเซอร์สวิตช์ ต่อกับพอร์ต A7 เซนเซอร์สวิตช์ ต่อกับพอร์ต A6
  • 106. 1. ในกรณีที่พบว่าเซนเซอร์คร่อมเส้นอยู่แล้ว จะสั่งการให้หุ่นยนต์เดินหน้าตรงต่อไปช่วงเวลา สั้นๆ 2. ในกรณีที่พบว่าหุ่นยนต์เริ่มเอียงตัวออกมา จากเส้นในทางขวา จะสั่งการให้หุ่นยนต์เลี้ยวซ้าย ช่วงเวลาสั้นๆเพื่อพยายามกลับไปคร่อมเส้น 3. ในกรณีที่พบว่าหุ่นยนต์เริ่มเอียงตัวออกมา จากเส้นในทางซ้าย จะสั่งการให้หุ่นยนต์เลี้ยวขวา ช่วงเวลาสั้นๆเพื่อพยายามกลับไปคร่อมเส้น
  • 107. ตัวอย่างที่ 7-10 จะแสดงการ สร้างฟังก์ชั่นขับเคลื่อนหุ่นยนต์ จากจุด START ไปจนถึงจุด FINISH เป็นลำาดับ START FINISH
  • 108. จับพื้นสนามอย่างต่อเนื่อง การเชื่อมต่อทางฮาร์ดแวร์(เพิ่มเติม จากหุ่นยนต์) 1. ต่อสายจากพอร์ต A3 เข้ากับเซนเซอร์ ZX-03 มุมด้านหน้า ซ้าย 2. ต่อสายจากพอร์ต A1 เข้ากับเซนเซอร์ ZX-03 มุมด้านหน้า ขวา START FINISH
  • 109. โปรแกรมทดสอบหุ่นยนต์ที่ 8 (Robot_path02.pde) ตัวอย่างนี้ได้นำาเสนอแนวทางการควบคุมหุ่นยนต์ ให้ข้ามทางแยกเมื่อพบทางแยก โดยใช้เซนเซอร์ ZX-03 2 ตัวตรวจจับพื้นสนามอย่างต่อเนื่อง START FINISH
  • 110. โปรแกรมทดสอบหุ่นยนต์ที่ 9 (Robot_path03.pde) ตัวอย่างนี้ได้นำาเสนอแนวทางการควบคุมหุ่นยนต์ให้เลี้ยวซ้ายเพื่อ เปลี่ยนเส้นทางเมื่อพบทางแยก โดยใช้เซนเซอร์ ZX-03 2 ตัวตรวจ จับพื้นสนามอย่างต่อเนื่อง START FINISH
  • 111. โปรแกรมทดสอบหุ่นยนต์ที่ 10 (Robot_path04.pde) ตัวอย่างนี้ได้นำาเสนอแนวทางการควบคุมหุ่นยนต์ให้หยุดเมื่อพบ ทางแยก โดยใช้เซนเซอร์ ZX-03 2 ตัวตรวจจับพื้นสนามอย่างต่อ เนื่อง START FINISH
  • 112. การใช้งานเซอร์โวมอเตอการใช้งานเซอร์โวมอเตอ
  • 113. ฟังก์ชั่น servo : กำาหนดตำาแหน่งเซอร์โวมอเตอร์ โดย เมื่อใช้งานกับรุ่นมาตรฐานจะทำาให้หมุนไปยัง ตำาแหน่ง 0 ถึง 180 องศาได้และถ้าใช้งานกับ รุ่นปรับแต่งจะทำาให้หมุนในทิศทางใดทิศทาง หนึ่งและมีผลต่ออัตราเร็วในการหมุน หรืออาจ หยุดนิ่ง รูปแบบ void servo(unsigned char _ch ,unsigned int _pos); พารามิเตอร์ _ch ใช้กำาหนดช่องขับที่ต่อใช้ งานมีค่าตั้งแต่ 7 ถึง 8
  • 114. ฟังก์ชั่น servo_stop : ปิดการขับเซอร์โวมอเตอร์ ทุกช่องพร้อมกัน รูปแบบ void servo_stop(void);
  • 115. ทดสอบขับเซอร์โวมอเตอร์ช่อง 0 หมุนไปมาระหว่างตำาแหน่ง 20 และ 60 ทิศทางทุกๆ 2 วินาที#include <popbot.h> void setup() { } void loop() { servo(7,20); sleep(2000); servo(7,60); sleep(2000); }
  • 116. #include <popbot.h> void setup(){ } void loop() { if( in(15)==0 &&in(17)==0){ fd(80); } else if (in(15)==1&&in(17)==1){ motor_stop(ALL); } else if(in(15)==0&&in(17)==1){ sl(80); } else { sr(80) } }
  • 117. ขั้นตอนการสร้างหุ่น ยนต์
  • 118. สร้างหุ่นยนต์สร้างหุ่นยนต์ POP-POP- BOTBOT Step1Step1
  • 119. Step2Step2
  • 120. Step3Step3
  • 121. Step4Step4 ติดตั้งเซนเซอร์ตรวจติดตั้งเซนเซอร์ตรวจ จับการสะท้อนจับการสะท้อน
  • 122. ชิ้นต่อตรงชิ้นต่อตรง StepStep55 ติดตั้งเซนเซอร์สวิตช์ติดตั้งเซนเซอร์สวิตช์
  • 123. ZX-SWITCHZX-SWITCH ชิ้นต่อมุมชิ้นต่อมุม ป้านป้าน ชิ้นต่อชิ้นต่อ มุมฉากมุมฉาก StepStep55 ติดตั้งเซนเซอร์สวิตช์ติดตั้งเซนเซอร์สวิตช์
  • 124. StepStep55 ติดตั้งเซนเซอร์สวิตช์ติดตั้งเซนเซอร์สวิตช์
  • 125. StepStep66 ติดตั้งโมดูลวัดระยะติดตั้งโมดูลวัดระยะ ทางทาง GP2D120GP2D120
  • 126. StepStep77 ใส่ขายึดให้โมดูลใส่ขายึดให้โมดูล SLCDSLCD สกรูสกรู 2.52.5 มมมม.. เสารองเสารอง โลหะโลหะ ชิ้นต่อตรชิ้นต่อตร
  • 127. Step7Step7 ติดตั้งโมดูลติดตั้งโมดูล SLCDSLCD
  • 128. Step7Step7 วางบอร์ดเสียบสายวางบอร์ดเสียบสาย
  • 129. ZX-03ZX-03 ซ้ายซ้าย ZX-03ZX-03 ขวาขวา SLCDSLCD ZX-SWITCZX-SWITCH ขวาขวา ZX-SWITCHZX-SWITCH ซ้ายซ้าย
  • 130. เสร็จสมบูรณ์เสร็จสมบูรณ์
  • 131. เสร็จสมบูรณ์เสร็จสมบูรณ์อีกรูปแบบอีกรูปแบบ
  • 132. เสร็จสมบูรณ์เสร็จสมบูรณ์อีกรูปแบบอีกรูปแบบ
  • 133. เสร็จสมบูรณ์เสร็จสมบูรณ์อีกรูปแบบอีกรูปแบบ

Related Documents