ส่วนของรถ bluetooth ที่ผมทำนั้นไม่ได้ต่างจากรถที่ถูกควบคุมด้วยserial port โดยผมใช้คำสั่งรับค่าจาก serialport ซึ่งผมใช้ bluetooth ESD200ในการติดต่อกับอุปกรณ์ที่จะมาควบคุมโดยจะต่อตามข้างล่างนี้
ESD200 ATMEGA1280
GND ---> GND
3V ---> 3v3
RXD ---> TX
TXD ---> RX
โดยหากยังไม่อยากใช้ bluetooth ก็สามารถใช้สายUSBต่อกับบอร์ดแล้วต่อเข้าคอมพิวเตอร์ก่อนก็ได้โดยจะลองสั่งงานผ่านterminalดูก็ได้
ข้อมูลเพิ่มเติม
ใช้ kinect ควบคุม http://kritsitti.blogspot.com/2012/03/29-2555-kinect.html
การทำงาน http://kritsitti.blogspot.com/2012/03/28-2555-bluetooth.html
ภาพรวมของระบบ http://kritsitti.blogspot.com/2012/03/27-2555-bluetooth.html
ตั้งค่าBluetooth http://kritsitti.blogspot.com/2012/04/5-2555-bluetoothbluetooth.html
Serial port http://kritsitti.blogspot.com/2012/03/26-2555-serialport-in-arduno.html
PWM http://kritsitti.blogspot.com/2012/03/23-2555pwm-arduno.html
ส่วนของโค๊ตก็ลองทดสอบดูไม่แนะนำให้ลอกนะครับเพราะจะเป็นการปิดกั้นความสามารถของตนเอง
//ฝั่ง arduno
//BluetoothCar Project
//author krit
//Date 11/4/2012
int pwm1=9; int pwm2=8;
int m1D1=22; int m1D2=23;
int m2D1=32; int m2D2=33;
int in;
int total=0;
char state=0;
void countSec();
void go(int speedM);
void back(int speedM);
void tLeft(int speedM);
void tRight(int speedM);
void stopM();
void setup()
{
pinMode(m1D1,OUTPUT);
pinMode(m1D2,OUTPUT);
pinMode(m2D1,OUTPUT);
pinMode(m2D2,OUTPUT);
Serial.begin(9600);
Serial.print("Start\n");
}
void loop()
{
total=0;
state=0;
if(Serial.available()>0){
state=Serial.read();
while(Serial.available()==0 && state!='s');
if(Serial.available()>0 && state!='s'){
total=(Serial.read());
//total=(total-66)*10;
}
}
if(state!=0){
switch(state){
case 'G': go(total); break;
case 'B': back(total); break;
case 'L': tLeft(total); break;
case 'R': tRight(total);break;
case 'S': stopM(); break;
default: stopM();
}
}
}
void go(int speedM){
Serial.print("Go!\t");
Serial.print(speedM);
Serial.print("\n");
analogWrite(pwm1, speedM);
digitalWrite(m1D1,HIGH);
digitalWrite(m1D2,LOW);
analogWrite(pwm2, speedM);
digitalWrite(m2D1,HIGH);
digitalWrite(m2D2,LOW);
}
void back(int speedM){
Serial.print("Back!\t");
Serial.print(speedM);
Serial.print("\n");
analogWrite(pwm1, speedM);
digitalWrite(m1D2,HIGH);
digitalWrite(m1D1,LOW);
analogWrite(pwm2, speedM);
digitalWrite(m2D2,HIGH);
digitalWrite(m2D1,LOW);
}
void tLeft(int speedM){
Serial.print("turnLeft!\t");
Serial.print(speedM);
Serial.print("\n");
analogWrite(pwm1, speedM);
digitalWrite(m1D2,HIGH);
digitalWrite(m1D1,LOW);
analogWrite(pwm2, speedM);
digitalWrite(m2D2,LOW);
digitalWrite(m2D1,HIGH);
}
void tRight(int speedM){
Serial.print("turnRight!\t");
Serial.print(speedM);
Serial.print("\n");
analogWrite(pwm1, speedM);
digitalWrite(m1D2,LOW);
digitalWrite(m1D1,HIGH);
analogWrite(pwm2, speedM);
digitalWrite(m2D2,HIGH);
digitalWrite(m2D1,LOW);
}
void stopM(){
Serial.print("Stop!\n");
digitalWrite(pwm2, HIGH);
digitalWrite(pwm1, HIGH);
digitalWrite(m1D2,HIGH);
digitalWrite(m1D1,HIGH);
digitalWrite(m2D2,HIGH);
digitalWrite(m2D1,HIGH);
}
จากBlogที่ผมต้องการเขียนขึ้นมาเพื่อบันทึกเรื่องราวในการฝึกงานเป็นบล็อกที่พยายามเขียนบทความไฟฟ้าอิเล็กทรอกนิกส์และคอมพิวเตอร์
ป้ายกำกับ
FIBO
(28)
microcontroller
(16)
CHIPKIT
(6)
robotics
(6)
Camera
(5)
Photo
(5)
arduino
(5)
bluetooth
(5)
communication
(5)
ubuntu
(5)
กล้อง
(5)
ถ่ายรูป
(5)
android
(4)
pid control
(4)
notebook
(2)
Agile
(1)
CI
(1)
Software engineering
(1)
algorithm
(1)
controller
(1)
game
(1)
guitar
(1)
hardware
(1)
programming
(1)
ล๊อตเตอรี่
(1)
สลากกินแบ่งรัฐบาล
(1)
หวย
(1)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น