徐 彤
(天津市和平區(qū)新華職工大學(xué),天津 300070)
邁進(jìn)“互聯(lián)網(wǎng)+”時(shí)代,社會(huì)的生產(chǎn)方式和人民的生活方式發(fā)生變革,互聯(lián)網(wǎng)為生活提供便利的同時(shí)也將信息進(jìn)行聚合與互聯(lián)。伴隨著物聯(lián)網(wǎng)的出現(xiàn),逐步實(shí)現(xiàn)萬(wàn)物互聯(lián),使得新的交互更具體,隨之涌現(xiàn)了大數(shù)據(jù)網(wǎng)絡(luò)、共享生活等概念。目前,我國(guó)的物聯(lián)網(wǎng)技術(shù)主要集中在自動(dòng)化控制、信息傳感與傳輸、設(shè)備等領(lǐng)域,與物聯(lián)網(wǎng)相關(guān)的智能安防、智慧物聯(lián)、智慧交通逐步進(jìn)入成熟運(yùn)用階段。“互聯(lián)網(wǎng)+”背景下的物聯(lián)網(wǎng)發(fā)展,其核心基礎(chǔ)依然是以程序?yàn)楹诵牡幕ヂ?lián)網(wǎng)應(yīng)用,通過(guò)網(wǎng)絡(luò)技術(shù)對(duì)已有的物體功能途徑進(jìn)行拓展,進(jìn)而實(shí)現(xiàn)任何時(shí)間、任何地點(diǎn)、任何人和物的互聯(lián)與通信。基于“物聯(lián)網(wǎng)”的發(fā)展和“大數(shù)據(jù)分析”的發(fā)展,程序設(shè)計(jì)語(yǔ)言得到了空前的發(fā)展,Python程序設(shè)計(jì)語(yǔ)言的熱度如日中天,迅速在多個(gè)領(lǐng)域占據(jù)一席之地。
高職學(xué)生在學(xué)習(xí)過(guò)程中往往會(huì)出現(xiàn)情緒化的現(xiàn)象,自己感興趣的就好學(xué)、愛(ài)學(xué),抽象枯燥的知識(shí)則積極性較低。在學(xué)習(xí)過(guò)程中耐挫能力不強(qiáng),遇到困難,看不到自己的進(jìn)步,容易出現(xiàn)沮喪放棄的情緒。因承受能力不強(qiáng),當(dāng)成績(jī)不理想時(shí),學(xué)習(xí)態(tài)度也會(huì)出現(xiàn)不端正的現(xiàn)象。高職學(xué)生在課堂上滿足于教師講授的內(nèi)容,學(xué)習(xí)中存在學(xué)習(xí)習(xí)慣不良的現(xiàn)象,有的學(xué)生存在學(xué)習(xí)熱情不足,學(xué)習(xí)持續(xù)性不強(qiáng);有的學(xué)生應(yīng)付完成學(xué)習(xí)任務(wù),學(xué)習(xí)效果大打折扣。課堂上教師教授學(xué)生解決問(wèn)題的方法,而學(xué)生照搬進(jìn)行實(shí)踐,變通不充分,在自我實(shí)踐過(guò)程中受挫,又會(huì)激化學(xué)習(xí)的挫敗感,影響學(xué)習(xí)效果。
目前,高職學(xué)生普遍接受的是專科層次教育,計(jì)算機(jī)專業(yè)學(xué)生的編程課程學(xué)習(xí)內(nèi)容較多,范圍較廣泛,但學(xué)生的素質(zhì)和能力水平參差不齊。高職學(xué)生對(duì)于抽象概念的理解力不強(qiáng),難以將抽象概念轉(zhuǎn)化為具體形象的實(shí)際應(yīng)用,在實(shí)踐應(yīng)用過(guò)程中比較困難,不夠靈活。在計(jì)算機(jī)程序設(shè)計(jì)課堂教學(xué)中高職學(xué)生解決問(wèn)題的能力有所欠缺,面對(duì)程序設(shè)計(jì)過(guò)程中出現(xiàn)的問(wèn)題,沒(méi)有掌握有效的分析問(wèn)題、解決問(wèn)題的方法,缺乏行之有效的思考問(wèn)題的能力,特別是遇到有難度的問(wèn)題,總是習(xí)慣尋求外力,缺乏獨(dú)立思考過(guò)程。
高職學(xué)生學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)類課程普遍感覺(jué)到內(nèi)容抽象,死記硬背程序設(shè)計(jì)的內(nèi)容,以考試為目的完成學(xué)習(xí)任務(wù),缺乏趣味性引導(dǎo)。學(xué)生在學(xué)習(xí)過(guò)程中往往出現(xiàn)學(xué)習(xí)興趣低,持續(xù)度差,遇到抽象的學(xué)習(xí)內(nèi)容思考難度大等問(wèn)題,這與程序設(shè)計(jì)類課程的內(nèi)容抽象的特點(diǎn)密切相關(guān)。正因?yàn)橛?jì)算機(jī)程序設(shè)計(jì)類課程內(nèi)容抽象,學(xué)生總是感覺(jué)看不見(jiàn)摸不到,只能看到代碼的編寫(xiě),而對(duì)于代碼為什么這樣寫(xiě),計(jì)算機(jī)是如何運(yùn)用代碼解決問(wèn)題的并沒(méi)有直觀的認(rèn)識(shí)。在課堂中教師引入實(shí)例教學(xué),學(xué)生跟隨教師做練習(xí),往往課下就忘了,回憶復(fù)習(xí)起來(lái)依然感覺(jué)內(nèi)容抽象,無(wú)法應(yīng)用到自己的實(shí)踐中。
高職計(jì)算機(jī)專業(yè)重點(diǎn)培養(yǎng)專業(yè)型計(jì)算機(jī)人才,但由于學(xué)校場(chǎng)地區(qū)域有限,學(xué)生計(jì)算機(jī)類程序涉及課程只能在計(jì)算機(jī)教室學(xué)習(xí)理論知識(shí),開(kāi)展編程操作練習(xí),但動(dòng)手操作和將程序設(shè)計(jì)知識(shí)運(yùn)用到實(shí)物開(kāi)發(fā)的實(shí)踐經(jīng)歷很少,導(dǎo)致了理論教學(xué)質(zhì)量停留在表面,與實(shí)際操作相脫節(jié)的現(xiàn)象。高職學(xué)生學(xué)習(xí)計(jì)算機(jī)編程類課程,往往是跟著教師按照課本內(nèi)容敲擊代碼,并不能獨(dú)立或以小組為單位開(kāi)展基于實(shí)物的實(shí)際應(yīng)用開(kāi)發(fā)。學(xué)生在課余時(shí)間練習(xí)編程技能,只是學(xué)習(xí)對(duì)課上知識(shí)的復(fù)習(xí),如果在學(xué)校開(kāi)展了編程實(shí)驗(yàn),在家中卻不能部署相關(guān)平臺(tái)、設(shè)備,這不利于學(xué)生將抽象的理論化知識(shí)轉(zhuǎn)化為實(shí)踐技能。
在程序設(shè)計(jì)類課程中,學(xué)生在教師的指導(dǎo)下課上操作編程軟件,跟隨教師輸入代碼編寫(xiě)程序,但并不能完全理解程序設(shè)計(jì)的原理,在獨(dú)立的實(shí)踐操作中依然會(huì)出現(xiàn)很多問(wèn)題,并不能獨(dú)立完成計(jì)算機(jī)程序的編寫(xiě)。計(jì)算機(jī)專業(yè)需要培養(yǎng)學(xué)生分析和創(chuàng)新的綜合能力,在教授理論知識(shí)的同時(shí)更需要培養(yǎng)學(xué)生的創(chuàng)新實(shí)踐能力。而傳統(tǒng)的程序設(shè)計(jì)類課程多是以講授為主,或者學(xué)生以書(shū)本教材為元為綱進(jìn)行學(xué)習(xí),這樣傳統(tǒng)的教學(xué)方式無(wú)法有效地引發(fā)學(xué)生學(xué)習(xí)興趣,學(xué)生普遍認(rèn)為程序設(shè)計(jì)課偏向理論,照本宣科,創(chuàng)新能力無(wú)法得到提升,無(wú)法將所學(xué)程序設(shè)計(jì)知識(shí)應(yīng)用于實(shí)踐,學(xué)生的創(chuàng)新意識(shí)和創(chuàng)新能力沒(méi)有得到充分的發(fā)揮,不能理解計(jì)算機(jī)程序在實(shí)際場(chǎng)景中的應(yīng)用。在教學(xué)過(guò)程中,學(xué)生對(duì)于理論知識(shí)不感興趣,教師針對(duì)課堂內(nèi)容的實(shí)踐元素挖掘不充分,對(duì)課程內(nèi)容和實(shí)踐創(chuàng)新的關(guān)系思考不多,在提升學(xué)生的創(chuàng)新思維方面存在指導(dǎo)方向的不足。
為進(jìn)一步提高物聯(lián)網(wǎng)背景下高職學(xué)生對(duì)知識(shí)的綜合運(yùn)用能力,緊密圍繞物聯(lián)網(wǎng)背景下,計(jì)算機(jī)程序在實(shí)際場(chǎng)景中的應(yīng)用,為學(xué)生搭建理論實(shí)踐平臺(tái),培養(yǎng)學(xué)生的職業(yè)道德和法律觀念,使學(xué)生體會(huì)計(jì)算機(jī)語(yǔ)言運(yùn)用到實(shí)際開(kāi)發(fā)中的知識(shí)價(jià)值,并結(jié)合實(shí)際工作崗位教育引導(dǎo)學(xué)生樹(shù)立從業(yè)守法觀念和職業(yè)道德觀念。通過(guò)程序設(shè)計(jì)和實(shí)物開(kāi)發(fā)過(guò)程,培養(yǎng)學(xué)生的工匠精神和人文精神,結(jié)合學(xué)生畢業(yè)后肩負(fù)的實(shí)際工作崗位責(zé)任,培養(yǎng)學(xué)生專注、刻苦、敬業(yè)、創(chuàng)新精神。
樹(shù)莓派是近年來(lái)新興的微型計(jì)算機(jī)的代表,它作為一種微型計(jì)算機(jī)編程工具,為物聯(lián)網(wǎng)條件下的編程提供了一種新的形式,獲得廣大編程學(xué)習(xí)者和愛(ài)好者的青睞,目前被廣泛應(yīng)用于以個(gè)人為單位進(jìn)行的編程活動(dòng)。基于樹(shù)莓派的編程可以讓編程者直觀看到編寫(xiě)的程序所產(chǎn)生的實(shí)際應(yīng)用效果,很好地解決了程序設(shè)計(jì)過(guò)程中普遍存在的抽象問(wèn)題。樹(shù)莓派的編程過(guò)程中需要按照一定的步驟,有一定的程序書(shū)寫(xiě)格式規(guī)范,在一定程度上便于初學(xué)者掌握語(yǔ)法規(guī)范,并進(jìn)行實(shí)際應(yīng)用探究。
樹(shù)莓派具備開(kāi)源與免費(fèi)的特點(diǎn)。在樹(shù)莓派官網(wǎng)可找到大量不同功能的樹(shù)莓派系統(tǒng)并可實(shí)現(xiàn)免費(fèi)下載。在樹(shù)莓派社區(qū)中,適用于不同版本的操作系統(tǒng)多達(dá)幾十種,其官方推薦的Raspbian操作系統(tǒng)是基于Linux操作系統(tǒng)開(kāi)發(fā)的,在后續(xù)編程設(shè)計(jì)上,支持多語(yǔ)種開(kāi)發(fā),包括C、Python、Java等主流高級(jí)程序設(shè)計(jì)語(yǔ)言,這為基于樹(shù)莓派的程序開(kāi)發(fā)設(shè)計(jì)提供了發(fā)展的便利條件。
樹(shù)莓派體積小巧,因此在學(xué)校進(jìn)行實(shí)驗(yàn)訓(xùn)練時(shí)不需要過(guò)大的場(chǎng)地,對(duì)實(shí)驗(yàn)室的硬件要求不高,便于學(xué)校開(kāi)展靈活的教學(xué)安排。以樹(shù)莓派為基礎(chǔ)的實(shí)訓(xùn)方式也比較靈活,結(jié)合不同的實(shí)訓(xùn)內(nèi)容,學(xué)生既可以獨(dú)立完成也可以采用分組的形式。此外樹(shù)莓派在價(jià)格上比一般的微型計(jì)算機(jī)價(jià)格低廉,基于樹(shù)莓派的擴(kuò)展硬件商品資源種類齊全,在很多平臺(tái)上均可獲取,即便是學(xué)生在課下也可以較少花費(fèi)實(shí)現(xiàn)較多的編程訓(xùn)練,性價(jià)比較高。
在樹(shù)莓派開(kāi)發(fā)過(guò)程中,主流語(yǔ)言一般為C語(yǔ)言,它是一種面向過(guò)程的程序設(shè)計(jì)語(yǔ)言,發(fā)展較為成熟,但對(duì)于初學(xué)者和對(duì)物聯(lián)網(wǎng)感興趣的人來(lái)說(shuō)很難在短時(shí)間內(nèi)入門(mén)。相比較C語(yǔ)言的晦澀,Python是一種面向過(guò)程和面向?qū)ο蟮木C合性語(yǔ)言,以其簡(jiǎn)潔易學(xué)、擴(kuò)展性強(qiáng)、交互范圍廣、運(yùn)用靈活性高等特點(diǎn),逐步成為物聯(lián)網(wǎng)應(yīng)用的新生載體。Python語(yǔ)言語(yǔ)法簡(jiǎn)潔,易上手,通過(guò)使用縮進(jìn)方法明確定義語(yǔ)法塊,使得程序的結(jié)構(gòu)清晰明了,極大地增大了程序的可讀性。此外Python語(yǔ)言有很多可通過(guò)后期安裝的模塊,用戶不僅可直接調(diào)用模塊內(nèi)函數(shù),也可以自己編寫(xiě)自定義函數(shù)擴(kuò)充模塊功能。因此,使用Python語(yǔ)言進(jìn)行樹(shù)莓派開(kāi)發(fā)逐漸成為越來(lái)越多物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)者的選擇。
Python程序設(shè)計(jì)語(yǔ)言不僅結(jié)構(gòu)簡(jiǎn)便易上手,而且支持大量的擴(kuò)展庫(kù)。Python程序設(shè)計(jì)語(yǔ)言具有較強(qiáng)的開(kāi)源性,逐步發(fā)展與創(chuàng)新,在多領(lǐng)域有綜合應(yīng)用,例如物聯(lián)網(wǎng)開(kāi)發(fā)、科學(xué)計(jì)算與數(shù)據(jù)分析、網(wǎng)絡(luò)爬蟲(chóng)、游戲開(kāi)發(fā)和人工智能等領(lǐng)域。Python編程易上手,簡(jiǎn)單易學(xué)易懂,操作界面也非常簡(jiǎn)潔,即便是零編程基礎(chǔ)的新生也能較快適應(yīng)Python編程語(yǔ)言的語(yǔ)法和邏輯結(jié)構(gòu)。除此以外,Python語(yǔ)言還支持跨平臺(tái)編程設(shè)計(jì),能夠?qū)崿F(xiàn)多類功能。
樹(shù)莓派在電路板中有多重接口,如圖1所示。樹(shù)莓派主板可以外接鼠標(biāo)、鍵盤(pán)和監(jiān)視器等外部設(shè)備,便于開(kāi)展數(shù)據(jù)和程序的輸入以及輸出顯示等;擁有網(wǎng)絡(luò)接口和無(wú)線網(wǎng)擴(kuò)展模塊,可實(shí)現(xiàn)多種形式的網(wǎng)絡(luò)互聯(lián);在多媒體方面有聲卡接口和相機(jī)接口,可實(shí)現(xiàn)基于聲音和視頻監(jiān)控的開(kāi)發(fā)研究;在存儲(chǔ)方面支持SD卡和Mico-SD卡,可實(shí)現(xiàn)數(shù)據(jù)的定容量存儲(chǔ);與此同時(shí),樹(shù)莓派具備獨(dú)立的供電接口,使用常規(guī)的適配器即可實(shí)現(xiàn)電路板供電,對(duì)于設(shè)備要求比較簡(jiǎn)單,因此學(xué)生在進(jìn)行實(shí)驗(yàn)操作時(shí)便于上手操作。樹(shù)莓派在接線方面也較為簡(jiǎn)單,后期支持多種形式的模塊擴(kuò)展,學(xué)生可以根據(jù)自己的需求和實(shí)驗(yàn)內(nèi)容自由選配元器件,價(jià)格上也比較低廉。

圖1 樹(shù)莓派主板與接口示意圖
結(jié)合樹(shù)莓派體積小巧、開(kāi)源性強(qiáng)、兼容性優(yōu)和價(jià)格低廉等特點(diǎn),結(jié)合學(xué)校機(jī)房的實(shí)際條件和學(xué)生課程學(xué)習(xí)情況,將樹(shù)莓派引入Python教學(xué),可以充分發(fā)揮Python程序設(shè)計(jì)語(yǔ)言的已開(kāi)發(fā)性,使學(xué)生充分體會(huì)使用程序設(shè)計(jì)語(yǔ)言開(kāi)發(fā)實(shí)物的樂(lè)趣,將抽象的程序設(shè)計(jì)課程變成學(xué)生直觀可見(jiàn)的實(shí)驗(yàn)現(xiàn)象,例如對(duì)樹(shù)莓派進(jìn)行基礎(chǔ)性部署、通過(guò)python語(yǔ)言開(kāi)發(fā)RGB-Led燈程序,使用程序控制實(shí)現(xiàn)不同的燈亮和閃爍效果。
樹(shù)莓派的開(kāi)發(fā)若為初次使用首先需要登錄系統(tǒng),然后連接SSH,使用sudo raspi-config修改默認(rèn)配置連接Wifi,通常情況下樹(shù)莓派自帶無(wú)線網(wǎng)模塊,第一次連接wifi成功后,當(dāng)樹(shù)莓派再次開(kāi)機(jī)會(huì)默認(rèn)連接上一次已連接的wifi,使用極為便捷。通過(guò)遠(yuǎn)程登錄樹(shù)莓派桌面,使用Python IDLE開(kāi)發(fā)環(huán)境,可對(duì)樹(shù)莓派進(jìn)行二次開(kāi)發(fā),直接在IDLE開(kāi)發(fā)環(huán)境中鍵入代碼即可,遵循Python語(yǔ)言的語(yǔ)法格式。在開(kāi)發(fā)過(guò)程中如需要使用第三方庫(kù)與模塊,可以在Python IDLE開(kāi)發(fā)環(huán)境使用pip install命令安裝,極大豐富了開(kāi)發(fā)過(guò)程中外部資源的使用。
在Python語(yǔ)言中可以使用import關(guān)鍵字進(jìn)行模塊導(dǎo)入,導(dǎo)入控制 GPIO 的模塊和時(shí)間time模塊,方便后續(xù)程序調(diào)用延時(shí)、時(shí)鐘等函數(shù)。將多色燈的顏色通過(guò)顏色列表寫(xiě)入程序,然后通過(guò)GPIO.setmode設(shè)置樹(shù)莓派電路板的引腳編號(hào)模式,進(jìn)而確定板載模式。通常情況下,樹(shù)莓派的板載模式有兩種,分別是BCM模式和BOARD模式,這兩種模式主要是針對(duì)GPIO引腳的編碼方式不一致。
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
RGB顏色格式的取值范圍為0至255,而占空比的取值范圍是0至100,所以需要將雙色燈的RGB值轉(zhuǎn)換為占空比對(duì)應(yīng)的數(shù)值,引入map()函數(shù)將顏色的數(shù)值進(jìn)行轉(zhuǎn)換,以便于后續(xù)的程序控制。撰寫(xiě)setcolor()函數(shù),通過(guò)設(shè)置顏色及其亮度值,設(shè)置LED燈的發(fā)光顏色,增強(qiáng)程序的可讀性。使用loop()循環(huán)函數(shù)將燈的顏色進(jìn)行遍歷,點(diǎn)亮與休眠相結(jié)合的形式實(shí)現(xiàn)燈的閃爍效果。
通過(guò)創(chuàng)建destroy()函數(shù),分別停止紅色和綠色的PWM脈沖運(yùn)行,進(jìn)而實(shí)現(xiàn)控制燈點(diǎn)亮和關(guān)閉。使用for循環(huán)關(guān)閉GPIO接口的輸出狀態(tài),進(jìn)而關(guān)閉LED燈,最后通過(guò)GPIO中的cleanup()方法,重置GPIO狀態(tài)。
程序文件在執(zhí)行過(guò)程中通常會(huì)出現(xiàn)異常的情況,Python程序中最常見(jiàn)的錯(cuò)誤為語(yǔ)法錯(cuò)誤,因此Python程序在運(yùn)行過(guò)程中需要采用一種較為友好的方式處理異常情況。在Python程序中通常使用try…except語(yǔ)句捕獲異常。Python文件在執(zhí)行中通常有兩種執(zhí)行方式,一種為腳本直接執(zhí)行,另一種為腳本調(diào)用執(zhí)行。在腳本直接執(zhí)行中,通常使用“if __name__ == “__main__””語(yǔ)句。在“if __name__ == “__main__””語(yǔ)句中可寫(xiě)入異常處理語(yǔ)句。
樹(shù)莓派平臺(tái)具備低能耗、移動(dòng)便攜性、GPIO等特性,而且基于樹(shù)莓派的開(kāi)發(fā)應(yīng)用成本較低,可在網(wǎng)絡(luò)中檢索大量資料,學(xué)生可以使用樹(shù)莓派搭建屬于自己的應(yīng)用開(kāi)發(fā)環(huán)境,提高學(xué)生的動(dòng)手操作能力。基于Python語(yǔ)言的程序編寫(xiě)具備可擴(kuò)展性,通過(guò)注釋等信息增強(qiáng)程序的可讀性,提升Python課程教學(xué)的實(shí)用性,增強(qiáng)學(xué)生對(duì)于Python程序的綜合應(yīng)用能力,為計(jì)算機(jī)程序設(shè)計(jì)類課程的教學(xué)提供新方式。將樹(shù)莓派的開(kāi)發(fā)進(jìn)一步改進(jìn)為基于Python語(yǔ)言的代碼形式,可以為樹(shù)莓派的開(kāi)發(fā)提供新的解決路徑,Python語(yǔ)言的發(fā)展也可為物聯(lián)網(wǎng)技術(shù)的拓寬提供可能性支持。