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