4 ?Arduino介紹與手機藍(lán)牙APP開發(fā)
4.1 Arduino介紹
????????在Arduino出現(xiàn)之前,意大利一所高科技技術(shù)學(xué)校的學(xué)生常常抱怨市面上的微控處理器基本上操作復(fù)雜,性價比低,無法同時適應(yīng)多種復(fù)雜多變的微傳感器。至此,2005年的某一天,該校的老師馬西莫·班茲和來這所學(xué)校研究的學(xué)者大衛(wèi)·卡泰爾斯一起討論了現(xiàn)下微控制器的相關(guān)問題。于是,兩人設(shè)計了自己的電路板,馬西莫·班茲的學(xué)生Banzi設(shè)計該電路板的編程語言。該電路板從硬件設(shè)計到軟件語言編譯僅僅只用3天便完成,并根據(jù)馬西莫·班茲的生活愛好把該電路板命名Arduino,意在懷念自己常去的一個地方。
????????Arduino單片機屬于AVR單片機,可使用C語言來編程。此外,Arduino把一些簡單的參數(shù)模塊化,使其開發(fā)難度大大降低,并支持Windows、Mac OS、Linux、甚至還有的用安卓系統(tǒng),通過連接手機開發(fā),可見Arduino跨平臺能力強。其Arduino相關(guān)的MCU型號,以及一些I/O口的相關(guān)作用說明如表4.1?Arduino常見版本。
表4.1 Arduino常見版本
MCU |
ATmega168/328 |
ATmega328 |
ATmega168/328 |
ATmega168/328 |
ATmega32u4 |
ATmega2560 |
AT91SAM3x8E |
工作電壓/IO電壓 |
5v |
5v |
5v |
5v |
5v |
5v |
3.3V |
數(shù)字IO |
14 |
14 |
14 |
14 |
20 |
14 |
14 |
模擬IO |
6 |
6 |
6 |
6 |
12 |
16 |
12 |
時鐘頻率 |
16Hz |
16Hz |
16Hz |
16Hz |
16Hz |
16Hz |
84Hz |
Flash |
16KB/32KB |
32KB |
16KB/32KB |
16KB/32KB |
32KB |
256KB |
512KB |
SRAM |
1KB/2KB |
2KB |
1KB/2KB |
1KB/2KB |
2.5KB |
8K |
96KB |
EEPROM |
512bytes/1KB |
1KB |
512bytes/1KB |
512bytes/1KB |
1KB |
4KB |
- |
USB芯片 |
FTDIFT232RL |
ATmega16u2 |
FTDIFT232RL |
- |
- |
ATmega16u2 |
- |
其它特點 |
早起Arduino版本現(xiàn)已停產(chǎn) |
目前使用人數(shù)最多的型號適合初學(xué)者使用 |
功能和 Duemilanove一致但更為小巧 |
最小的Arduino控制器但下載程序得搭配外部的下載器 |
可以模擬鍵盤鼠標(biāo)等USB設(shè)備 |
配置最高的8位Arduino控制器 |
32位Arduino控制器帶有模擬輸出引腳2個CAN總線 |
????????本課題使用的Arduino UNO用的芯片型號便是Atmega 328,根據(jù)表4.1不能發(fā)現(xiàn)該Arduino的數(shù)字I/O口以及模擬I/O口數(shù),以及一些實驗中需要注意的參數(shù)等等。
4.1.1 Arduino UNO R3管腳圖
????????如圖4.1.1所示,Arduino擁有6路數(shù)字I/O口可以直接使用PWM輸出;并且Arduino支持SPI通信;模擬I/O口D18、D19可以使用I2C總線連接OLED顯示屏的SDA和SCL;Arduino板還可以進(jìn)行異步全雙工通信,大大解決了很多單片機只能發(fā)送或者接收的缺陷,使得該單片機進(jìn)行一邊發(fā)送數(shù)據(jù)一邊接收數(shù)據(jù)。
圖4.1.1 Arduino UNO管腳圖
4.1.2 Arduino UNO R3實物圖
????????如圖4.1.2所示,Arduino UNO R3主板擁有14個數(shù)字I/O口,并且多數(shù)I/O口都擁有二個及其以上特定輸出。如:有的數(shù)據(jù)I/O口不僅可以用來直接輸出PWM信號,而且可以用來做SPI通信插口,可見其I/O口的功能強大。除此之外,該主板還有6個模擬I/O口,支持TX/RX全雙工通信,可以通過USB口或者外接電源口供電,也可以經(jīng)過VIN與GND或者VCC與GND供電,其Arduino輸出電壓可以選擇3.3V的DC電壓或者5V的DC電壓,可直接通過USB口載代碼,相對方便。
圖4.1.2 Arduino UNO R3實物圖
4.1.3 Arduino編程介紹
????????雖然說Arduino的編程和很多類型單片機的編程差不多,都是使用常見的C語言編譯,但同時也要學(xué)會區(qū)分于其他編程,Arduino在使用時常常要使用封裝函數(shù),從而減輕其工作量,在其書寫時還應(yīng)注意其格式。如所要使用引腳的引腳以及其引腳模式要在void?setup()函數(shù)里面注明,而主函數(shù)要寫進(jìn)void?loop()函數(shù)里面才能連續(xù)運行。由于Arduino很多庫函數(shù)都是開源的,一些常見的功能可直接調(diào)用庫函數(shù),要實現(xiàn)一些拓展功能也可以在網(wǎng)上下載其庫函數(shù)來調(diào)用,如:紅外控制函數(shù)庫,舵機控制函數(shù)庫以及LCD函數(shù)庫等等。
4.2 手機藍(lán)牙APP的開發(fā)
????????本課題開始只使用了紅外遙控器控制,但由于實驗紅外遙控與小車所設(shè)置的PWM信號產(chǎn)生影響,對實驗中很多數(shù)據(jù)產(chǎn)生了一定的影響,故而使用了簡單易學(xué)的AppInventor開發(fā)了一款藍(lán)牙遙控APP,該AppInventor支持在線編譯,編譯完成即可以直接直接打包APK,然后通過掃碼下載到手機里面安裝即可?,F(xiàn)在簡單的講述一下如何在AppInventor開發(fā)APP,首先通過QQ登錄AppInventor官網(wǎng),創(chuàng)建新的項目,先是設(shè)計前端頁面,可直接把需要的布局、按鍵、標(biāo)簽、滑動模塊、計時器、藍(lán)牙客戶端等拉進(jìn)編輯頁面,根據(jù)所需要的效果改動按鍵、標(biāo)簽、布局的大小形狀等,編輯好前端,下面便是后端邏輯層,邏輯層首先要確定APP運行的先后問題,以及APP在手機上面顯示時的布局大小、形狀、點擊按鍵時運行哪一步都要有明確的順序問題。如本課題的藍(lán)牙APP很簡單,主要二個頁面便完成,一個是按鍵選擇頁面,一個是藍(lán)牙選擇頁面。當(dāng)打開APP進(jìn)入的是按鍵選擇頁面,其大多數(shù)按鍵標(biāo)簽等的布局前端設(shè)計好了,后端主要對按鍵的點擊狀態(tài)做出判斷,先要初始化按鍵以及藍(lán)牙的狀態(tài),并設(shè)置好需要用到的按鍵、列表、計時器的狀態(tài);設(shè)置按下按鍵時顯示藍(lán)牙選擇列表;當(dāng)選擇列表里對應(yīng)的藍(lán)牙對應(yīng)的藍(lán)牙時,顯示對應(yīng)的連接狀態(tài);并通過計算器定時獲取接收到的信息并在標(biāo)簽中顯示出來,下面便主要是調(diào)用相應(yīng)的按鍵狀態(tài)發(fā)送設(shè)置好的字符串,編程主要代碼如圖4.2.1所示。
圖4.2.1 藍(lán)牙APP主要編程代碼
????????最終,根據(jù)本課題所需要的功能做了如圖4.2.2所示的手機藍(lán)牙APP,該APP可以通過發(fā)送指令控制智能小車,也可以通過按鍵來控制小車的運動以及速度,通過接收的數(shù)據(jù)可以觀看智能小車的實時狀況如小車運動狀態(tài)、運動模式、以及測距距離等等。
圖4.2.2 藍(lán)牙APP手機展示效果圖文章來源:http://www.zghlxwxcb.cn/news/detail-780291.html
4.3 本章小結(jié)
????????本章講述了Arduino的發(fā)展歷程以及Arduino一些引腳的功能利用;并對Arduino的一些相關(guān)編程規(guī)則做出了介紹;還描述了如何使用AppInventor開發(fā)藍(lán)牙APP,并對該APP的使用及其能實現(xiàn)的功能作出一系列的介紹。文章來源地址http://www.zghlxwxcb.cn/news/detail-780291.html
到了這里,關(guān)于智能尋跡避障清障機器人設(shè)計(第四章)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!