田 璞,常海青,梅華強
(1.廈門理工學院 光電與通信工程學院,福建 廈門 361024;2.廈門冠宇科技股份有限公司,福建 廈門 361000)
隨著工業(yè)的進步和發(fā)展,全球能源供應緊張、環(huán)境污染問題愈演愈烈。我國正努力推動新能源的開發(fā)并提高新能源的占比,提倡節(jié)能減排和倡導綠色出行,減少傳統(tǒng)汽油和柴油車的使用。以蓄電池作為能量來源的電動車(主要是電動自行車和電動汽車)恰好符合我國當前的節(jié)能減排政策。
對于大多數(shù)人來說,電動自行車是一種常見的綠色環(huán)保交通工具,具有節(jié)能、便捷、價格低廉的特點,且市場需求量巨大。然而,由于目前相應的充電設備較少,電動自行車電池重量大、攜帶困難,導致隨意私拉電線充電的現(xiàn)象較多,對社區(qū)來說存在重大的安全隱患。而太陽能充電樁就很好地解決了上述問題,太陽能是一種清潔環(huán)保的綠色能源,具有重要的環(huán)保價值;其次它不受地域限制,可以安裝到社區(qū)、景區(qū)、公園廣場等空曠位置實現(xiàn)發(fā)電的功能。
針對太陽能充電樁的應用場景以及如何進行充電收費的研究具有重要的現(xiàn)實意義。在此之前,已有一些關(guān)于普通充電樁計費或控制系統(tǒng)的相關(guān)文獻。文獻[3]介紹了一種基于藍牙通信的新型充電樁控制系統(tǒng),通過藍牙和手機自有的通信網(wǎng)絡建立APP客戶端的連接,完成充電支付的功能。文獻[4]基于STM32F105VCT6芯片,設計了一款支持觸摸/刷卡操作的4G通信三相交流充電樁控制系統(tǒng)。文獻[5]基于NuMicro M051系列的芯片設計了一款交流充電樁系統(tǒng),并使用Android 平臺開發(fā)的APP實現(xiàn)數(shù)據(jù)采集、顯示和交互等功能。文獻[6]設計了由手機APP客戶端、云服務器、分布式充電樁組成的基于云存儲數(shù)據(jù)的充電樁控制系統(tǒng)。
上述研究針對的是普通充電樁,與太陽能充電樁相比環(huán)保性有所欠缺,且針對手機的不同操作系統(tǒng)需單獨下載APP。考慮到現(xiàn)有的微信APP不受操作系統(tǒng)限制,且有著超過11億的月活資源,用戶基數(shù)大、即開即用、使用方便;另外,目前關(guān)于充電樁如何進行收費的文獻也較少,本文擬設計一種基于物聯(lián)網(wǎng)的太陽能充電樁收費系統(tǒng)。云服務器MySQL提供穩(wěn)定的后臺,通過K-means聚類算法對充電樁用戶充電數(shù)據(jù)進行大數(shù)據(jù)挖掘,控制硬件以STM32、SIM800C為核心,使用微信小程序掃碼支付。
系統(tǒng)的結(jié)構(gòu)主要分為三部分:感知層、網(wǎng)絡層和應用層。感知層主要是集成了STM32、SIM800C、繼電器的充電樁控制硬件等具有數(shù)據(jù)采集功能和通信功能的終端設備,并控制繼電器的通斷實現(xiàn)太陽能充電樁的充電功能;網(wǎng)絡層主要為阿里云服務器,通過TCP/IP協(xié)議與感知層進行連接,提供統(tǒng)一的數(shù)據(jù)交互和存儲處理服務;應用層主要是通過用戶手機上的微信APP,為用戶提供可視化的服務,通過掃碼進入小程序選擇通道和套餐支付并開啟太陽能充電樁的充電功能。系統(tǒng)框架如圖1所示。
圖1 系統(tǒng)框架
控制硬件主要包括微處理器模塊、GPRS通信模塊、繼電器模塊、電流檢測模塊、供電模塊等。硬件設計以嵌入式微處理器STM32F030C8T6為核心,并利用GPRS通信模塊實現(xiàn)與云服務器的數(shù)據(jù)傳輸和交互。繼電器負責實現(xiàn)太陽能充電樁的通斷功能。如圖2所示為充電樁控制硬件系統(tǒng)框圖。
圖2 控制硬件結(jié)構(gòu)
2.1.1 微處理器模塊
基于Cortex-M0內(nèi)核的STM32F030C8T6是由意法半導體(ST)集團生產(chǎn)的一款高性能單片機,其主要原理如圖3所示。STM32F030C8T6單片機具有價格低廉、資源豐富、功耗低的特點,其I/O接口豐富,且接口電路比較簡單,能充分滿足太陽能充電樁控制硬件的功能要求。
圖3 STM32F030C8T6的主要原理
2.1.2 GPRS模塊
考慮到太陽能充電樁的應用場景主要為室外空曠地區(qū),所以采用GPRS模塊可以更好地滿足本系統(tǒng)的通信要求。選擇SIM800C芯片作為本收費系統(tǒng)的GPRS通信模塊,其主要原理如圖4所示。SIM800C是一款性能穩(wěn)定、外觀小巧、性價比高的四頻GSM/GPRS模塊,通過AT指令控制可以低功耗地實現(xiàn)數(shù)據(jù)信息的傳輸。單片機只須通過串口與SIM800C模塊進行通信。對于放置在室外的太陽能充電樁來說,只要有移動網(wǎng)絡的覆蓋,它就可以與云服務器端進行TCP/IP協(xié)議的傳輸。
圖4 SIM800C的主要原理
2.1.3 供電模塊
將太陽能充電樁內(nèi)的蓄電池作為供電電源,電源輸出為12 V,然后經(jīng)降壓恒壓芯片H6203轉(zhuǎn)為5.4 V;而控制硬件的核心STM32F030C8T6微處理器需要3.3 V供電,所以再經(jīng)低功耗穩(wěn)壓芯片HT7333轉(zhuǎn)換為3.3 V給STM32F030C8T6微處理器供電;而SIM800C模塊需要4 V供電,所以從H6203芯片轉(zhuǎn)換后還需要經(jīng)低壓差穩(wěn)壓器MIC29302WU轉(zhuǎn)為4 V給SIM800C模塊供電。供電模塊部分電路如圖5所示。
圖5 供電模塊的原理
2.1.4 繼電器模塊
繼電器模塊設計如圖6所示。SW1接到STM32F030C8T6微處理器的PB0,當用戶掃碼選擇充電通道并支付成功后,云服務器給充電樁控制硬件下達指令,微處理器輸出高電平時三極管導通,隨后繼電器線圈通電,觸點吸合,用戶即可充電。
圖6 繼電器模塊的原理
2.1.5 電流檢測模塊
電流檢測模塊選用了基于霍爾感應原理的電流檢測專用芯片—ACS712,其原理如圖7所示。ACS712是由Allegro公司開發(fā)的一款線性電流傳感器,內(nèi)置精確的、低偏置的線性霍爾傳感器電路,具有輸出靈敏度高、響應時間快、性價比高、使用方便等特點。電流經(jīng)霍爾傳感器ACS712后再經(jīng)過LM358運算放大器輸出到STM32F030C8T6微處理器內(nèi)部的ADC,這樣就構(gòu)成了一個電流檢測模塊。
圖7 電流檢測模塊原理
設計完充電樁控制硬件后,在此基礎上進行充電樁控制軟件設計。軟件設計在Keil平臺上使用C語言進行。
2.2.1 主程序軟件設計
主程序軟件設計如圖8所示。充電樁控制硬件接入太陽能充電樁內(nèi),控制硬件上電后執(zhí)行主程序,微處理器進行初始化操作;然后進入程序的主循環(huán),控制硬件執(zhí)行GPRS讀取程序,準備與云服務器建立網(wǎng)絡連接;確認無誤后,執(zhí)行UART發(fā)送打包程序,通過GPRS通信方式將數(shù)據(jù)發(fā)送到云服務器固定IP與端口;再將注冊包發(fā)送給云服務器,收到云服務器回復的數(shù)據(jù)后確認注冊成功,云服務器端獲取充電樁設備在線狀態(tài),即可等待用戶使用。
圖8 主程序流程
2.2.2 GPRS通信程序軟件設計
通過STM32F030C8T6微處理器可對SIM800C通信模塊進行初始化設置與TCP/IP協(xié)議封裝。微處理器通過向SIM800C發(fā)送AT指令完成相關(guān)數(shù)據(jù)交換,AT指令的語法格式以“AT”開頭,指令以“ ”結(jié)尾;SIM800C上電復位后,微處理器發(fā)送一系列AT指令來查詢模塊相關(guān)狀態(tài)。具體指令見表1所列。
表1 AT指令表
充電樁控制硬件通過TCP/IP協(xié)議與云服務器建立穩(wěn)定連接,控制硬件作為TCP客戶端向云服務器發(fā)送TCP連接請求。采用AT指令:AT+CIPSTART=“T CP”“8.129.168.129”“8086”,其中“8.129.168.129”是云服務器的IP地址;“8086”是對控制硬件開放的端口號??刂朴布邮赵撁詈?,就與云服務器建立一個TCP連接,成功連接后將返回“CONNECT OK”;發(fā)送“AT+CIPSEND”,云服務器返回“>”表示準備完畢;控制硬件端將數(shù)據(jù)以JSON格式編碼發(fā)送給云服務器。GPRS數(shù)據(jù)發(fā)送流程如圖9所示。
圖9 GPRS通信程序軟件設計
為方便進行云端開發(fā)和托管,本系統(tǒng)采用阿里云服務器。云服務器是太陽能充電樁與用戶之間交互的橋梁,一個安全穩(wěn)定的云服務器是整個太陽能充電樁收費系統(tǒng)安全穩(wěn)定運行所必須的。將數(shù)據(jù)庫MySQL安裝在云服務器中,負責存儲、維護與設計系統(tǒng)相關(guān)的數(shù)據(jù),如何設計數(shù)據(jù)庫是整個軟件系統(tǒng)的核心,也是最底層的技術(shù),是保障整個系統(tǒng)穩(wěn)定運行的關(guān)鍵。
2.3.1 云服務器搭建流程
選用Centos 8.0作為云服務器的操作系統(tǒng),在系統(tǒng)中配置了JDK、MySQL、Tomcat的工作環(huán)境。環(huán)境配置所需的具體安裝指令如下:
(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 數(shù)據(jù)庫配置
為了更好地收集太陽能充電樁設備和充電用戶的數(shù)據(jù),并對其進行存儲和處理,經(jīng)過對比考量,選用MySQL作為本系統(tǒng)的數(shù)據(jù)庫。
MySQL是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),該數(shù)據(jù)庫占用內(nèi)存小,響應速度快,能夠充分滿足本系統(tǒng)的要求;此外,該數(shù)據(jù)庫將數(shù)據(jù)存儲在不同的表格,而不是將所有數(shù)據(jù)直接存入一大塊內(nèi)存中,提升了數(shù)據(jù)訪問以及其他操作的靈活性。
(1)JDBC數(shù)據(jù)庫連接
Java DataBase Connectivity是專門用于訪問數(shù)據(jù)庫的一套標準,由一組類和接口組成,它負責瀏覽器與數(shù)據(jù)庫的連接,并執(zhí)行與數(shù)據(jù)庫相關(guān)的操作,簡稱JDBC。JDBC技術(shù)作為J2EE中一種訪問數(shù)據(jù)庫的方法,從本質(zhì)上來說,它是一些API,用來實現(xiàn)Java與數(shù)據(jù)庫的數(shù)據(jù)交互,同時提供了一個獨立于數(shù)據(jù)庫的應用程序接口,供應用程序開發(fā)人員來構(gòu)建應用程序。通過JDBC API云服務器可訪問JDBC DriverManager,JDBC DriverManager可 通 過 JDBC Driver API訪問各種JDBC Driver。目的是在JDBC API制作的程序調(diào)用數(shù)據(jù)時,實際數(shù)據(jù)庫能夠采取相應的處理,從而實現(xiàn)對數(shù)據(jù)庫的訪問。JDBC API表示訪問接口一般位于JDK中的java.sql包中。
(2)數(shù)據(jù)庫表設計
數(shù)據(jù)庫表主要包含用戶表、設備表、訂單記錄表三類,分別見表2、表3、表4所列。
表2 用戶表
表3 設備表
表4 訂單記錄表
2.3.3 大數(shù)據(jù)分析模塊
K-means是一種應用廣泛的數(shù)據(jù)聚類算法,其基本思想是:首先需要選擇,也就是要找到的簇數(shù),接著將之前輸入的個數(shù)據(jù)對象分類為個簇,使得所獲得的簇滿足相同簇中的對象相似度較高,不同簇中的對象相似度較小這一要求。通過不斷地迭代,逐次更新各聚類中心的值,直到獲得最好的聚類結(jié)果。
為了更好地分析和探索太陽能充電樁用戶的充電行為,本設計采用K-means聚類算法對用戶充電大數(shù)據(jù)進行數(shù)據(jù)挖掘,以便給用戶提供個性化的服務,提升用戶的使用體驗和滿意度,達到精準服務的目的。其算法流程如下:
微信小程序是把服務與用戶相連接的一種新方法,它具有即開即用的特點;與傳統(tǒng)APP相比,它不受手機操作系統(tǒng)限制,不需要下載和安裝,用戶在微信中搜索或者掃碼即可打開應用。
用戶通過微信小程序可以定位當前位置,導航到附近最近的充電樁并實現(xiàn)掃碼充電、支付結(jié)算、查看訂單等一系列功能,是實現(xiàn)太陽能充電樁收費功能的重要人機交互界面。
2.4.1 小程序主界面設計
使用微信官方提供的微信開發(fā)者工具對微信小程序進行開發(fā)。首先要在app.json中新建系統(tǒng)來實現(xiàn)微信小程序需要的頁面,在pages路徑下進行頁面編寫。根據(jù)需要實現(xiàn)的功能分別建立不同的頁面。
在微信小程序主頁面開發(fā)過程中關(guān)鍵的一項就是pages的配置項,pages配置項接收完一個字符串型的Array參數(shù)即可確定小程序的主要組成頁面。微信小程序啟動時所呈現(xiàn)的頁面即初始頁面就是Array參數(shù)的第一項。在開發(fā)微信小程序的過程中,通過修改pages配置項的Array參數(shù)來實現(xiàn)對頁面的增刪改除。在pages配置項中不需要對文件添加后綴名,小程序框架會自動找到對應位置下的WXML、WXSS、JS和JSON文件,WXML文件用來編輯頁面的結(jié)構(gòu)并進行數(shù)據(jù)綁定,WXSS文件主要負責頁面的樣式設計,JS文件負責頁面的動態(tài)交互業(yè)務邏輯。
圖10是小程序的主頁面。太陽花智能充電樁是微信小程序的名稱;右下方為用戶的微信頭像;箭頭為用戶的位置;最上方是掃碼充電按鈕,點擊此按鈕將調(diào)用手機的相機功能,即可跳轉(zhuǎn)到掃碼界面來掃描太陽能充電樁設備上的二維碼進行充電。
圖10 小程序主頁面
2.4.2 掃碼支付結(jié)算功能模塊設計
用戶在掃描太陽能充電樁設備的二維碼時,調(diào)用wx.scanCode接口獲取對應設備的信息。若充電設備處于空閑狀態(tài),在選擇套餐付款成功后則開啟太陽能充電樁并對太陽能充電樁所接負載進行充電,實現(xiàn)微信支付功能需要調(diào)用wx.requestpayment接口。
在小程序端,用戶掃碼選擇充電套餐后生成待支付訂單;支付訂單頁面主要由支付方式和訂單詳情兩部分組成,用戶在核對完訂單后進行付款,小程序端就會將支付請求發(fā)送給云服務器,小程序頁面監(jiān)聽到用戶的付款操作,代表用戶將會在小程序端執(zhí)行付款請求,在pay.js控制器中實現(xiàn)付款行為。執(zhí)行pay.js中的exe.Pay()方法可以對微信預支付訂單參數(shù)發(fā)起請求,通過pre_pay API可以對訂單請求支付。小程序客戶端的Model層使用wx.requestpay()方法在接收到訂單支付請求后將付款結(jié)果再返回到微信小程序客戶端。圖11是小程序支付業(yè)務邏輯圖。
圖11 支付業(yè)務邏輯圖
將充電樁控制硬件接入太陽能充電樁內(nèi),由樁內(nèi)蓄電池供電,輸出端接負載;使用手機掃描太陽能充電樁上對應控制硬件的二維碼進入到微信小程序,選擇通道界面如圖12所示;選擇通道一并支付的界面如圖13所示;付款完畢后聽到繼電器打開的聲音,太陽能充電樁開始給負載進行充電,在微信小程序可以看到剩余充電時間,如圖14所示。
圖12 選擇通道界面
圖13 支付界面
圖14 充電界面
本文設計了一種基于物聯(lián)網(wǎng)技術(shù)的太陽能充電樁收費系統(tǒng)。系統(tǒng)包括充電樁控制硬件設計、云服務器及數(shù)據(jù)庫設計、微信小程序設計三部分。經(jīng)過實際測試,本系統(tǒng)運行正常,用戶可以通過微信小程序?qū)崿F(xiàn)掃碼付款并開啟太陽能充電樁。為太陽能充電樁提供了一種更智能的收費方式,對新能源的利用和普及具有現(xiàn)實意義。