陳紀昌 邱元陽 劉宗凡 金琦
編者按:上期我們探討了教育對開放API的應用,其實除了開放軟件接口外,在教育領域,我們還可以體驗開放硬件接口的設備。這期我們以適應新型的開發和應用平臺的樹莓派為例,讓目前的信息技術教育不再僅限于應用型技能,期望用這種低廉的設備燃起所有孩子學習信息技術的熱情,讓他們能自由發揮和任意改裝,進而開發屬于自己的程序。
Raspberry Pi(中文名為“樹莓派”,簡寫為RPi,或者RasPi/RPI),是由注冊于英國的慈善組織“Raspberry Pi基金會”開發的。2012年3月,樹莓派基金會正式發售了世界上最小的臺式機,外形只有信用卡大小,卻具有電腦的所有基本功能,這就是Raspberry Pi,中文譯名“樹莓派”。樹莓派是為學生計算機編程教育而設計的微型計算機,其系統基于Linux(如圖1)。
作為把教育當成第一目標的微型計算機,樹莓派具有許多優點。首先,較低的價格能被大多數家庭或學校所接受。有了廣大的用戶基數,開發者有了開發熱情,應用的數量和質量才會水漲船高,教學工作才能得以更好地進行,這就形成了一個良性循環,這也是樹莓派得以成功的不可或缺的條件。其次,由于有大量編譯器的支持,樹莓派能編譯大部分不同語言的代碼,即它可以勝任大部分語言的教學工作。最后,麻雀雖小,五臟俱全。作為一臺完整的計算機,它能承擔家庭計算機、教學用計算機等功能,可以說它是世界上最具性價比的微型計算機之一。
陳紀昌:樹莓派配置與各接口詳解
大概了解過樹莓派之后,讓我們看看樹莓派的配置與接口,只有了解樹莓派的性能與可擴展性,我們才能將樹莓派的價值最大化。最新的樹莓派為3代B型,采用了博通BCM2837處理器,這是1.2GHZ的64位四核處理器,性能比上代樹莓派提升了50%~60%,或者粗略地說要比最原始的樹莓派性能提升了10倍。它還擁有1GB LPDDR2內存,雖然與我們當下智能手機動輒4GB內存相比,1GB內存可能顯得有些“不夠看”,但別忘了我們需要的是什么,1G內存對于一塊廉價開發板來說已經綽綽有余了。
樹莓派3B的3.5mm音頻輸出口與上一代樹莓派完全一致,以太網接口和4個USB接口也并無改動,依舊是采用Micro-USB Type B接口供電,電壓要求5伏,電流則要在700毫安以上,額定功率變成了4W,USB供電能力進一步增強,以前外設供電不足等情況也有所好轉。我們甚至可以用充電寶給樹莓派供電,這樣它就真正成為隨身終端。
在顯示輸出方面,樹莓派有HDMI接口,當然還可以在GPIO上接LCD顯示屏,新手在視頻輸出方面經常會遇到一些問題,這里需要根據自己屏幕的類型修改SD卡中的config.text文件及寫入驅動。
除此之外,它還加入了Wi-Fi/BLE(藍牙低能耗技術),相當于不再占用1~2個USB接口,也就可以外接更多的USB外設,對于Wi-Fi和藍牙有剛需的開發者著實是件好事。
樹莓派本身并無存儲芯片,一切的數據包括操作系統都需要依靠一張Micro SD卡來保存,所以樹莓派本身并無“變磚”的可能,這也大大提高了樹莓派的可靠性,只要及時備份數據,學生就可以放心地對它進行調試,這也是成本較低的一個原因。另外,樹莓派擴展的核心——GPIO(全稱是General Purpose Input Output,通用輸入/輸出)也非常重要,具體來說就是一些可以輸出高低電平或者讀入是高電平或低電平狀態的引腳。我們可以通過GPIO口和一些硬件進行交互,控制硬件工作或者是讀取硬件工作狀態。圖2即為樹莓派經典的結構示意圖。
邱元陽:安裝樹莓派操作系統及軟件
介紹過樹莓派后,相信大家會迫不及待地想要動手嘗試一番了。別著急,首先我們需要確定安裝什么系統,樹莓派官方和第三方支持的系統不少,如Raspbian、Pidora等Linux發行版,Raspbian是基于Debian的一個版本(針對Raspberry Pi硬件Debian進行了專門的優化,樹莓派官方Raspbian系統下載:http://www.raspberrypi.org/downloads),這對于初學者來說是一個很好的起點。
下載好系統鏡像后,我們需要格式化SD卡(推薦16G及以上的高速卡,SD卡支持列表http://elinux.org/RPi_SD_cards),下載Win32 Disk Imager工具,解壓下載的Raspbian系統壓縮文件,得到img鏡像文件,在軟件中選擇系統鏡像的img文件,“Device”下選擇SD卡的盤符,然后點擊“Write”就開始安裝系統了,安裝結束后會彈出完成對話框,說明安裝就完成了。如果不成功,請關閉防火墻一類的軟件,重新插入SD卡進行安裝。安裝完,Windows系統下看到SD卡的剩余容量只剩幾十MB了,這是正常現象,因為Linux下的分區在Windows下是看不到的。
接下來,將SD卡插入樹莓派的讀卡器中,接上電源線,樹莓派就啟動了!不過這樣還沒法操作樹莓派,我們需要給它接上鍵盤和鼠標,用HDMI線將它和顯示器連接起來(如果顯示器沒有HDMI接口,可以考慮接網線或連接Wi-Fi使用遠程桌面、SSH等連接)。Raspbian系統默認是LXDE圖形界面,使用命令行輸入sudo raspi-config,用方向鍵和回車鍵選擇Boot Options,可以切換圖形界面和終端界面,重啟界面就會發生更改,雖然終端界面只有單調的命令行,習慣圖形界面的人可能會對終端界面感到陌生,但這需要一個適應的過程,在某些情況下,終端界面會比圖形界面的效率高很多。
進入系統之后,就是一些常用軟件的安裝了,輸入命令sudo apt-get install+軟件名稱就可以了。由于樹莓派的官方語言是Python,所以我們以編譯Python為例,其他軟件在此不多贅述。我們主要是用sudo apt-get update、sudo apt-get upgrade、sudo apt-get dist-upgrade把樹莓派軟件及系統升到最新版,因為Raspbian系統自帶Python編譯器,所以直接在圖形界面雙擊Python圖標或者在終端界面輸入Python就可以開始編程了。
金琦:樹莓派對信息技術教育的意義
隨著信息技術的迅猛發展,計算機、智能手機已經成為人們生活的一部分,但必須意識到我國信息技術教育投入和資源配置在城鄉和東西部還存在不平衡,基礎的編程計算機在許多鄉鎮及山村學校的信息教育中沒有普及,若能對師資進行培訓,樹莓派將憑借其低廉的價格和自身具備的可替代傳統計算機的多種功能,為不發達地區的信息技術教育,尤其是編程設備建設問題提供一種解決方案,畢竟樹莓派的成本只是品牌機的十分之一,而且板塊化設計功耗低,且不容易損壞。在軟件的系統層面上,微軟也對樹莓派進行了支持,但樹莓派默認采用的是Linux發行版,可以不受微軟Windows操作系統的束縛,這樣一來就更能培養學生的動手能力和創新意識了,這也為信息技術教育的拓展提供了巨大的幫助。
最近,國內教育工作者對信息素養主導的中小學信息技術課程進行了反思,重新強化了程序設計教學在信息技術教育中的地位,這也為樹莓派引入教學帶來了契機。樹莓派類能接受若干種編程語言,從圖形化的Scratch到較專業的Python語言,完全可以適應未來的中小學編程教育。這里我們要了解樹莓派的主要應用語言,正如樹莓派的創始人Eben Upton所說:“樹莓派的‘Pi就是‘Python的縮寫。”所以,Python就成了樹莓派的官方語言,而且重要的是其不需要配置任何環境就可以開發,Python是一種面向對象的解釋型計算機程序設計語言,其公認的特點是簡單、易學、免費、開源等,并且面向編程教育市場有強大的吸引力。近些年來,國際上在科學計算語言方面,尤其是面向人工智能、機器學習方面,Python已經占了半壁江山,這在一些重量級的開源應用中都得到了證實。另外,隨著信息技術課程改革的深入,以及Python越來越廣泛的應用,國內一些省市在信息技術課編程工具的選擇上,正在嘗試用Python代替傳統的VB,既然Python是樹莓派的官方語言,如果在教學中投入樹莓派,想必對教學能起到事半功倍的效果。那么Python和現在高中學的VB具體有什么區別呢?首先VB是一種結構化的、模塊化的、面向對象的、包含協助開發環境的以事件驅動為機制的可視化程序設計語言,而且很多VB開發都依賴Windows系統自帶的Active X控件和API。而Python是一種面向對象的解釋型計算機程序設計語言,拋開編譯方面的區別,單從代碼上來講,與VB的差別其實不是很大,只要注意各自的語法就行了,但是有一點要特別注意,Python不像VB那樣,不同的模塊之間會有諸如next、end之類的關鍵字,Python區分不同模塊的方法只有一種,那就是縮進。VB縮進不正確只是閱讀比較累,但違反了縮進規則的Python程序則不能通過編譯。所以使用Python能養成良好的編程習慣。
圖3展現了高中程序設計學習中最經典的算法——冒泡排序在兩種語言環境(分別在Windows 7和樹莓派的Raspbian上)實現的效果。
不難看出,Python實現看起來比較清爽、簡潔、易讀。而且隨著Web開發和跨平臺程序設計越來越流行,Python的應用范圍將更廣泛,前景比VB更加可期待,它要求學生的思維更加嚴謹,更加注重編程規范,這也難怪國內一些省市正嘗試用Python語言代替Visual Basic語言進行教學了。正因為Python在樹莓派上運行效率非常高,價格又低廉,所以樹莓派即使不能代替PC,也完全可以作為中小學信息技術學習的一個實驗拓展工具。
劉宗凡:樹莓派的GPIO應用
正如前面所說,樹莓派在Python教學方面有著強大的優勢。但是,除了基礎教育,我們能不能更加深入地挖掘樹莓派的潛力呢?怎么才能將樹莓派的作用最大化即擴展樹莓派的功能呢?那么之前提到的GPIO就是至關重要的了,當然在樹莓派上也可以用Python來控制GPIO。
想用Python來控制GPIO,最便捷的辦法就是使用一些Python類庫,我們需要輸入這些命令來配置環境:sudo apt-get install python-dev、sudo apt-get install python-rpi.gpio、sudo apt-get install python-serial。安裝完成后,我們就可以盡情發揮自己的想象,動手打造一些功能豐富的小玩意。大家可從最簡單的控制LED燈發光開始嘗試。
編寫代碼之前,首先我們需要將LED燈的針腳通過杜邦線連接到樹莓派的引腳上,如可以連接到12號引腳。新建一個main.py文件,寫入如下代碼。
import RPi.GPIO as GPIO //引入函數庫
import time
RPi.GPIO.setmode(GPIO.BOARD) //設置引腳編號規則
RPi.GPIO.setup(12, RPi.GPIO.OUT) //將12號引腳設置成輸出模式
while True
GPIO.output(channel, 1) //將引腳設置為高電平,此時LED亮
time.sleep(1) //程序休眠1秒鐘,讓LED亮1秒
GPIO.output(channel, 0) //將引腳設置為低電平,此時LED滅
time.sleep(1) //程序休眠1秒鐘,讓LED滅1秒
保存,并退出文件,執行python3 main.py,即可看到LED燈效果。
也許簡單的LED燈起不了什么作用,但如果腦洞大開,是不是可以作為水位指示燈?如果結合溫度傳感器和蜂鳴器,我們是不是可以制作溫度報警系統?樹莓派的樂趣就在于此,只有想不到,沒有做不到。
陳紀昌:利用樹莓派培養創客精神
上面講的實例最后已經接近物聯網概念了,現在許多中小學都開設了創新實驗室,其有別于傳統的教學實驗室,也在嘗試一些最基礎的智能教室控制,恰好和樹莓派自由、開放的特點相符合。我們可以將上面的例子再擴展一下,通過Python控制電平高低,進而對教室燈光進行亮滅控制;還可以采用步進電機驅動的窗簾模塊設計一塊驅動板,通過GPIO控制步進電機的轉動方向和速度,驅動板上的4個輸入口連到樹莓派的4個GPIO口,并利用PIN2給步進電機提供5V電壓,驅動步進電機,完成窗簾開閉操作。然后大家可以試著到sourceforge下載webiopi源代碼進行擴展安裝,webiopi是一個可控制樹莓派GPIO的面向物聯網的Web框架,再通過手機或PC終端訪問http://樹莓派IP:8000,對教室燈光、窗簾等進行物聯智能控制。
樹莓派成本低,具有很強的拓展性,所以,對于一個創客來說,搭配不同的擴展模塊,可以用樹莓派實現各種各樣的功能。例如,Web服務器、家用VPN 服務器、流量監視器以及樹莓派無人機等,安裝不同的操作系統,可以充當家用媒體播放器或成為黑客入侵的工具。國外甚至有人將樹莓派發送到太空拍攝了一系列月球的表面照。也就是說,樹莓派在前沿創新中將不斷給我們帶來驚喜。
結語
樹莓派在教育領域的前景不可估量,不管是在信息技術教育普教層面,還是在各中小學的創新課堂里,它都是物美價廉的選擇之一。中國乃至世界的未來在于創新,我們的孩子從小缺乏動手能力的培養,如果讓他們接觸到類似樹莓派這樣的開源硬件,能讓教師探究開設更加具有時代性、創新性的教學內容,這樣的學習也許能真正從“知識獲取”向“知識深化和創造”轉變,我們也才能真正進入大眾創新的新時代。