激情九九,六月婷婷七月丁香,天天五月天丁香婷婷深爱综合,国产色一区,国产一区二区三区免费在线观看,91最新网站

DIY:牛人自制會(huì)呼吸的WIFI機(jī)器人(附程序)

來(lái)源:網(wǎng)絡(luò)

點(diǎn)擊:1456

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: 機(jī)器人,DIY

      你是否在新聞中見(jiàn)過(guò)各式各樣的遙控機(jī)器人?它們上天入地,排爆偵查,幾乎無(wú)所不能。給再土氣不過(guò)的無(wú)線路由換個(gè)“頭腦”,裝上“手腳”,它就能忠實(shí)執(zhí)行茫茫網(wǎng)海另一端的指令,為不能親身親臨的你拍下難得一見(jiàn)的場(chǎng)景。今天小編就教大家制作會(huì)呼吸的WIFI機(jī)器人。

      1Linux平臺(tái):線路連接與攝像頭驅(qū)動(dòng)

      1.1準(zhǔn)備硬件

      首先要選擇能夠加載Openwrt平臺(tái)的硬件設(shè)備,其實(shí)能加載LINUX系統(tǒng)的設(shè)備非常常見(jiàn),比如我們家庭用的路由器。

      這里要注意的是路由器的選擇,首先,路由器要能夠加載openwrt系統(tǒng),其次,要具有USB口以及TTL接口。

      ▲一般來(lái)講,我們選擇的型號(hào)是DB120或者RG100A-AA,我選擇的型號(hào)是RG100A-AA。

      1.2刷系統(tǒng)

      ▲得到路由器后,首先要做的事是給路由器換個(gè)系統(tǒng),即通俗所說(shuō)的“刷機(jī)”,關(guān)于網(wǎng)絡(luò)上RG100A-AA刷機(jī)的教程很多,這里不再贅述,不過(guò)需要補(bǔ)充的是,對(duì)于擁有單片機(jī)的愛(ài)好者,大可不必專門購(gòu)買USB-TTL線,我們手中的單片機(jī)的開(kāi)發(fā)板就可以為路由器與個(gè)人PC進(jìn)行連接,下面給出開(kāi)發(fā)板與路由器TTL線的連線圖,,路由器從左到右依次是:VCC,GND,TX,RX,這里注意一定不要接VCC線。

      ▲我的系統(tǒng)是Openwrtbackfire10.03.1RC6。

      ▲測(cè)試單片機(jī)的開(kāi)發(fā)板是否連接正確,可以通過(guò)PUTYY的串口連接方式進(jìn)行連接,注意這里的波特率是:115200。

      COM口的選擇要查看個(gè)人PC中的設(shè)備管理器,以連接的為準(zhǔn)。

      1.3設(shè)置局域網(wǎng)絡(luò)

      ▲刷完系統(tǒng)后,設(shè)置個(gè)人PC的網(wǎng)絡(luò)IP:192.168.1.X,以及子網(wǎng)掩碼255.255.255.0。這里的X是除1之外的任意,當(dāng)然不能大于255。

      ▲然后連接個(gè)人PC與路由的LAN3口,用PUTYY進(jìn)行SHH連接,輸入用戶名ROOT,以及密碼ADMIN,設(shè)置以及連接正確后進(jìn)入。

      1.4安裝攝像頭

      設(shè)置IP的目的是為了上傳攝像頭的驅(qū)動(dòng)文件,我采用的攝像頭是OV519芯片的SONY攝像頭,因此驅(qū)動(dòng)文件為:

      kmod-video-gspca-ov519_2.6.32.27-1_brcm63xx.ipk

      ▲運(yùn)行winscp,將IPK包上傳到根目錄下,注意,這里要選擇SCP方式。

      ▲成功連接后。

      winscp非常方便,拖拽文件即可,跟FTP方式完全一樣。

      ▲我的攝像頭。

      上傳完畢后,運(yùn)行PUTTY,進(jìn)行安裝,安裝口令:opkginstallxxx.ipk

      安裝完畢后可以用dmesg命令進(jìn)行查看是否安裝完成,或者直接在瀏覽器中輸入192.168.1.1以圖形化的方式進(jìn)行查看。

      安裝完驅(qū)動(dòng)后,安裝MJPG-STREAMER,這是一個(gè)用于查看視頻IPK程序,可以直接在瀏覽器中查看攝像頭捕捉到的圖像,注意安裝完畢后要開(kāi)啟服務(wù),或者也可以設(shè)置為自自動(dòng),這里不再贅述。

      這里我采用了網(wǎng)絡(luò)上研究智能機(jī)器人的前人Liuviking的程序來(lái)捕捉MJPG-STREAMER的圖像,運(yùn)行此程序要先安裝,DOTNET3.5,運(yùn)行后成功便如圖所示:

      至此,攝像頭的安裝結(jié)束。

      2Linux平臺(tái):安裝與串口調(diào)試

      2.1什么是ser2net.ipk軟件包

      首先解釋一下什么是ser2net.ipk軟件包。

      這是一個(gè)可以通過(guò)個(gè)人PC向路由的指定端口發(fā)送數(shù)據(jù),然后路由原封不動(dòng)的將數(shù)據(jù)發(fā)送到路由的TTL接口的程序。

      當(dāng)安裝完這個(gè)程序后,我們就可以通過(guò)編制的程序向路由的TTL口發(fā)送串行數(shù)據(jù),意義在于:?jiǎn)纹瑱C(jī)就可以接受路由發(fā)送的串行數(shù)據(jù)進(jìn)行各種控制。

      2.2安裝ser2net.ipk軟件包

      下面簡(jiǎn)略的講解如何在openwrt下進(jìn)行軟件包ser2net.ipk的安裝

      有兩種方法:

      方法一是在路由已經(jīng)聯(lián)結(jié)上互聯(lián)網(wǎng)的情況下,可以由網(wǎng)絡(luò)進(jìn)行安裝。非常的方便,但我并未采用。

      方法二是利用winscp連接上路由,上傳ser2net.ipk,然后運(yùn)行putty,登陸路由執(zhí)行

      opkgupdate

      opkginstall軟件包地址

      同昨日安裝ov519驅(qū)動(dòng)。

      安裝完畢ser2net后,需要進(jìn)行一定的設(shè)置,在命令行界面下輸入

      cd/

      進(jìn)入路由根目錄,再輸入

      cdetc

      進(jìn)入ect目錄后執(zhí)行

      viser2net.conf(當(dāng)安裝成功后才會(huì)出現(xiàn)此設(shè)置文件)

      找到

      2001:raw:600:/dev/ttyS0:9600NONE1STOPBIT8DATABITSXONXOFFLOCAL-RTSCTS

      #2002:raw:600:/dev/ttyS1:9600NONE1STOPBIT8DATABITSXONXOFFLOCAL-RTSCTS

      注意,這里"#"代表的是屏蔽,我們修改的是非屏蔽語(yǔ)句,可以看到,上位機(jī)發(fā)送的端口是2001,這就是我們需要發(fā)送的端口號(hào),波特率是9600,其它的略。

      設(shè)置完畢后記得保存退出,然后這里要執(zhí)行一次ser2net,以開(kāi)啟服務(wù)。

      一切設(shè)置妥當(dāng)后,我們?cè)俅谓栌胠iuviking的程序進(jìn)行串口通訊的測(cè)試,運(yùn)行l(wèi)iuviking的程序,然后再運(yùn)行“串口調(diào)試助手”,在程序中點(diǎn)擊發(fā)送串口數(shù)據(jù),可以看到在“串口調(diào)試助手”,有正確的數(shù)據(jù)輸出,至此,Shy的串口連接部分設(shè)置完畢。

      3Linux平臺(tái):openwrt系統(tǒng)中添加自啟動(dòng)

      添加自啟動(dòng)項(xiàng)的目的是為了在SHY啟動(dòng)的時(shí)候能夠自動(dòng)啟動(dòng)更多的服務(wù),配合UCI命令。

      在/etc/init.d里添加需要啟動(dòng)的shell腳本,假設(shè)名字為my-plugin。接下來(lái)模仿該目錄下其他啟動(dòng)腳本的格式,添加你的代碼。

      [cpp]viewplaincopyprint?

      1.#!/bin/sh/etc/rc.common

      2.#/init.d/my-plugin

      3.START=50#啟動(dòng)順序

      4.

      5.start(){

      6.#啟動(dòng)項(xiàng)執(zhí)行的代碼

      7.}

      8.

      9.stop(){

      10.killallmy-plugin

      11.}

      之后還需要在rc.d目錄下做一個(gè)鏈接,啟動(dòng)時(shí)系統(tǒng)會(huì)按順序啟動(dòng)rc.d目錄下的腳本鏈接,對(duì)應(yīng)執(zhí)行init.d目錄下的啟動(dòng)腳本。

      鏈接命令如下:ln-s../init.d/my-plugin/etc/rc.d/S50my-plugin

      參考地址:

      http://blog.csdn.net/dodolzg/article/details/6279986

      附:

      /etc/rc.d/init.d和/etc/init.d聯(lián)系區(qū)別

      地址:http://www.cnblogs.com/balaamwe/archive/2012/01/16/2323665.html

      4單片機(jī)模塊

      4.1構(gòu)建STC11F02E最小系統(tǒng)

      我們選用STC11F02E單片機(jī)作為SHY的控制芯片電路部分,關(guān)于STC11F02E的參數(shù)如下:

      STC11F02E單片機(jī)為增強(qiáng)型的8051內(nèi)核,具有2KB的片內(nèi)Flash程序存儲(chǔ)器、2KB的EEPROM存儲(chǔ)器和256KB的片內(nèi)SRAM數(shù)據(jù)存儲(chǔ)器。

      這款單片機(jī)的UART(UniversalAsynchronousReceiver/Transmitter,通用異步收發(fā)器)模塊的最大特點(diǎn)就是通過(guò)配置特殊功能寄存器AUXR1中的第7位UART_P1的狀態(tài)可以使UART模塊的兩個(gè)引腳(RXD、TXD)接到P3端口的P3.0、P3.1引腳,或者接到P1端口的P1.6、P1.7引腳,從而可以充當(dāng)兩個(gè)串口使用。

      因?yàn)橹谱鱏HY需要的引腳并不是很多,所以我們只需要20引腳的單片機(jī)即可。這片STC11F02E

      符合20引腳,小巧,作為增強(qiáng)型STC芯片,功耗小。

      有兩個(gè)串口通訊接口,可一個(gè)用于下載,一個(gè)用于openwrt路由通訊。

      ▲從DATASHEET中得到STC11F02E的芯片管腳圖

      在這里,我們需要用到:

      P1.7作為串口的TX(transmit)傳送接口

      P1.6作為串口的RX(Recive)接收接口

      P1.5-P1.0用于控制L298N驅(qū)動(dòng)電路

      P3.7用于PWM控制LED燈

      P3.6/RST用于復(fù)位電路

      XTAL2

      XTAL1用于11.0592MHZ晶振

      RXD

      TXD用于在線下載線路

      ▲復(fù)位電路圖

      關(guān)于復(fù)位電路的解釋

      RST保持兩個(gè)機(jī)器周期以上的高電平時(shí)自動(dòng)復(fù)位

      ▲晶振,復(fù)位電路,VCC,GND,連接好后

      至此,STC11F02E最小系統(tǒng)完成。

      4.2中斷方式接收串口數(shù)據(jù)

      接收串口數(shù)據(jù)的目的是為了與openwrt路由完成通訊,STC11F02E要準(zhǔn)確無(wú)誤的辨識(shí)出openwrt路由發(fā)過(guò)來(lái)的指令,編制測(cè)試程序如下:

      #include

      #include

      #defineucharunsignedchar

      #defineuintunsignedint

      unsignedcharReceive(void)

      {

      unsignedchardat;

      while(RI==0);//只要接收中斷標(biāo)志位RI沒(méi)有被置“1”當(dāng)接收完畢時(shí),中斷標(biāo)志RI被置1

      //等待,直至接收完畢(RI=1)

      RI=0;//為了接收下一幀數(shù)據(jù),需將RI清0

      dat=SBUF;//將接收緩沖器中的數(shù)據(jù)存于dat

      returndat;

      }

      voidmain(void)

      {

      SCON=0x50;//REN=1允許串行接受狀態(tài),串口工作模式2

      TMOD|=0x20;//定時(shí)器1工作方式2

      TH1=0xFD;//baud/*波特率9600、數(shù)據(jù)位8、停止位1。效驗(yàn)位無(wú)(11.0592M)

      TL1=0xFD;

      TR1=1;

      REN=1;while(1)

      {

      if(Receive()==

      P1=~P1;

      }

      }

      以上程序有一個(gè)缺點(diǎn)是,并沒(méi)有使用串口中斷,其實(shí)在在這個(gè)程序上,用不用中斷處理程序?qū)τ趩纹瑱C(jī)都是一樣的,因?yàn)槭褂玫氖且粯拥拈_(kāi)銷。但是,我們?cè)谇懊嫣岬竭^(guò),完成Shy的一個(gè)目的是學(xué)習(xí),所以我們要使用串口中斷完成這個(gè)程序的編制完成串口中斷的編寫,如下:

      #include

      #include

      #defineucharunsignedchar

      #defineuintunsignedint

      voidInitUART(void)

      {

      SCON=0x50;

      TMOD|=0x20;

      TH1=0xFD;

      TL1=0xFD;

      TR1=1;

      REN=1;

      ES=1;//允許串行口中斷

      EA=1;//單片機(jī)中斷允許

      }

      unsignedcharReceive(void)

      {

      unsignedchardat;

      while(RI==0);

      RI=0;

      dat=SBUF;

      returndat;

      }

      voidmain(void)

      {

      InitUART();

      while(1){}

      }

      voidserial(void)interrupt4using3

      {

      if(Receive()==

      P1=~P1;

      }

      可以看到,程序被精簡(jiǎn),并且模塊化,主函數(shù)中幾乎沒(méi)有代碼。經(jīng)過(guò)測(cè)試,能夠正常使用。

      在這里:

      interrupt0指明是外部中斷0;

      interrupt1指明是定時(shí)器中斷0;

      interrupt2指明是外部中斷1;

      interrupt3指明是定時(shí)器中斷1;

      interrupt4指明是串行口中斷;

      using0是第0組寄存器;

      using1是第1組寄存器;

      using2是第2組寄存器;

      using3是第3組寄存器;

     

     

      51單片機(jī)的中斷編號(hào)如下:

      51單片機(jī)的中斷功能號(hào)如下:

      幾個(gè)比較重要的概念如下:

      EA、EX0、ET0、EX1、ET1、ES、ET2

      中斷名稱、中斷號(hào)、入口地址

      中斷允許控制寄存器(interruptenable)

      中斷優(yōu)先級(jí)控制寄存器(interruptpriority)

      SHY的中斷方式接收串口數(shù)據(jù)部分完畢。

      4.3PWM調(diào)光編程

      正規(guī)的解釋如下:

      脈沖寬度調(diào)制(PWM),是英文“PulseWidthModulation”的縮寫,簡(jiǎn)稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中。

      脈沖寬度調(diào)制是一種模擬控制方式,其根據(jù)相應(yīng)載荷的變化來(lái)調(diào)制晶體管柵極或基極的偏置,來(lái)實(shí)現(xiàn)開(kāi)關(guān)穩(wěn)壓電源輸出晶體管或晶體管導(dǎo)通時(shí)間的改變,這種方式能使電源的輸出電壓在工作條件變化時(shí)保持恒定,是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。

      隨著電子技術(shù)的發(fā)展,出現(xiàn)了多種PWM技術(shù),其中包括:相電壓控制PWM、脈寬PWM法、隨機(jī)PWM、SPWM法、線電壓控制PWM等,而在鎳氫電池智能充電器中采用的脈寬PWM法,它是把每一脈沖寬度均相等的脈沖列作為PWM波形,通過(guò)改變脈沖列的周期可以調(diào)頻,改變脈沖的寬度或占空比可以調(diào)壓,采用適當(dāng)控制方法即可使電壓與頻率協(xié)調(diào)變化。可以通過(guò)調(diào)整PWM的周期、PWM的占空比而達(dá)到控制充電電流的目的。

      以上參考地址:http://baike.baidu.com/view/168039.htm

      可以看到,以上的解釋非常抽象。

      在我的單片機(jī)開(kāi)發(fā)板中,有PWM的示例程序,但不是以函數(shù)的形式,改寫為函數(shù)的形式如下:

      unsignedintCYCLE=600,PWM_LOW=0;//PWM-定義周期并賦值

      voidPWM_LED(void)

      {

      LED0=1;

      Delay(60000);//特意加延時(shí),可以看到熄滅的過(guò)程

      for(PWM_LOW=1;PWM_LOW0;PWM_LOW--){//與逐漸變亮相反的過(guò)程

      LED0=0;

      Delay(PWM_LOW);

      LED0=1;

      Delay(CYCLE-PWM_LOW);

      }

      }

      ▲示例程序的流程圖

      圖片來(lái)源:《LY-51S開(kāi)發(fā)板說(shuō)明書(shū)v1.1.pdf》

      燒制入單片機(jī)后演示

      此刻,在官方的解釋中“是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)”此句,是否以不再抽象?

      基本上來(lái)說(shuō),在這個(gè)LED應(yīng)用中,是采用時(shí)分法,用時(shí)差來(lái)進(jìn)行電壓連續(xù)變化量的模擬。因?yàn)樵趩纹瑱C(jī)中,管腳的輸出不是1就是0

      如何輸出一定電壓范圍的模擬量,PWM就是解決這個(gè)問(wèn)題的一種方式。

      此刻,相信我們已經(jīng)可以猜測(cè)到了,Shy呼吸燈的變幻方式。

      5電機(jī)驅(qū)動(dòng)模塊

      5.1用L298N制作電機(jī)驅(qū)動(dòng)電路

      ▲L298N的管腳圖。

      L298N芯片是常用于驅(qū)動(dòng)直流電機(jī)和步進(jìn)電機(jī)的一種芯片,我們用于驅(qū)動(dòng)Shy的兩個(gè)直流減速電機(jī),在單片機(jī)的控制下完成前進(jìn),轉(zhuǎn)向,后退的操作。

      ▲從網(wǎng)絡(luò)上下載到L298N的線路連接圖。

    (審核編輯: 小王子)

    聲明:除特別說(shuō)明之外,新聞內(nèi)容及圖片均來(lái)自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。

    主站蜘蛛池模板: 成人中文字幕一区二区三区 | 精品无人区乱码一区二区三区手机 | 久久精品免观看国产成人 | 欧美日韩不卡在线 | 日本不卡一二三区 | 中文字幕久久久久一区 | 国内精品久久久久 | 五月激情丁香婷婷综合第九 | 漂亮大学生一级毛片 | 久久综合99 | 德国三级经典在线观看 | 国产网站麻豆精品视频 | 欧美日韩中文字幕久久伊人 | 2020国产成人精品视频人 | 婷婷六 | 青草免费免费观看视频在线 | 国产日韩精品视频 | 精品一区二区三区四区 | 美女网站免费看 | 欧美精品成人一区二区在线观看 | 高清乱码精品福利在线视频 | 立即播放免费毛片一级 | 色欲影院| 国产99视频精品免视看9 | 国产美女自拍 | 国产精品久久久久久影院 | 黄色小视频在线 | 国产偷怕自拍 | 开心色婷婷 | 99热都是精品 | 99国产在线观看 | 成人精品视频在线观看 | 日美欧韩一区二去三区 | 四虎家庭影院 | 亚洲国产成人久久77 | 日韩久久精品视频 | 狠狠五月深爱婷婷网免费 | 亚洲日本国产 | 男人的天堂久久精品激情a 男人的天堂久久精品激情 男人的天堂久久 | 久久99国产综合精品 | 欧美自拍视频 |