朱 哲,鐘 聲(通信作者),郭 豪,王 盛,周哲臣,王佳軒,梁成龍,陳語琪
(1西南石油大學土木工程與測繪學院 四川 成都 610500)
(2西南石油大學計算機科學學院 四川 成都 610500)
(3西南石油大學電氣信息學院 四川 成都 610500)
隨著國民生活水平的提高,在國內各大小城市中電動自行車的使用量快速上升,在高校中尤為明顯,由于電動自行車的輕便省力,大部分學生選擇其作為在校園里的代步工具,使高校中電動自行車的數量大幅度增加,這也對校園充電樁的需求量提出了更高的要求[1]。由于在充電過程中,電動自行車亂停亂放、充電私接電纜、亂拔他人充電線、電瓶充電充壞等問題層出不窮,因此,本文研究設計一款微信小程序,便于使用者快速尋找充電位置,并對學校充電樁布局提供建議,推動智慧校園的建設[2]。
本文以西南石油大學為例,由于校園擴建、教學樓間距離增加,電動自行車成了學生和教師出行的主要交通工具,電動自行車的保有量也隨之增加,導致師生對充電樁的需求量急速提升。并且在使用過程中,電動自行車亂停亂放、電線私自亂接、擅自拔掉他人未使用完的充電器等問題時有發生,還有充電線插反導致充電器燒壞問題[3],對校園環境和師生造成不便并增加了安全隱患,因此,加強校園充電樁的安全管理十分重要。基于電動自行車充電樁的理論分析,專家學者提出了立柱式充電樁、移動式充電樁等解決方法[4]。但是,由于校園學生基數大、電動自行車數量增加、充電樁數量有限等原因,導致花費大量時間尋找空閑充電樁,電動自行車擺放無序,充電過程中被他人終止充電等問題頻出不窮。這些問題一方面對大學生日常學習生活造成影響,另一方面給校園的環境、管理和安全帶來威脅。因此,本文研究設計一款可查看充電樁分布和使用情況、監控電動自行車溫度、方便學校管理的智慧校園充電小程序,并設計一種防拔裝置,便于師生充電使用。
通過實地調研校園,統計學校的電動自行車數量、充電樁個數、分布范圍及其使用頻率,得到電動自行車數量約3 000個,充電樁個數共241個,其主要分布范圍如下表所示,研究框架圖如圖1所示。

表1 充電樁分布表

圖1 研究框架
根據目前調研情況,校內電動自行車充電情況經常會有充電樁個數不足,以及充電樁管理缺陷問題,管理發展建設程度較低,仍有大幅度的提升空間。本研究設計的小程序意在輔助主要的充電樁管控嵌入式設備進行充電樁的管理,包括電滿釋放、充電付費、充電樁使用情況等。因此設計一個能夠進行不同地理位置個性化定制和多功能高效率的充電樁小程序是完全有必要的。
2.2.1 前端技術
本研究前端開發基于微信小程序,采用工具為微信開發者工具[5],主要包含有JavaScript、json、wxml、wxss等相關技術,主要實現小程序界面設計,界面與后端的人機交互。
首先,使用微信小程序官方codeID,與微信賬號連接起來實現微信登錄功能,保證數據傳輸的安全性和隱蔽性。其次,本研究所運用的微信小程序的JavaScript運行環境是在微信App的上下文中,既不能操作Browser context下的DOM,也不能通過Node.js相關接口訪問操作系統API。雖然本研究設計的微信小程序并不是Html5,但是開發過程和用到的技術棧和Html5是相通的。本研究前端部分采用微信小程序開發最多受眾的uniapp開發框架,uniapp是一款基于web端vue框架的適配微信小程序端的框架,具有輕量級、快捷方便的特性。在框架的基礎上使用axios通信技術與后端MySQL數據庫進行交互,相比于傳統的ajax網絡通信技術,axios更加方便、靈活、快速,它是對ajax的一種集成和改造,能夠充分利用ajax的優點并且剔除其缺點。通過交互技術獲取后端數據后通過頁面過渡組件展示在小程序頁面上面。
在小程序UI設計方面,以簡潔大方為主,采用主綠色配色,列表框架居多。在代碼方面,進行了組件封裝,大大提高了前端部分代碼的復用性,減少了后期維護的復雜性,只需要通過修改相關組件的代碼即可對程序進行調試。
2.2.2 后端技術
本研究后端基于SpringBoot+MyBatis[6],主要實現用戶登錄、充電樁的使用記錄、充電倒計時等功能。數據庫使用MySQL數據庫,同時配合NoSQL數據庫Redis,消息中間件RabbitMQ進行異步解耦的優化。引用第三方API,實現用戶微信登錄、短信驗證等。通過AOP面向切面編程,完成對業務方法的耗時統計,對業務代碼進行優化。使用MySQL索引,通過充電樁的id作為主鍵索引,加快數據庫的查詢速度。使用Redis緩存、String數據類型記錄充電樁使用情況,通過設置過期時間的方式進行充電倒計時。數據庫和緩存存在一致性問題,由于項目對緩存命中率沒有過高要求,選用旁路緩存模式進行設計。讀操作時進行更新緩存,寫操作時刪除緩存。使用Redis+MyBatis二級緩存,避免緩存雪崩提高系統的可用性。使用RabbitMQ消息中間件,實現索引庫和數據庫的同步達到異步解耦。通過synchronized關鍵字,保證線程對資源訪問的同步性,通過加鎖的方式防止充電樁的多次支付。采用單例模式雙重判空加同步的方式實現單例。
2.2.3 簡單的JVM調優
目的在于使用較小的內存占用來獲得較高的吞吐量或較低的延遲。在復雜和高并發下的服務下,可能出現很多影響系統穩定的因素,為了保證每次Garbage collection(gc)不會出現性能下降,各種性能指標不會出現波動,Garbage collection(gc)回收規律而且干凈,保證系統的穩定運行,本系統決定采用JVM調優技術[7]。首先通過插件檢測得到本系統需要優化的JVM參數,生成一份用于本項目的JVM配置文件,其次使用生成的配置文件替代JVM的原有配置。在JVM調優后,系統的穩定性得到了提高。
本研究根據西南石油大學電動自行車使用現狀而設計出的智慧校園電動自行車充電小程序主要功能如圖2所示。主要分為三個模塊,功能主頁中主要幫助使用者快速尋找可充電位置,并且可幫助使用者查看電動自行車充電情況,在使用過程中有任何問題,可通過維修報備與問題反饋至后臺中,相關工作人員會及時解決;賬單頁面中主要是進行充值服務、余額查看和消費記錄,套餐中可選擇1元4小時、2元8小時與3元12小時充電服務,可滿足使用者電動自行車供電量需求;個人頁面中可修改個人資料,點擊“我的電動車”可查看電動自行車充電情況,并且可選擇中斷或者續費充電服務。小程序的功能可滿足師生日常充電需求,解決目前存在的找不到可充電位置等問題,可幫助學校進行校園管理,建設安全、舒適的校園環境。

圖2 充電小程序功能框架
對于充電時被他人拔除充電線問題,結合校園充電樁的實際使用情況,本文提出了一種防拔控制原件以配合小程序實現電動自行車充電時無法被他人惡意拔除。對于該部分,研究采用基于MM32F3277開發板來控制。MM32F3277系列使用的是高性能的ArmCortex-M3作為內核的32位單片機微控制器,工作頻率達到120 MHz,內置SRAM和內存高速存儲器,豐富的I/O端口和外設連接到外部總線。
用戶通過軟件界面發出開或關斷信號,該信號通過無線串口發送給開發板,開發板再通過排線將控制信號發送給驅動芯片。驅動芯片在接收到來自開發板的信號后,通過內部集成的驅動芯片來控制Mos管的開通和關斷。研究人員將電磁開關裝置集成到充電插板上,當驅動板上Mos管打開時對電磁開關供電,開關彈出將電動自行車充電器插頭夾緊,Mos管關閉時停止供電,開關斷開,插頭則松開。圖3和圖4分別為開發板和驅動板3D模型圖片。

圖3 開發板

圖4 驅動板
本文基于以上研究設計出一款便于師生使用的電動自行車充電小程序,小程序界面如圖5所示。主頁包含五個板塊,分別是充電樁分布點、維修報備、監控查看和GPS定位、通知、問題反饋。分布點可查看當前校內充電樁分布位置以及空閑充電樁。維修報備可上報問題充電口至后臺。監控查看和GPS定位可導航到目標充電樁。小程序相關通知會發放在通知模塊中。問題反饋可反饋相關問題到后臺。

圖5 小程序界面
充電樁的布局規劃與交通量、充電需求和服務半徑、充電設施的多樣化、運營模式、城市電網規劃等密切相關。充電樁的建立,應該符合校園總體規劃以及交通規劃,充電樁的對象為交通流中的電動自行車,故應依托于交通系統來選取充電設施的大體位置,若安排不當,既降低充電樁的使用率,又會影響交通,例如將充電樁建立在交叉路口,可能會引起交通堵塞。在對充電樁的需求準確測算的基礎上,要合理把控充電樁的數量,這樣可以做到資源的節約,避免造成充電樁的閑置。充電樁運行需要有穩定的電力供應,所以在規劃上本研究必須充分考慮規劃區域輸配電網現狀,滿足規劃的充電設施運行電力要求。根據目前西南石油大學電動自行車保有量,應在校園增加三個充電站,分別在二期籃球場旁邊空地上,增加約300個充電樁;在教師公寓31幢附近增加約100個充電樁;在一期宿舍10幢附近增加約300個充電樁,即可滿足當前校園電動自行車充電需求。充電樁布局如下圖所示:

圖6 充電樁分布圖
本文以西南石油大學為例,基于SpringBoot+MyBatis等關鍵技術,開發出智慧校園電動自行車充電小程序,小程序具有輕量級、方便性、安全性和保密性等優點。選擇微信小程序[8]的優點在于不會占據用戶手機內存,使用者無需等待與加載,掃碼或者搜索即可打開,開發成本低,維護較為方便。本文針對校園電動自行車充電存在的亂停亂放、拔除他人充電線等問題進行研究,在調查校園充電樁布局與電動自行車數量情況后,提出設計一種充電小程序解決上述問題,設計了一種防拔原件來避免被他人拔除充電線,并對學校充電樁的布局提出建議。研究結果為學校日常管理提供有效幫助,可推動智慧校園的建設。