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