อุปกรณ์ที่ต้องใช้ก็คือ
1. 2WD Smart Robot Car Chassis Kits
2. Arduino UNO R3 - Made in italy
3. IR Infrared Obstacle Avoidance Sensor Module จำนวน 2 ชิ้น
4. Motor Drive Module L298N
5. สาย Jumper Female to Male ยาว 20cm.
6. สาย Jumper Male to Male ยาว 20cm.
7. รางถ่านแบบ 18650 ใส่ถ่าน 2 ก้อน
8. แบตเตอรี่ลิเธียม 18650 จำนวน 2 ก้อน
9. เสารองแผ่นพีซีบีโลหะแบบเหลี่ยม 6 mm.
10. สกรูหัวกลมน็อตตัวเมีย ขนาด 3มม ยาว12 มม.
11. Mounting Bracket for HC-SR04 Ultrasonic Module แบบสั้น
12. แผ่นอะคริลิค
การทำงานของ หุ่นยนต์เดินตามเส้น Arduino
เรียนรู้ การใช้งาน IR Infrared Obstacle Avoidance Sensor Module เพิ่มเติมที่
https://robotsiam.blogspot.com/2016/10/ir-infrared-obstacle-avoidance-sensor.html
เซ็นเซอร์แบบนี้จะมีช่วงในการทำงาน หรือ ระยะในการตรวจจับจะได้ใกล้กว่าแบบ Opposed mode ซึ่งในสภาวะการทำงานปกติ พื้นเเป็นสีขาว ตัวรับ Receiver จะสามารถรับสัญญาณแสงจากตัวส่ง Emitter ได้ตลอดเวลา เนื่องจากลำแสง สะท้อนกลับมาได้ จะแสดงค่า เป็น 0
และ เมื่อพื้นเป็นสีดำ แสงสะท้อนกลับมาไม่ได้ จึงทำให้ตัวรับ Receiver ไม่สามารถรับลำแสงที่จะสะท้อนกลับมาได้ จะแสดงค่า เป็น 1
เซ็นเซอร์ตรวจสอบการสะท้อนแสงกลับมา ได้หรือไม่ แล้วส่งสัญญาณไปยัง Arduino Uno R3 แล้ว Arduino Uno R3 จึงไปสั่งให้มอเตอร์ทำงาน โดย Motor Drive Module L298N ให้เป็นไปตามการส่งค่ามาของเซ็นเซอร์
โปรเจค หุ่นยนต์เดินตามเส้น 2 เซ็นเซอร์ Arduino นี้ เราจะใช้ 2 เซ็นเซอร์อินฟราเรด คือด้านซ้ายและด้านขวา โดย เมื่อเซ็นเซอร์ ทั้งด้านซ้ายและด้านขวา ตรวจสอบแล้วเป็นพื้นสีขาว ลำแสง สามารถสะท้อนกลับมาได้ทั้งคู่ ( 0 , 0 ) ให้หุ่นยนต์เคลื่อนที่ไปข้างหน้า
หากเซ็นเซอร์ซ้ายมาพบพื้นสีดำ และ เซ็นเซอร์ขวาพบพื้นสีขาว ( 1 , 0 ) ให้หุ่นยนต์เลี้ยวไปทางด้านซ้าย
หากเซ็นเซอร์ขวามาพบพื้นสีดำ และ เซ็นเซอร์ซ้ายพบพื้นสีขาว ( 0 , 1 ) ให้หุ่นยนต์เลี้ยวไปทางด้านขวา
เราจะสร้าง หุ่นยนต์เดินตามเส้น Arduino และ เขียนโปรแกรมตามเงื่อนไขที่แสดงในตารางด้านบน
เริ่มต้นด้วยการ ประกอบ Smart Robot Car Chassis Kit
ต่อวงจร Arduino UNO กับ Sensor ทั้ง 2 ตัว
เข้า ขา D2 และ D3 ตามรูป
Sensor <-> UNO
VCC (ซ้าย,ขวา) <-> 5V
GND (ซ้าย,ขวา) <-> GND
OUT (ซ้าย) <-> D2
OUT (ขวา) <-> D3
ตรง 5V ของ Arduino จะมี 3 สายใช้ร่วมกัน ให้เชื่อมต่อ บัตกรี รวมกันก่อนแล้วจึงต่อเข้าไปที่ 5V
ตัดแผ่นอะคริลิค ขนาด 3 x 10 เซ็นติเมตร
ประกอบ เซ็นเซอร์ซ้ายและขวา
ยึดเข้ากับ Mounting Bracket for HC-SR04 Ultrasonic Module แบบสั้น
ยึดเข้ากับ ตัวหุ่นยนต์
การปรับแต่ง เซ็นเซอร์ให้ตรวจจับเส้น
เมื่อต่อวงจร หุ่นยนต์เดินตามเส้น เสร็จแล้ว ให้ต่อสาย USB จากคอมพิวเตอร์ เข้ากับ Arduino UNO R3 ปรับ ระยะการตรวจจับของเซ็นเซอร์ โดยใช้ไขควง ปรับ ที่ VR (สี่เหลี่ยมสีฟ้า-ขาว) โดยใช้มือเคลื่อนที่หุ่นยนต์ผ่านเส้นสีดำและพื้นสีขาว
ให้ปรับเซ็นเซอร์ทั้ง 2 ตัว ดังนี้ ถ้าอยู่บนพื้นสีขาว ให้ไฟ LED ติด 2 ดวง และ ถ้าเข้าไปในบนเทปสีดำ ให้ ไฟ LED ติด 1 ดวง
อัพโหลดโปรแกรม
เปิดโปรแกรม Arduino (IDE) และ Upload โค้ดนี้ ไปยัง บอร์ด Arduino UNO R3
/*-------definning Inputs------*/
int LS = 2; // left sensor
int RS = 3; // right sensor
/*-------definning Outputs------*/
int LM1 = 4; // left motor
int LM2 = 5; // left motor
int RM1 = 6; // right motor
int RM2 = 7; // right motor
/*-------PWM ควบคุมความเร็วมอเตอร์-----*/
int PWM1 = 10; // PWM left motor
int PWM2 = 11; // PWM right motor
int SPEED = 90; // Speed PWM สามารถปรับความเร็วได้ถึง 255
void setup()
{
pinMode(LS, INPUT);
pinMode(RS, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
pinMode(PWM1, OUTPUT);
pinMode(PWM2, OUTPUT);
}
void loop()
{
if (!(digitalRead(LS)) && !(digitalRead(RS))) // Move Forward
{
analogWrite(PWM1, SPEED);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
analogWrite(PWM2, SPEED);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
if (!(digitalRead(LS)) && digitalRead(RS)) // Turn right
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
analogWrite(PWM2, SPEED);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
if (digitalRead(LS) && !(digitalRead(RS))) // turn left
{
analogWrite(PWM1, SPEED);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
}
if (digitalRead(LS) && digitalRead(RS)) // stop
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
}
}
1.ตรวจสอบการติดตั้งไดรเวอร์ ของ Arduino UNO
ไปที่หน้าจอคอมพิวเตอร์ คลิกขวาที่ Computet -> Properties
2. ตรวจสอบการเลือก Board
ให้เลือก Board : เป็น Arduino/Genuino UNO
3. ตรวจสอบ ต้องมี Port : ในตัวอย่างเป็น COM3
(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)
ถ้าทุกอย่างถูกต้อง ให้คลิกเครื่องหมายตรงไป เพื่ออัพโหลด
4. รอกระทั่ง จนขึ้น Done uploading.
แสดงว่า สามารถอัพโหลดโปรแกรมเข้า Arduino UNO สําเร็จแล้ว
วีดีโอผลลัพธ์การทำงานของ หุ่นยนต์เดินตามเส้น 2 เซ็นเซอร์ Arduino
หากเซ็นเซอร์ซ้ายมาพบพื้นสีดำ และ เซ็นเซอร์ขวาพบพื้นสีขาว ( 1 , 0 ) ให้หุ่นยนต์เลี้ยวไปทางด้านซ้าย
โดยสรุป มี 4 เงื่อนไขที่ หุ่นยนต์เดินตามเส้น Arduino รับค่าจากเซ็นเซอร์ซ้ายและขวา
คือ (0 ,0) | (0 ,1) | (1 , 0) | (1 ,1 ) แสดงตามตารางด้านล่าง
คือ (0 ,0) | (0 ,1) | (1 , 0) | (1 ,1 ) แสดงตามตารางด้านล่าง
อินพุต
|
เอาต์พุต
|
การเคลื่อนที่ของหุ่นยนต์
| ||||
เซ็นเซอร์ซ้าย
|
เซ็นเซอร์ขวา
|
มอเตอร์ซ้าย
|
มอเตอร์ขวา
| |||
LS
|
RS
|
LM1
|
LM2
|
RM1
|
RM2
| |
0
|
0
|
0
|
0
|
0
|
0
|
เดินหน้า
|
0
|
1
|
1
|
0
|
0
|
0
|
เลี้ยวขวา
|
1
|
0
|
0
|
0
|
1
|
0
| เลี้ยวซ้าย |
1
|
1
|
1
|
0
|
1
|
0
|
หยุด
|
เราจะสร้าง หุ่นยนต์เดินตามเส้น Arduino และ เขียนโปรแกรมตามเงื่อนไขที่แสดงในตารางด้านบน
เริ่มต้นด้วยการ ประกอบ Smart Robot Car Chassis Kit
ต่อวงจร Arduino UNO กับ L298N Motor Driver ตามรูปการต่อวงวงจร
*** VCC ของ Arduino UNO R3 คือ 5V ***
ต่อวงจร Arduino UNO กับ Sensor ทั้ง 2 ตัว
เข้า ขา D2 และ D3 ตามรูป
Sensor <-> UNO
VCC (ซ้าย,ขวา) <-> 5V
GND (ซ้าย,ขวา) <-> GND
OUT (ซ้าย) <-> D2
OUT (ขวา) <-> D3
ตรง 5V ของ Arduino จะมี 3 สายใช้ร่วมกัน ให้เชื่อมต่อ บัตกรี รวมกันก่อนแล้วจึงต่อเข้าไปที่ 5V
ตัดแผ่นอะคริลิค ขนาด 3 x 10 เซ็นติเมตร
ประกอบ เซ็นเซอร์ซ้ายและขวา
ยึดเข้ากับ Mounting Bracket for HC-SR04 Ultrasonic Module แบบสั้น
ยึดเข้ากับ ตัวหุ่นยนต์
การปรับแต่ง เซ็นเซอร์ให้ตรวจจับเส้น
เมื่อต่อวงจร หุ่นยนต์เดินตามเส้น เสร็จแล้ว ให้ต่อสาย USB จากคอมพิวเตอร์ เข้ากับ Arduino UNO R3 ปรับ ระยะการตรวจจับของเซ็นเซอร์ โดยใช้ไขควง ปรับ ที่ VR (สี่เหลี่ยมสีฟ้า-ขาว) โดยใช้มือเคลื่อนที่หุ่นยนต์ผ่านเส้นสีดำและพื้นสีขาว
ให้ปรับเซ็นเซอร์ทั้ง 2 ตัว ดังนี้ ถ้าอยู่บนพื้นสีขาว ให้ไฟ LED ติด 2 ดวง และ ถ้าเข้าไปในบนเทปสีดำ ให้ ไฟ LED ติด 1 ดวง
ถาพรวมเมื่อต่อเสร็จแล้ว
อัพโหลดโปรแกรม
เปิดโปรแกรม Arduino (IDE) และ Upload โค้ดนี้ ไปยัง บอร์ด Arduino UNO R3
/*-------definning Inputs------*/
int LS = 2; // left sensor
int RS = 3; // right sensor
/*-------definning Outputs------*/
int LM1 = 4; // left motor
int LM2 = 5; // left motor
int RM1 = 6; // right motor
int RM2 = 7; // right motor
/*-------PWM ควบคุมความเร็วมอเตอร์-----*/
int PWM1 = 10; // PWM left motor
int PWM2 = 11; // PWM right motor
int SPEED = 90; // Speed PWM สามารถปรับความเร็วได้ถึง 255
void setup()
{
pinMode(LS, INPUT);
pinMode(RS, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
pinMode(PWM1, OUTPUT);
pinMode(PWM2, OUTPUT);
}
void loop()
{
if (!(digitalRead(LS)) && !(digitalRead(RS))) // Move Forward
{
analogWrite(PWM1, SPEED);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
analogWrite(PWM2, SPEED);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
if (!(digitalRead(LS)) && digitalRead(RS)) // Turn right
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
analogWrite(PWM2, SPEED);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
if (digitalRead(LS) && !(digitalRead(RS))) // turn left
{
analogWrite(PWM1, SPEED);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
}
if (digitalRead(LS) && digitalRead(RS)) // stop
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
}
}
ก่อนอัพโหลดให้ตรวจสอบ
1.ตรวจสอบการติดตั้งไดรเวอร์ ของ Arduino UNO
ไปที่หน้าจอคอมพิวเตอร์ คลิกขวาที่ Computet -> Properties
2. ตรวจสอบการเลือก Board
ให้เลือก Board : เป็น Arduino/Genuino UNO
3. ตรวจสอบ ต้องมี Port : ในตัวอย่างเป็น COM3
(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)
ถ้าทุกอย่างถูกต้อง ให้คลิกเครื่องหมายตรงไป เพื่ออัพโหลด
4. รอกระทั่ง จนขึ้น Done uploading.
แสดงว่า สามารถอัพโหลดโปรแกรมเข้า Arduino UNO สําเร็จแล้ว
วีดีโอผลลัพธ์การทำงานของ หุ่นยนต์เดินตามเส้น 2 เซ็นเซอร์ Arduino