เทคโนโลยีและการพัฒนาอิเล็กทรอนิกส์ได้ทำให้เราสามารถสร้างอุปกรณ์ที่ควบคุมด้วยระยะไกลได้อย่างง่ายดายและเชื่อมต่อผ่านช่องทางการสื่อสารอย่าง Bluetooth อย่างง่ายดาย ในบทความนี้เราจะพูดถึงวิธีการสร้างรถบังคับที่ใช้ Arduino ในการควบคุมผ่านโมดูล Bluetooth HC-06 ซึ่งเป็นวิธีที่น่าสนใจและเป็นประโยชน์สำหรับผู้ที่สนใจด้านอิเล็กทรอนิกส์และการสร้างโปรเจ็คที่เกี่ยวข้องกับการควบคุมระยะไกล
หลักการทำงาน
หลักการทำงานของรถบังคับ Arduino ผ่าน Bluetooth HC-06 นั้นเรียกว่าเป็นการควบคุมรถบังคับ (RC car) โดยใช้ Arduino เป็นตัวควบคุมหลัก และใช้โมดูล Bluetooth HC-06 เพื่อสื่อสารกับอุปกรณ์ควบคุมอื่นๆ เช่น smartphone, tablet, หรือคอมพิวเตอร์ ซึ่งเป็นที่นิยมในการทำโปรเจคที่เกี่ยวข้องกับการควบคุมระยะไกลผ่านสัญญาณ Bluetooth ในทางปฏิบัติ ขั้นตอนการทำงานสามารถแบ่งออกเป็นขั้นตอนดังนี้:
- เชื่อมต่อโมดูล Bluetooth HC-06 กับ Arduino: เริ่มต้นโดยการเชื่อมต่อโมดูล Bluetooth HC-06 กับ Arduino โดยใช้สายสัญญาณ TX (Transmit) และ RX (Receive) ของ Arduino เพื่อให้สามารถสื่อสารกันได้ โมดูล Bluetooth HC-06 จะทำหน้าที่รับสัญญาณ Bluetooth จากอุปกรณ์ควบคุมและส่งสัญญาณไปยัง Arduino เพื่อดำเนินการควบคุมรถบังคับตามคำสั่งที่ได้รับ
- โปรแกรม Arduino: โปรแกรม Arduino จะต้องถูกเขียนให้สามารถรับข้อมูลที่ส่งมาจากโมดูล Bluetooth HC-06 และแปลงคำสั่งนั้นเป็นการควบคุมการทำงานของรถบังคับ เช่น การเคลื่อนที่ไปข้างหน้า ถอยหลัง หรือเลี้ยวซ้าย-ขวา โปรแกรมจะต้องถูกออกแบบให้สามารถอ่านข้อมูลจากพอร์ต Serial ของ Arduino และแยกแยะคำสั่งที่ได้รับเพื่อสั่งการให้มอเตอร์ทำงานตามที่ต้องการ
- อุปกรณ์ควบคุม: ใช้อุปกรณ์ควบคุมเช่น smartphone หรือ tablet ที่มีซอฟต์แวร์หรือแอปพลิเคชันที่สามารถส่งคำสั่งผ่าน Bluetooth ไปยังโมดูล HC-06 ได้ เช่น การกดปุ่มเลี้ยวซ้าย ขวา หรือปุ่มเพิ่มความเร็ว เป็นต้น
- การควบคุมรถบังคับ: เมื่อ Arduino ได้รับคำสั่งผ่านทาง Bluetooth จากโมดูล HC-06 แล้ว โปรแกรมที่ถูกโหลดลงใน Arduino จะทำการประมวลผลคำสั่งเหล่านั้น และควบคุมการทำงานของรถบังคับผ่านมอเตอร์ต่างๆ ที่ติดตั้งไว้ โดยการควบคุมรถบังคับอาจเกี่ยวข้องกับการเปิด-ปิดมอเตอร์ต่างๆ ในลักษณะที่เหมาะสมเพื่อให้รถเคลื่อนที่ไปสู่ทิศทางที่ต้องการ
- การตอบสนอง: ระบบต้องมีการตอบสนองอย่างถูกต้องต่อคำสั่งที่ส่งมาจากอุปกรณ์ควบคุม โดยการทำงานตามคำสั่งที่ได้รับ และส่งข้อมูลกลับไปยังอุปกรณ์ควบคุมเพื่อแสดงสถานะหรือการยืนยันว่าคำสั่งได้รับและถูกปฏิบัติตามอย่างถูกต้อง
ด้วยหลักการทำงานเหล่านี้ รถบังคับ Arduino ผ่าน Bluetooth HC-06 จะสามารถควบคุมการเคลื่อนที่ของรถบังคับได้อย่างแม่นยำตามคำสั่งที่ส่งมาผ่านทาง Bluetooth โดยสามารถปรับแต่งและพัฒนาเพิ่ม
อุปกรณ์ที่ใช้
2. RB-0002 Sensor Shield V 5.0
3. RB-0003 Motor Driver Module L298N
4. RB-0016 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-0046 Bluetooth HC-06 Slave
การสร้าง รถบังคับ Arduino ผ่าน Bluetooth
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.เชื่อมต่อ Bluetooth HC-06
5. Upload Code รถบังคับ Arduino ผ่าน Bluetooth
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // TX, RX
char data = 0;
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() {
Serial.begin(9600);
while (!Serial)
;
mySerial.begin(9600);
//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() {
if (mySerial.available() > 0) {
data = mySerial.read();
Serial.print(data);
Serial.print("\n");
if (data == 'F') {
{
Forward(400);
Stop(1);
}
} else if (data == 'B') {
{
Backward(400);
Stop(1);
}
} else if (data == 'L') {
{
turnLeft(200);
Forward(100);
Stop(1);
}
} else if (data == 'R') {
{
turnRight(200);
Forward(100);
Stop(1);
}
} else if (data == 'S') {
{
Stop(10);
}
}
}
}
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/arduino-car-bluetooth.ino
รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว
6. เปิดการเชื่อมต่อ Bluetooth
ที่สมาร์ทโฟน ระบบปฏิบัติการ แอนดรอยด์ (Android) เปิดการเชื่อมต่อ Bluetooth ควรเห็นอุปกรณ์ที่สามารถเชื่อมต่อชื่อ HC-06
เลือกจับคู่กับ HC-06 ใส่ PIN รหัสผ่านเป็น 1234 -> จับคู่
แสดงการจับคู่สำเร็จ
7. ติดตั้ง แอปพลิเคชั่น EduConnect – Arduino bluetooth
ใช้สมาร์ทโฟนดาวน์ ระบบปฏิบัติการแอนดรอยด์ (Android) ดาวน์โหลดและติดตั้งแอพชื่อ EduConnect – Arduino bluetooth จาก Google Play Store
ค้นหา educonnect arduino bluetooth แล้วทำการติดตั้ง
เปิดใช้งาน
เลือกไปที่ รูปสี่เหลี่ยมซ้ายมือ
เลือกที่ Comandos
ใส่ตัวอักษร F,B,L,R,S ไปที่ช่องด้านขวา ตามรูป แล้วคลิกปุ่ม Guardar
ไปที่ ไอคอน บลูทูธ
เลือก HC-06
พร้อมสำหรับการควบคุม รถบังคับ Arduino
วิดีโอผลลัพธ์การทำงาน รถบังคับ Arduino ผ่าน Bluetooth
สรุป
การสร้างรถบังคับ Arduino ผ่าน Bluetooth มีข้อดีมากมายที่ทำให้เป็นทางเลือกที่น่าสนใจสำหรับโปรเจกต์ต่างๆ ได้แก่:
- ควบคุมไร้สาย: การใช้เทคโนโลยี Bluetooth ช่วยให้สามารถควบคุมรถบังคับได้โดยไม่ต้องใช้สายสัญญาณเชื่อมต่อ ทำให้มีความสะดวกสบายและอิสระในการควบคุมรถได้อย่างอิสระ
- ความยืดหยุ่นในการควบคุม: ระบบการควบคุมผ่าน Bluetooth ช่วยให้สามารถปรับแต่งและปรับเปลี่ยนการทำงานของรถบังคับได้อย่างยืดหยุ่นตามความต้องการ เช่น การเพิ่มฟีเจอร์หรือการปรับความเร็วให้เหมาะสม
- ความสะดวกในการใช้งาน: การควบคุมผ่านอุปกรณ์พกพาที่มี Bluetooth อยู่บนโทรศัพท์มือถือหรือแท็บเล็ต ทำให้การใช้งานเป็นไปอย่างสะดวกและเข้าถึงได้ง่ายทุกที่ทุกเวลา
- โอกาสในการศึกษาและพัฒนา: การสร้างรถบังคับ Arduino ผ่าน Bluetooth เป็นโอกาสที่ดีในการศึกษาและเรียนรู้เกี่ยวกับการใช้งาน Arduino, Bluetooth, และการควบคุมอุปกรณ์ผ่านทางสัญญาณไร้สาย นอกจากนี้ยังเป็นโอกาสที่ดีในการพัฒนาทักษะในการโปรแกรมและการทำงานทางวิทยาศาสตร์และเทคโนโลยี
- ความสนุกสนาน: การสร้างและควบคุมรถบังคับผ่าน Bluetooth ไม่เพียงแต่เป็นโปรเจคที่เป็นประโยชน์ทางการศึกษาและทำความเข้าใจเทคโนโลยี แต่ยังเป็นกิจกรรมที่สนุกสนานและท้าทายในการสร้างและปรับแต่งรถได้อย่างเสรี