范魯寧+張世波+蔣雯音
摘要:目的:以智慧健康為主旨的課程開(kāi)發(fā)供學(xué)生上課學(xué)習(xí)和參加競(jìng)賽。方法:主要采用安卓應(yīng)用開(kāi)發(fā)、云計(jì)算技術(shù)、下一代Web開(kāi)發(fā)技術(shù)——響應(yīng)式網(wǎng)頁(yè)、嵌入式開(kāi)發(fā)平臺(tái)——樹(shù)莓派開(kāi)發(fā)板等技術(shù)和設(shè)備。結(jié)果:相繼開(kāi)發(fā)了天氣預(yù)報(bào)、健康運(yùn)動(dòng)軟件、遠(yuǎn)程監(jiān)控機(jī)器人等項(xiàng)目。結(jié)論:通過(guò)上課和比賽,加強(qiáng)了學(xué)生的動(dòng)手能力,最終達(dá)到增強(qiáng)就業(yè)競(jìng)爭(zhēng)力的效果,為加強(qiáng)本專業(yè)的建設(shè)添一份力。
關(guān)鍵詞:Android應(yīng)用程序;云計(jì)算;智慧健康;計(jì)算機(jī)競(jìng)賽;下一代WEB開(kāi)發(fā)技術(shù);樹(shù)莓派開(kāi)發(fā)板
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)14-0084-03
The Development Records of Intelligence Health Courses with Android Application and Other New Technical
FAN Lu-ning, ZHANG Shi-bo, JIANG Wen-yin
(Health Career Technical College, Ningbo 315100, China)
Abstract: Purpose: To develop the courses of intelligence health for students to learn new techniques and to take part of different competitions. Method: Mainly use android application, cloud computation, the next generation of web development technique—response web site, and embedded development platform—Raspberry Pi as the tools. Results: We have already developed a weather forecast application, a health sports application and a remote monitor robot. Conclusion: All these projects are useful for students to learn the new techniques and more Beneficial in their career way, and are also meaningful for the development of health information specialty.
Key words: Android application; cloud computation; intelligence health; computer competition; next generation web development technique; Raspberry Pi
1 市場(chǎng)需求和研發(fā)方向
隨著醫(yī)院信息系統(tǒng)的進(jìn)一步建設(shè)和市場(chǎng)對(duì)信息化要求的整體提高,普通高職高專院校畢業(yè)學(xué)生所掌握的知識(shí)和技能已經(jīng)不足以解決能適應(yīng)醫(yī)院日益繁雜的信息化系統(tǒng)產(chǎn)生的系列問(wèn)題。比如制作手機(jī)APP軟件平臺(tái),管理和維修先進(jìn)智能的醫(yī)療設(shè)備[1],構(gòu)建跨平臺(tái)網(wǎng)站等都需要新的教學(xué)理念和技術(shù)課程來(lái)支持。
2 研究思路
本課題的研發(fā)目的是開(kāi)發(fā)以健康、運(yùn)動(dòng)、心理為主題的手機(jī)應(yīng)用系列軟件以及物聯(lián)網(wǎng)的相關(guān)新技術(shù)的應(yīng)用,借此開(kāi)辟一系列新課程,參加一批全國(guó)全省級(jí)別的新技術(shù)比賽,達(dá)到鍛煉學(xué)生技能,錘煉教師水平的目的。
2.1 以安卓應(yīng)用開(kāi)發(fā)為起點(diǎn)
首先,我們選擇從安卓應(yīng)用開(kāi)發(fā)入手,使用App Inventor2開(kāi)發(fā)平臺(tái),它是由麻省理工和谷歌共同開(kāi)發(fā)的一款網(wǎng)頁(yè)版安卓開(kāi)發(fā)工具[2],不需要安裝,并且有國(guó)內(nèi)服務(wù)器支持(app.gzjkw.net),登陸速度很快,代碼主要以拼接的方式完成,簡(jiǎn)單易學(xué),非常適合高職高專的學(xué)生拿來(lái)練手,培養(yǎng)編程思想。
2.2 以Web技術(shù)為中轉(zhuǎn)站
有了普通的單機(jī)版安卓應(yīng)用還不夠,我們要讓手機(jī)上網(wǎng)連接其他數(shù)據(jù)和設(shè)備,Web服務(wù)器是一個(gè)很好的中轉(zhuǎn)站。同時(shí)也可以作為展示平臺(tái),做到跨設(shè)備、跨瀏覽器。手機(jī)可以簡(jiǎn)單地通過(guò)網(wǎng)頁(yè)來(lái)遠(yuǎn)程訪問(wèn)和控制其他設(shè)備上的資源。
2.3 樹(shù)莓派
要開(kāi)發(fā)智慧健康類的產(chǎn)品,就少不了要使用嵌入式的設(shè)備。很流行的樹(shù)莓派開(kāi)發(fā)板是由英國(guó)大學(xué)開(kāi)發(fā)的一跨專門用于教育的卡片式電腦[3]。我們使用這款開(kāi)發(fā)版制作遠(yuǎn)程監(jiān)控、智能機(jī)器人等項(xiàng)目,并通過(guò)手機(jī)實(shí)現(xiàn)遠(yuǎn)程控制。
3 具體設(shè)計(jì)
本專業(yè)原先設(shè)置有程序設(shè)計(jì)、數(shù)據(jù)庫(kù)課程、網(wǎng)絡(luò)以及多媒體制作等相關(guān)課程,具備了基本的知識(shí)儲(chǔ)備。在此基礎(chǔ)上可以開(kāi)發(fā)一些綜合性項(xiàng)目,提高學(xué)生的動(dòng)手能力,增強(qiáng)競(jìng)技水平。
3.1 以比賽為導(dǎo)向的Android應(yīng)用程序開(kāi)發(fā)
3.1.1 天氣預(yù)報(bào)
2015年,我們以天氣情況的預(yù)報(bào)和云計(jì)算的應(yīng)用作為切入點(diǎn),制作了對(duì)應(yīng)中國(guó)大學(xué)生計(jì)算機(jī)設(shè)計(jì)大賽的一些作品,天氣數(shù)據(jù)來(lái)自百度車聯(lián)網(wǎng),只要申請(qǐng)一個(gè)百度開(kāi)發(fā)者密鑰就可以免費(fèi)使用JSON格式的API數(shù)據(jù)。我們對(duì)教科書(shū)中的功能做了改進(jìn),專門提取出PM2.5的值,讓界面的背景色隨著污染程度的改變而改變,天氣表情也使用自己準(zhǔn)備的,更加可愛(ài)的一系列圖片。
3.1.2 綠色生活
今年,我們?cè)陬A(yù)報(bào)天氣指數(shù)的基礎(chǔ)上進(jìn)一步結(jié)合計(jì)步器,地圖定位等功能開(kāi)發(fā)一款我們自己的運(yùn)動(dòng)類應(yīng)用。計(jì)步器是以手機(jī)的加速度傳感器震動(dòng)4次為一步計(jì)算的,計(jì)時(shí)采用每個(gè)計(jì)時(shí)器循環(huán)加一秒的方式計(jì)算,3600秒為一小時(shí),在這兩個(gè)基礎(chǔ)上還可以算出步頻。
另外,還可以利用手機(jī)的方向傳感器,制作一個(gè)小指南針?lè)胖迷谟?jì)步器頁(yè)面,方便在野外隨時(shí)指明方向。實(shí)現(xiàn)在戶外計(jì)算運(yùn)動(dòng)量、查看運(yùn)動(dòng)時(shí)間、地理定位和查看天氣這些功能的組合。
簡(jiǎn)單實(shí)現(xiàn)指南效果
3.2 跨平臺(tái)的下一代Web技術(shù)
手機(jī)除了使用本身的傳感器實(shí)現(xiàn)一些功能外,網(wǎng)絡(luò)的功能也是必須要被利用起來(lái)的一大資源。老一代的網(wǎng)頁(yè)一般只提供PC機(jī)上的使用體驗(yàn),如果在移動(dòng)設(shè)備上打開(kāi),字符就會(huì)變得很小,畫(huà)面也會(huì)重疊,變得難以閱讀。
新一代的響應(yīng)式網(wǎng)頁(yè)技術(shù)可以讓網(wǎng)頁(yè)中的各個(gè)組件適應(yīng)屏幕寬度的變化,當(dāng)寬度小于某一值的時(shí)候,導(dǎo)航條、圖片、文字的排列都會(huì)隨著設(shè)備寬度變化做出調(diào)整。
網(wǎng)頁(yè)內(nèi)容會(huì)變長(zhǎng),一個(gè)屏幕寬度的內(nèi)容會(huì)被分割成3個(gè)或4個(gè)條狀的內(nèi)容,以拖拽的方式完成查看;按鈕會(huì)變得顏色鮮艷,形狀寬大,容易讓用戶的手指點(diǎn)擊;導(dǎo)航菜單會(huì)縮成一個(gè)下拉框,只有點(diǎn)擊后才會(huì)展開(kāi),這些都符合了人們使用移動(dòng)設(shè)備的閱讀習(xí)慣。
最新出現(xiàn)的Bootstrap前端開(kāi)發(fā)框架提供了用戶友好的跨瀏覽器解決方案,下圖是使用Bootstrap框架開(kāi)發(fā)的課程平臺(tái)[5]。
3.3 智能機(jī)器人
我們還在另一門有關(guān)物聯(lián)網(wǎng)的專業(yè)課程中使用樹(shù)莓派(raspberry pi)開(kāi)發(fā)板制作了可以移動(dòng)、攝像、取物的智能小車。
3.3.1 通過(guò)樹(shù)莓派驅(qū)動(dòng)電機(jī)
驅(qū)動(dòng)電機(jī)用的是相對(duì)簡(jiǎn)單的Python語(yǔ)言來(lái)控制開(kāi)發(fā)板上的GPIO引腳,通過(guò)設(shè)置高低電平來(lái)控制電機(jī)的轉(zhuǎn)動(dòng)[6]。下面這段代碼是一個(gè)小車前進(jìn)的函數(shù),通過(guò)調(diào)用這個(gè)函數(shù),小車就會(huì)前進(jìn)一段距離。
def forward(sleep_time):
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
3.3.2 手機(jī)通過(guò)網(wǎng)頁(yè)遠(yuǎn)程遙控小車
使用python的tornado異步IO框架,在樹(shù)莓派上架設(shè)一個(gè)Web服務(wù)器。使用類IndexHandle來(lái)監(jiān)控鼠標(biāo)或鍵盤事件class IndexHandler (tornado.web.RequestHandler)。手機(jī)等移動(dòng)設(shè)備通過(guò)訪問(wèn)這個(gè)網(wǎng)頁(yè),就能作為遙控器遠(yuǎn)程遙控小車了[7]。
//按下鼠標(biāo)事件
$('.forward').mousedown(function(){
#按下鼠標(biāo)這個(gè)事件驅(qū)動(dòng)實(shí)現(xiàn)對(duì)前進(jìn)這個(gè)函數(shù)的調(diào)用
i = setInterval(function(){
go('w');
},100);});#前進(jìn)0.1秒,鍵盤上按W也能控制
//監(jiān)聽(tīng)鍵盤事件
window.document.onkeydown = kpress;//通過(guò)document類來(lái)管理鍵盤事件onkeydown
function kpress(e){
e = (e) ? e : window.event;
if(e.keyCode=='87'){
go('w');//w鍵的ASCII碼為87
}
3.3.3 遠(yuǎn)程監(jiān)控
遠(yuǎn)程監(jiān)控比較簡(jiǎn)單,我們使用普通的USB攝像頭連接樹(shù)莓派,下載一個(gè)現(xiàn)成的應(yīng)用程序motion用來(lái)監(jiān)控并捕捉移動(dòng)的畫(huà)面,通過(guò)調(diào)整幀數(shù)、畫(huà)面質(zhì)量、輸出格式和遠(yuǎn)程開(kāi)關(guān),可以在手機(jī)或電腦安裝的VLC播放器上通過(guò)網(wǎng)絡(luò)流數(shù)據(jù)模式打開(kāi)樹(shù)莓派的IP地址,就可以遠(yuǎn)程觀看攝像頭拍到的畫(huà)面了。以下這串命令就是使用樹(shù)莓派的vid工具把分辨率是1280x720幀數(shù)是50幀的錄像通過(guò)8081端口發(fā)送出去。
raspivid -o - -t 0 -w 1280 -h 720 -fps 50|cvlc -vvv stream:///dev/stdin--sout'#standard{access=http,mux=ts,dst=:8081}' :demux=h264 &> /dev/null
3.3.4 機(jī)械臂的加入
機(jī)械臂是智能機(jī)器人的一個(gè)標(biāo)志,主要通過(guò)多個(gè)舵機(jī)實(shí)現(xiàn)多維度的運(yùn)動(dòng),配上一個(gè)金屬夾子,可以像人手一樣抓取物體。同樣也使用Python語(yǔ)言獲取對(duì)引腳的控制,非常容易被軟件開(kāi)發(fā)人員理解。舵機(jī)類似于步進(jìn)電機(jī),每隔幾十毫秒對(duì)信號(hào)作出反應(yīng),我們可以控制時(shí)間來(lái)讓其轉(zhuǎn)過(guò)固定的角度。
4 結(jié)束語(yǔ)
我們緊跟市場(chǎng)需求,開(kāi)發(fā)了這些的教學(xué)內(nèi)容,以項(xiàng)目化的教學(xué)模式激發(fā)學(xué)生的學(xué)習(xí)興趣,提高動(dòng)手開(kāi)發(fā)在課堂任務(wù)中的比例。通過(guò)2到3門課程的布局,引導(dǎo)學(xué)生逐步深入對(duì)一系列新技術(shù)發(fā)展方向的認(rèn)知,并在2年間多次獲得國(guó)家級(jí)、省級(jí)比賽的優(yōu)異成績(jī),學(xué)生和老師都獲得了名譽(yù)和物質(zhì)的雙重獎(jiǎng)勵(lì),更加激勵(lì)了我們?cè)谶@個(gè)道路上的繼續(xù)前行。
后續(xù)開(kāi)發(fā)方面,我們會(huì)繼續(xù)在智能機(jī)器人的研制上投入資源,達(dá)到對(duì)更多電子元件和傳感器的遠(yuǎn)程控制[8];發(fā)展服務(wù)器端的開(kāi)發(fā),讓內(nèi)容以網(wǎng)站形式展現(xiàn)給用戶,設(shè)計(jì)新型的NoSQL數(shù)據(jù)庫(kù),存儲(chǔ)更多形式和種類的數(shù)據(jù)資源,解決智慧健康產(chǎn)品設(shè)計(jì)中遇到的新問(wèn)題。
參考文獻(xiàn):
[1] 俞磊. 物聯(lián)網(wǎng)技術(shù)在醫(yī)療領(lǐng)域的研究進(jìn)展[J].計(jì)算機(jī)應(yīng)用研究, 2012(3): 46-48.
[2] 黃仁祥. 人人都能開(kāi)發(fā)安卓App–App Inventor 2 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)[M]. 北京: 機(jī)械工業(yè)出版社, 2014:91-97.
[3] Brendan Horan. Raspberry Pi樹(shù)莓派實(shí)作應(yīng)用[M]. 北京: 人民郵電出版社, 2014: 1-23.
[4] Kris Hadlock. jQuery移動(dòng)開(kāi)發(fā)[M]. 北京: 人民郵電出版社, 2013: 14-21.
[5] David Cochran. Bootstrap實(shí)戰(zhàn)[M]. 北京: 人民郵電出版社, 2015: 23-63.
[6] Sunny. 樹(shù)莓派小車系列之按鍵控制[EB/OL]. http://www.sunnyos.com/.
[7] Alex Bradbury. 樹(shù)莓派Python編程指南[M]. 北京: 機(jī)械工業(yè)出版社, 2015: 117-134.
[8] 王田苗. 基于PLC的神經(jīng)外科機(jī)器人控制系統(tǒng)研究[J].機(jī)器人, 2006(5) : 495-498.