安卓手機控制小車(自己做成功了,有全套資料)

注:圖片不知道怎麼顯示,可以去我空間的相冊裏查看圖片。

小車分幾部分組成: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、開始所有的供電包括驅動芯片L98NVS管腳用的也是5V供電,連接好後發現不能帶動電機。用萬用表測量輸出管腳電壓可以達到4點幾伏,但是當連接上電機後,電壓爲0,當用7.5V的電源給VS管腳供電後,問題得以解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章