基于移動(dòng)機(jī)器人的嵌入式開(kāi)發(fā) 課件 19-嵌入式智能車型機(jī)器人_第1頁(yè)
基于移動(dòng)機(jī)器人的嵌入式開(kāi)發(fā) 課件 19-嵌入式智能車型機(jī)器人_第2頁(yè)
基于移動(dòng)機(jī)器人的嵌入式開(kāi)發(fā) 課件 19-嵌入式智能車型機(jī)器人_第3頁(yè)
基于移動(dòng)機(jī)器人的嵌入式開(kāi)發(fā) 課件 19-嵌入式智能車型機(jī)器人_第4頁(yè)
基于移動(dòng)機(jī)器人的嵌入式開(kāi)發(fā) 課件 19-嵌入式智能車型機(jī)器人_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

北京工業(yè)職業(yè)技術(shù)學(xué)院嵌入式系統(tǒng)應(yīng)用主講:

XXX老師嵌入式智能車型機(jī)器人學(xué)習(xí)目標(biāo)掌握了解熟悉嵌入式車型機(jī)器人各功能軟件設(shè)計(jì)嵌入式車型機(jī)器人的STM32設(shè)計(jì)13車型機(jī)器人的軟件組成車型機(jī)器人的WI-FI2車型機(jī)器人的各功能模塊的功能設(shè)計(jì)主講內(nèi)容主講內(nèi)容Speechcontent19.2STM32設(shè)計(jì)19.3車型機(jī)器人軟件設(shè)計(jì)19.1項(xiàng)目介紹

本節(jié)主要是實(shí)現(xiàn)Android手機(jī)無(wú)線控制嵌入式智能車型機(jī)器人的案例開(kāi)發(fā)。在開(kāi)發(fā)之前首先介紹Android手機(jī)編程中Wi-Fi的基礎(chǔ)知識(shí)。Wi-Fi(WirelessFidelity)又稱802.11b標(biāo)準(zhǔn),是IEEE定義的無(wú)線網(wǎng)絡(luò)通信的工業(yè)標(biāo)準(zhǔn)。該技術(shù)使用的是2.4GHz附近的頻段。項(xiàng)目介紹(1)Wi-Fi主要特性如下:速度快,最高帶寬為11Mbit/s。可靠性高,在信號(hào)較弱或有干擾的情況下,帶寬可自動(dòng)調(diào)整為5.5Mbit/s、2Mbit/s或1Mbit/s,有效地保障了網(wǎng)絡(luò)的穩(wěn)定性和可靠性。距離較遠(yuǎn),在開(kāi)放性區(qū)域,通信距離可達(dá)305m,在封閉性區(qū)域,通信距離為100m左右。方便與現(xiàn)有的有線以太網(wǎng)絡(luò)整合,組網(wǎng)的成本更低。項(xiàng)目介紹(2)在Android中Wi-Fi模塊自下向上可以分為5層:硬件驅(qū)動(dòng)程序、wpa_supplicant、JNI、Wi-FiAPI、Wi-FiSettings應(yīng)用程序。wpa_supplication是一個(gè)開(kāi)源庫(kù),是Android為實(shí)現(xiàn)Wi-Fi功能的基礎(chǔ)。它從上層接到命令后,通過(guò)Socket與硬件驅(qū)動(dòng)進(jìn)行通信,操作硬件完成需要的操作。JNI實(shí)現(xiàn)了Java代碼與其他代碼的交互,使得在Java虛擬機(jī)中運(yùn)行的Java代碼能夠與其他語(yǔ)言編寫的應(yīng)用程序和庫(kù)進(jìn)行交互。在Android中,JNI可以讓Java程序調(diào)用C程序。項(xiàng)目介紹Wi-FiAPI使引用程序可以使用Wi-Fi功能。Wi-FiSettings應(yīng)用程序是Android中自帶的一個(gè)應(yīng)用程序,選擇手機(jī)Settings→Wireless&networks→Wi-Fi,可以手動(dòng)打開(kāi)或關(guān)閉Wi-Fi功能。Wi-Fi功能打開(kāi)后,它會(huì)自動(dòng)搜索周圍的無(wú)線網(wǎng)絡(luò),并以列表的形式顯示,供用戶選擇。默認(rèn)會(huì)連接用戶上一次成功連接的無(wú)線網(wǎng)絡(luò)。嵌入式車型機(jī)器人與Android移動(dòng)終端通過(guò)Wi-Fi連接,連接成功后,需要在Android應(yīng)用程序中對(duì)Wi-Fi進(jìn)行管理,獲得遠(yuǎn)端設(shè)備IP地址,以供建立Socket通信時(shí)使用。項(xiàng)目介紹(3)在Android中,主要使用wifiManager類管理Wi-Fi連接。其中定義了如下所述的一些常用方法。

getConfiguredNetWorks():該方法用于客戶端獲取網(wǎng)絡(luò)連接的狀態(tài)。

getConnectionInfo():該方法用于獲取當(dāng)前連接的信息。

getDhcpInfo():該方法用于獲取DHCP的信息。

getScanResulats():該方法用于獲取掃描測(cè)試的結(jié)果。

getWifiState():該方法用于獲取一個(gè)Wi-Fi接入點(diǎn)是否有效。項(xiàng)目介紹 isWifiEnabled():該方法用于判斷一個(gè)Wi-Fi連接是否有效。

pingSupplicant():該方法用于查看客戶后臺(tái)程序是否有響應(yīng)請(qǐng)求。

ressociate():該方法用于重連到接入點(diǎn),即使已經(jīng)連接上了。

reconnect():該方法用于在沒(méi)有Wi-Fi連接的情況下重新連接。

removeNetwork(intnetId):該方法用于移除某一個(gè)特定網(wǎng)絡(luò)。

saveConfiguration():該方法用于保留一個(gè)配置信息。

setWifiEnabled(booleanenabled):該方法用于讓一個(gè)連接生效或失效。

startScan():該方法用于開(kāi)始掃描。項(xiàng)目介紹 updateNetwork(WifiConfigurationconfig):該方法用于更新一個(gè)網(wǎng)絡(luò)連接的信息。需要指出的是,Wi-Fi網(wǎng)卡的狀態(tài)是由一系列整型常量來(lái)表示的。

WIFI_STATE_DISABLED:Wi-Fi網(wǎng)卡不可用,用整型常量1表示。

WIFI_STATE_DISABLING:Wi-Fi網(wǎng)卡正在關(guān)閉,用整型常量0表示。

WIFI_STATE_ENABLED:Wi-Fi網(wǎng)卡可用,用整型常量3表示。 WIFI_STATE_UNKNOW:未知網(wǎng)卡狀態(tài),用整型常量4表示。項(xiàng)目介紹此外,wifiManager還提供了一個(gè)子類wifiManagerLock。wifiManagerLock的作用如下:在普通的狀態(tài)下,如果Wi-Fi的狀態(tài)處于閑置,那么網(wǎng)絡(luò)將會(huì)暫時(shí)中斷;如果把當(dāng)前的網(wǎng)絡(luò)狀態(tài)鎖上,那么Wi-Fi連通將會(huì)保持在一定狀態(tài),在結(jié)束鎖定之后,才會(huì)恢復(fù)常態(tài)。項(xiàng)目介紹主講內(nèi)容主講內(nèi)容Speechcontent19.1項(xiàng)目介紹19.3車型機(jī)器人軟件設(shè)計(jì)19.2STM32設(shè)計(jì)編寫Android程序之前,讓我們首先回顧和再次學(xué)習(xí)STM32中應(yīng)用的技術(shù)。19.2.1Wi-Fi轉(zhuǎn)串口通信嵌入式車型機(jī)器人與Android智能移動(dòng)終端是通過(guò)核心板上的Wi-Fi模塊進(jìn)行連接的。下圖為Wi-Fi轉(zhuǎn)串口模塊電路原理圖。從Wi-Fi轉(zhuǎn)串口模塊電路原理圖中,可以看出Wi-Fi與STM32之間是通過(guò)串口進(jìn)行通信的。其中,Wi-Fi轉(zhuǎn)串口模塊的UART_TX與STM32的GPIOA10連接,UART_RX與STM32的GPIOA9連接。在9.3節(jié)中,已經(jīng)對(duì)串口通信進(jìn)行過(guò)講解,詳情可參考9.3節(jié)相關(guān)內(nèi)容。STM32設(shè)計(jì)STM32設(shè)計(jì)19.2.2電動(dòng)機(jī)驅(qū)動(dòng)如果想要嵌入式智能車型機(jī)器人行進(jìn),那么就要編寫電動(dòng)機(jī)驅(qū)動(dòng)。嵌入式車型機(jī)器人電動(dòng)機(jī)的驅(qū)動(dòng)芯片是L298N,該芯片內(nèi)部是H橋電路,可以控制嵌入式車型機(jī)器人電動(dòng)機(jī)的正反轉(zhuǎn)。嵌入式車型機(jī)器人的PWM驅(qū)動(dòng)是控制轉(zhuǎn)向的必要條件,同時(shí)還可通過(guò)PWM控制小車的速度。硬件資源連接請(qǐng)參考2.3節(jié)核心板與驅(qū)動(dòng)板連接。建立項(xiàng)目工程后,需要將sys文件夾、uart文件夾、delay文件夾導(dǎo)入項(xiàng)目中。下面通過(guò)代碼具體講解電動(dòng)機(jī)驅(qū)動(dòng)程序是怎么編寫的。(1)在HARDWARE文件夾下創(chuàng)建文件夾DJQD,在DJQD文件夾下創(chuàng)建文件djqd.h。該接口文件的具體代碼見(jiàn)P173.STM32設(shè)計(jì)(2)在DJQD文件夾下創(chuàng)建文件djqd.c。具體代碼見(jiàn)P174-P17619.2.3循跡驅(qū)動(dòng)嵌入式車型機(jī)器人的一個(gè)重要功能就是循跡。在為其準(zhǔn)備的專用地圖上,有白底黑線的跑道,黑線的寬度大概為3cm。在嵌入式車型機(jī)器人循跡板上有8個(gè)光電對(duì)管,當(dāng)光電對(duì)管照到黑白的跑道上面,會(huì)輸出不同的電平,一般就是高低電平。當(dāng)照到黑線時(shí)輸出低電平,照到白線時(shí)輸出高電平,從而可以識(shí)別路線。循跡板上有8個(gè)指示燈,分別對(duì)應(yīng)8個(gè)光電對(duì)管,當(dāng)光電對(duì)管在黑線上時(shí),對(duì)應(yīng)的指示燈亮。注意:由于光電傳感器的靈敏度和高度不一樣,環(huán)境光照強(qiáng)度也不一樣,所以可通過(guò)適當(dāng)調(diào)節(jié)傳感器上響應(yīng)的電位器,使其能夠在黑線上輸出低電平,白線上輸出高電平。STM32設(shè)計(jì)關(guān)于硬件資源連接,可參考2.2節(jié)和2.3節(jié)內(nèi)容。建立項(xiàng)目工程后,需要將sys文件夾、uart文件夾、delay文件夾導(dǎo)入項(xiàng)目中。下面通過(guò)代碼具體講解循跡驅(qū)動(dòng)的實(shí)現(xiàn)。(1)在HARDWARE文件夾下創(chuàng)建文件夾XJ,在XJ文件夾下創(chuàng)建文件xj.h。該接口文件的具體代碼見(jiàn)P176.(2)在XJ文件夾下創(chuàng)建文件xj.c。具體代碼見(jiàn)P176-P179.STM32設(shè)計(jì)19.2.4紅外發(fā)射驅(qū)動(dòng)紅外線屬于一種電磁射線,其特性等同于無(wú)線電或X射線。人眼可見(jiàn)的光波是380~780nm,發(fā)射波長(zhǎng)為780nm~1mm的長(zhǎng)射線稱為紅外線。盡管肉眼看不到,但利用紅外線發(fā)送和接收裝置卻可以發(fā)送和接收紅外線信號(hào),實(shí)施紅外線通信。利用紅外線通信無(wú)須連線,只需將兩設(shè)備的紅外線裝置對(duì)正即可。紅外線通信方向性很強(qiáng),適用于近距離的無(wú)線傳輸。嵌入式車型機(jī)器人可通過(guò)任務(wù)板上的紅外發(fā)射頭,發(fā)射紅外控制碼,已具有控制紅外報(bào)警器、調(diào)節(jié)光照強(qiáng)度、控制電子相框翻頁(yè)和控制隧道風(fēng)扇的功能。STM32設(shè)計(jì)硬件資源連接,可參考2.5節(jié)中內(nèi)容。建立項(xiàng)目工程后,需要將sys文件夾、uart文件夾、delay文件夾導(dǎo)入項(xiàng)目中。下面通過(guò)代碼介紹紅外發(fā)射驅(qū)動(dòng)的實(shí)現(xiàn)。(1)在HARDWARE文件夾下創(chuàng)建文件夾HW,在HW文件夾下創(chuàng)建文件hw.h。該接口文件的具體代碼見(jiàn)P179.(2)在HW文件夾下創(chuàng)建文件hw.c。具體代碼見(jiàn)P179-P180.19.2.5主要業(yè)務(wù)邏輯完成以上驅(qū)動(dòng)代碼編寫以后,在項(xiàng)目中創(chuàng)建一個(gè)USER文件夾,在該文件夾下創(chuàng)建文件test.c,用于編寫主要業(yè)務(wù)邏輯。具體代碼見(jiàn)P180-P185.STM32設(shè)計(jì)該程序的功能是:當(dāng)Android智能移動(dòng)端程序編寫好以后,可以通過(guò)Android智能移動(dòng)端控制嵌入式智能車型機(jī)器人前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、循跡、紅外發(fā)射等操作。STM32設(shè)計(jì)主講內(nèi)容主講內(nèi)容Speechcontent19.1項(xiàng)目介紹19.3STM32設(shè)計(jì)19.3車型機(jī)器人軟件設(shè)計(jì)19.3.1AndroidUI設(shè)計(jì)下圖為Android智能移動(dòng)終端的應(yīng)用程序界面。UI界面的具體代碼參考P186-P189.車型機(jī)器人軟件設(shè)計(jì)以上代碼實(shí)現(xiàn)了Android智能移動(dòng)終端上的UI界面顯示。這里要注意,界面上顯示的文字有部分是在values文件下的strings.xml文件中定義的。以下為strings.xml中的具體代碼。<resources><stringname="app_name">Control_Car_Command</string><stringname="menu_settings">Settings</string><stringname="title_activity_main">小車控制</string>

<!--小車控制界面--><stringname="title_activity_car">小車控制</string>車型機(jī)器人軟件設(shè)計(jì)<stringname="title">小車控制</string><stringname="wave">超聲波</string><stringname="light">光照強(qiáng)度</string><stringname="save">顯示數(shù)據(jù)</string><stringname="tracking">循跡</string><stringname="back">倒車</string><stringname="speed">速度檔</string><stringname="go">前進(jìn)</string>車型機(jī)器人軟件設(shè)計(jì)

<stringname="hou">后退</string><stringname="car_left">左轉(zhuǎn)</string><stringname="car_right">右轉(zhuǎn)</string><stringname="stop">停車</string><stringname="infrared">紅外</string><stringname="lamp">雙色燈</string><stringname="buzzer">蜂鳴器</string></resources>車型機(jī)器人軟件設(shè)計(jì)19.3.2Android功能實(shí)現(xiàn)1.獲取嵌入式車型機(jī)器人IP地址嵌入式車型機(jī)器人與Android智能移動(dòng)終端是通過(guò)Wi-Fi進(jìn)行連接的。連接好以后,需要建立Socket通信。建立Socket通信的前提是獲得嵌入式車型機(jī)器人的IP地址。以下為獲取嵌入式車型機(jī)器人IP地址的代碼段://獲取wifiManager類對(duì)象wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);//獲取DHCP信息dhcpInfo=wifiManager.getDhcpInfo();//通過(guò)DHCP的網(wǎng)光,獲取嵌入式車型機(jī)器人IP地址IP=Formatter.formatIpAddress(dhcpInfo.gateway);車型機(jī)器人軟件設(shè)計(jì)2.Socket通信獲得嵌入式車型機(jī)器人IP地址以后,就可以建立Socket通信,傳輸數(shù)據(jù)。首先,看一下Socket連接方法是如何實(shí)現(xiàn)的。具體代碼如下:/***方法名:connect*描述:實(shí)現(xiàn)數(shù)據(jù)通信連接*參數(shù):* context上下文*IP嵌入式車型機(jī)器人IP地址* */publicvoidconnect(Contextcontext,StringIP){ //獲取上下文

this.context=context;車型機(jī)器人軟件設(shè)計(jì)try{ //獲取Socket對(duì)象

socket=newSocket(IP,port); //獲取字節(jié)輸出流

dataOutputStream=newDataOutputStream(socket.getOutputStream()); //獲取字節(jié)輸出流

dataInputStream=newDataInputStream(socket.getInputStream()); }catch(UnknownHostExceptione){ e.printStackTrace(); }catch(IOException

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論