การสร้างรถบังคับ Arduino ด้วย รีโมท (Remote Control) เป็นหนึ่งในโปรเจกต์ที่น่าสนใจและเป็นที่นิยมในวงการผู้เริ่มต้นด้านอิเล็กทรอนิกส์และโปรแกรมมิ่ง โดยใช้ Arduino เป็นพื้นฐานในการสร้างระบบควบคุมและ Remote Control เพื่อควบคุมการเคลื่อนที่ของรถบังคับอย่างง่ายดาย ในบทความนี้เราจะสำรวจวิธีการสร้างรถบังคับ Arduino พร้อมกับ Remote Control อย่างง่ายๆ สำหรับผู้ที่สนใจเริ่มต้นศึกษาหรือสร้างโปรเจกต์ที่น่าสนใจนี้
หลักการทํางาน
การทำงานของรถบังคับ Arduino ด้วย Remote Control มีหลักการทำงานดังนี้:
- การรับสัญญาณจาก Remote Control:
- Remote Control จะส่งสัญญาณไร้สายไปยังโมดูล RF หรืออุปกรณ์รับสัญญาณอื่นๆ บนรถบังคับ.
- โมดูล RF จะรับสัญญาณและแปลงเป็นสัญญาณดิจิตอลที่สามารถอ่านได้จาก Arduino.
- การอ่านข้อมูลจาก Remote Control:
- Arduino จะอ่านสัญญาณดิจิตอลที่รับมาจากโมดูล RF หรืออุปกรณ์รับสัญญาณอื่นๆ.
- ข้อมูลที่อ่านได้จะบอกถึงการกดปุ่มหรือการเคลื่อนไหวที่ผู้ใช้ทำบน Remote Control.
- การควบคุมมอเตอร์:
- โดยใช้ข้อมูลที่ได้จาก Remote Control, Arduino จะควบคุมการทำงานของมอเตอร์ที่ต่อกับรถบังคับ.
- การเคลื่อนที่ของรถสามารถควบคุมได้โดยการเปิดหรือปิดมอเตอร์แต่ละตัว และการกำหนดความเร็วให้มอเตอร์.
- การแปลงค่าสัญญาณเป็นการเคลื่อนที่:
- Arduino จะอ่านค่าสัญญาณที่ได้จาก Remote Control และแปลงเป็นคำสั่งการเคลื่อนที่ของรถ เช่น การเดินหน้า, ถอยหลัง, หรือหยุด.
- Arduino จะอ่านค่าสัญญาณที่ได้จาก Remote Control และแปลงเป็นคำสั่งการเคลื่อนที่ของรถ เช่น การเดินหน้า, ถอยหลัง, หรือหยุด.
- การควบคุมการทำงานของรถ:
- โดยใช้การควบคุมมอเตอร์และการอ่านค่าจาก Remote Control, Arduino จะสั่งการให้รถบังคับทำงานตามคำสั่งที่ได้รับ.
- รถบังคับจะเคลื่อนที่ไปข้างหน้า, ถอยหลัง, หรือหยุดตามคำสั่งที่ผู้ใช้กำหนดผ่าน Remote Control.
- การปรับแต่งและขยายความสามารถ:
- ผู้ใช้สามารถปรับแต่งการทำงานของรถบังคับได้ตามต้องการ เช่น เพิ่มฟังก์ชันพิเศษ เปลี่ยนแปลงการตอบสนองของ Remote Control, หรือเพิ่มเซนเซอร์สำหรับการตรวจจับสิ่งกีดขวาง.
อุปกรณ์ที่ใช้
2. RB-0002 Sensor Shield V 5.0
3. RB-0003 Motor Driver Module L298N
4. RB-0015 Jumper (F2M) 20cm Female to Male
5. RB-0017 Jumper (F2F) 20cm Female to Female
6. RB-0019 รางถ่าน 18650 – 2 ก้อน
7. RB-0021 ถ่านชาร์จ 18650 NCR18650B 3.7v 3400mAh 2 ก้อน
8. RB-0023 2WD Smart Robot Car Chassis Kits
9. RB-0025 เสารองแผ่นพีซีบีโลหะแบบเหลี่ยม 8 mm
10. RB-0011 Infrared IR Wireless Remote Control Module Kits
11. RB-0200 CR2025 3V Lithium Button Coin Battery
การสร้าง รถบังคับ Arduino ด้วย Remote Control
1.ประกอบหุ่นยนต์และเชื่อมต่อวงจร
ใช้สว่านเจาะรู เพื่อยึดเสารองแผ่นพีซีบี สำหรับ Arduino UNO เข้ากับ โครงหุ่นยนต์
ยึด Arduino UNO เข้ากับเสารองแผ่นพีซีบี
เสียบ Sensor Shield เข้ากับ บอร์ด Arduino R3
ยึดเสารองแผ่นพีซีบี สำหรับ Motor Driver เข้ากับ โครงหุ่นยนต์
ยึด Motor Driver เข้ากับเสารองแผ่นพีซีบี
ใช้กาวร้อน ยึดรางถ่าน เข้ากับ โครงหุ่นยนต์
การต่อวงจร
- สายสีแดงของรางถ่าน 7.4 โวลต์ เชื่อมต่อเข้ากับสวิตช์ปิดเปิด
- สายสีดำของรางถ่าน 7.4 โวลต์ เชื่อมต่อกับ Jumper (F2M) ผู้-เมีย สีดำ (ตัดขั้วด้านผู้ออก) แล้วจึงเชื่อมต่อเข้ากับ กราวด์ (GND) ของ Sensor Shield
- ใช้สาย Jumper (F2M) ผู้-เมีย สีแดง (ตัดขั้วด้านเมียออก) เชื่อมต่อจากสวิตช์ปิดเปิดอีกด้าน ไปยัง Power Supply ของ Motor Driver
- ใช้สาย Jumper (F2M) ผู้-เมีย สีดำ เชื่อมต่อระหว่าง กราวด์ (GND) ของ Motor Driver กับ GND หรือ G ของ Sensor Shield
- ใช้สาย Jumper (F2M) ผู้-เมีย สีน้ำตาล เชื่อมต่อจากการจ่ายไฟ 5 โวลต์ ของ Motor Driver ไปยัง 5 โวลต์ หรือ V ของ Sensor Shield
จากนั้น ใช้สาย Jumper (F2F) เมีย-เมีย สีอะไรก็ได้ เชื่อมต่อวงจร ระหว่าง Sensor Shield กับ Motor Driver ตามรูป
มี Jumper อยู่ที่ขา ENA และ ENB ของ บอร์ด Motor Driver ให้ถอดออก
ใส่ถ่าน เข้าไปที่รางถ่าน เมื่อ เปิดสวิตช์ ต้องมีไฟเข้า โดยสังเกตไฟ LED สีแดง ที่ Sensor Shield และ ไฟ LED สีแดงที่ Motor Driver จะมีไฟติด
เชื่อมต่อสายสีแดง – ดำ เข้ากับมอเตอร์ ทั้ง 2 ตัว โดยให้สายสีแดงอยู่ด้านบน และ สายสีดำอยู่ด้านล่าง
ยึดมอเตอร์ ทั้ง 2 ตัว เข้ากับ โครงหุ่นยนต์
ยึด ล้อหน้า เข้ากับ โครงหุ่นยนต์
ใส่ ล้อ เข้าไปที่มอเตอร์
เชื่อมต่อ สายมอเตอร์ทั้ง 2 ด้าน เข้ากับ Motor Driver (ตรวจสอบสีของสายไฟให้ถูกต้องตามรูป)
2.ติดตั้ง Arduino IDE
สิ่งแรกคือการติดตั้ง Arduino IDE เพื่อให้คุณสามารถค้นหา Arduino IDE ใน Google
จากนั้นคุณมีสองทางเลือก
หนึ่งคือการติดตั้งเวอร์ชัน1 หรือเพื่อติดตั้งเวอร์ชัน 2
เราจะติดตั้งเวอร์ชัน 2 เพราะมีคุณสมบัติเพิ่มเติมบางอย่าง แต่ไม่ว่าคุณจะเลือกอะไรมันจะทำงานเช่นกัน ดังนั้นคุณสามารถเลือกอย่างใดอย่างหนึ่ง
ดาวน์โหลด Arduino IDE จากที่นี่
https://www.arduino.cc/en/software
3. ทดสอบ การเคลื่อนที่ของหุ่นยนต์
การทดสอบนี้ เป็นการตรวจสอบการต่อสายต่างๆ เช่น การเชื่อมต่อสายของมอเตอร์ ทั้ง 2 ตัว รวมทั้งสายอื่นๆ ของหุ่นยนต์ที่เราสร้าง ว่าถูกต้องหรือไม่ ถ้าถูกต้องหุ่นยนต์จะดำเนินการดังนี้
คือ เดินหน้า -> ถอยหลัง -> เลี้ยวซ้าย -> เลี้ยวขวา
และนี่คือโค้ดที่ใช้ทดสอบ
int MA1 = 6; // Motor A1
int MA2 = 7; // Motor A2
int PWM_A = 3; // Speed Motor A
int MB1 = 8; // Motor B1
int MB2 = 9; // Motor B2
int PWM_B = 5; // Speed Motor B
int SPEED = 150; // Speed PWM 0 - 255
void setup() {
//Setup Channel A
pinMode(MA1, OUTPUT); //Motor A1
pinMode(MA2, OUTPUT); //Motor A2
pinMode(PWM_A, OUTPUT); //Speed PWM Motor A
//Setup Channel B
pinMode(MB1, OUTPUT); //Motor B1
pinMode(MB2, OUTPUT); //Motor B2
pinMode(PWM_B, OUTPUT); //Speed PWM Motor B
}
void loop() {
Stop(2000);
Forward(600);
Stop(200);
Backward(600);
Stop(200);
turnLeft(400);
Stop(200);
turnRight(400);
}
void Backward(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, HIGH);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, HIGH);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Forward (int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void turnLeft(int time)
{
digitalWrite(MA1, HIGH);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, SPEED);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
}
void turnRight(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, HIGH);
analogWrite(PWM_B, SPEED);
delay(time);
}
void Stop(int time)
{
digitalWrite(MA1, LOW);
digitalWrite(MA2, LOW);
analogWrite(PWM_A, 0);
digitalWrite(MB1, LOW);
digitalWrite(MB2, LOW);
analogWrite(PWM_B, 0);
delay(time);
}
ลิงค์โค้ด : https://lungmaker.com/code/test-motor-arduino.ino
เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ Arduino UNO
ตรวจสอบ Port ของบอร์ด Arduino โดย คลิกที่ Device Manager
ที่ Ports (COM & LPT) จะพบ Port ของบอร์ด Arduino ในตัวอย่างเป็น Arduino Uno (COM19)
ไปที่ Tools -> Board -> Arduino AVR Boards -> Arduino Uno
เลือก Port โดยไปที่ Tools -> Port -> COM19
(โดย COM19 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)
คลิกที่ Upload
รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว
วิดีโอผลลัพธ์การทำงาน การเคลื่อนที่ของหุ่นยนต์ Arduino
ถ้ายังทำงานไม่ถูกต้อง คือ เดินหน้า -> ถอยหลัง -> เลี้ยวซ้าย -> เลี้ยวขวา ให้กลับไปแก้ไขการต่อวงจร การต่อสายต่างๆ เช่น การต่อสายมอเตอร์ จนกว่าจะทำงานถูกต้อง ถึงจะสามารถไปทำงานในขั้นตอนต่อไป
4.เชื่อมต่อ IR receiver และทดสอบ
ใช้สาย Jumper (F2F) เมีย-เมีย ในการเชื่อมต่อ
เพิ่ม ไลบรารี่ IRremote เข้าที่ Arduino IDE
โดย ไปที่ Sketch -> Include Library -> Manage Libraries….
ค้นหา irremote (IRremote by shirrif, z3t0, ArminJo) แล้วทำการติดตั้ง โดยคลิกที่ INSTALL
แสดงการติดตั้งสำเร็จ
และนี่คือโค้ดที่ใช้ทดสอบ
#include <IRremote.h>
#define IR_RECEIVE_PIN 11
void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_RECEIVE_PIN);
}
void loop() {
if (IrReceiver.decode()) {
IrReceiver.resume();
Serial.println(IrReceiver.decodedIRData.command);
}
}
ลิงค์โค้ด : https://lungmaker.com/code/ir-receiver-pin-11.ino
Upload Code
รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว
ไปที่ Tools -> Serial Monitor แล้วเลือก Both NL & CR และ เลือก 9600 baud
ใส่ถ่าน CR2025 3V ไปที่ Remote Control
ทดสอบการทำงาน
ทดสอบกดปุ่มด้านบน
ที่ Serial Monitor ด้านล่าง แสดงผลเป็น 24
ทดสอบกดปุ่มด้านล่าง
ที่ Serial Monitor ด้านล่าง แสดงผลเป็น 82
ทดสอบกดปุ่มด้านซ้าย
ที่ Serial Monitor ด้านล่าง แสดงผลเป็น 8
ทดสอบกดปุ่มด้านขวา
ที่ Serial Monitor ด้านล่าง แสดงผลเป็น 90
ทดสอบกดปุ่มกลาง
ที่ Serial Monitor ด้านล่าง แสดงผลเป็น 28
ถ้ากดปุ่มแล้ว Serial Monitor แสดงผลเป็นตัวเลขออกมา แสดงว่าการต่อสายของเราถูกต้องแล้ว และเราจะนำค่าที่ได้ไปเขียนโปรแกรมเพื่อควบคุมรถ ต่อไป
5. ทดสอบ รถบังคับ Arduino ด้วย Remote Control
โค้ด รถบังคับ Arduino ด้วย Remote Control
วิดีโอผลลัพธ์การทำงาน รถบังคับ Arduino ด้วย Remote Control
สรุป
การสร้างรถบังคับ Arduino ด้วย Remote Control มีข้อดีมากมายที่น่าสนใจ เช่น:
- ควบคุมได้ระยะไกล: การใช้ Remote Control ช่วยในการควบคุมรถบังคับ Arduino ทำให้สามารถควบคุมรถได้ในระยะไกลโดยไม่ต้องเข้าใกล้มันอยู่ตลอดเวลา ซึ่งเป็นประโยชน์มากในการทดลองหรือในสถานที่ที่ไม่สะดวกในการเข้าใกล้รถเพื่อควบคุม.
- ความสะดวกสบาย: การใช้ Remote Control ทำให้การควบคุมรถบังคับเป็นเรื่องสะดวกและง่ายมากขึ้น เนื่องจากผู้ใช้สามารถทำได้โดยไม่ต้องใช้สายเชื่อมต่อกับรถ และสามารถควบคุมได้ทันทีเมื่อต้องการ.
- ความยืดหยุ่นในการปรับแต่ง: ระบบ Remote Control สามารถปรับแต่งให้เหมาะสมกับความต้องการของผู้ใช้ได้ตามต้องการ เช่น การเพิ่มหรือเปลี่ยนแปลงฟังก์ชันต่างๆ การปรับแต่งระยะการควบคุม หรือการเพิ่มเซนเซอร์สำหรับการตรวจจับสภาพแวดล้อม เป็นต้น.
- เรียนรู้และการศึกษา: การสร้างรถบังคับ Arduino ด้วย Remote Control เป็นโอกาสที่ดีในการฝึกทักษะในการโปรแกรมและการออกแบบระบบอิเล็กทรอนิกส์ นอกจากนี้ยังเป็นโอกาสที่ดีในการเรียนรู้เกี่ยวกับการควบคุมระบบอัตโนมัติและการสื่อสารไร้สาย.
- การนำไปใช้ในงานประโยชน์: รถบังคับ Arduino ที่ควบคุมด้วย Remote Control สามารถนำไปใช้ในหลากหลายงานประโยชน์ เช่น การสำรวจพื้นที่ที่ไม่สามารถเข้าถึงได้ง่าย การนำส่งสินค้าในโรงงานหรือโกดัง หรือการใช้ในงานต่างๆที่ต้องการความยืดหยุ่นในการควบคุมและการเคลื่อนที่.