基於Arduino的智能藍牙小車
材料准備:
Arduino開發板一塊、四驅小車底板及相關配件一套、L298N驅動模塊一個、HC-05/06藍牙模塊一塊,九伏電源一塊(用於主板供電)、12V鋰電池一塊(帶充電器,供驅動器電源)。
L298N使用方法

如圖所示,外接一個12V電源,將Logic Input上四個輸入口分別接到控制板對應位置。(外接12V電源,還需從GND處接一根電源至控制板)
HC-05/06 藍牙模塊
HC-06 Arduino UNO
VCC VCC
GND GND
TXD RXD
RXD TXD
代碼如下
#define IN1 5 // 定義開發板5口為IN1(L298N驅動器)
#define IN2 6 //定義開發板6口為IN1(L298N驅動器)
#define IN3 9 //定義開發板9口為IN1(L298N驅動器)
#define IN4 10 //定義開發板10口為IN1(L298N驅動器)
#include<SoftwareSerial.h> //添加這個庫文件,可調用庫函數
SoftwareSerial BT(3,4); // 定義開發板3,4為RX,TX
char val; //定義參數接收藍牙的值
#define LEFT '3' //左轉編碼
#define RIGHT '4' //右轉編碼
#define GO '1' //前進編碼
#define BACK '2' //后退編碼
#define STOP '0' //停止編碼
void setup() {
BT.begin(9600); //藍牙波率設置為9600
Serial.begin(9600); //設置串口波特率
pinMode(IN1,OUTPUT); //設置為輸出口
pinMode(IN2,OUTPUT); //設置為輸出口
pinMode(IN3,OUTPUT); //設置為輸出口
pinMode(IN4,OUTPUT); //設置為輸出口
initCar(); //調用,停車,下文有
}
//開始判斷是否接收數據,數據為多少
void loop() {
if(BT.available()){
val=BT.read();
if(val == GO){
//前進
go();
}else if(val == BACK){
//后退
back();
}else if(val == LEFT){
//左轉
turnLeft();
}else if(val == RIGHT){
//右轉
turnRight();
}else if(val=='0'){
//停車
stopCar();
}
}
}
void initCar(){
//默認全是低電平 停止狀態
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
void turnLeft(){
//左轉
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW); //右輪前進
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW); //左輪不動
}
void turnRight(){
//右轉
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW); //右輪不動
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW); //左輪前進
}
void go(){
//前進
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW); //右輪前進
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW); //左輪前進
}
void back(){
//倒車
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH); //右輪后退
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH); //左輪后退
}
void stopCar(){
//停車
initCar();
}
接線如下:
Arduino UNO 藍牙HC-05/06
5V VCC
GND GND
PWM 3 RXD
PWM4 GND
L298N
PWM5 IN1
PWM6 IN2
PWM9 IN3
PWM10 IN4
GND GND
L298N 電源
+12V 電源正
GND 電源負
