注:圖片不知道怎麼顯示,可以去我空間的相冊裏查看圖片。
小車分幾部分組成:1、安卓手機控制軟件:該軟件可以通過藍牙發送前進、後退、左轉、右轉指令(ASCII碼)。2、藍牙模塊:通過與手機連接後,可以接收到手機發送的指令,採用HC_06模塊。3、單片機最小系統:藍牙模塊將收到的指令發給單片機,單片機將其解碼爲二進制數。4、驅動模塊:單片機將二進制指令通過IO口發送給驅動模塊,驅動小車運動。5、小車底座:具有四個減速電機和輪子的底座。
1、手機控制軟件
:
網上下載的,想要無插件的可以留郵箱。
當我們用手按下前進時,手機會通過藍牙以ASCII碼的形式發送一個字符“A”,釋放時會發送一個字符“a”;
按下 後退 時,手機會通過藍牙以ASCII碼的形式發送一個字符“D”,釋放時會發送一個字符“d”;
按下 左轉 時,手機會通過藍牙以ASCII碼的形式發送一個字符“C”,釋放時會發送一個字符“c”;
按下 右轉 時,手機會通過藍牙以ASCII碼的形式發送一個字符“B”,釋放時會發送一個字符“b”;
2、藍牙模塊時HC-05/06。
此模塊使用3個管腳,VCC和GND分別接電源高、低電平,TXD管腳接單片機的RXD管腳。藍牙模塊與手機連接後,可以通過手機發送ASCII,藍牙模塊接收到後,發送給單片機的RXD腳,通過程序將數據以二進制的形式發送給驅動模塊,供小車驅動。發送波特率爲9600。八位數據位,無奇偶校驗。
3、最小系統。
板子是自己焊的,5個1.5v的電池供電,一方面7.5v給驅動芯片L298N供電,令一方面經7805降壓後給單片機和藍牙模塊供電(此時驅動效果不明顯,可以在另用一個9V電源,爲L298n供電)。其中所有管腳已經引出,令PO管腳接了10K的上拉電阻。晶振旁邊的電容在板子另一面,是兩個貼片電容。雖說線路簡單,可也是雙面板,呵呵。L298N資料網上有很多。。。
程序:
#include<reg52.h>
#define uchar unsigned char
uchar a;
//串口初始化
void Serial_Init()
{
TMOD=0x20; //方式2,8位自動載入
TH1=0xfd;
TL1=0xfd;//初值,9600波特率
TR1=1;
SCON=0x50;//8位異步收發,波特率可變
EA=1;//開總中斷
ES=1; //開串行中斷
}
void Serial() interrupt 4
{
ES=0;
RI=0;
a=SBUF;
switch(a)
{
case 'A': //前進
P0=0xf5;//P0的低四位控制驅動芯片,當接收到0101時,兩個輪子正轉,故向前,以下同。
break;
case 'B': //右轉
P0=0xf9;
break;
case 'C': //左轉
P0=0xf6;
break;
case 'D': //後退
P0=0xfa;
break;
case 'a':
P0=0x00;
break;
case 'b':
P0=0x00;
break;
case 'c':
P0=0x00;
break;
case 'd':
P0=0x00;
break;
default:
P0=0xff;
}
ES=1;
}
void main()
{
P0=0xff;
Serial_Init();
while(1);
}
程序很簡單,利用串口發送數據。
4、驅動模塊:
左邊的四根線是輸出,要連接到下車的馬達上,右邊的四根線是輸入,連接單片機的對應管腳。
5、底座
左邊的兩個電機並聯,右邊的兩個電極並聯。
遇到的問題:
1、在做最小系統的板子時,自己焊的是12M的晶振,但是程序用的是11.0592M晶振寫的,所以當藍牙模塊連接上後,單片機卻不能收到指令,後來換成11.0592M晶振才得以解決這個問題。
2、開始所有的供電包括驅動芯片L98N的VS管腳用的也是5V供電,連接好後發現不能帶動電機。用萬用表測量輸出管腳電壓可以達到4點幾伏,但是當連接上電機後,電壓爲0,當用7.5V的電源給VS管腳供電後,問題得以解決。