|
安卓手機遙控小車,顧名思義就是用安卓手機來控制小車前后左右運動。給大家展示一個既可觸摸按鍵控制又可重力感應(yīng)控制的Android手機軟件和DIY小車,廢話少說,上圖:
Android上位機軟件運行界面截圖
190739ss5p25u9wr6ryh9p.png (120.5 KB, 下載次數(shù): 124)
下載附件
2016-10-11 21:03 上傳
觸摸按鍵控制模式
190740dtajhncp2jzmkpda.png (123.01 KB, 下載次數(shù): 116)
下載附件
2016-10-11 21:03 上傳
重力感應(yīng)控制模式
1907411bekvunz49j1ujv6.png (35.52 KB, 下載次數(shù): 114)
下載附件
2016-10-11 21:03 上傳
更換背景
190741mkm46jqz1s1xc0ae.png (40.51 KB, 下載次數(shù): 102)
下載附件
2016-10-11 21:03 上傳
在手機上的運行圖
214816d4dt1jybmyskyjw7.jpg.thumb.jpg (28.7 KB, 下載次數(shù): 124)
下載附件
2016-10-11 21:03 上傳
上DIY小車圖片
103304cddkkkd8ctvkvrdm.jpg.thumb.jpg (44.98 KB, 下載次數(shù): 89)
下載附件
2016-10-11 21:03 上傳
192630sjx9oognbkbn9bbz.jpg.thumb.jpg (46.71 KB, 下載次數(shù): 91)
下載附件
2016-10-11 21:03 上傳
1926186nzld6923dgdeazx.jpg.thumb.jpg (41.02 KB, 下載次數(shù): 108)
下載附件
2016-10-11 21:03 上傳
看完圖片還不過癮,上視頻:
看完了,感覺還行吧!
e104.gif (1.89 KB, 下載次數(shù): 102)
下載附件
2016-10-11 21:03 上傳
不要羨慕,你也可以,下面來一起DIY。
先來看一看下位機也就是小車部分。既然是小車,底盤車輪也就少不了了。
下面是這輛車的底盤
底盤正面
193907x46v6l4vv2z1xcgj.jpg.thumb.jpg (43.89 KB, 下載次數(shù): 106)
下載附件
2016-10-11 21:03 上傳
底盤反面
1939036bbsybtpvotbaats.jpg.thumb.jpg (40.39 KB, 下載次數(shù): 110)
下載附件
2016-10-11 21:03 上傳
除了小車底盤,我們還得有一個單片機最小系統(tǒng)來控制吧
正面
194339sg3wvb36egeyvgvb.jpg.thumb.jpg (23.13 KB, 下載次數(shù): 98)
下載附件
2016-10-11 21:03 上傳
需要說明一下的是,別以為它沒有晶振,沒有電容等——它們都在單片機下面藏起來了。
但這的確是一個“最小系統(tǒng)”,除了I/O口引出了外,什么都沒有擴展。
PCB底板,銅線都氧化了
194338cik1cwdkfhh5p7y0.jpg.thumb.jpg (29.03 KB, 下載次數(shù): 105)
下載附件
2016-10-11 21:03 上傳
最小系統(tǒng)的電路應(yīng)該都知道
1044160gfq6e0dq9fg6g0e.jpg.thumb.jpg (50.13 KB, 下載次數(shù): 86)
下載附件
2016-10-11 21:03 上傳
底盤和最小系統(tǒng)搞好了,小車還是跑不起來——缺少電機驅(qū)動。
單片機的I/O是驅(qū)動不了電機的,我選用的是L298N電機專用驅(qū)動芯片。
下面是我的電機驅(qū)動模塊PCB
1956340a22va02e035ths2.jpg.thumb.jpg (25.2 KB, 下載次數(shù): 134)
下載附件
2016-10-11 21:03 上傳
時間有點長了,看起來不是很好看。但PCB布線排版還可以吧!
195632olnlnrlbnz3l4bll.jpg.thumb.jpg (35.59 KB, 下載次數(shù): 105)
下載附件
2016-10-11 21:03 上傳
底面涂了一層綠油,但沒有涂勻。
下面是這個模塊的電路圖
195633lfz0ff42f52g0gr1.jpg.thumb.jpg (15.32 KB, 下載次數(shù): 116)
下載附件
2016-10-11 21:03 上傳
L298用起來蠻簡單,網(wǎng)上的資料很多。但若嫌電路麻煩,
對驅(qū)動能力要求又不高的情況下你可以試一下ULN2003驅(qū)動芯片
很簡單。
再就是電源部分,我用的是兩塊手機電池,串聯(lián)起來用的,一路經(jīng)7805降壓后供
單片機用,一路直接給電機驅(qū)動模塊供電。
102209zssytfhif7bbfd2x.jpg.thumb.jpg (30 KB, 下載次數(shù): 120)
下載附件
2016-10-11 21:03 上傳
至此,小車的基本部分搭建完畢。下面看一下重量級部分——藍牙。
說道藍牙,大家可能覺得很高深,害怕。的確,藍牙技術(shù)是一門高深的技術(shù),藍牙的通信協(xié)議讓人頭疼。
但不要害怕,我們是不接觸藍牙底層協(xié)議的,況且現(xiàn)在的模塊技術(shù)是很發(fā)達的,HC06——藍牙轉(zhuǎn)串口模塊
看圖
201126kyf8eva44bsos15e.jpg (42.06 KB, 下載次數(shù): 112)
下載附件
2016-10-11 21:03 上傳
它將復(fù)雜藍牙通信協(xié)議直接變成了單片機上擁有的,我們也熟悉的RXD TXD串口通信。高興了吧!
我們只需接3根線就行了——VCC GND就不說了。大家注意一下它的RXD要接51單片機的P3.0,也就是RXD.
為什么RXD接RXD,不是接TXD嗎?有人會問。大家注意一下,這個模塊上的RXD的意思是告訴你,外部的RXD接我這兒,不是說這個引腳就是RXD,它其實是TXD. TXD也是一樣的,要注意一下。
我們只接3根線,TXD不接,因為我們用手機發(fā)送指令,藍牙模塊只負責接收就行。STATE EN這兩引腳也不用管。
關(guān)于這個模塊的其它用法,想更改設(shè)置波特率,更改設(shè)備名稱等,網(wǎng)上都有相應(yīng)資料,解決不了的可以加QQ:1399836578
到這兒,自己將上面幾個模塊組裝一下,所有的硬件部分就完成了。
下面來看軟件部分。軟件部分又分為兩個部分——下位機(單片機程序)和上位機(Android手機控制端);
由于下位機是根據(jù)上位機發(fā)送的指令來編程的,我們就先看看上位機部分
上位機截圖上面已給出了。
由于上位機的編寫涉及到Java語言編程知識和Android系統(tǒng)知識,不是十句八句能說清楚的,在這兒就不討論它是怎樣編寫出來的。待會兒我會給出 它的APK安裝包,下載到手機上直接安裝就行。我們先對著上圖說說它是怎么工作的。
當我們用手按下 前進 時,手機會通過藍牙以ASCII碼的形式發(fā)送一個字符“A”,釋放時會發(fā)送一個字符“a”;
當我們用手按下 后退 時,手機會通過藍牙以ASCII碼的形式發(fā)送一個字符“D”,釋放時會發(fā)送一個字符“d”;
當我們用手按下 左轉(zhuǎn) 時,手機會通過藍牙以ASCII碼的形式發(fā)送一個字符“C”,釋放時會發(fā)送一個字符“c”;
當我們用手按下 右轉(zhuǎn) 時,手機會通過藍牙以ASCII碼的形式發(fā)送一個字符“B”,釋放時會發(fā)送一個字符“b”;
當使用重力感應(yīng)模式是,也是根據(jù)手機的狀態(tài)來發(fā)送這幾個字符的。
同時我們看他查詢得ABCDabcd 八個字符的ASCII碼值:A-65 a-97 B-66 b-98 C-67 c-99 D-68 d-100.
有了這些,我們就知道怎樣寫單片機程序了——使用51單片機的串口通信。打開串口中斷,我們可以在串口中斷服務(wù)函數(shù)中接收到字符后用 switch() 語句來判斷接收到的字符。例如
case:65 break; 表示接收到的字符是A,也就是按 前進 時發(fā)送過來的,這時就可以在 break前寫上小車前進的代碼;
case:97 break;表示接收到的是a,即松開 前進 時發(fā)送出來的,既然松開了 前進 按鈕 ,就可以再break前加上小車停止的語句。左轉(zhuǎn),右轉(zhuǎn)也是一樣的。至于小車前進后退左轉(zhuǎn)右轉(zhuǎn)的代碼,要根據(jù)你自己的電機機驅(qū)動來寫。
下面是我的下位機程序,電機驅(qū)動代碼要自己寫,這個只供參考
#include
#define uchar unsigned char
#define uint unsigned int
uchar a;
void init()
{
TMOD=0X20; //設(shè)置定時器1為方式2
TH1=0xfd ;
TL1=0xfd ; //裝初值
TR1=1; //啟動定時器1
REN=1; // 使能接收
SM0=0;
SM1=1; //設(shè)置串口為工作方式1
EA=1; // 打開總中斷開關(guān)
ES=1; // 打開串口中斷開關(guān)
}
void main()
{
init();
while(1);
}
void ser() interrupt 4
{
ES=0;
RI=0; //將接受中斷標志位清0;
a=SBUF; //將接受到的數(shù)據(jù)賦值給a
switch(a)
{
case 65: P2=0X17; break; // 發(fā)送的是A 前進指令
case 66: P2=0X1B; break; // 發(fā)送的是B 右轉(zhuǎn)指令
case 67: P2=0X27; break; // 發(fā)送的是C 左轉(zhuǎn)指令
case 68: P2=0X2B; break; // 發(fā)送的是D 后退指令
case 97: P2=0X00; break; //發(fā)送的是a 停止指令
case 98: P2=0X00; break; //發(fā)送的是b 停止指令
case 99: P2=0X00; break; //發(fā)送的是c 停止指令
case 100: P2=0X00; break; //發(fā)送的是d 停止指令
//P2口是我的電機驅(qū)動的控制端
default: break;
}
ES=1;
}
整個過程講解完畢,想DIY的趕快行動起來吧!(有問題可以加QQ:1399836578)
差點忘了,下面給出編寫的安卓手機控制端(上位機)軟件
先說一下手機(必須是安卓手機)控制端使用方法
先用手機的藍牙設(shè)置搜索到你的小車的藍牙,并完成配對。
101639dd3b55tpe5b3y95z.png (43.33 KB, 下載次數(shù): 148)
下載附件
2016-10-11 21:03 上傳
在手機上打開控制端點擊 開始 后會彈出已配對的藍牙設(shè)備,如果是你的小車上的藍牙模塊,就點擊 連接小車,完成連接,
在完成連接前,HC06藍牙轉(zhuǎn)串口模塊上的LED等會不停的閃爍,連接完成后,LED燈長亮,停止閃爍。
10163817snmn35wgbwsttm.png (77.25 KB, 下載次數(shù): 142)
下載附件
2016-10-11 21:03 上傳
下面是安卓手機控制端軟件和一些文檔的資料包
手把手教你做Android手機遙控車.zip 5.6M
下載地址:http://www.zg4o1577.cn/bbs/dpj-47636-1.html
還有這個:
手機遙控車DIY.pdf
(4.69 MB, 下載次數(shù): 137)
2016-10-11 21:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
最近,部分網(wǎng)友反映買的藍牙轉(zhuǎn)串口模塊買成了主機,結(jié)果不能用。在這里說明一下,這種模塊有主從機之分,
我們要選購從機,主機與手機不能通信的。對于疏忽表示歉意。
最后祝想DIY的同學早日成功!
|
評分
-
查看全部評分
|