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