bluetoothRobotwithPWMการสร้างหุ้นยนต์ที่สามารถควบคุมได้ด้วยสมาร์ทโฟนหรือแท็บเลต เป็นสิ่งที่กำลังได้รับควมสนใจเป็นอย่างมาก โดยแอปปลิเคชั่นร่วมกับอุปกรณ์ที่รองรับการใช้งานเครือข่ายไร้สายอย่าง Bluetooth นับว่าเป็นการเริ่มต้นที่ดี ต่อการเริ่มต้นสร้างหุ่นยนต์ที่มีการทำงานไม่ซับซ้อน
BURC คือ Application สำหรับควบคุมหุ่นยนต์ด้วยสัญญาณบลูทูธ ใช้การชื่อสารแบบ Serial (UART) ร่วมกับโมดูลบลูทูธเช่น HC-05,HC-06 โดยเชื่อมต่อสัญญาญกับไมโครคอนโทรลเลอร์ เช่น Arduino UNO หรืออื่นๆ ที่สามารถชื่อสารแบบ Serial ได้
ออกแบบหน้าจอให้เหมาะสมกับโทรศัพท์หน้าจอขนาด 4.5 นิ้วขึ้นไป
โดยหลักการทำงานเบื้องต้นคือเมื่อมีการกดปุ่มแอปปลิเคชั่นจะทำการส่งตัวอักษรตามที่กำหนดไว้ในแต่ละปุ่มผ่านสัญญาณ Bluetooth เพื่อส่งไปยังหุ่นยนต์ที่สร้างไว้ โดยหุ่นยนต์จะมีโปรแกรมคอยรับคำสั่งและทำงานตามที่ได้รับสัญญาณเข้ามา
แต่ละปุ่มในหน้าควบคุมจะมาตัวอักษรที่กำหนดไว้
การสร้างหุ่นยนต์เพื่อรับคำสั่งจาก BURC
หุ่นยนต์สาธิตนี้จะใช้อุปกรณ์ดังนี้
1 ไมโคคอนโทรลเลอร์ Arduino UNO R3
2 บลูทูธโมดูล HC-06
3 รีเลย์โมดูล 4 ช่อง
4 มอเตอร์พร้อมล้อ 2 ชุด
5 สายไฟ
6 แบตเตอร์รี่ lithium polymer 12V
ตัวอย่าง Code
#include <SoftwareSerial.h>
SoftwareSerial BT(2,3);//เชื่อมต่อกับ Bluetooth แบบ Serial ที่ขา 2,3 ซึ่ง ขา 2 เป็นขา RX และขา 3 เป็นขา TX
struct driveMotor{ //สร้างโครงสร้างตัวแปร driveMotor
int in1;
int in2;
};
driveMotor motor[2]={{A0,A1},{A2,A3}}; //ประกาศตัวแปรแบบโครงสร้าง driveMotor ชื่อมอเตอร์เป็นตัวแปรแบบ Array มีสมาชิกสองตัวเป็นตัวแทนมอเตอร์ 2 ตัว ซึ่งมอเตอร์ 1 ตัวใช้ relay 2 ตัวในการควบคุม
void setup(){
pinMode(motor[0].in1,OUTPUT);//กำหนดขาที่ควบคุมมอเตอร์ทั้งหมดเป็นเอาต์พุต
pinMode(motor[0].in2,OUTPUT);
pinMode(motor[1].in1,OUTPUT);
pinMode(motor[1].in2,OUTPUT);
BT.begin(9600); //กำหนดอัตราการสื่อสารกับ Bluetooth ที่ 9600bps
}
void loop(){
if(BT.available()){
char c=BT.read();
if(c==’F’)forward();
else if(c==’B’)reward();
else if(c==’L’)turnleft();
else if(c==’R’)turnright();
else if(c==’S’)robotStop();
}
}
void forward(){//เดินหน้า
motorRun(0,’a’);//มอเตอร์ 0 หมนทวนเข็มนาฬิกา a:anti clock witch
motorRun(1,’c’);//มอเตอร์ 1 หมนตามเข็มนาฬิกา c:clock witch
}
void reward(){//ถอยหลัง
motorRun(0,’c’);
motorRun(1,’a’);
}
void turnleft(){//เหลี่ยวซ้าย
motorRun(0,’c’);
motorRun(1,’c’);
}
void turnright(){//เหลี่ยวขวา
motorRun(0,’a’);
motorRun(1,’a’);
}
void robotStop(){//หยุด s:stop
motorRun(0,’s’);
motorRun(1,’s’);
}
void motorRun(int motorNo,char dir){
if(dir==’a’){ //a:anti clock witch
digitalWrite(motor[motorNo].in1,HIGH);
digitalWrite(motor[motorNo].in2,LOW);
}else if(dir==’c’){ //c:clock witch
digitalWrite(motor[motorNo].in1,LOW);
digitalWrite(motor[motorNo].in2,HIGH);
}if(dir==’s’){//s:stop
digitalWrite(motor[motorNo].in1,LOW);
digitalWrite(motor[motorNo].in2,LOW);
}
}
ดาวน์โหลด Code bluetoothRobot
ดาวน์โหลด Code bluetoothRobotwithPWM แบบควบคุมความเร็วด้วย PWM
น่าจะทำให้มันใช้ได้ในไอโฟน. นะคับ