版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1三種語言控制樹莓派GPIO樹莓派的IO共有26根Pin,排列如圖1所示,其中包括GPIO8個Pin,SPI5個Pin,串口2個Pin,I2C2個Pin,其余為DNC和電源Pin。為比擬Python、Java、C在樹莓派上的開發(fā)特點(diǎn),在GPIO上連接LED和限流電阻,分別使用三種語言讓LED點(diǎn)亮一秒然后熄滅。1.1Python控制GPIO樹莓派自帶Python開發(fā)環(huán)境,它推薦使用Python語言進(jìn)行開發(fā)工作,控制GPIO需要先安裝RPi.GPIO庫,安裝完成后,點(diǎn)亮與熄滅LED的Python代碼如下[2]。importRPi.GPIOasGPIO#導(dǎo)入GPIO庫importtime#導(dǎo)入時(shí)鐘庫GPIO.setmode〔GPIO.BCM〕#使用BCM的I/O命名GPIO.setup〔18,GPIO.OUT〕#設(shè)BCMI/0的18端口為輸出口GPIO.output〔18,GPIO.HIGH〕#設(shè)為高電平,燈亮time.sleep〔1〕#亮1秒GPIO.output〔18,GPIO.LOW〕#設(shè)為低電平,燈滅1.2Java控制GPIO最新的樹莓派Raspbian操作系統(tǒng)已經(jīng)自帶jre運(yùn)行環(huán)境,安裝pi4j的類庫后,使用Java控制LED的代碼如下。finalGpioControllergpio=GpioFactory.getInstance〔〕;//GPIO對象finalGpioPinDigitalOutputledpin=visionDigitalOutputPin〔RaspiPin.GPIO_01,"LED",PinState.HIGH〕;//ledpin對象,設(shè)置為輸出口、高電平ledpin.high〔〕;//設(shè)ledpin為高電平,燈亮Thread.sleep〔1000〕;//延時(shí)1秒ledpin.low〔〕;//設(shè)置低電平,燈滅1.3C控制GPIO安裝BCM2835CLibrary后,使用文本編輯器編寫以下代碼,存為led.c,然后用gcc編譯,控制LED的代碼如下。#include#defineLEDRPI_GPIO_P1_12//LED對應(yīng)bcm2835庫中的P1_12引腳voidmain〔intargc,char**argv〕{bcm2835_init〔〕;//初始化GPIO端口bcm2835_gpio_fsel〔LED,BCM2835_GPIO_FSEL_OUTP〕;//設(shè)為輸出bcm2835_gpio_write〔LED,HIGH〕;//設(shè)LED引腳為高電平,燈亮bcm2835_delay〔1000〕;//亮一秒bcm2835_gpio_write〔LED,LOW〕;//設(shè)置低電平,燈滅}1.4比擬與分析上述三個程序都運(yùn)行于樹莓派官方提供的Linux操作系統(tǒng)Raspbian中,其中樹莓派推薦的Python語言代碼最為簡潔直觀,接近于人的自然語言,而對于大量已經(jīng)掌握J(rèn)ava語言的程序員而言,Java代碼一目了然,且不需要學(xué)習(xí)Python語言。由于有BCM2835CLibrary庫的支持,C代碼的實(shí)現(xiàn)也不難,不需要自己寫GPIO的Linux驅(qū)動。在這個簡單的GPIO編程中,可以看到樹莓派的Linux開發(fā)有豐富的語言環(huán)境可選擇,開發(fā)效率高且易于學(xué)習(xí),相對于傳統(tǒng)的S3C24x0上的“Linux驅(qū)動編程+應(yīng)用層編程+交叉編譯〞要容易掌握。我們在Linux開發(fā)實(shí)訓(xùn)教學(xué)中,通過上述三種語言的例子,使學(xué)生體驗(yàn)到樹莓派開發(fā)的高效與語言環(huán)境的豐富多樣。2應(yīng)用開發(fā)分析以下用樹莓派推薦的Python語言實(shí)現(xiàn)串行通信和TCP/IP網(wǎng)絡(luò)通信等更為復(fù)雜的應(yīng)用,然后分析實(shí)現(xiàn)智能家居和物聯(lián)網(wǎng)的思路,以進(jìn)一步分析樹莓派的能力和優(yōu)點(diǎn)。2.1串行通信安裝python-serial庫后,用Python語言在樹莓派的Raspbian操作系統(tǒng)中實(shí)現(xiàn)串行通信的代碼如下。importserialsport=serial.Serial〔"/dev/ttyAMA0",baudrate=9600〕#whileTrue:sbuf=f.readline〔〕#讀一行到sbuf中iflen〔sbuf〕==0:#空行表示發(fā)送完畢breaksport.write〔sbuf〕#發(fā)送sbuf內(nèi)容對于嵌入式Linux系統(tǒng)的串行通信編程,與傳統(tǒng)的C語言開發(fā)相比,Python代碼顯得“簡潔優(yōu)美〞,猶如人的自然語言,廖廖數(shù)語,即可實(shí)現(xiàn)串口通信,非常適合快速開發(fā)與教學(xué)使用。樹莓派的開發(fā)顯示,盡管C〔C++〕可以讓開發(fā)者更深入理解和控制硬件,對于Linux內(nèi)核和驅(qū)動的開發(fā)仍然有不可取代的價(jià)值,但隨著硬件越來越廉價(jià),性能越來越好,C在Linux應(yīng)用層開發(fā)的使用率正在并將繼續(xù)被象Python或Java這類更“高級〞的面向?qū)ο笳Z言蠶食,就如以前的匯編語言使用率被C蠶食一樣。2.2Socket通信、智能家居或物聯(lián)網(wǎng)Python同樣能以很少的語句實(shí)現(xiàn)TCP/IP通信。它實(shí)現(xiàn)Socket客戶端的關(guān)鍵代碼如下。importsockets=socket.socket〔socket.AF_INET,socket.SOCK_STREAM〕#IPv4,TCPs.connect〔address〕#向效勞器發(fā)起Socket連接s.send〔'Hello'〕#向效勞器發(fā)送Hellos.close〔〕#關(guān)閉Socket與C〔C++〕或者Java相比,Python的Linux網(wǎng)絡(luò)編程仍然出人意料的簡潔。由于樹莓派的性能足以支持專業(yè)的LAMP〔LinuxApacheMysqlPHP〕Web效勞器,因而,只要綜合上述的GPIO和串口編程,控制外圍的8bit單片機(jī)及傳感器,安裝LAMPWeb效勞器,通過Python實(shí)現(xiàn)網(wǎng)絡(luò)通信及管理界面,即可構(gòu)成智能家居或物聯(lián)網(wǎng)的控制中心。假設(shè)按傳統(tǒng)的基于S3C24x0的嵌入式Linux開發(fā)教學(xué)方式,要實(shí)現(xiàn)智能家居或物聯(lián)網(wǎng)控制系統(tǒng),需要設(shè)計(jì)ARM開發(fā)板,對Linux進(jìn)行移植裁剪,用C語言開發(fā)硬件驅(qū)動與應(yīng)用層,然后交叉編譯到開發(fā)板中,開發(fā)鏈很長,難度相當(dāng)大,軟硬件的可靠性與穩(wěn)定性也需要長時(shí)間的測試。此外,Linux內(nèi)核及驅(qū)動程序的C代碼使用了大量的指針和雙指針,如何深入理解這些指針變量,是嵌入式開發(fā)與教育的一大難點(diǎn)。而使用樹莓派,Python語言“明白如話〞,不需要模擬器和交叉編譯,即寫即運(yùn)行,硬件小如信用卡大小,可以直接嵌入到應(yīng)用系統(tǒng)中使用,無需自行設(shè)計(jì)生產(chǎn),在應(yīng)用開發(fā)上有突出的實(shí)用價(jià)值。3軟硬件、資源優(yōu)勢與平臺選型3.1軟硬件優(yōu)勢樹莓派之所以在全球熱銷,原因不僅在于支持Python、Java、C等豐富的語言開發(fā)環(huán)境,它提供的Raspbian操作系統(tǒng)是歷時(shí)5年多重新測試與移植超過19000個Linux軟件包的結(jié)晶。創(chuàng)始人Eben博士目前任樹莓派的主芯片設(shè)計(jì)公司Broadcom的IC設(shè)計(jì)主管,可以很好的控制CPU及開發(fā)板的性價(jià)比和質(zhì)量〔Broadcom是全球領(lǐng)先的通信領(lǐng)域的半導(dǎo)體公司〕。因此,樹莓派同時(shí)擁有CPU、操作系統(tǒng)、應(yīng)用開發(fā)環(huán)境三個方面的背景優(yōu)勢。此外,由于內(nèi)置GPU支持1080P視頻硬解碼,樹莓派官方又提供了界面友好的OpenELEC和RASPBMC操作系統(tǒng),它可以打造成家庭媒體中心,成為網(wǎng)絡(luò)電視機(jī)頂盒。3.2資源優(yōu)勢全球有數(shù)以百萬計(jì)的開發(fā)者在為樹莓派進(jìn)行開發(fā),有豐富的軟硬件開發(fā)資源可供參考與借鑒。軟件巨頭Oracle推出了基于樹莓派和JavaFx的DukePad方案,并開設(shè)了互聯(lián)網(wǎng)免費(fèi)課程“DevelopJavaEmbeddedApplicationsUsingaRaspberryPi〞〔使用樹莓派開發(fā)Java嵌入式應(yīng)用〕。RaspiRobotBoard是一個典型的樹莓派擴(kuò)展板,可將樹莓派擴(kuò)展為機(jī)器人控制器,它有專門的Python庫支持,支持對機(jī)器人的控制。利用它的Python庫實(shí)現(xiàn)一個簡易的“漫步者機(jī)器人〞只需三十幾行代碼[3]??梢栽偬砑映暡y距儀和顯示器,WiFi、攝像頭等,做成機(jī)器人競賽常用的“探月車〞。我們在嵌入式專業(yè)畢業(yè)班的教學(xué)上,使用樹莓派作為主控制器,結(jié)合外圍的51單片機(jī)、傳感器、電機(jī)等實(shí)現(xiàn)智能小車,借助Internet上豐富的樹莓派資源進(jìn)行開發(fā),取得了較好的教學(xué)效果。3.3平臺選型國內(nèi)有不少仿造樹莓派的開發(fā)板,由山寨或平板的方案改造而成,通常聲稱有更高的硬件配置。但由于樹莓派全球性軟硬件資源的綜合優(yōu)勢,用戶比擬不用擔(dān)憂它的質(zhì)量、長期供貨、是否停產(chǎn)、以及長遠(yuǎn)的技術(shù)延續(xù)和開展前景,開發(fā)者也不必為設(shè)計(jì)和生產(chǎn)技術(shù)要求很高而批量又不大的開發(fā)板困擾,在快速變化與劇烈競爭的市場環(huán)境下,這些都是開發(fā)與教學(xué)在平臺選型時(shí)需要考量的重要因素。由于樹莓派的Broadcom和劍橋背景,而ARM也同樣源自劍橋,樹莓派所構(gòu)造的軟硬件平臺并不是一個簡單的玩具,它有深遠(yuǎn)的優(yōu)勢所在,戰(zhàn)略上看,相似的開發(fā)平臺要與樹莓派競爭,需要有重量級的資源支持。樹莓派的成功對于我國高校與企業(yè)的合作具有啟發(fā)意義,期待將來自主芯片與操作系統(tǒng)的“〞出現(xiàn)。4結(jié)語樹莓派對于全球嵌入式Linux開發(fā)及教育已經(jīng)并將繼續(xù)帶來廣泛的影響,及早將之引入我國主流的嵌入式開發(fā)與教學(xué)環(huán)境中或?qū)⑹怯幸娴摹1M管傳統(tǒng)的“ARM開發(fā)板硬件設(shè)計(jì)+Linux移植裁剪+虛擬機(jī)環(huán)境+交叉編譯+驅(qū)動編程+應(yīng)用層編程〞開發(fā)鏈可以深入理解和控制嵌入式Linux系統(tǒng),但因其復(fù)雜性而更適合需要定制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版高校科研成果轉(zhuǎn)化合同管理規(guī)定2篇
- 2025年度社區(qū)垃圾分類與回收處理服務(wù)合同范本2篇
- 2025年度智能交通系統(tǒng)技術(shù)改造合同2篇
- 二零二五年度房地產(chǎn)維修基金補(bǔ)充協(xié)議合同模板3篇
- 2025年度生鮮乳產(chǎn)業(yè)鏈上下游協(xié)同發(fā)展協(xié)議3篇
- 螞蟻運(yùn)糧項(xiàng)目課程設(shè)計(jì)
- 2025年度汽車租賃合同糾紛調(diào)解協(xié)議書2篇
- 二零二五年度干掛石材研發(fā)與生產(chǎn)合作協(xié)議2篇
- 海南衛(wèi)生健康職業(yè)學(xué)院《植物學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度男方債務(wù)處理離婚協(xié)議示范書3篇
- GB 11675-2003銀耳衛(wèi)生標(biāo)準(zhǔn)
- 小學(xué)一年級期末家長會課件1
- 人教版新教材高中生物選擇性必修一全冊重點(diǎn)知識點(diǎn)歸納總結(jié)(穩(wěn)態(tài)與調(diào)節(jié))
- 虹膜睫狀體炎實(shí)用全套PPT
- 事業(yè)單位公開招聘面試考官測試題及答案
- 廠區(qū)綠化養(yǎng)護(hù)及方案
- 旅游者對鼓浪嶼旅游產(chǎn)品的滿意度調(diào)查問卷
- (完整word版)人員密集場所消防安全管理GA654-2006
- 初二(6)班-家長會
- 光伏發(fā)電項(xiàng)目并網(wǎng)調(diào)試方案
- 高中化學(xué)競賽題--成鍵理論
評論
0/150
提交評論