找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 35755|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

手把手教你做Android手機(jī)遙控小車

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:140725 發(fā)表于 2016-10-11 21:04 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
安卓手機(jī)遙控小車,顧名思義就是用安卓手機(jī)來控制小車前后左右運(yùn)動(dòng)。給大家展示一個(gè)既可觸摸按鍵控制又可重力感應(yīng)控制的Android手機(jī)軟件和DIY小車,廢話少說,上圖:

Android上位機(jī)軟件運(yùn)行界面截圖




觸摸按鍵控制模式




重力感應(yīng)控制模式



更換背景


在手機(jī)上的運(yùn)行圖








上DIY小車圖片













看完圖片還不過癮,上視頻:



看完了,感覺還行吧! 不要羨慕,你也可以,下面來一起DIY。

先來看一看下位機(jī)也就是小車部分。既然是小車,底盤車輪也就少不了了。
下面是這輛車的底盤

底盤正面



底盤反面




除了小車底盤,我們還得有一個(gè)單片機(jī)最小系統(tǒng)來控制吧

正面

需要說明一下的是,別以為它沒有晶振,沒有電容等——它們都在單片機(jī)下面藏起來了。
但這的確是一個(gè)“最小系統(tǒng)”,除了I/O口引出了外,什么都沒有擴(kuò)展。



PCB底板,銅線都氧化了




最小系統(tǒng)的電路應(yīng)該都知道



底盤和最小系統(tǒng)搞好了,小車還是跑不起來——缺少電機(jī)驅(qū)動(dòng)。
單片機(jī)的I/O是驅(qū)動(dòng)不了電機(jī)的,我選用的是L298N電機(jī)專用驅(qū)動(dòng)芯片。
下面是我的電機(jī)驅(qū)動(dòng)模塊PCB




時(shí)間有點(diǎn)長(zhǎng)了,看起來不是很好看。但PCB布線排版還可以吧!

底面涂了一層綠油,但沒有涂勻。

下面是這個(gè)模塊的電路圖




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)模塊供電。


至此,小車的基本部分搭建完畢。下面看一下重量級(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)串口模塊
看圖



它將復(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ì)。





在手機(jī)上打開控制端點(diǎn)擊 開始 后會(huì)彈出已配對(duì)的藍(lán)牙設(shè)備,如果是你的小車上的藍(lán)牙模塊,就點(diǎn)擊 連接小車,完成連接,
在完成連接前,HC06藍(lán)牙轉(zhuǎn)串口模塊上的LED等會(huì)不停的閃爍,連接完成后,LED燈長(zhǎng)亮,停止閃爍。


下面是安卓手機(jī)控制端軟件和一些文檔的資料包

手把手教你做Android手機(jī)遙控車.zip 5.6M
下載地址:http://www.torrancerestoration.com/bbs/dpj-47636-1.html

還有這個(gè):
手機(jī)遙控車DIY.pdf (4.69 MB, 下載次數(shù): 137)
最近,部分網(wǎng)友反映買的藍(lán)牙轉(zhuǎn)串口模塊買成了主機(jī),結(jié)果不能用。在這里說明一下,這種模塊有主從機(jī)之分,
我們要選購(gòu)從機(jī),主機(jī)與手機(jī)不能通信的。對(duì)于疏忽表示歉意。



最后祝想DIY的同學(xué)早日成功!

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
zz661 + 5 絕世好帖!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂1 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

17#
ID:895316 發(fā)表于 2021-3-23 08:08 | 只看該作者
多謝分享剛好我做DIY小玩意也需要用
回復(fù)

使用道具 舉報(bào)

16#
ID:372154 發(fā)表于 2019-1-28 00:55 | 只看該作者
多謝分享
回復(fù)

使用道具 舉報(bào)

15#
ID:318672 發(fā)表于 2018-12-15 19:58 來自手機(jī) | 只看該作者
不錯(cuò),不錯(cuò)的分享
回復(fù)

使用道具 舉報(bào)

14#
ID:446782 發(fā)表于 2018-12-15 15:03 | 只看該作者
感謝樓主,頂一下
回復(fù)

使用道具 舉報(bào)

13#
ID:413449 發(fā)表于 2018-10-22 14:31 | 只看該作者
很詳細(xì)的操作,學(xué)到了
回復(fù)

使用道具 舉報(bào)

12#
ID:413449 發(fā)表于 2018-10-22 14:27 | 只看該作者
666666,那用這個(gè)做無人機(jī)可不可以啊
回復(fù)

使用道具 舉報(bào)

11#
ID:399179 發(fā)表于 2018-9-24 20:40 來自手機(jī) | 只看該作者
照著做就能成功嗎?
回復(fù)

使用道具 舉報(bào)

10#
ID:357520 發(fā)表于 2018-9-24 16:47 | 只看該作者
樓主,手機(jī)控制程序在哪里啊
回復(fù)

使用道具 舉報(bào)

9#
ID:401655 發(fā)表于 2018-9-24 14:47 | 只看該作者
哇。。樓主厲害。贊 。。。。
回復(fù)

使用道具 舉報(bào)

8#
ID:381821 發(fā)表于 2018-9-24 12:50 | 只看該作者
照著做了一個(gè),很不錯(cuò)的帖子
回復(fù)

使用道具 舉報(bào)

7#
ID:354613 發(fā)表于 2018-8-13 17:26 | 只看該作者
很好,感謝分享資源。
回復(fù)

使用道具 舉報(bào)

6#
ID:171111 發(fā)表于 2018-5-15 00:05 來自手機(jī) | 只看該作者
真好真詳細(xì) 謝謝分享
回復(fù)

使用道具 舉報(bào)

5#
ID:261485 發(fā)表于 2018-3-7 16:04 來自手機(jī) | 只看該作者
想問下這個(gè)底座具體有哪些原件?謝謝

210347p2hsrhnpz4pvvr5h.jpg (46.63 KB, 下載次數(shù): 75)

210347p2hsrhnpz4pvvr5h.jpg
回復(fù)

使用道具 舉報(bào)

地板
ID:285038 發(fā)表于 2018-3-6 21:34 | 只看該作者
樓主,貌似沒有上位機(jī)軟件啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:276869 發(fā)表于 2018-1-17 10:03 | 只看該作者
畢設(shè)想做小車 但是要求比這個(gè)高   
需要手機(jī)觸摸屏定位  小車自主導(dǎo)航到指定位置
所以定位這一塊還挺難得
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:244589 發(fā)表于 2017-11-14 09:08 | 只看該作者
樓主真的費(fèi)心,很耐心的講解
回復(fù)

使用道具 舉報(bào)

樓主
ID:223768 發(fā)表于 2017-8-1 10:53 | 只看該作者
真的不錯(cuò)哦
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表