制作會(huì)呼吸的WIFI機(jī)器人_第1頁
制作會(huì)呼吸的WIFI機(jī)器人_第2頁
制作會(huì)呼吸的WIFI機(jī)器人_第3頁
制作會(huì)呼吸的WIFI機(jī)器人_第4頁
制作會(huì)呼吸的WIFI機(jī)器人_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

-.z1

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

準(zhǔn)備硬件1.2

刷系統(tǒng)1.3

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

安裝攝像頭2

Linu*平臺(tái):安裝與串口調(diào)試2.1

什么是ser2net.ipk軟件包2.2

安裝ser2net.ipk軟件包3

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

單片機(jī)模塊4.1

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

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

PWM調(diào)光編程5

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

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

功能演示7

DIYer簽到處1Linu*平臺(tái):線路連接與攝像頭驅(qū)動(dòng)1.1準(zhǔn)備硬件首先要選擇能夠加載Openwrt平臺(tái)的硬件設(shè)備,其實(shí)能加載LINU*系統(tǒng)的設(shè)備非常常見,比方我們家庭用的路由器。這里要注意的是路由器的選擇,首先,路由器要能夠加載openwrt系統(tǒng),其次,要具有USB口以及TTL接口。一般來講,我們選擇的型號(hào)是DB120或者RG100A-AA,我選擇的型號(hào)是RG100A-AA。1.2刷系統(tǒng)得到路由器后,首先要做的事是給路由器換個(gè)系統(tǒng),即通俗所說的“刷機(jī)〞,關(guān)于網(wǎng)絡(luò)上RG100A-AA刷機(jī)的教程很多,這里不再贅述,不過需要補(bǔ)充的是,對(duì)于擁有單片機(jī)的愛好者,大可不必專門購置USB-TTL線,我們手中的單片機(jī)的開發(fā)板就可以為路由器與個(gè)人PC進(jìn)展連接,下面給出開發(fā)板與路由器TTL線的連線圖,,路由器從左到右依次是:VCC,GND,T*,R*,這里注意一定不要接VCC線。我的系統(tǒng)是Openwrtbackfire10.03.1RC6測試單片機(jī)的開發(fā)板是否連接正確,可以通過PUTYY的串口連接方式進(jìn)展連接,注意這里的波特率是:115200口的選擇要查看個(gè)人PC中的設(shè)備管理器,以連接的為準(zhǔn)。1.3設(shè)置局域網(wǎng)絡(luò)刷完系統(tǒng)后,設(shè)置個(gè)人PC的網(wǎng)絡(luò)IP:192.168.1.*,以及子網(wǎng)掩碼。這里的*是除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)文件為:運(yùn)行winscp,將IPK包上傳到根目錄下,注意,這里要選擇SCP方式。成功連接后。winscp非常方便,拖拽文件即可,跟FTP方式完全一樣。我的攝像頭。上傳完畢后,運(yùn)行PUTTY,進(jìn)展安裝,安裝口令:opkginstall***.ipk安裝完畢后可以用dmesg命令進(jìn)展查看是否安裝完成,或者直接在瀏覽器中輸入以圖形化的方式進(jìn)展查看。安裝完驅(qū)動(dòng)后,安裝MJPG-STREAMER,這是一個(gè)用于查看視頻IPK程序,可以直接在瀏覽器中查看攝像頭捕捉到的圖像,注意安裝完畢后要開啟效勞,或者也可以設(shè)置為自自動(dòng),這里不再贅述。這里我采用了網(wǎng)絡(luò)上研究智能機(jī)器人的前人Liuviking的程序來捕捉MJPG-STREAMER的圖像,運(yùn)行此程序要先安裝,DOTNET3.5,運(yùn)行后成功便如下圖:至此,攝像頭的安裝完畢。2Linu*平臺(tái):安裝與串口調(diào)試2.1什么是ser2net.ipk軟件包首先解釋一下什么是ser2net.ipk軟件包。這是一個(gè)可以通過個(gè)人PC向路由器的指定端口發(fā)送數(shù)據(jù),然后路由原封不動(dòng)的將數(shù)據(jù)發(fā)送到路由的TTL接口的程序。當(dāng)安裝完這個(gè)程序后,我們就可以通過編制的程序向路由的TTL口發(fā)送串行數(shù)據(jù),意義在于:單片機(jī)就可以承受路由發(fā)送的串行數(shù)據(jù)進(jìn)展各種控制。2.2安裝ser2net.ipk軟件包下面簡單的講解如何在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í)行opkgupdateopkginstall軟件包地址同昨日安裝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:9600NONE1STOPBIT8DATABITS*ON*OFFLOCAL-RTSCTS*2002:raw:600:/dev/ttyS1:9600NONE1STOPBIT8DATABITS*ON*OFFLOCAL-RTSCTS注意,這里"*"代表的是屏蔽,我們修改的是非屏蔽語句,可以看到,上位機(jī)發(fā)送的端口是2001,這就是我們需要發(fā)送的端口號(hào),波特率是9600,其它的略。設(shè)置完畢后記得保存退出,然后這里要執(zhí)行一次ser2net,以開啟效勞。一切設(shè)置妥當(dāng)后,我們?cè)俅谓栌胠iuviking的程序進(jìn)展串口通訊的測試,運(yùn)行l(wèi)iuviking的程序,然后再運(yùn)行“串口調(diào)試助手〞,在程序中點(diǎn)擊發(fā)送串口數(shù)據(jù),可以看到在“串口調(diào)試助手〞,有正確的數(shù)據(jù)輸出,至此,Shy的串口連接局部設(shè)置完畢。3Linu*平臺(tái):openwrt系統(tǒng)中添加自啟動(dòng)添加自啟動(dòng)項(xiàng)的目的是為了在SHY啟動(dòng)的時(shí)候能夠自動(dòng)啟動(dòng)更多的效勞,配合UCI命令。在/etc/init.d里添加需要啟動(dòng)的shell腳本,假設(shè)名字為my-plugin。接下來模仿該目錄下其他啟動(dòng)腳本的格式,添加你的代碼。[cpp]viewplaincopyprint?1.*!/bin/sh/etc/rc.mon2.*/init.d/my-plugin3.START=50*啟動(dòng)順序4.5.start(){6.*啟動(dòng)項(xiàng)執(zhí)行的代碼7.}8.9.stop(){10.killallmy-plugin11.}之后還需要在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參考地址:附:/etc/rc.d/init.d和/etc/init.d聯(lián)系區(qū)別地址:.blogs./balaamwe/archive/2012/01/16/2323665.html4單片機(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)就是通過配置特殊功能存放器AU*R1中的第7位UART_P1的狀態(tài)可以使UART模塊的兩個(gè)引腳〔R*D、T*D〕接到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作為串口的T*(transmit)傳送接口P1.6作為串口的R*(Recive)接收接口P1.5-P1.0用于控制L298N驅(qū)動(dòng)電路P3.7用于PWM控制LED燈P3.6/RST用于復(fù)位電路*TAL2*TAL1用于11.0592MHZ晶振R*DT*D用于在線下載線路復(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)確無誤的辨識(shí)出openwrt路由發(fā)過來的指令,編制測試程序如下:*include*include*defineucharunsignedchar*defineuintunsignedintunsignedcharReceive(void){unsignedchardat;while(RI==0);//只要接收中斷標(biāo)志位RI沒有被置“1〞當(dāng)接收完畢時(shí),中斷標(biāo)志RI被置1//等待,直至接收完畢〔RI=1〕RI=0;//為了接收下一幀數(shù)據(jù),需將RI清0dat=SBUF;//將接收緩沖器中的數(shù)據(jù)存于datreturndat;}voidmain(void){SCON=0*50;//REN=1允許串行承受狀態(tài),串口工作模式2TMOD|=0*20;//定時(shí)器1工作方式2TH1=0*FD;//baud/*波特率9600、數(shù)據(jù)位8、停頓位1。效驗(yàn)位無(11.0592M)TL1=0*FD;TR1=1;REN=1;while(1){if(Receive()=='W')P1=~P1;}}以上程序有一個(gè)缺點(diǎn)是,并沒有使用串口中斷,其實(shí)在在這個(gè)程序上,用不用中斷處理程序?qū)τ趩纹瑱C(jī)都是一樣的,因?yàn)槭褂玫氖且粯拥拈_銷。但是,我們?cè)谇懊嫣岬竭^,完成Shy的一個(gè)目的是學(xué)習(xí),所以我們要使用串口中斷完成這個(gè)程序的編制完成串口中斷的編寫,如下:*include*include*defineucharunsignedchar*defineuintunsignedintvoidInitUART(void){SCON=0*50;TMOD|=0*20;TH1=0*FD;TL1=0*FD;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()=='W')P1=~P1;}可以看到,程序被精簡,并且模塊化,主函數(shù)中幾乎沒有代碼。經(jīng)過測試,能夠正常使用。在這里: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、E*0、ET0、E*1、ET1、ES、ET2中斷名稱、中斷號(hào)、入口地址中斷允許控制存放器〔interruptenable〕中斷優(yōu)先級(jí)控制存放器〔interruptpriority〕SHY的中斷方式接收串口數(shù)據(jù)局部完畢。4.3PWM調(diào)光編程正規(guī)的解釋如下:脈沖寬度調(diào)制(PWM),是英文“PulseWidthModulation〞的縮寫,簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)展控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換的許多領(lǐng)域中。脈沖寬度調(diào)制是一種模擬控制方式,其根據(jù)相應(yīng)載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實(shí)現(xiàn)開關(guān)穩(wěn)壓電源輸出晶體管或晶體管導(dǎo)通時(shí)間的改變,這種方式能使電源的輸出電壓在工作條件變化時(shí)保持恒定,是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)展控制的一種非常有效的技術(shù)。隨著電子技術(shù)的開展,出現(xiàn)了多種PWM技術(shù),其中包括:相電壓控制PWM、脈寬PWM法、隨機(jī)PWM、SPWM法、線電壓控制PWM等,而在鎳氫電池智能充電器中采用的脈寬PWM法,它是把每一脈沖寬度均相等的脈沖列作為PWM波形,通過改變脈沖列的周期可以調(diào)頻,改變脈沖的寬度或占空比可以調(diào)壓,采用適當(dāng)控制方法即可使電壓與頻率協(xié)調(diào)變化??梢酝ㄟ^調(diào)整PWM的周期、PWM的占空比而到達(dá)控制充電電流的目的。以上參考地址:baike.baidu./view/168039.htm可以看到,以上的解釋非常抽象。在我的單片機(jī)開發(fā)板中,有PWM的例如程序,但不是以函數(shù)的形式,改寫為函數(shù)的形式如下:unsignedintCYCLE=600,PWM_LOW=0;//PWM-定義周期并賦值voidPWM_LED(void){LED0=1;Delay(60000);//特意加延時(shí),可以看到熄滅的過程for(PWM_LOW=1;PWM_LOW0;PWM_LOW--){//與逐漸變亮相反的過程LED0=0;Delay(PWM_LOW);LED0=1;Delay(CYCLE-PWM_LOW);}}例如程序的流程圖圖片來源:?LY-51S開發(fā)板說明書v1.1.pdf?燒制入單片機(jī)后演示此刻,在官方的解釋中“是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)展控制的一種非常有效的技術(shù)〞此句,是否以不再抽象.根本上來說,在這個(gè)LED應(yīng)用中,是采用時(shí)分法,用時(shí)差來進(jìn)展電壓連續(xù)變化量的模擬。因?yàn)樵趩纹瑱C(jī)中,管腳的輸出不是1就是0如何輸出一定電壓*圍的模擬量,PWM就是解決這個(gè)問題的一種

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論