邢延剛
Arduino是意大利設(shè)計(jì)學(xué)校的教師Massimo Banzi為解決學(xué)生找不到便宜好用的微控制器的問(wèn)題,與他的幾位朋友合作開發(fā)設(shè)計(jì)的電路板。Arduino是基于開源(Open Source)精神的一個(gè)電子原型平臺(tái),包含硬件(各種型號(hào)的Arduino板)和軟件(Arduino IDE)。任何人都可以免費(fèi)下載并自行修改,制作出符合需求的Arduino應(yīng)用裝置。因此,Arduino成為創(chuàng)客運(yùn)動(dòng)不可或缺的工具,在創(chuàng)客風(fēng)潮中扮演著舉足輕重的角色。
2011年,日本東北地區(qū)近海發(fā)生9級(jí)大地震,其所引起的海嘯造成福島第一核電廠的緊急事故,引起全球關(guān)注。事件發(fā)生后,部分日本民眾擔(dān)心政府所公布的信息不夠完整或正確,于是將蓋格計(jì)數(shù)器(用于偵測(cè)輻射)與Ardunio結(jié)合,并將所偵測(cè)到的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)模塊上傳到網(wǎng)絡(luò)上,以便社會(huì)大眾了解災(zāi)后最實(shí)時(shí)的信息。
2016年,中國(guó)臺(tái)灣的幾名創(chuàng)客教師,鑒于氣象局的空氣指標(biāo)不夠詳細(xì),發(fā)起了一個(gè)霧霾地圖運(yùn)動(dòng),讓有條件的教師和學(xué)生,利用Arduino和傳感器,制作空氣質(zhì)量檢測(cè)設(shè)備,并將數(shù)據(jù)上傳到網(wǎng)絡(luò)上,形成實(shí)時(shí)的臺(tái)灣霧霾地圖。
由上述的兩個(gè)例子可以得出,Arduino能連接多種傳感器并加以控制。例如,環(huán)境感測(cè)模塊、顯示模塊、數(shù)據(jù)傳輸模塊以及通信模塊。由此,選擇適合的傳感器并加入數(shù)據(jù)顯示與記錄等功能,便能進(jìn)行簡(jiǎn)單的環(huán)境觀測(cè)活動(dòng),并應(yīng)用于地理的課堂教學(xué)中,觀察課本中所涉及的自然現(xiàn)象。
大氣壓力的垂直變化是地理課程中大氣的結(jié)構(gòu)單元的重要的知識(shí)點(diǎn)。為了讓學(xué)生了解學(xué)習(xí)內(nèi)容,需要舉例說(shuō)明。
例如,低海拔地區(qū)購(gòu)買的零食在帶往高山的途中,其外包裝往往會(huì)膨脹甚至撐破;在高海拔地區(qū)的超市,經(jīng)常出現(xiàn)零食脹袋現(xiàn)象。但是并非每名學(xué)生都經(jīng)歷過(guò)這樣的生活體驗(yàn),那如何在時(shí)間有限的課堂中讓學(xué)生直接觀察到氣壓在垂直方向的改變呢?筆者任教學(xué)校的教學(xué)樓有5層樓高,因此,利用教學(xué)樓的高度差,設(shè)計(jì)使用Arduino結(jié)合大氣壓傳感器觀察高低樓層間氣壓變化的實(shí)踐活動(dòng)。
(1)課前將Arduino開發(fā)環(huán)境(IDE)與驅(qū)動(dòng)程序(Driver)安裝及測(cè)試,安裝方法可于https://www.arduino.cc查詢,筆者所使用的Arduino IDE版本為1.7.8。
(2)將大氣壓傳感器的程序代碼及庫(kù)分發(fā)到學(xué)生機(jī)器上。
(3)實(shí)驗(yàn)系統(tǒng)采用9 V電池供電,保證電量充足。需要的器材見表1。
表1 器材列表
(1)將BMP085氣壓感測(cè)模塊程序代碼與函式庫(kù)下載到計(jì)算機(jī)中,程序代碼存放在桌面或其他方便存取的位置,庫(kù)則復(fù)制到C:ProgramFiles(x86)Arduinolibraries路徑下的文件夾。本文以Win10 64位操作系統(tǒng)為例,其他版本操作系統(tǒng)的路徑可能稍有不同。
(2)使用BMP085氣壓感測(cè)模塊
①使用杜邦線連接BMP085與Arduino主控制板,對(duì)應(yīng)腳位見表2。BMP085氣壓感測(cè)模組對(duì)應(yīng)到Arduino UNO R3的接線腳位。
表2 對(duì)應(yīng)腳位表
②利用USB連接線將Arduino主控板與計(jì)算機(jī)連接。
③打開BMP085的程序代碼,驗(yàn)證無(wú)誤后單擊“上傳”按鈕。
④上傳成功后,單擊“串口監(jiān)視器”圖標(biāo),在計(jì)算機(jī)上查看傳感器測(cè)得的溫度與氣壓數(shù)值。
⑤確認(rèn)BMP085正常運(yùn)作后,先關(guān)閉序列端口監(jiān)控窗口,再移除Arduinoboard的USB連接線,最后移除BMP085與Arduino間的連接線。
⑥在時(shí)間允許的情況下,可與學(xué)生解釋說(shuō)明程序代碼。
(3)使用SD讀卡模塊
①杜邦線連接Arduino主控板與SD讀卡模塊,對(duì)應(yīng)腳位見表3。
表3 SD讀卡模組對(duì)應(yīng)Arduino UNO R3的接線腳位
②用USB連接線連接計(jì)算機(jī)與Arduino主控板。
③Arduino主控板與計(jì)算機(jī)連接后開啟SD讀卡模塊程序代碼,程序代碼ArduinoIDE已內(nèi)建,開啟方式如下,依序選擇Arduino IDE選單列中的檔案→范例→SD→ReadWrite。
④由Arduino IDE驗(yàn)證無(wú)誤后按下ArduinoIDE的“上傳”按鈕,上傳成功后按下Arduino IDE的“串口監(jiān)視器”圖標(biāo),由計(jì)算機(jī)屏幕觀看SD讀卡模塊運(yùn)作情況。
⑤時(shí)間允許的話可逐行解釋程序代碼,并試著讓學(xué)生修改寫入字符串的內(nèi)容。
(4)壓感測(cè)模塊與SD讀卡模塊
根據(jù)擴(kuò)展板將SD讀卡模塊與氣壓感測(cè)模塊組裝在一起,接線方式如圖1所示。若時(shí)間允許,可讓學(xué)生試著將上述兩個(gè)程序代碼合并,制作出觀測(cè)及記錄頻率為每秒1組數(shù)據(jù)的簡(jiǎn)易型氣壓傳感器。如果時(shí)間有限,教師可先將程序代碼合并好后讓學(xué)生于課堂中直接使用。
之后,接上9 V電池,如圖2所示。在教室內(nèi)測(cè)試氣壓感測(cè)模塊與SD讀卡模塊能否順利運(yùn)行。
圖1
圖2
(5)測(cè)量5樓至1樓間的氣壓變化
首先,將Arduino簡(jiǎn)易型氣壓傳感器置于塑料容器中。用一根長(zhǎng)繩系好,勿垂直晃動(dòng)。其次,按下Arduino Board上的“Reset”鍵開始測(cè)量,并紀(jì)錄開始時(shí)刻。從5樓的教室開始記錄,將繩逐步向下一層樓移動(dòng)。移動(dòng)過(guò)程中保持穩(wěn)定,各樓層停留20秒,最后放置于地面停留20秒,測(cè)量此處的溫度及氣壓值。最后,測(cè)量完成后拔掉電源停止紀(jì)錄,紀(jì)錄停止時(shí)刻后,將設(shè)備取回。
(6)繪制氣壓及溫度變化圖
將SD卡從讀卡模塊中取出。復(fù)制SD卡中的觀測(cè)數(shù)據(jù)文件至計(jì)算機(jī)。利用Excel繪制氣壓及溫度的變化曲線,如圖3、圖4所示。
圖3 教學(xué)樓溫度變化值
圖4 教學(xué)樓氣壓變化值
(7)問(wèn)題與討論
若時(shí)間允許,可于氣壓及溫度變化圖繪制完成后,請(qǐng)學(xué)生討論以下問(wèn)題。
一是,描述所量測(cè)到的氣壓變化趨勢(shì)如何變化?
二是,測(cè)量過(guò)程中的前4/5,為什么氣壓值會(huì)呈現(xiàn)梯度變化?
三是,查校舍資料得出創(chuàng)客教室距地面的高度,進(jìn)一步計(jì)算氣壓隨高度的變化率。
四是,比較此次觀測(cè)結(jié)果所計(jì)算出的氣壓隨高度變化率與理論值有何不同,并思考可能的影響因素。
大氣壓與海拔高度的關(guān)系是:高度增加,大氣壓減??;在2 000 m范圍內(nèi),每升高12 m,大氣壓減小1 mmHg,大約133 Pa,根據(jù)公式計(jì)算:
h/12=100/133,h=9.0 m
筆者所在創(chuàng)客教室位于教學(xué)樓的5樓,若每層樓(含樓板)的高度以約數(shù)3.2 m計(jì)算,4層樓的高度差約為12.8 m,帶入高度1 500 m以下的底層大氣氣壓變化率,由此得出,4層樓的理論氣壓差約為1.42 hPa。
本課程經(jīng)筆者實(shí)踐于校內(nèi)選修課教學(xué),利用2節(jié)課約100分鐘的時(shí)間,介紹氣壓感測(cè)模塊及SD讀卡模塊的使用,進(jìn)一步合并上述兩個(gè)模塊,最后使用組裝好的Arduino簡(jiǎn)易型氣壓傳感器測(cè)量建筑物5樓至1樓的氣壓變化。授課過(guò)程中學(xué)生曾出現(xiàn)下列不恰當(dāng)操作。
其一,活動(dòng)過(guò)程中,學(xué)生常將SD讀卡模塊3.3 V與GND的接線接反,插入SD卡后SD卡出現(xiàn)高溫,造成SD卡損毀而無(wú)法讀取數(shù)據(jù)。
其二,學(xué)生在合并程序代碼的過(guò)程,常忘記行末的分號(hào)、循環(huán)結(jié)束的大括號(hào)等程序代碼既定格式,使得Arduino IDE驗(yàn)證出現(xiàn)錯(cuò)誤。
其三,手持氣壓傳感器從建筑物5樓往1樓移動(dòng)過(guò)程中,氣壓傳感器并未固定好,產(chǎn)生晃動(dòng),導(dǎo)致氣壓測(cè)量出現(xiàn)誤差。
其四,測(cè)量結(jié)束拔掉電源時(shí),正好SD卡模塊尚在寫入數(shù)據(jù),容易讓數(shù)據(jù)文件損毀,此部分的改進(jìn)方法將于未來(lái)工作中加以說(shuō)明。
本課程所設(shè)計(jì)的Arduino氣壓傳感器屬于簡(jiǎn)易型,仍有相當(dāng)大的擴(kuò)充空間。若出現(xiàn)測(cè)量結(jié)束,拔掉電源而造成SD卡模塊數(shù)據(jù)寫入失敗的問(wèn)題,可以加入控制按鈕控制;除了加入實(shí)體按鈕外,還可加入不同顏色的LED燈以便顯示氣壓感測(cè)器的運(yùn)作狀態(tài),例如,黃色LED燈閃爍表示正常寫入、黃色LED燈長(zhǎng)亮代表停止寫入、紅色LED燈長(zhǎng)亮則是傳感器出了問(wèn)題,此設(shè)計(jì)可增加學(xué)生使用過(guò)程中的便利性。
若要得到環(huán)境的潮濕程度,可以加入濕度傳感器。想得到精準(zhǔn)的觀測(cè)日期與時(shí)間,則可加入RTC時(shí)間模塊。如果有實(shí)時(shí)顯示氣壓及溫度數(shù)據(jù)的需求,可以加入LCD顯示模塊。當(dāng)上述模塊整合后,便是一個(gè)簡(jiǎn)單的氣象觀測(cè)裝置,利用此裝置能夠更進(jìn)一步觀測(cè)身邊的大氣環(huán)境,觀察冷風(fēng)過(guò)境前后的溫濕度與氣壓變化、背風(fēng)面空氣沉降所造成的增溫現(xiàn)象、某觀測(cè)點(diǎn)在臺(tái)風(fēng)接近與遠(yuǎn)離過(guò)程中氣壓的改變等。
以上的舉例,都是日常生活中常見的地理科學(xué)現(xiàn)象,學(xué)生通過(guò)實(shí)際測(cè)量,能夠?qū)φn本所涉及的知識(shí)更感興趣、掌握的更牢固。
價(jià)格低廉是Arduino的一個(gè)強(qiáng)大優(yōu)勢(shì),本活動(dòng)的材料費(fèi)經(jīng)估算后大約是130元,這與科學(xué)儀器廠商所提供動(dòng)輒數(shù)萬(wàn)元的實(shí)驗(yàn)儀器相比,價(jià)格優(yōu)勢(shì)明顯,適合中小學(xué)師生使用。而且,只要將各個(gè)模塊換成其他便宜的品牌,不用擴(kuò)展板,材料費(fèi)就能降至90元左右。如要測(cè)量其他的環(huán)境信息,只須購(gòu)買相關(guān)傳感器即可,例如:光照傳感器、防水型溫度傳感器等,這些傳感器的價(jià)位大約十幾元至數(shù)十元不等,也在可接受的范圍內(nèi)。根據(jù)上述優(yōu)勢(shì),教師還可以采購(gòu)更多組的實(shí)驗(yàn)器材,降低各組儀器所分配的使用人數(shù),增強(qiáng)學(xué)習(xí)效果,盡量讓每名學(xué)生都能體驗(yàn)自己動(dòng)手做的樂趣,將創(chuàng)客精神帶入學(xué)生的心中,極大地激發(fā)學(xué)生的積極性與參與熱情,促進(jìn)創(chuàng)新思維、計(jì)算思維的培養(yǎng),以及創(chuàng)造能力的提高。希望這種形式的創(chuàng)客類課程能夠?yàn)檎n程的深化改革奠定一定的基礎(chǔ)。