(黃岡師范學(xué)院,湖北 黃岡 438000)
隨著科學(xué)技術(shù)的不斷發(fā)展, 人力成本越來越高, 傳統(tǒng)的經(jīng)營模式和生產(chǎn)方式越來越不適應(yīng)中國的發(fā)展,回顧歷史, 世界最終進(jìn)步是依靠技術(shù)的進(jìn)步,中國近四十年發(fā)展的經(jīng)驗(yàn)告訴我們, 科學(xué)技術(shù)才是第一生產(chǎn)力, 只有促進(jìn)社會(huì)的生產(chǎn)效率的不斷提高,人民的生活水平才會(huì)不斷提高, 人類社會(huì)才是真正的進(jìn)步。針對(duì)銷售行業(yè),如何的提高服務(wù)水平, 提高服務(wù)質(zhì)量, 人們也做了更多的探索,也取得很多進(jìn)步, 如從柜臺(tái)銷售的百貨方式, 到自由選購的超市模式.現(xiàn)在自動(dòng)售貨機(jī)也逐漸進(jìn)入了現(xiàn)代人們的生活之中.當(dāng)前由于移動(dòng)支付的現(xiàn)實(shí)及普及,基于移動(dòng)支付方式的的自動(dòng)售貨系統(tǒng)比起傳統(tǒng)的售貨系統(tǒng)具有更大的便利性和安全保障, 也更加能被消費(fèi)者接受。著眼于未來我們認(rèn)為這種無人售貨機(jī)一定是無現(xiàn)金交易, 因此完全可以從成本的角度出發(fā),省略投幣等現(xiàn)金交易方式, 充分利用手機(jī)交易方式(支付寶、財(cái)付通,微信等),通過手機(jī)支付快捷完成交易, 提供及時(shí)服務(wù)。
目前,由于無線支付方式才剛剛興起,從文獻(xiàn)資料來看。尚未看到基于無線支付方式的無人售貨系統(tǒng)的相關(guān)論文。而原先的無人售貨系統(tǒng)通信方式大多是基于有線通信或者GSM短信方式,可靠性差。而當(dāng)前無線通訊技術(shù)已經(jīng)進(jìn)入到物聯(lián)網(wǎng)時(shí)代,各種無線通訊技術(shù)已經(jīng)成熟。通過實(shí)驗(yàn)對(duì)比找到無人售貨最適合的無線通訊方式成為實(shí)現(xiàn)無人售貨的關(guān)鍵之一。
實(shí)現(xiàn)無人售貨的關(guān)鍵通訊技術(shù)實(shí)際上就是端到端的接入技術(shù), 端到端的接和技術(shù)又分為無線的接入技術(shù)和有線的接入技術(shù)。有線接入實(shí)現(xiàn)通訊的成本比較高,而且不容易實(shí)現(xiàn),工程量太大, 移動(dòng)性,靈活性太差,所以說有線的網(wǎng)絡(luò)對(duì)我們智能售貨系統(tǒng)的應(yīng)用場(chǎng)合并不是很匹配,而無線的接入技術(shù)能夠做到廣覆蓋和無縫覆蓋。只要終端能夠發(fā)射電波,就能夠通過基站和平臺(tái)建立通訊連接,所以我們認(rèn)為無人售貨的最佳通訊技術(shù)是無線通訊技術(shù)。
無人售貨系統(tǒng)的無線接入技術(shù), 根據(jù)信號(hào)的覆蓋泛圍,我們分為無線個(gè)域網(wǎng), 無線局域網(wǎng),無線廣域網(wǎng),無線廣域網(wǎng)又分為低功耗廣域網(wǎng),寬帶廣域網(wǎng),寬帶廣域網(wǎng)一般是高速率的,低功耗廣域網(wǎng)又分為授權(quán)頻段和非授權(quán)頻段,授權(quán)頻網(wǎng)在我國要由工信部頒發(fā)授權(quán)才能使用。由運(yùn)營商支配使用的通訊頻段,無線通訊根據(jù)無線信號(hào)覆蓋的大小不同分為多種不同的無線域網(wǎng),比如藍(lán)牙通訊。通讀RFID,如果RFID是有源的,通訊距離可以達(dá)到250米。校園網(wǎng)的校園一卡通里面的芯片是有源射頻識(shí)別,學(xué)生進(jìn)入校園可以和基站通訊,如果是無源如智慧倉儲(chǔ)的物品識(shí)別碼就是無源的,距離25米,無線局域網(wǎng)主要通讀是wIFI, ZIGBEE, ZWave,DECT數(shù)字增強(qiáng)無繩電話系統(tǒng)。通過上述近距離通信技術(shù)的了解我們發(fā)現(xiàn)采用這類技術(shù)實(shí)現(xiàn)無人售貨系統(tǒng)的信息通訊比較困難,要實(shí)現(xiàn)我們的無人售貨系統(tǒng)我們重點(diǎn)關(guān)注還是無線廣域網(wǎng)。
圖1 無線接入技術(shù)分類
首先可以采用的就是低功耗的廣域網(wǎng)技術(shù),這類通訊可以實(shí)現(xiàn)就是廣覆蓋,低功耗,大連接,低成本。低功耗的廣域網(wǎng)技術(shù)又可分為授權(quán)頻譜和非授權(quán)頻譜,目前的NB-lot包括MTC和EMTC都是工作在授權(quán)頻譜這個(gè)泛圍。EC-GSM是廣展覆蓋GSM,也就是在2G網(wǎng)絡(luò)的傳輸范圍的擴(kuò)展。LTE-M是物聯(lián)網(wǎng)的早期技術(shù),一個(gè)是cat.0 一個(gè)是cat.1。未來的無線通訊技術(shù)主要是4G,5G通訊。非授權(quán)頻譜主要有LORA SIGFOX兩種。這種方式也可實(shí)現(xiàn)我們終端與平臺(tái)的連接,但布網(wǎng)點(diǎn)少, 只有少數(shù)區(qū)域應(yīng)用。
根據(jù)傳輸速率的不同。低速率, 技術(shù)分類有不同分從需求上來說,窄帶廣域網(wǎng),雖然能夠?qū)崿F(xiàn)廣覆蓋,大連接,成本低。LORA SIGFOX具體來說只是城域網(wǎng),也就是在某一個(gè)地區(qū)小范圍內(nèi)使用,無法實(shí)現(xiàn)全國布局,NB-LOT可以實(shí)現(xiàn)全國一張網(wǎng)。EC-GSM網(wǎng)絡(luò)是在運(yùn)營商在原有的網(wǎng)絡(luò)上升級(jí),但與無人售貨機(jī)這種技術(shù)需求還是相差甚遠(yuǎn)。而且與現(xiàn)有的GSM沖突,在低功耗的遠(yuǎn)距傳輸中NB-LOT可以實(shí)現(xiàn),但目前通過實(shí)測(cè)效果并未達(dá)到預(yù)期。也就是說通訊效果不好,不能夠穩(wěn)定連接。
基于此,在無人售貨機(jī)通訊方式上目前只能放在廣域網(wǎng)方式。從性能上來說當(dāng)然是3G、4G、5G效果更好,但考慮到價(jià)格因素,選擇GPRS網(wǎng)絡(luò)通信方式也是一個(gè)可行的方式。不選用3G網(wǎng)絡(luò),因?yàn)橐环矫媸且驗(yàn)?G網(wǎng)絡(luò)通??梢詡?M數(shù)據(jù),而在多數(shù)情況下,我們只需傳輸十幾個(gè)字節(jié),如果選用3G網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)就會(huì)造成通訊資源的巨大浪費(fèi)。因此我們選用GPRS網(wǎng)絡(luò)來實(shí)現(xiàn)信息傳輸。綜上所述我們選用GPRS技術(shù)。
GPRS通訊硬件電路主要包括控制電路和GPRS電路兩大核心模塊。當(dāng)有遠(yuǎn)程通訊需求時(shí),由主控模塊發(fā)送控制命令給通訊模塊建立通訊。通訊通道建立后,數(shù)據(jù)信息通過通訊模塊接收信息傳回主控制模塊進(jìn)行處理。主控制模塊采用ST公司的STM32F107芯片。GPRS通信采用SIM800芯片。
2.1.1 結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)終端硬件采用以CORTEX-M4微處理器作為控制器核心, STM32F42103 微處理器是硬件的核心處理器,控制著整個(gè)系統(tǒng)的工作狀態(tài)。 系統(tǒng)基本模塊內(nèi)容主要描述STM32F42103 的系統(tǒng)實(shí)現(xiàn),包括復(fù)位電路,時(shí)鐘電路 繼電器電路 。STM32F42103系統(tǒng)如圖2所示。
圖2 系統(tǒng)框圖
2.1.2 SIM卡電路
SIM卡就是一個(gè)帶微處理機(jī)的芯片卡,由微處理機(jī)、內(nèi)存模塊RAM、程序存儲(chǔ)器ROM、數(shù)據(jù)存儲(chǔ)器EEPRoM和串行通信單元五部分組成,SIM卡上存儲(chǔ)能夠識(shí)別的所有屬于本用戶的信息。符合GSM技術(shù)規(guī)范的“智能”卡,其中內(nèi)部包含了與用戶有關(guān)的信息主要包括: 國際移動(dòng)用戶識(shí)別號(hào)(IMSI)、鑒權(quán)密鑰(KI)、鑒權(quán)和加密算法。暫存的有關(guān)網(wǎng)絡(luò)的數(shù)據(jù),SIM卡又稱為用戶信息識(shí)別卡[3]。SIM800想要想通過無線通訊系統(tǒng)的服務(wù)必需先要購買SIM卡,并插入SIM卡,才能使用GPRS通訊服務(wù)。SIM卡通過讀卡器端口與sim800聯(lián)系。
SIM卡電路設(shè)計(jì)注意事項(xiàng):
SIM 卡電路比較容易受到干擾,引起不識(shí)卡或掉卡等情況,所以在設(shè)計(jì)時(shí)請(qǐng)遵循以下原則:
在 PCB 布局階段一定要將 SIM 卡座遠(yuǎn)離 GSM 天線;
SIM卡的走線要盡量遠(yuǎn)離 RF 線、VBAT 和高速信號(hào)線,同時(shí) SIM 卡的走線不要太長。SIM 卡座的 GND 要和模塊的 GND 保持良好的聯(lián)通性,使二者 GND 等電位;
為防止SIM卡時(shí)鐘對(duì)其他信號(hào)干擾,需要作保護(hù)處理。
為了防止干擾應(yīng)在信號(hào)線上靠近 SIM 卡座放置一個(gè) 1 μF 電容;
在靠近 SIM 卡座的地方放置 TVS,該 TVS 的寄生電容不應(yīng)大于 50 PF 的,和模塊之間串聯(lián) 22 歐姆電阻可以增強(qiáng) ESD 防護(hù)。
圖3 SIM 卡接口電路
由于STM32F42103 微處理器與SIM800芯片的電平不匹配。需要通過一個(gè)電壓轉(zhuǎn)換芯片,否則系統(tǒng)信號(hào)無法工作, 一般來說應(yīng)該選取國外質(zhì)量好的品牌, 能夠可靠傳輸轉(zhuǎn)換信號(hào)芯片, 故筆者選用SP3232EEN來實(shí)現(xiàn)電平轉(zhuǎn)換功能。具體電路如下。
圖4 SP3232驅(qū)動(dòng)電路
要實(shí)現(xiàn)無人售貨機(jī)的控制及通訊功能,光有硬件的支撐是遠(yuǎn)遠(yuǎn)不夠的, 同時(shí)要完成基于STM32系統(tǒng)終端軟件設(shè)計(jì)。
針對(duì)STM32F429開發(fā),本次軟件設(shè)計(jì)采用ARM公司的Keil 5 MDK 作為開發(fā)套件進(jìn)行程序開發(fā)。相對(duì)于其它開發(fā)方式,該集成開發(fā)套件具有下面幾方面的優(yōu)勢(shì)。
1)KEIL MDK提供芯片啟動(dòng)代碼,開發(fā)者不需要編寫相應(yīng)的啟動(dòng)代碼,節(jié)約了開發(fā)時(shí)間,提高了編程效率。
2)由于ST公司提供了對(duì)應(yīng)的庫函數(shù),開發(fā)者不需要花太多時(shí)間糾結(jié)在芯片的寄存器上??梢酝ㄟ^導(dǎo)入相應(yīng)芯片的庫函數(shù),利用所提供的庫函數(shù)功能完成開發(fā)。使整個(gè)編程工作更加方便快速。
3)KEIL開發(fā)界面簡潔,學(xué)習(xí)容易。
4)芯片公司提供大量的例程,數(shù)據(jù)手冊(cè),參考手冊(cè),能夠極大的方便用戶使用。同時(shí)提供各種技術(shù)支持,并不斷的舉行技術(shù)推廣講座,方便開發(fā)人員掌握開發(fā)方法。
無人售貨機(jī)的數(shù)據(jù)通訊是采用中斷響應(yīng)方式來實(shí)現(xiàn)數(shù)據(jù)傳輸。為保證數(shù)據(jù)的準(zhǔn)確性和安全性, 在GPRS數(shù)據(jù)傳輸?shù)幕A(chǔ)上,在終端采用基于MODBUS的CRC對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)。本項(xiàng)目軟件的實(shí)現(xiàn)可以采用基于庫函數(shù)的直接驅(qū)動(dòng)硬件方式實(shí)現(xiàn)。
圖5 通訊流程圖
1)系統(tǒng)初始化:系統(tǒng)時(shí)鐘初始化、中斷初始化、GPIO口初始化、串口初始化等。
2)建立 GPRS通信:通過串口傳輸AT指令啟動(dòng)GPRS,建立GPRS傳輸,成功,進(jìn)行數(shù)據(jù)傳輸,不成功進(jìn)行斷點(diǎn)續(xù)傳。
3)在GPRS通信的基礎(chǔ)上進(jìn)行數(shù)據(jù)校驗(yàn)與處理。
遠(yuǎn)程終端主控芯片通過USART串口通訊與GPRS芯片SIM800進(jìn)行通訊。通過串口傳輸AT指令給SIM800從而啟動(dòng)GPRS傳輸,從而實(shí)現(xiàn)與服務(wù)器端的數(shù)據(jù)交互,從而實(shí)現(xiàn)服務(wù)器與終端節(jié)點(diǎn)的信息交換。
終端機(jī)與遠(yuǎn)程監(jiān)控中心的遠(yuǎn)程數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)包括 GPRS 通信模塊的初始化、GPRS 網(wǎng)絡(luò)登錄、鏈路維護(hù)和數(shù)據(jù)傳輸過程。終端機(jī)在啟動(dòng)時(shí)初始化時(shí),由微處理器向通信模塊發(fā)送一系列AT 指令,配置通信模塊的工作模式,上下文激活,依據(jù)PPP 協(xié)議請(qǐng)求登錄到GPRS 網(wǎng)絡(luò),經(jīng)過LCP 協(xié)商和NCP 協(xié)商,建立起通信連路,成功登錄到GPRS 網(wǎng)絡(luò),就可與監(jiān)控中心進(jìn)行遠(yuǎn)程數(shù)據(jù)傳輸;鏈路維護(hù)指終端機(jī)每隔一個(gè)固定時(shí)間發(fā)送一條鏈路維護(hù)指令,檢查通信鏈路是否斷開,如果通信連路出現(xiàn)故障,就重新登錄到GPRS 網(wǎng)絡(luò);數(shù)據(jù)傳輸是指數(shù)據(jù)以IP 報(bào)文的形式在終端機(jī)與監(jiān)控中心間的雙向傳輸。
1)定義AT指令
//REG
#define ATE0_CMD "ATE0 " /// 禁止回顯
#define CREG_CMD "AT+CREG?\00Dx00A" /// 查詢網(wǎng)絡(luò)注冊(cè)情況
#define CGMM_CMD "AT+CGMMx00Dx00A"
#define SIMCARD_CMD "AT+CPIN?x00Dx00A"
//LD GPRS
#define GPRS_QD "AT+CSTTx00Dx00A" /// GPRS啟動(dòng)
#define GPRS_JH "AT+CIICRx00Dx00A" /// 移動(dòng)場(chǎng)景開啟,激活
#define GPRS_DEF_PDP "AT+CGDCONT=1,”IP”,”CMNET”x00Dx00A" /// 接入點(diǎn)
#define GPRS_ACT_PDP "AT+CGATT=1x00Dx00A" /// GPRS激活PDP
#define GPRS_CMNET_APN"AT+CIPCSGP=1,”CMNET”x00Dx00A"http://設(shè)置GPRS模式
#define GPRS_BJ_ADDR "AT+CIFSRx00Dx00A" /// 獲取本地IP
#define GPRS_TCP1 "AT+CIPSTART=" /// 建立一個(gè)IP連接
#define GPRS_TCP2 PROTOTOCOL //定義傳輸協(xié)議
#define GPRS_TCP3 IPADDR //定義IP地址
#define GPRS_TCP4 PORTNUM //定義端口號(hào)
啟動(dòng)GPRS
三只松鼠通過創(chuàng)業(yè)營銷戰(zhàn)略的機(jī)會(huì)導(dǎo)向、超前行動(dòng)、創(chuàng)新性、風(fēng)險(xiǎn)管理和資源整合幾個(gè)維度,利用探索性創(chuàng)新和利用性創(chuàng)新將產(chǎn)品、服務(wù)和內(nèi)容傳遞給顧客,與顧客、合作伙伴、員工等價(jià)值鏈中成員共創(chuàng)價(jià)值,實(shí)現(xiàn)企業(yè)目標(biāo)(見圖1)。
void start_gprs_mode(void)
{ GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_GSM(100);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_GSM(10000);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
2)建立一個(gè)IP連接
void __GPRS_TCPIP()
{//AT+CMGR=1
send_string_uart3(GPRS_TCP1); //uart3口發(fā)送"AT+CIPSTART=",即建立一個(gè)IP連接
send_data_uart3(0x22); //
send_string_uart3(g_config_data.protocoltype); // uart3口發(fā)送協(xié)議類型
send_data_uart3(0x22);
send_data_uart3(',');
send_data_uart3(0x22);
send_string_uart3(g_config_data.ipaddr); / // 從uart3口發(fā)送IP地址
send_data_uart3(0x22);
send_data_uart3(',');
send_data_uart3(0x22);
send_string_uart3(g_config_data.portnum); //// //從 uart3口發(fā)送端口號(hào)
send_data_uart3(0x22);
send_data_uart3(0x0D);
send_data_uart3(0x0A);
PUT("destination address:");
PUT(g_config_data.ipaddr);
LCD_write_english_string((LCD_WIDTH_PIXELS - strlen(g_config_data.ipaddr)*6)/2,3,LCD_BANK_LINE);
if(0)
{ LCD_write_english_string((LCD_WIDTH_PIXELS - strlen(g_config_data.ipaddr)*6)/2,3,g_config_data.ipaddr);
} else
{ LCD_write_english_string(0,3,g_config_data.ipaddr);
LCD_write_english_string((LCD_WIDTH_PIXELS - strlen(PM)*6)/2,1,PM);}
delay_GSM(3000);
}
(3)發(fā)送數(shù)據(jù)
void send_gprs_data(char * buf , unsigned int count)
{
unsigned int i ,j;
if (current_status != TCP_IP_OK) // 如果協(xié)議沒有連接成功直接返回
return ;
ibusy = 1;
LCD_write_english_string((LCD_WIDTH_PIXELS - strlen(LCD_BANK_LINE)*6)/2,5,LCD_BANK_LINE);
LCD_write_english_string((LCD_WIDTH_PIXELS - strlen(SIM_SEND_GPRS_DATA_TEST)*6)/2,5,SIM_SEND_GPRS_DATA_TEST);
send_string_uart3(GPRS_SEND_DATA); //發(fā)送數(shù)據(jù)命令
delay_GSM(2000);
for( j = 0 ;j < count ; j ++)
{ for ( i = 0 ; i < strlen((const char*)buf) ; i ++)
{ send_data_uart3(buf[i]); } }
send_data_uart3(0x1A); //LF //沒長度限制一定要用1A表示結(jié)束
endif
ibusy = 0;}
為解決系統(tǒng)掉線重?fù)軉栴},本文在單片機(jī)主程序的基礎(chǔ)上,嵌入“心跳”檢測(cè)程序,實(shí)現(xiàn)數(shù)據(jù)的穩(wěn)定傳輸。所謂“心跳”程序,就是模擬心跳過程,定時(shí)發(fā)送檢查數(shù)據(jù),根據(jù)返回信息判斷是否重登錄網(wǎng)絡(luò)。圖6為“心跳”檢測(cè)程序流程圖。
圖6 心跳包檢測(cè)程序流程圖
心跳檢測(cè)程序:
if(is_enable_send_gprs_position()&&!ibusy) //定時(shí)發(fā)送心跳數(shù)據(jù)
{
icount++;
gprs_heart(wendu_gprs,icount); //發(fā)送心跳數(shù)據(jù),定時(shí)器里面實(shí)現(xiàn)
if(icount > 32000)
icount = 0;
要實(shí)現(xiàn)遠(yuǎn)程控制,一定需要利用現(xiàn)有的無線傳輸網(wǎng)絡(luò), 離不開現(xiàn)有的運(yùn)營商網(wǎng)絡(luò)的支持,首先使用一個(gè)市面上常用的手機(jī)卡,插入SIM卡中。通過STM32的USART3對(duì)SIM800進(jìn)行指令控制, 在實(shí)驗(yàn)中通過AT指令,能夠完成網(wǎng)絡(luò)的遠(yuǎn)程連接, 但不能有效保持連接狀態(tài), 在無法確定原因的情況下,購買了專用流量卡做測(cè)試, 同樣信號(hào)也沒有多少改善。 只能進(jìn)行短時(shí)間有效傳輸, 每一次要傳輸信號(hào)時(shí),都需要重新做連接操作, 充分懷疑是運(yùn)營商的踢網(wǎng)操作造成的,通過實(shí)驗(yàn)提醒筆者, 在實(shí)際應(yīng)用過程中, 當(dāng)要傳輸信號(hào)時(shí),一定要多做檢測(cè)動(dòng)作, 查看通信的連接狀態(tài), 保證信號(hào)的正常傳輸,當(dāng)然也有可能是因?yàn)檫h(yuǎn)離基站,信號(hào)不好造成的斷線。不管是什么原因。保持信號(hào)通過長連接是在程序?qū)崿F(xiàn)過程中要充分考慮的重要問題。
詳細(xì)分析了GPRS 通信技術(shù),根據(jù)基于GPRS 網(wǎng)絡(luò)平臺(tái)的遠(yuǎn)程通信技術(shù)的發(fā)展情況,確定了系統(tǒng)的設(shè)計(jì)方案遠(yuǎn)程控制系統(tǒng)的功能設(shè)計(jì),完成硬件設(shè)計(jì)的基礎(chǔ)上,研究了用于GPRS 模塊通信的PPP 協(xié)議,設(shè)計(jì)了終端的應(yīng)用程序,進(jìn)行了遠(yuǎn)程終端與監(jiān)控中心的數(shù)據(jù)傳輸實(shí)驗(yàn),實(shí)現(xiàn)了遠(yuǎn)程終端的硬件設(shè)計(jì)。該系統(tǒng)運(yùn)行穩(wěn)定,具有廣泛的應(yīng)用價(jià)值和前景。