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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6684|回復(fù): 7
收起左側(cè)

迷你藍(lán)牙小坦克

  [復(fù)制鏈接]
ID:102668 發(fā)表于 2016-1-11 03:16 | 顯示全部樓層 |閱讀模式
一個(gè)很精致的小坦克(轉(zhuǎn)自電子牛人小七)



炮塔是可以旋轉(zhuǎn)的哦

前面還有小機(jī)槍:噠噠噠。。。一掃一大片,嘿嘿。還有個(gè)小鋼鏟,估計(jì)開(kāi)坦克的那家伙開(kāi)到哪,就在哪兒種菜。

除了鏟子,還有很多工具,做工都很精致
蓋子還可以打開(kāi)哦

上面的圖看不出有多大?那跟打火機(jī)做個(gè)對(duì)比吧

坦克是履帶帶動(dòng)的,最左邊的那個(gè)是主動(dòng)輪,是馬達(dá)驅(qū)動(dòng)的,最右邊的是從動(dòng)輪,中間的那些小輪應(yīng)該叫承重輪吧,不是很清楚這些叫法。是不是覺(jué)得這么小了還做得那么精致很難得?更難得的是:這些輪子全部都可以轉(zhuǎn)動(dòng)




履帶細(xì)節(jié)

拆開(kāi)炮塔,里面有個(gè)黑色的塑料罩子


拿開(kāi)它




拆開(kāi)了

看懂了一堆三極管組成的H橋,用于驅(qū)動(dòng)小電機(jī)的


好古董的電池。。。不知道這個(gè)小坦克是不是也是2002年產(chǎn)的



動(dòng)力來(lái)源,兩個(gè)小電機(jī),分別驅(qū)動(dòng)左邊和右邊的主動(dòng)輪,帶動(dòng)履帶來(lái)讓坦克行走。

當(dāng)兩邊都正轉(zhuǎn)的時(shí)候,坦克就前進(jìn)
當(dāng)左邊正轉(zhuǎn),右邊反轉(zhuǎn)時(shí),坦克就原地右轉(zhuǎn)
當(dāng)左邊反轉(zhuǎn),右邊正轉(zhuǎn)時(shí),坦克就原地左轉(zhuǎn)
當(dāng)兩邊都反轉(zhuǎn)的時(shí)候,坦克就后退



把所有的電路都拆下來(lái),準(zhǔn)備改造它


  由于驅(qū)動(dòng)電機(jī)需要用到H橋,而我們手頭上只有L298,這玩意兒太大,塞進(jìn)去就沒(méi)空間放其他東西了,所以專門(mén)找了 L9110 這個(gè)小芯片。。。

熱轉(zhuǎn)印,準(zhǔn)備做電路板,除了坦克所需的PCB外,還做了些其他的東西。。。






焊上 貼片的 STC11F102E 和 11.0592MHZ晶振,以及兩個(gè) L9110 來(lái)驅(qū)動(dòng)電機(jī)
一個(gè)L9110 可以控制電機(jī)的正轉(zhuǎn)或者反轉(zhuǎn)

藍(lán)牙模塊需要3.3V的電壓,所以要做一個(gè)3.3V穩(wěn)壓電路給它

裝在這里剛剛好  





尾部裝上小開(kāi)關(guān),在不用的時(shí)候可以斷掉電源


把藍(lán)牙模塊接上


在這期間對(duì)電路的接線改了一下,所以和上面的相比會(huì)有些變化,這個(gè)接口是用來(lái)充電和下載程序的。對(duì)了,那塊黑黑的電池原來(lái)是 palm 手機(jī)的,單獨(dú)用來(lái)給小電機(jī)供電。


裝上外殼,準(zhǔn)備收工了


尾部原來(lái)充電的地方改成了指示燈


來(lái)一個(gè)帥氣的側(cè)面照
雖然它各種霸氣外漏,但歸根到底還是一個(gè)死物,所以我們要用程序讓它動(dòng)起來(lái)



首先是 drive.h 頭文件,聲明了幾個(gè)接口,分別是左轉(zhuǎn),右轉(zhuǎn),前進(jìn),后退。具體由drive.c來(lái)實(shí)現(xiàn)相應(yīng)的功能。

#ifndef __DRIVE_H__
#define __DRIVE_H__

void Left();
void Right();
void Forward();
void Backward();
void Stop();

#endif
然后是 drive.c,里面負(fù)責(zé)控制相應(yīng)的電路,來(lái)實(shí)現(xiàn)小電機(jī)的轉(zhuǎn)向,從而實(shí)現(xiàn)小坦克的左右轉(zhuǎn),前后退等

#include <reg52.h>
#include "drive.h"

sbit L_A = P1^7;
sbit L_B = P1^6;
sbit R_A = P1^5;
sbit R_B = P1^4;

void Left()
{
    L_A = 1;
    L_B = 0;

    R_A = 0;
    R_B = 1;
}

void Right()
{
    L_A = 0;
    L_B = 1;

    R_A = 1;
    R_B = 0;
}


void Forward()
{
    L_A = 1;
    L_B = 0;

    R_A = 1;
    R_B = 0;   
}

void Backward()
{
    L_A = 0;
    L_B = 1;

    R_A = 0;
    R_B = 1;   
}

void Stop()
{
    L_A = 0;
    L_B = 0;

    R_A = 0;
    R_B = 0;   
}
最后是 main.c 也就是主模塊。

#include<reg51.h>
#include "drive.h"

sfr P1M1 = 0x91;    //這兩個(gè)是讓P1口設(shè)置為推挽輸出
sfr P1M0 = 0x92;               

sbit L_A = P1^7;      //定義L9110所接的引腳,關(guān)于L9110的詳細(xì)驅(qū)動(dòng)方式見(jiàn)其PDF(其實(shí)跟L298差不多)
sbit L_B = P1^6;
sbit R_A = P1^5;
sbit R_B = P1^4;
sbit led_pin = P3^5;   //定義led所接的引腳

unsigned char cmd;    //全局變量,用于存放藍(lán)牙傳過(guò)來(lái)的命令

void led() interrupt 1   //led閃爍函數(shù),由定時(shí)器T0產(chǎn)生中斷,大約1.5秒閃爍一下
{
    unsigned char i;
    i++;
    if(i==15)
    {
        led_pin = !led_pin;
        i=0;
    }
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
}

void com() interrupt 4    //串口中斷函數(shù),當(dāng)藍(lán)牙傳命令過(guò)來(lái)的時(shí)候執(zhí)行
{
    RI  = 0;
    cmd = SBUF;       //把收到的命令放到全局變量里面
}

void com_init()    //串口初始化函數(shù),波特率9600bps
{
    TMOD = 0x00;
    TMOD = 0x21;
    TH1  = 0xfd;
    TL1  = 0xfd;
    TR1  = 1;

    REN  = 1;
    SM0  = 0;
    SM1  = 1;
    EA   = 1;
    ES   = 1;
}

void led_init()    //定時(shí)器0初始化函數(shù),用于led閃爍
{

    TH0  = (65536-50000)/256;
    TL0  = (65536-50000)%256;
    ET0  = 1;
    TR0  = 1;
}

void main()    //主函數(shù)
{
P1M1 = 0x00;    //設(shè)置P1口為推挽輸出模式
P1M0 = 0xff;
com_init();    //串口初始化
led_init();    //led閃爍定時(shí)器初始化


    while(1)       //死循環(huán),等待藍(lán)牙傳命令過(guò)來(lái)
    {
    switch(cmd)    //判斷收到的命令是干嘛的,其中 1 是前進(jìn) 2是后退 3是右轉(zhuǎn) 4是左轉(zhuǎn),0是停止,以后還可以擴(kuò)展其他的功能
        {
        case 1:Forward();break;        //前進(jìn)
        case 2:Backward();break;    //后退
        case 3:Right();break;        //右轉(zhuǎn)
        case 4:Left();break;        //左轉(zhuǎn)
        case 0:Stop();break;        //停止
        }
    }
}

程序?qū)懲旰笤趉eil 里編譯一下,然后下載到單片機(jī)就OK了。

我的手機(jī)是安卓的,所以用藍(lán)牙連接我們的小坦克,通過(guò)藍(lán)牙給它發(fā)送 1、2、3、4 小坦克就會(huì)執(zhí)行相應(yīng)的命令了

回復(fù)

使用道具 舉報(bào)

ID:58106 發(fā)表于 2016-1-11 08:00 | 顯示全部樓層
樓主V5  頂一個(gè)!
回復(fù)

使用道具 舉報(bào)

ID:103242 發(fā)表于 2016-1-14 18:54 | 顯示全部樓層
大哥····這是我的帖子啊····你搬過(guò)來(lái)也不寫(xiě)轉(zhuǎn)載??
回復(fù)

使用道具 舉報(bào)

ID:72781 發(fā)表于 2016-1-16 00:57 | 顯示全部樓層
mhy137701272 發(fā)表于 2016-1-14 18:54
大哥····這是我的帖子啊····你搬過(guò)來(lái)也不寫(xiě)轉(zhuǎn)載??

可是明明你一個(gè)帖子都沒(méi)發(fā)過(guò)?你在那個(gè)論壇發(fā)的貼?
回復(fù)

使用道具 舉報(bào)

ID:102668 發(fā)表于 2016-1-16 04:06 | 顯示全部樓層
mhy137701272 發(fā)表于 2016-1-14 18:54
大哥····這是我的帖子啊····你搬過(guò)來(lái)也不寫(xiě)轉(zhuǎn)載??

原來(lái)您就是作者啊,佩服 佩服,已經(jīng)注明了。
回復(fù)

使用道具 舉報(bào)

ID:103810 發(fā)表于 2016-1-19 19:35 | 顯示全部樓層
有視頻就好了
回復(fù)

使用道具 舉報(bào)

ID:130345 發(fā)表于 2017-8-31 10:33 | 顯示全部樓層
很強(qiáng)啊
回復(fù)

使用道具 舉報(bào)

ID:230223 發(fā)表于 2017-8-31 14:28 | 顯示全部樓層
很好        
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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