田 璞,常海青,梅華強
(1.廈門理工學院 光電與通信工程學院,福建 廈門 361024;2.廈門冠宇科技股份有限公司,福建 廈門 361000)
隨著工業的進步和發展,全球能源供應緊張、環境污染問題愈演愈烈。我國正努力推動新能源的開發并提高新能源的占比,提倡節能減排和倡導綠色出行,減少傳統汽油和柴油車的使用。以蓄電池作為能量來源的電動車(主要是電動自行車和電動汽車)恰好符合我國當前的節能減排政策。
對于大多數人來說,電動自行車是一種常見的綠色環保交通工具,具有節能、便捷、價格低廉的特點,且市場需求量巨大。然而,由于目前相應的充電設備較少,電動自行車電池重量大、攜帶困難,導致隨意私拉電線充電的現象較多,對社區來說存在重大的安全隱患。而太陽能充電樁就很好地解決了上述問題,太陽能是一種清潔環保的綠色能源,具有重要的環保價值;其次它不受地域限制,可以安裝到社區、景區、公園廣場等空曠位置實現發電的功能。
針對太陽能充電樁的應用場景以及如何進行充電收費的研究具有重要的現實意義。在此之前,已有一些關于普通充電樁計費或控制系統的相關文獻。文獻[3]介紹了一種基于藍牙通信的新型充電樁控制系統,通過藍牙和手機自有的通信網絡建立APP客戶端的連接,完成充電支付的功能。文獻[4]基于STM32F105VCT6芯片,設計了一款支持觸摸/刷卡操作的4G通信三相交流充電樁控制系統。文獻[5]基于NuMicro M051系列的芯片設計了一款交流充電樁系統,并使用Android 平臺開發的APP實現數據采集、顯示和交互等功能。文獻[6]設計了由手機APP客戶端、云服務器、分布式充電樁組成的基于云存儲數據的充電樁控制系統。
上述研究針對的是普通充電樁,與太陽能充電樁相比環保性有所欠缺,且針對手機的不同操作系統需單獨下載APP。考慮到現有的微信APP不受操作系統限制,且有著超過11億的月活資源,用戶基數大、即開即用、使用方便;另外,目前關于充電樁如何進行收費的文獻也較少,本文擬設計一種基于物聯網的太陽能充電樁收費系統。云服務器MySQL提供穩定的后臺,通過K-means聚類算法對充電樁用戶充電數據進行大數據挖掘,控制硬件以STM32、SIM800C為核心,使用微信小程序掃碼支付。
系統的結構主要分為三部分:感知層、網絡層和應用層。感知層主要是集成了STM32、SIM800C、繼電器的充電樁控制硬件等具有數據采集功能和通信功能的終端設備,并控制繼電器的通斷實現太陽能充電樁的充電功能;網絡層主要為阿里云服務器,通過TCP/IP協議與感知層進行連接,提供統一的數據交互和存儲處理服務;應用層主要是通過用戶手機上的微信APP,為用戶提供可視化的服務,通過掃碼進入小程序選擇通道和套餐支付并開啟太陽能充電樁的充電功能。系統框架如圖1所示。

圖1 系統框架
控制硬件主要包括微處理器模塊、GPRS通信模塊、繼電器模塊、電流檢測模塊、供電模塊等。硬件設計以嵌入式微處理器STM32F030C8T6為核心,并利用GPRS通信模塊實現與云服務器的數據傳輸和交互。繼電器負責實現太陽能充電樁的通斷功能。如圖2所示為充電樁控制硬件系統框圖。

圖2 控制硬件結構
2.1.1 微處理器模塊
基于Cortex-M0內核的STM32F030C8T6是由意法半導體(ST)集團生產的一款高性能單片機,其主要原理如圖3所示。STM32F030C8T6單片機具有價格低廉、資源豐富、功耗低的特點,其I/O接口豐富,且接口電路比較簡單,能充分滿足太陽能充電樁控制硬件的功能要求。

圖3 STM32F030C8T6的主要原理
2.1.2 GPRS模塊
考慮到太陽能充電樁的應用場景主要為室外空曠地區,所以采用GPRS模塊可以更好地滿足本系統的通信要求。選擇SIM800C芯片作為本收費系統的GPRS通信模塊,其主要原理如圖4所示。SIM800C是一款性能穩定、外觀小巧、性價比高的四頻GSM/GPRS模塊,通過AT指令控制可以低功耗地實現數據信息的傳輸。單片機只須通過串口與SIM800C模塊進行通信。對于放置在室外的太陽能充電樁來說,只要有移動網絡的覆蓋,它就可以與云服務器端進行TCP/IP協議的傳輸。

圖4 SIM800C的主要原理
2.1.3 供電模塊
將太陽能充電樁內的蓄電池作為供電電源,電源輸出為12 V,然后經降壓恒壓芯片H6203轉為5.4 V;而控制硬件的核心STM32F030C8T6微處理器需要3.3 V供電,所以再經低功耗穩壓芯片HT7333轉換為3.3 V給STM32F030C8T6微處理器供電;而SIM800C模塊需要4 V供電,所以從H6203芯片轉換后還需要經低壓差穩壓器MIC29302WU轉為4 V給SIM800C模塊供電。供電模塊部分電路如圖5所示。

圖5 供電模塊的原理
2.1.4 繼電器模塊
繼電器模塊設計如圖6所示。SW1接到STM32F030C8T6微處理器的PB0,當用戶掃碼選擇充電通道并支付成功后,云服務器給充電樁控制硬件下達指令,微處理器輸出高電平時三極管導通,隨后繼電器線圈通電,觸點吸合,用戶即可充電。

圖6 繼電器模塊的原理
2.1.5 電流檢測模塊
電流檢測模塊選用了基于霍爾感應原理的電流檢測專用芯片—ACS712,其原理如圖7所示。ACS712是由Allegro公司開發的一款線性電流傳感器,內置精確的、低偏置的線性霍爾傳感器電路,具有輸出靈敏度高、響應時間快、性價比高、使用方便等特點。電流經霍爾傳感器ACS712后再經過LM358運算放大器輸出到STM32F030C8T6微處理器內部的ADC,這樣就構成了一個電流檢測模塊。

圖7 電流檢測模塊原理
設計完充電樁控制硬件后,在此基礎上進行充電樁控制軟件設計。軟件設計在Keil平臺上使用C語言進行。
2.2.1 主程序軟件設計
主程序軟件設計如圖8所示。充電樁控制硬件接入太陽能充電樁內,控制硬件上電后執行主程序,微處理器進行初始化操作;然后進入程序的主循環,控制硬件執行GPRS讀取程序,準備與云服務器建立網絡連接;確認無誤后,執行UART發送打包程序,通過GPRS通信方式將數據發送到云服務器固定IP與端口;再將注冊包發送給云服務器,收到云服務器回復的數據后確認注冊成功,云服務器端獲取充電樁設備在線狀態,即可等待用戶使用。

圖8 主程序流程
2.2.2 GPRS通信程序軟件設計
通過STM32F030C8T6微處理器可對SIM800C通信模塊進行初始化設置與TCP/IP協議封裝。微處理器通過向SIM800C發送AT指令完成相關數據交換,AT指令的語法格式以“AT”開頭,指令以“ ”結尾;SIM800C上電復位后,微處理器發送一系列AT指令來查詢模塊相關狀態。具體指令見表1所列。

表1 AT指令表
充電樁控制硬件通過TCP/IP協議與云服務器建立穩定連接,控制硬件作為TCP客戶端向云服務器發送TCP連接請求。采用AT指令:AT+CIPSTART=“T CP”“8.129.168.129”“8086”,其中“8.129.168.129”是云服務器的IP地址;“8086”是對控制硬件開放的端口號。控制硬件接收該命令后,就與云服務器建立一個TCP連接,成功連接后將返回“CONNECT OK”;發送“AT+CIPSEND”,云服務器返回“>”表示準備完畢;控制硬件端將數據以JSON格式編碼發送給云服務器。GPRS數據發送流程如圖9所示。

圖9 GPRS通信程序軟件設計
為方便進行云端開發和托管,本系統采用阿里云服務器。云服務器是太陽能充電樁與用戶之間交互的橋梁,一個安全穩定的云服務器是整個太陽能充電樁收費系統安全穩定運行所必須的。將數據庫MySQL安裝在云服務器中,負責存儲、維護與設計系統相關的數據,如何設計數據庫是整個軟件系統的核心,也是最底層的技術,是保障整個系統穩定運行的關鍵。
2.3.1 云服務器搭建流程
選用Centos 8.0作為云服務器的操作系統,在系統中配置了JDK、MySQL、Tomcat的工作環境。環境配置所需的具體安裝指令如下:
(1)安裝JDK1.8指令:
sudo yum install java-1.8.0-openjdk.x86_64
(2)安裝MySQL5.7指令:
wget-i-c http://dev.mysql.com/get/mysql57-community-releaseel7-10.noarch.rpm
yum-y install mysql57-community-release-el7-10.noarch.rpm
(3)安裝Tomcat指令:
sudo tar-zxvf apache-tomcat-8.0.47.tar.gz-C/opt/tomcat--stripcomponents=1
2.3.2 數據庫配置
為了更好地收集太陽能充電樁設備和充電用戶的數據,并對其進行存儲和處理,經過對比考量,選用MySQL作為本系統的數據庫。
MySQL是一種開源的關系型數據庫管理系統,該數據庫占用內存小,響應速度快,能夠充分滿足本系統的要求;此外,該數據庫將數據存儲在不同的表格,而不是將所有數據直接存入一大塊內存中,提升了數據訪問以及其他操作的靈活性。
(1)JDBC數據庫連接
Java DataBase Connectivity是專門用于訪問數據庫的一套標準,由一組類和接口組成,它負責瀏覽器與數據庫的連接,并執行與數據庫相關的操作,簡稱JDBC。JDBC技術作為J2EE中一種訪問數據庫的方法,從本質上來說,它是一些API,用來實現Java與數據庫的數據交互,同時提供了一個獨立于數據庫的應用程序接口,供應用程序開發人員來構建應用程序。通過JDBC API云服務器可訪問JDBC DriverManager,JDBC DriverManager可 通 過 JDBC Driver API訪問各種JDBC Driver。目的是在JDBC API制作的程序調用數據時,實際數據庫能夠采取相應的處理,從而實現對數據庫的訪問。JDBC API表示訪問接口一般位于JDK中的java.sql包中。
(2)數據庫表設計
數據庫表主要包含用戶表、設備表、訂單記錄表三類,分別見表2、表3、表4所列。

表2 用戶表

表3 設備表

表4 訂單記錄表
2.3.3 大數據分析模塊
K-means是一種應用廣泛的數據聚類算法,其基本思想是:首先需要選擇,也就是要找到的簇數,接著將之前輸入的個數據對象分類為個簇,使得所獲得的簇滿足相同簇中的對象相似度較高,不同簇中的對象相似度較小這一要求。通過不斷地迭代,逐次更新各聚類中心的值,直到獲得最好的聚類結果。
為了更好地分析和探索太陽能充電樁用戶的充電行為,本設計采用K-means聚類算法對用戶充電大數據進行數據挖掘,以便給用戶提供個性化的服務,提升用戶的使用體驗和滿意度,達到精準服務的目的。其算法流程如下:

微信小程序是把服務與用戶相連接的一種新方法,它具有即開即用的特點;與傳統APP相比,它不受手機操作系統限制,不需要下載和安裝,用戶在微信中搜索或者掃碼即可打開應用。
用戶通過微信小程序可以定位當前位置,導航到附近最近的充電樁并實現掃碼充電、支付結算、查看訂單等一系列功能,是實現太陽能充電樁收費功能的重要人機交互界面。
2.4.1 小程序主界面設計
使用微信官方提供的微信開發者工具對微信小程序進行開發。首先要在app.json中新建系統來實現微信小程序需要的頁面,在pages路徑下進行頁面編寫。根據需要實現的功能分別建立不同的頁面。
在微信小程序主頁面開發過程中關鍵的一項就是pages的配置項,pages配置項接收完一個字符串型的Array參數即可確定小程序的主要組成頁面。微信小程序啟動時所呈現的頁面即初始頁面就是Array參數的第一項。在開發微信小程序的過程中,通過修改pages配置項的Array參數來實現對頁面的增刪改除。在pages配置項中不需要對文件添加后綴名,小程序框架會自動找到對應位置下的WXML、WXSS、JS和JSON文件,WXML文件用來編輯頁面的結構并進行數據綁定,WXSS文件主要負責頁面的樣式設計,JS文件負責頁面的動態交互業務邏輯。
圖10是小程序的主頁面。太陽花智能充電樁是微信小程序的名稱;右下方為用戶的微信頭像;箭頭為用戶的位置;最上方是掃碼充電按鈕,點擊此按鈕將調用手機的相機功能,即可跳轉到掃碼界面來掃描太陽能充電樁設備上的二維碼進行充電。

圖10 小程序主頁面
2.4.2 掃碼支付結算功能模塊設計
用戶在掃描太陽能充電樁設備的二維碼時,調用wx.scanCode接口獲取對應設備的信息。若充電設備處于空閑狀態,在選擇套餐付款成功后則開啟太陽能充電樁并對太陽能充電樁所接負載進行充電,實現微信支付功能需要調用wx.requestpayment接口。
在小程序端,用戶掃碼選擇充電套餐后生成待支付訂單;支付訂單頁面主要由支付方式和訂單詳情兩部分組成,用戶在核對完訂單后進行付款,小程序端就會將支付請求發送給云服務器,小程序頁面監聽到用戶的付款操作,代表用戶將會在小程序端執行付款請求,在pay.js控制器中實現付款行為。執行pay.js中的exe.Pay()方法可以對微信預支付訂單參數發起請求,通過pre_pay API可以對訂單請求支付。小程序客戶端的Model層使用wx.requestpay()方法在接收到訂單支付請求后將付款結果再返回到微信小程序客戶端。圖11是小程序支付業務邏輯圖。

圖11 支付業務邏輯圖
將充電樁控制硬件接入太陽能充電樁內,由樁內蓄電池供電,輸出端接負載;使用手機掃描太陽能充電樁上對應控制硬件的二維碼進入到微信小程序,選擇通道界面如圖12所示;選擇通道一并支付的界面如圖13所示;付款完畢后聽到繼電器打開的聲音,太陽能充電樁開始給負載進行充電,在微信小程序可以看到剩余充電時間,如圖14所示。

圖12 選擇通道界面

圖13 支付界面

圖14 充電界面
本文設計了一種基于物聯網技術的太陽能充電樁收費系統。系統包括充電樁控制硬件設計、云服務器及數據庫設計、微信小程序設計三部分。經過實際測試,本系統運行正常,用戶可以通過微信小程序實現掃碼付款并開啟太陽能充電樁。為太陽能充電樁提供了一種更智能的收費方式,對新能源的利用和普及具有現實意義。