郝琛,張睿智,張星,姚美菱
(石家莊郵電職業技術學院 智能工程系,河北石家莊,050021)
近年來,中國快遞業發展迅速,快遞物流企業增加,業務規模擴大,在國民經濟中發揮了積極作用,國家郵政局每年都會對包括郵政EMS、順豐速運、中通快遞等快遞企業的快遞業務,進行服務滿意度調查和時限準時率測試,暴力分揀、延誤、虛假簽收等問題成為用戶投訴的主要問題。傳統快遞服務測評方法實時性客觀性較差,本文利用5G 通信技術設計快遞服務測評裝置,能夠為快遞服務測評提供準確客觀地實時測試數據及科學有效的評價方法。
如圖1 所示,基于5G 的快遞服務測評裝置放置于快遞包裹中,隨快遞包裹一同運輸,全過程跟蹤記錄震動(加速度)、位置(經緯度)、時間、溫濕度等關鍵數據,利用5G網絡實時上傳快遞收寄、運輸、投遞各環節的傳感器數據,后臺服務器程序接收、存儲、處理快遞包裹跟蹤數據。快遞服務測評后臺模塊包括數據庫及數據接收處理程序,通過對多個快遞企業的快遞業務測試,對快遞企業的快遞服務質量進行評價對比。也可用于快遞企業內部快遞業務測試,查找快遞運輸過程中的薄弱環節,進而優化流程,提升服務質量。

圖1 基于5G 的快遞服務測評系統圖
如圖2 所示,本系統硬件組成主要包括:微控制器、多軸加速度傳感器、陀螺儀、溫濕度傳感器、氣壓傳感器、FLASH 存儲芯片、TF 卡讀寫存儲模塊、高精度時鐘、北斗GPS 雙模定位模塊、5G 通信模塊、電源模塊。

圖2 基于5G 的快遞服務測評裝置組成圖
微控制器采用STM32 系列單片機。電源模塊包括電池及供電控制電路,為單片機提供5V 供電,電池容量2000mAh,保證系統正常持續工作300 小時以上。
如圖3 所示,加速度及多軸重力加速度傳感器采用MPU-6050 模塊,該芯片整合了3 軸陀螺儀、3 軸加速器,微處理器通過IIC 接口接收加速度傳感器數據并結合位置、時鐘信息對快遞包裹所處的運輸狀態做出判斷。

圖3 陀螺儀加速度傳感器MPU-6050 電路原理圖
TF 卡讀寫存儲模塊與微控制器間使用SPI 接口通信,微控制器將各傳感器采集的原始數據存儲到TF 卡中。采用高精度晶體時鐘定時,利用衛星授時信息校準,確保系統能夠長時間維持穩定運行,時鐘與微控制器間使用IIC接口通信。
如圖4 所示,移遠通信的BC20 模塊是5G 標準NBIOT全網通模塊,支持中國三大運營商所有NB 網絡頻段,具備GPS、北斗、GHSS 多模定位功能,與微控制器間使用串口通信,定時向服務器上傳數據信息幀。 定位信息主要依靠北斗GPS 雙模定位,在室內無衛星信號時,利用通信網絡無線信號及加速度,陀螺儀信號估算位置信息。

圖4 通信模塊BC20 原理及實物圖
系統軟件包括單片機控制程序和快遞服務測評后臺處理程序。
使用C 語言開發,流程如圖5 所示,單片機系統上電后,對時鐘、加速度、溫濕度、氣壓傳感器進行初始化配置。對5G 模塊進行速率、注冊入網、服務器接口信息配置。初始化北斗GPS 雙模定位模塊,檢測衛星信號是否正常,解析定位信號信息。

圖5 基于5G 的快遞服務測評裝置單片機程序流程圖
系統外設均正常初始化后,單片機配置為低功耗模式并監聽內外部中斷,當檢測到中斷產生時,采集傳感器數據及定位信息并將原始數據儲存至TF 卡。根據協商格式合成數據幀,暫存在FLASH 芯片指定存儲地址上,通過5G 網絡定時發送至服務器。各項任務完成后單片機進入休眠模式以節約功耗。
①陀螺儀加速度傳感器初始化
void I2C_MPU6050_Init(void){I2C_GPIO_Config();I2C_Mode_Config();}
先對STM32 單片機IIC 接口初始化設置,通過IIC 接口對MPU6050 進行設置。
void InitMPU6050(void){I2C_ByteWrite(PWR_MGMT_1,0x00);//解除休眠狀態
I2C_ByteWrite(SMPLRT_DIV,0x07);
I2C_ByteWrite(CONFIG,0x06);
I2C_ByteWrite(GYRO_CONFIG,0x18);
I2C_ByteWrite(ACCEL_CONFIG,0x01);}
MPU6050 配置完成后,定時向單片機發送3 個軸方向上電重力加速度、方位角數據,根據該數據估算綜合加速度、速度及運動方向。
②BC20 通信定位模塊初始化及數據上傳
BC20 通信定位模塊占用單片機串口2,在程序中配置STM32 單片機串口2 外設時鐘,設置通信速率,通過串口2 對BC20 模塊配置入網參數及服務器地址。通過POST 協議將采集的傳感器數據上傳到服務器中。BC20 模塊設置為透傳模式,發送數據通過BC20_http_post()函數實現。
char RES_BUF[5000]; 接收數據緩存
char HTTP_RES_BUF[5000];發送數據緩存
char * BC20_http_post(char * strUrl,char * strData){int count,maxLoop;char Command[200];count=0;
while(BC20_send_cmd(strUrl,"OK",2000)==0) {printf("HTTP URL ERROR ");delay_ms(1000);if(count++>5)return NULL; }
sprintf(Command,"AT+QHTTPPOST=%d,50,10 ",strlen(strData)-2);count=0;
while(BC20_send_cmd(Command, "CONNECT",2000)==0) {printf("HTTP POST ERROR ");delay_ms(1000);if(count++>5)return NULL; }
maxLoop=0;
while(BC20_send_cmd(strData,"OK",65000)==0) {printf("POST DATA ERROR ");delay_ms(1000);if(maxLoop++>5) return NULL; }
BC20_send_cmd("AT+QHTTPREAD=30 ","OK",2000);
printf("HTTP RESPONSE:%s ",BC20_http_response());
return BC20_http_response();}
回傳數據通過BC20_http_response()函數實現。將接收數據存儲在HTTP_RES_BUF 數組中,通過strstr 找到關鍵字"QHTTPREAD",結束數據接收程序。
char * BC20_http_response(void){
int i;RES_BUF[0]=0;
if(strstr((const char*)HTTP_RES_BUF, "QHTTPREAD")!=0) {for(i=0; i<5000; i++) {if(HTTP_RES_BUF[i+28]==13) break;RES_BUF[i]=HTTP_RES_BUF[i+28]; }RES_BUF[i+1]=0;return RES_BUF; }return NULL;}
③原始數據存儲程序
由于采集的原始數量較大,不能全部通過網絡上傳的服務器中,以CSV 格式存儲在tf 卡中,文件以純文本形式存儲數據,字段間采用“,”作為分隔符,通過putString2Csv 函數實現。
int32 putString2Csv(char str[], char filename[], int mode){f_open(&fil,filename,FA_OPEN_ALWAYS|FA_WRITE );_mode = mode;switch (_mode){case ECWM_ONELINE:{f_lseek(&fil,fil.fsize);f_puts(str, &fil); // str 是采集的數據f_puts(“,”, &fil); // ,是單元格的分格符號}break;
使用PHP 構建Web 服務器,監聽8080 服務端口的HTTP 請求,接收數據并存儲到MySQL 數據庫中。使用Python 可視化工具庫對數據進行進一步分析處理。
①數據導入程序
程序需要用到Python 的folium、pandas、matplotlib等數據處理及可視化庫,通過read 函數導入數據文件。
import folium
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('record_20221025.csv')
如圖6 所示,每0.5 秒采集存儲1 次數據,從快遞收寄到簽收的46 小時中,共采集存儲33 萬條數據。

圖6 快遞運輸過程中采集的數據
②數據可視化處理程序
根據數據中經緯度信息,計算地圖中心坐標,并生成高德地圖背景。
location_center = [df[‘位置 緯度 : '].mean(),df['位置 經度 : '].mean()]
tiles= 'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7'
m_1 = folium.Map(location=location_center,
tiles=tiles ,
attr='高德-常規圖',
zoom_start=10,
control_scale=True,
width='70%' )如圖7 所示,根據加速度、定位信息、經緯度變化等數據,推算出快遞包裹在運輸過程中的關鍵事件。快遞包裹在金屬密閉車廂中運輸時,定位模塊因無法獲得足夠強度、數量的衛星導航信息而無法解析出經緯度數據,需要根據通信網絡、加速度、運動方向結合地圖估算快遞包裹軌跡。

圖7 關鍵事件點坐標
def Wgs84ToGcj02(lon, lat) :
dLat = transformLat(lon - 105.0, lat - 35.0);
dLon = transformLon(lon - 105.0, lat - 35.0);
radLat = lat / 180.0 * M_PI;
magic = math.sin(radLat);
magic = 1 - magic * magic * EE;
sqrtMagic = math.sqrt(magic);
dLat = (dLat*180.0)/((EARTH_RADIUS * 1000 * (1-EE))/(magic*sqrtMagic)*M_PI);
dLon = (dLon*180.0) / (EARTH_RADIUS* 1000/ sqrt Magic*math.cos(radLat)*M_PI);
Gcj02Lat = lat + dLat;
Gcj02Lon = lon + dLon;
return Gcj02Lat,Gcj02Lon
裝置采集的wgs84 格式的原始經緯度信息需要轉換成Gcj02 格式,才能在地圖上正常顯示,坐標轉換功能由Wgs8ToGcj02(lon,lat)實現。如圖8 所示,將關鍵事件如暴力分揀、正常分揀、運輸途中等坐標標記在高德地圖中。

圖8 快遞服務測評后臺程序運行效果圖
本文針對傳統快遞服務測評方法實時性差的問題,利用5G 低延時特性實現快遞服務測評數據的實時傳輸處理,為快遞服務測評提供準確客觀、科學有效的評價方法,通過對快遞包裹收寄、運輸、分揀、派送等環節傳感數據采集分析,對快遞服務質量評估對比,查找快遞企業運輸過程中的薄弱環節,優化業務流程,提升服務質量。