宮雨欣,蒿特祺,史 清,賈味明,張家俊
(上海工程技術(shù)大學(xué),上海 201620)
本作品的集成開發(fā)平臺(tái):集成開發(fā)工具、微信開發(fā)者工具。
具備Android 8及以上操作系統(tǒng)的手機(jī)。本設(shè)計(jì)基于微信平臺(tái),可以跨平臺(tái)(Android、IOS)使用,與微信緊密結(jié)合,可使用微信(受到允許的公開信息,如昵稱、頭像等)實(shí)現(xiàn)一鍵登錄的效果,運(yùn)行需要微信6.5.2版本及以上[2]。
本設(shè)計(jì)基于微信移動(dòng)平臺(tái),具有更強(qiáng)的交互性、靈活性,無須考慮手機(jī)操作系統(tǒng)、版本不兼容、用戶信息泄露、App下載來源、內(nèi)存占用及更新等一系列問題。只需打開微信“掃一掃”或“搜一搜”,無須額外下載占用手機(jī)內(nèi)存空間。
微信小程序的框架系統(tǒng)為MINA應(yīng)用框架,實(shí)質(zhì)是一種雙線程模型,分為邏輯層(App Service)和視圖層(View)兩個(gè)部分。小程序的視圖層描述語言有WXML和WXSS,以及基于JavaScript的邏輯層框架,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng)。框架的核心是一個(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),可以讓數(shù)據(jù)與視圖簡單地保持同步。
在小程序啟動(dòng)時(shí),微信會(huì)在背后完成以下工作:下載小程序代碼包、加載小程序代碼包、初始化小程序首頁。同時(shí),在小程序啟動(dòng)或一個(gè)新的頁面被打開時(shí),頁面的初始數(shù)據(jù)(Data)和路徑等相關(guān)信息會(huì)從邏輯層發(fā)送給視圖層,用于視圖層的初始渲染。
本設(shè)計(jì)采用了小程序·云開發(fā)中云數(shù)據(jù)庫與云函數(shù)功能,以及騰訊云函數(shù)兩種云開發(fā)資源。小程序·云開發(fā)是微信團(tuán)隊(duì)聯(lián)合騰訊云推出的專業(yè)的小程序開發(fā)服務(wù),其優(yōu)勢在于無須搭建服務(wù)器,免登錄、免鑒權(quán)調(diào)用微信開放服務(wù)、不限開發(fā)語言與框架等,本設(shè)計(jì)采用JavaScript作為小程序·云函數(shù)的主要開發(fā)語言。騰訊云云函數(shù)(SCF)是騰訊云提供的無服務(wù)器執(zhí)行環(huán)境,開發(fā)者只需使用平臺(tái)支持的語言編寫并設(shè)置代碼運(yùn)行的條件,即可在騰訊云基礎(chǔ)設(shè)施上彈性、安全地運(yùn)行代碼,本設(shè)計(jì)在騰訊云函數(shù)部署的開發(fā)語言為Python。
本設(shè)計(jì)設(shè)定騰訊云云函數(shù)的觸發(fā)方式為API網(wǎng)關(guān)觸發(fā),在API接收到用戶端請求后,觸發(fā)云函數(shù),并將處理結(jié)果作為API響應(yīng)返回給客戶端。
采用TZ-1002 Wi-Fi模塊。TZ-1002支持標(biāo)準(zhǔn)的IEEE 802.11b/g/n協(xié)議,完整的TCP/IP協(xié)議棧。TZ-1002內(nèi)置的高速緩沖存儲(chǔ)器有利于提高系統(tǒng)性能,并減少內(nèi)存需求[3]。
本設(shè)計(jì)采用Altium Designer15軟件繪設(shè)計(jì)制原理圖。圖1為系統(tǒng)的電路原理圖。為獲得更加精簡的硬件電路,使用Altium Designer15軟件繪制原理圖,繪制封裝庫,并檢查電氣連接是否存在錯(cuò)誤。
圖1 電路原理圖
繪制PCB邊界,將PCB設(shè)置為雙層板。將電路原理圖及各器件封裝導(dǎo)入,采用交叉選擇模式以就近原則擺放元器件。元器件放置完畢后進(jìn)行手動(dòng)布線,原則上正反兩面交叉走線,盡量呈90°或45°,避免出現(xiàn)信號(hào)干擾。將檢查無誤的電路原理圖生成PCB模板,并導(dǎo)入PCB庫中。
編譯所畫的原理圖,設(shè)置電氣特性,選擇合適大小的板后對圖按規(guī)則進(jìn)行合理的布局、布線,同時(shí)檢查布線是否有誤。在底層和頂層覆銅,最終生成PCB圖,將生成的PCB圖發(fā)送給廠家加工,得到成品。
MySQL數(shù)據(jù)庫可通過配置公網(wǎng)IP地址的云服務(wù)器(如Linux云服務(wù)器),采用MySQL命令連接至騰訊云數(shù)據(jù)庫,則可用配置的云服務(wù)器作為中轉(zhuǎn),將MySQL數(shù)據(jù)庫中的數(shù)據(jù)上傳至中轉(zhuǎn)云服務(wù)器,再通過中轉(zhuǎn)云服務(wù)器將數(shù)據(jù)導(dǎo)入騰訊云數(shù)據(jù)庫。
硬件數(shù)據(jù)可利用騰訊云專用遷移設(shè)備與數(shù)據(jù)庫建立連接,接通后就可以進(jìn)行數(shù)據(jù)拷貝操作,拷貝完所有數(shù)據(jù)后,騰訊云會(huì)回收設(shè)備并將數(shù)據(jù)上傳云端[4]。
手機(jī)通過藍(lán)牙串口微信小程序控制手機(jī)藍(lán)牙與單片機(jī)藍(lán)牙通信,構(gòu)建了一個(gè)單片機(jī)與手機(jī)的串口通道。單片機(jī)從串口接到數(shù)據(jù),判斷數(shù)據(jù)并做出相應(yīng)動(dòng)作[5]。
該小程序由主頁、定位打卡模塊、我的課表模塊、個(gè)人中心模塊這四大模塊組成。
主頁模塊實(shí)現(xiàn)了注冊登錄的功能,基于微信開發(fā)者工具的云開發(fā)功能,將用戶的注冊身份信息保存至云端數(shù)據(jù)庫中,同時(shí)加入信息檢驗(yàn)?zāi)K來核驗(yàn)用戶的登錄信息和后臺(tái)數(shù)據(jù)庫的注冊信息。
定位打卡模塊主要通過MAC地址的檢測與比對實(shí)現(xiàn)定位功能,打卡功能主要用于統(tǒng)計(jì)和管理學(xué)生的簽到情況,用戶每一次簽到打卡,都會(huì)將打卡記錄上傳到后臺(tái)數(shù)據(jù)庫,進(jìn)行匯總統(tǒng)計(jì),同時(shí),用戶自己也可以在個(gè)人中心的打卡記錄界面查看自己的打卡記錄。
我的課表模塊幫助用戶隨時(shí)隨地查看自己的課程安排,用戶只需要導(dǎo)入自己的課程信息,系統(tǒng)會(huì)將信息同步到后臺(tái)數(shù)據(jù)庫并顯示給用戶,用戶即可在該模塊中查看自己的課程安排。
個(gè)人中心模塊為用戶提供了許多額外功能,依托微信平臺(tái),該模塊為用戶提供了客服服務(wù)和意見反饋的功能,用戶可以根據(jù)自己的使用體驗(yàn)向開發(fā)人員提出反饋意見,同時(shí)也可以督促開發(fā)人員進(jìn)行項(xiàng)目維護(hù)與更新。
(1)基于STM32單片機(jī)開發(fā)板搭建系統(tǒng),系統(tǒng)由GPS模塊、探針模塊、顯示和輸出模塊組成。
(2)通過串口通信配合Wi-Fi探針模塊實(shí)時(shí)獲取手機(jī)的MAC幀,隨后將解析的MAC地址進(jìn)行對比去重等處理。
(3)STM32單片機(jī)將處理完成的教室人流數(shù)據(jù)通過串口收發(fā)模塊傳輸至上位機(jī)與LDC12864顯示器,該系統(tǒng)可得到各教室實(shí)時(shí)人流數(shù)據(jù),人流數(shù)據(jù)包括:教室進(jìn)出客人數(shù)及對應(yīng)表格、教室實(shí)時(shí)人數(shù)[6]。
(4)軟、硬件部分集成和銜接。
(5)系統(tǒng)自動(dòng)記錄人流,通過串口收發(fā)至宿主機(jī),匯總OD矩陣得到教室進(jìn)出人數(shù)。
小程序名為“半畝方塘”,出自南宋詩人朱熹之作《觀書有感》。啟動(dòng)頁面以較大字體突出小程序的名稱,同時(shí)也體現(xiàn)了小程序的主要功能。節(jié)選詩作前二句,配以中國傳統(tǒng)山水畫為背景,營造出詩作中田園的意境,體現(xiàn)古代文人墨客的書香之氣,與小程序的總體定位相符合。
進(jìn)入小程序后,界面力求簡約明了,既能方便用戶找到自己所需的功能,又不會(huì)讓用戶被其紛繁復(fù)雜的設(shè)計(jì)所吸引而影響正常學(xué)習(xí)。小程序下方的菜單欄清晰說明了程序簽到打卡、課表查詢、個(gè)人中心的三大功能。每欄頁面采用大號(hào)字體,以突顯出該頁面的功能?!岸ㄎ弧表撁嬉约哟肿煮w顯示小程序定位分析得到的用戶實(shí)時(shí)位置,讓用戶更為直接地獲取到這一信息?!按_認(rèn)打卡”與“重新定位”兩個(gè)選項(xiàng)設(shè)置參考其他廣為人知的App,設(shè)置合理,符合絕大多數(shù)用戶的使用習(xí)慣;“我的課表”欄目中,用戶可通過滑動(dòng)課表上方的欄目選擇需要查找的周次,方便快捷。課表可上下滑動(dòng),為課表內(nèi)容提供更多空間,確保課表可承載課程名稱、上課地點(diǎn)、教師姓名等關(guān)鍵信息;“教室查詢”欄目中,將教室名稱和當(dāng)前人數(shù)兩大關(guān)鍵信息加粗、加大,突出顯示,方便用戶的使用。每間教室的空閑情況、Wi-Fi信號(hào)質(zhì)量、有無插座等情況一目了然,幫助用戶更好地選擇與確定目標(biāo)教室;在“個(gè)人中心”欄目中,用戶可以查看自己的打卡記錄,防止老師誤判曠課,還可以通過建議與反饋、在線客服及時(shí)反映系統(tǒng)出現(xiàn)的各種問題,增強(qiáng)小程序的交互性。
本文提出的基于STM32單片機(jī)和MAC地址定位的教室打卡與人流實(shí)時(shí)監(jiān)測微信小程序,通過TZ-1002 Wi-Fi探針模塊實(shí)現(xiàn)MAC地址的實(shí)時(shí)監(jiān)測匹配,從而實(shí)現(xiàn)人流動(dòng)態(tài)實(shí)時(shí)監(jiān)測與課堂考勤的功能。經(jīng)實(shí)踐表明,該小程序的整體設(shè)計(jì)思路是可行的,電路硬件設(shè)計(jì)與程序軟件設(shè)計(jì)可以有效結(jié)合,可延展性較強(qiáng),通過后期的持續(xù)優(yōu)化,該小程序還能實(shí)現(xiàn)更多實(shí)用功能,從而滿足任課教師與學(xué)生的多種需求。■