宮雨欣,蒿特祺,史 清,賈味明,張家俊
(上海工程技術大學,上海 201620)
本作品的集成開發平臺:集成開發工具、微信開發者工具。
具備Android 8及以上操作系統的手機。本設計基于微信平臺,可以跨平臺(Android、IOS)使用,與微信緊密結合,可使用微信(受到允許的公開信息,如昵稱、頭像等)實現一鍵登錄的效果,運行需要微信6.5.2版本及以上[2]。
本設計基于微信移動平臺,具有更強的交互性、靈活性,無須考慮手機操作系統、版本不兼容、用戶信息泄露、App下載來源、內存占用及更新等一系列問題。只需打開微信“掃一掃”或“搜一搜”,無須額外下載占用手機內存空間。
微信小程序的框架系統為MINA應用框架,實質是一種雙線程模型,分為邏輯層(App Service)和視圖層(View)兩個部分。小程序的視圖層描述語言有WXML和WXSS,以及基于JavaScript的邏輯層框架,并在視圖層與邏輯層間提供了數據傳輸和事件系統。框架的核心是一個響應的數據綁定系統,可以讓數據與視圖簡單地保持同步。
在小程序啟動時,微信會在背后完成以下工作:下載小程序代碼包、加載小程序代碼包、初始化小程序首頁。同時,在小程序啟動或一個新的頁面被打開時,頁面的初始數據(Data)和路徑等相關信息會從邏輯層發送給視圖層,用于視圖層的初始渲染。
本設計采用了小程序·云開發中云數據庫與云函數功能,以及騰訊云函數兩種云開發資源。小程序·云開發是微信團隊聯合騰訊云推出的專業的小程序開發服務,其優勢在于無須搭建服務器,免登錄、免鑒權調用微信開放服務、不限開發語言與框架等,本設計采用JavaScript作為小程序·云函數的主要開發語言。騰訊云云函數(SCF)是騰訊云提供的無服務器執行環境,開發者只需使用平臺支持的語言編寫并設置代碼運行的條件,即可在騰訊云基礎設施上彈性、安全地運行代碼,本設計在騰訊云函數部署的開發語言為Python。
本設計設定騰訊云云函數的觸發方式為API網關觸發,在API接收到用戶端請求后,觸發云函數,并將處理結果作為API響應返回給客戶端。
采用TZ-1002 Wi-Fi模塊。TZ-1002支持標準的IEEE 802.11b/g/n協議,完整的TCP/IP協議棧。TZ-1002內置的高速緩沖存儲器有利于提高系統性能,并減少內存需求[3]。
本設計采用Altium Designer15軟件繪設計制原理圖。圖1為系統的電路原理圖。為獲得更加精簡的硬件電路,使用Altium Designer15軟件繪制原理圖,繪制封裝庫,并檢查電氣連接是否存在錯誤。

圖1 電路原理圖
繪制PCB邊界,將PCB設置為雙層板。將電路原理圖及各器件封裝導入,采用交叉選擇模式以就近原則擺放元器件。元器件放置完畢后進行手動布線,原則上正反兩面交叉走線,盡量呈90°或45°,避免出現信號干擾。將檢查無誤的電路原理圖生成PCB模板,并導入PCB庫中。
編譯所畫的原理圖,設置電氣特性,選擇合適大小的板后對圖按規則進行合理的布局、布線,同時檢查布線是否有誤。在底層和頂層覆銅,最終生成PCB圖,將生成的PCB圖發送給廠家加工,得到成品。
MySQL數據庫可通過配置公網IP地址的云服務器(如Linux云服務器),采用MySQL命令連接至騰訊云數據庫,則可用配置的云服務器作為中轉,將MySQL數據庫中的數據上傳至中轉云服務器,再通過中轉云服務器將數據導入騰訊云數據庫。
硬件數據可利用騰訊云專用遷移設備與數據庫建立連接,接通后就可以進行數據拷貝操作,拷貝完所有數據后,騰訊云會回收設備并將數據上傳云端[4]。
手機通過藍牙串口微信小程序控制手機藍牙與單片機藍牙通信,構建了一個單片機與手機的串口通道。單片機從串口接到數據,判斷數據并做出相應動作[5]。
該小程序由主頁、定位打卡模塊、我的課表模塊、個人中心模塊這四大模塊組成。
主頁模塊實現了注冊登錄的功能,基于微信開發者工具的云開發功能,將用戶的注冊身份信息保存至云端數據庫中,同時加入信息檢驗模塊來核驗用戶的登錄信息和后臺數據庫的注冊信息。
定位打卡模塊主要通過MAC地址的檢測與比對實現定位功能,打卡功能主要用于統計和管理學生的簽到情況,用戶每一次簽到打卡,都會將打卡記錄上傳到后臺數據庫,進行匯總統計,同時,用戶自己也可以在個人中心的打卡記錄界面查看自己的打卡記錄。
我的課表模塊幫助用戶隨時隨地查看自己的課程安排,用戶只需要導入自己的課程信息,系統會將信息同步到后臺數據庫并顯示給用戶,用戶即可在該模塊中查看自己的課程安排。
個人中心模塊為用戶提供了許多額外功能,依托微信平臺,該模塊為用戶提供了客服服務和意見反饋的功能,用戶可以根據自己的使用體驗向開發人員提出反饋意見,同時也可以督促開發人員進行項目維護與更新。
(1)基于STM32單片機開發板搭建系統,系統由GPS模塊、探針模塊、顯示和輸出模塊組成。
(2)通過串口通信配合Wi-Fi探針模塊實時獲取手機的MAC幀,隨后將解析的MAC地址進行對比去重等處理。
(3)STM32單片機將處理完成的教室人流數據通過串口收發模塊傳輸至上位機與LDC12864顯示器,該系統可得到各教室實時人流數據,人流數據包括:教室進出客人數及對應表格、教室實時人數[6]。
(4)軟、硬件部分集成和銜接。
(5)系統自動記錄人流,通過串口收發至宿主機,匯總OD矩陣得到教室進出人數。
小程序名為“半畝方塘”,出自南宋詩人朱熹之作《觀書有感》。啟動頁面以較大字體突出小程序的名稱,同時也體現了小程序的主要功能。節選詩作前二句,配以中國傳統山水畫為背景,營造出詩作中田園的意境,體現古代文人墨客的書香之氣,與小程序的總體定位相符合。
進入小程序后,界面力求簡約明了,既能方便用戶找到自己所需的功能,又不會讓用戶被其紛繁復雜的設計所吸引而影響正常學習。小程序下方的菜單欄清晰說明了程序簽到打卡、課表查詢、個人中心的三大功能。每欄頁面采用大號字體,以突顯出該頁面的功能。“定位”頁面以加粗字體顯示小程序定位分析得到的用戶實時位置,讓用戶更為直接地獲取到這一信息。“確認打卡”與“重新定位”兩個選項設置參考其他廣為人知的App,設置合理,符合絕大多數用戶的使用習慣;“我的課表”欄目中,用戶可通過滑動課表上方的欄目選擇需要查找的周次,方便快捷。課表可上下滑動,為課表內容提供更多空間,確保課表可承載課程名稱、上課地點、教師姓名等關鍵信息;“教室查詢”欄目中,將教室名稱和當前人數兩大關鍵信息加粗、加大,突出顯示,方便用戶的使用。每間教室的空閑情況、Wi-Fi信號質量、有無插座等情況一目了然,幫助用戶更好地選擇與確定目標教室;在“個人中心”欄目中,用戶可以查看自己的打卡記錄,防止老師誤判曠課,還可以通過建議與反饋、在線客服及時反映系統出現的各種問題,增強小程序的交互性。
本文提出的基于STM32單片機和MAC地址定位的教室打卡與人流實時監測微信小程序,通過TZ-1002 Wi-Fi探針模塊實現MAC地址的實時監測匹配,從而實現人流動態實時監測與課堂考勤的功能。經實踐表明,該小程序的整體設計思路是可行的,電路硬件設計與程序軟件設計可以有效結合,可延展性較強,通過后期的持續優化,該小程序還能實現更多實用功能,從而滿足任課教師與學生的多種需求。■