龍 華
(廣東理工職業(yè)學(xué)院,中山 528400)
在2013年左右,Android開(kāi)發(fā)在高校興起,在教育系統(tǒng)的各種省培、國(guó)培中都開(kāi)設(shè)了Android開(kāi)發(fā)的培訓(xùn)項(xiàng)目,在軟件專(zhuān)業(yè)的移動(dòng)平臺(tái)軟件開(kāi)發(fā)及物聯(lián)網(wǎng)專(zhuān)業(yè)都講授A(yíng)ndroid程序設(shè)計(jì)。因?yàn)锳ndroid開(kāi)發(fā)是基于Java語(yǔ)言,所以最初的開(kāi)發(fā)工具是使用Java語(yǔ)言的開(kāi)發(fā)工具安裝插件進(jìn)行開(kāi)發(fā)。到了2016年,高校開(kāi)始引入Google公司的專(zhuān)門(mén)開(kāi)發(fā)工具AndroidStudio軟件。從就業(yè)層面來(lái)講,幾年前,學(xué)生找工作只要懂得Android四大組件,再懂一些常用的布局,那么找一份Android開(kāi)發(fā)的工作是不成問(wèn)題的,而現(xiàn)在公司招聘一個(gè)Android工程師不僅希望他能做好Android,還希望他能懂得一些前端和后臺(tái),或是直接要求公司現(xiàn)有的Java工程師同時(shí)進(jìn)行Android的開(kāi)發(fā)。
微信小程序自正式上線(xiàn)以來(lái)發(fā)展勢(shì)頭迅速,微信提供了完整的微信開(kāi)發(fā)者工具開(kāi)發(fā)環(huán)境,并可進(jìn)行云開(kāi)發(fā),使用云函數(shù)直接把數(shù)據(jù)存入云數(shù)據(jù)庫(kù),為前端開(kāi)發(fā)人員節(jié)省了環(huán)境搭建的工作量。小程序開(kāi)發(fā)具有開(kāi)發(fā)簡(jiǎn)單、無(wú)需復(fù)雜的專(zhuān)業(yè)知識(shí)、開(kāi)發(fā)周期短等特點(diǎn)。相對(duì)于A(yíng)ndroid APP,微信小程序不必考慮機(jī)型配置,無(wú)論是在安卓,IOS平臺(tái),還是在不同屏幕條件下,微信小程序都可以通過(guò)MINA框架呈現(xiàn)一致的效果,除此之外,微信小程序是一款以主流社交軟件微信為載體,并在其基礎(chǔ)上拓展微信功能的軟件,微信小程序相比于普通手機(jī)APP軟件將更容易被用戶(hù)所接受,也更符合互聯(lián)網(wǎng)及社會(huì)發(fā)展的方向.
微信小程序適合開(kāi)發(fā)一些業(yè)務(wù)邏輯簡(jiǎn)單、低頻次使用、對(duì)性能要求不高的應(yīng)用,對(duì)于復(fù)雜的功能,還是需要原生的APP來(lái)實(shí)現(xiàn),所以對(duì)于高校畢業(yè)生如果同時(shí)掌握Android開(kāi)發(fā)技術(shù)和微信小程序開(kāi)發(fā)技術(shù),將有效提高學(xué)生的就業(yè)競(jìng)爭(zhēng)力,本文設(shè)計(jì)了一個(gè)實(shí)訓(xùn)裝置,用于同時(shí)給學(xué)生講授A(yíng)ndroid開(kāi)發(fā)和微信小程序開(kāi)發(fā)。
本系統(tǒng)的框圖如圖1所示,手機(jī)運(yùn)行Android APP通過(guò)藍(lán)牙控制智能終端上的風(fēng)扇和燈的狀態(tài),手機(jī)也可以運(yùn)行微信小程序達(dá)到相同的功能,設(shè)計(jì)的界面可以做到一樣。Android APP是基于Java基礎(chǔ)編程來(lái)這實(shí)現(xiàn)的,微信小程序是基于網(wǎng)頁(yè)和js編程來(lái)實(shí)現(xiàn),但它們都屬于移動(dòng)端編程。本實(shí)驗(yàn)裝置選取了經(jīng)典的單片機(jī)型號(hào)89C52作為主控芯片,很多單片機(jī)教材都以它為對(duì)象進(jìn)行講解,便于學(xué)生查找資料,另一個(gè)原因它體型比較大,方便學(xué)生訓(xùn)練焊接技術(shù)。
圖1 ?系統(tǒng)方案構(gòu)成
AT89C52是ATMEL公司生產(chǎn)的一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫(xiě)口線(xiàn)。
本實(shí)驗(yàn)裝置的CPU采用AT89C52,串口接BLE低功耗藍(lán)牙設(shè)備,風(fēng)扇由I/O口引出信號(hào)后經(jīng)放大電路驅(qū)動(dòng),風(fēng)扇的檔位控制是通過(guò)使用定時(shí)器中斷后軟件編程實(shí)現(xiàn),指示燈的控制是由I/O腳直接控制,電路板上引出燒寫(xiě)程序的插針,方便下載程序到CPU中運(yùn)行,這個(gè)口也可以接串口助手,用于觀(guān)看手機(jī)通過(guò)藍(lán)牙下發(fā)的命令或模擬實(shí)驗(yàn)裝置上傳信息到手機(jī)上顯示。
89C52芯片的I/O輸出電流不能直接驅(qū)動(dòng)風(fēng)扇轉(zhuǎn)動(dòng),必須加驅(qū)動(dòng)電路,如圖2所示。本裝置選取了可以承載大電流的8550三極管,這部分知識(shí)可以供給學(xué)生學(xué)習(xí)三極管放大電路,風(fēng)扇檔位的控制使用了定時(shí)器中斷0定時(shí)產(chǎn)生中斷,依照PWN調(diào)制思想,定義時(shí)間變量接收手機(jī)下發(fā)的值產(chǎn)生四種不同的電壓供給風(fēng)扇。
圖2 實(shí)驗(yàn)裝置電路圖
本裝置選用BT04藍(lán)牙模塊,它是BLE低功耗的藍(lán)牙模塊,使用Android APP和微信小程序都可以搜索到它,相對(duì)于標(biāo)準(zhǔn)藍(lán)牙,BLE的功耗要低得多,這是因?yàn)锽LE采用了許多降低功耗的方法,包括少量的廣播信道數(shù),更加寬松的射頻參數(shù)和發(fā)送短數(shù)據(jù)包,以及可變的連接時(shí)間間隔,與標(biāo)準(zhǔn)藍(lán)牙完成一次連接周期需要數(shù)百毫秒的時(shí)間相比,BLE完成一次相同的連接時(shí)間只需要3 ms,且數(shù)據(jù)同步成功率高,經(jīng)測(cè)試在10 m范圍內(nèi)通過(guò)BLE藍(lán)牙收發(fā)數(shù)據(jù)無(wú)丟包情況。在本裝置中,BT04低功耗藍(lán)牙的功能是接收來(lái)自手機(jī)Android APP或是手機(jī)微信小程序的數(shù)據(jù),送到單片機(jī)89C52的串口,實(shí)現(xiàn)透?jìng)鞯男Ч?,如圖3所示,引發(fā)89C52的串口中斷,89C52在串口中斷處理程序中,對(duì)接收的數(shù)據(jù)進(jìn)行處理,根據(jù)數(shù)據(jù)不同,控制風(fēng)扇處于相應(yīng)的檔位或是控制指示燈的亮滅。
圖3 BLE藍(lán)牙和單片機(jī)的連接方法
微信小程序和Android系統(tǒng)內(nèi)置了BLE藍(lán)牙API,通過(guò)調(diào)用BLE藍(lán)牙API接口成功連接藍(lán)牙設(shè)備后,可以通過(guò)Bluetoothsocket實(shí)現(xiàn)與BLE藍(lán)牙模塊的數(shù)據(jù)接收和發(fā)送,在控制系統(tǒng)硬件方面有很大的應(yīng)用空間,Android APP編程和微信小程序編程通過(guò)藍(lán)牙控制終端都經(jīng)過(guò)以下步驟:①打開(kāi)手機(jī)的藍(lán)牙設(shè)備。②搜索藍(lán)牙。③連接藍(lán)牙。④發(fā)送數(shù)據(jù)或接收數(shù)據(jù)。流程如圖4所示。
圖4 手機(jī)控制智能裝置
本實(shí)驗(yàn)裝置使用的通訊協(xié)議如表1所示。
表1 手機(jī)和智能終端之間的通訊協(xié)議
在硬件和軟件調(diào)試完成后,開(kāi)始手機(jī)控制智能終端,如圖5所示。
圖5 實(shí)驗(yàn)現(xiàn)象
在圖5中,上面是智能裝置,左下角是Android APP,右下角是微信小程序,可以在一定的距離內(nèi)控制風(fēng)扇轉(zhuǎn)動(dòng)和指示燈的亮滅,低功耗BLE藍(lán)牙模塊接收數(shù)據(jù)正常,實(shí)驗(yàn)現(xiàn)象具有較強(qiáng)的趣味性。
目前來(lái)說(shuō),Android開(kāi)發(fā)是基于Java語(yǔ)言的一種編程技術(shù),是對(duì)JavaSE的高級(jí)應(yīng)用,公司大量以前生產(chǎn)的APP也需要維護(hù)。微信在國(guó)內(nèi)擁有大量的客戶(hù),基于微信的開(kāi)發(fā)在高校的教學(xué)中有很大必要性。Android編程和微信小程序編程都屬于移動(dòng)端的編程,本文設(shè)計(jì)了一款簡(jiǎn)易的智能終端裝置,可以使用Android APP控制和微信小程序控制,為高校移動(dòng)平臺(tái)軟件開(kāi)發(fā)課程同時(shí)講授這兩個(gè)技術(shù)作出了有益的嘗試。本項(xiàng)目的特色如下:
(1)可以采購(gòu)電子散件,讓學(xué)生組裝這個(gè)實(shí)驗(yàn)裝置,利用上面的電子元器件和放大電路,訓(xùn)練學(xué)生的焊接技術(shù)和電路基礎(chǔ)知識(shí)。
(2)本文的物聯(lián)網(wǎng)終端是可編程的,使用的BLE藍(lán)牙通訊技術(shù)在當(dāng)前的智能穿戴、智能家居中應(yīng)用非常廣泛。另外,在終端上還設(shè)計(jì)了WIFI模塊,可以使用開(kāi)關(guān)進(jìn)行切換,讓學(xué)生自由在藍(lán)牙和WIFI之間進(jìn)行選擇,終端有DHT11溫濕度傳感器,也可以讓它采集到的溫度、濕度顯示在A(yíng)PP或微信小程序上。
(3)鑒于當(dāng)前遠(yuǎn)程控制的火熱,后續(xù)也可以對(duì)智能終端進(jìn)行改進(jìn),使得Android APP和微信小程序可以遠(yuǎn)程控制相同的物聯(lián)網(wǎng)終端設(shè)備,常用的技術(shù)如使用MQTT協(xié)議的阿里云物聯(lián)網(wǎng)終端平臺(tái)(或中移動(dòng)oneNet平臺(tái)),在智能終端使用ESP8266通過(guò)WIFI聯(lián)網(wǎng),在這方面的技術(shù)可以孵化出很多的創(chuàng)新創(chuàng)業(yè)的項(xiàng)目。
(4)Android程序設(shè)計(jì)的前導(dǎo)課是面向?qū)ο蟪绦騄ava基礎(chǔ),而微信小程序是基于網(wǎng)頁(yè)設(shè)計(jì)的,微信小程序開(kāi)發(fā)和網(wǎng)頁(yè)前端開(kāi)發(fā)在技術(shù)上有許多相同構(gòu)造,當(dāng)一個(gè)對(duì)前端語(yǔ)言有相對(duì)了解的技術(shù)人員學(xué)習(xí)微信小程序開(kāi)發(fā)會(huì)得心應(yīng)手。所以本門(mén)課程建議設(shè)置在大二下學(xué)期或大三上學(xué)期,在學(xué)生學(xué)習(xí)完面向?qū)ο蟪绦蛟O(shè)計(jì)(java)和網(wǎng)頁(yè)設(shè)計(jì)相關(guān)課程之后再進(jìn)入移動(dòng)平臺(tái)軟件開(kāi)發(fā)課程的學(xué)習(xí)。因?yàn)橐婚T(mén)課同時(shí)講授兩個(gè)開(kāi)發(fā)技術(shù),所以講授的是它們的基礎(chǔ)入門(mén)知識(shí),對(duì)有興趣深入學(xué)習(xí)的學(xué)生,教師要布置相應(yīng)的拓展內(nèi)容。