周婷婷++王寧誠(chéng)
摘要:自90年代以來(lái),自動(dòng)售貨機(jī)逐步進(jìn)入我國(guó)市場(chǎng),經(jīng)過(guò)數(shù)十年的發(fā)展,已經(jīng)逐步滲透進(jìn)了人們的生活。自動(dòng)售貨機(jī)的出現(xiàn)和廣泛使用,方便了人們的購(gòu)物,為商家創(chuàng)造了商機(jī)。但由于自動(dòng)售貨機(jī)自身的缺陷,例如,多故障、易缺貨和分布分散等,使得運(yùn)營(yíng)商的管理成本大大提高。設(shè)計(jì)以STM32單片機(jī)作為核心控制器,結(jié)合稱重傳感器和GSM模塊實(shí)現(xiàn)對(duì)自動(dòng)售貨機(jī)貨物銷售情況的監(jiān)測(cè)。可用于查詢售貨機(jī)的貨物剩余情況,及時(shí)提醒運(yùn)營(yíng)商送貨等。該作品主要包括以下三個(gè)模塊:稱重傳感器模塊、中央控制模塊和GSM通信模塊。通過(guò)稱重傳感器模塊對(duì)數(shù)據(jù)進(jìn)行采集,借助中央主控STM32單片機(jī)進(jìn)行數(shù)據(jù)處理,利用串口發(fā)送相應(yīng)指令到GSM短信收發(fā)模塊,實(shí)現(xiàn)發(fā)送貨物銷售情況到預(yù)先設(shè)置的手機(jī)上。同時(shí)也可以通過(guò)手機(jī)發(fā)送查詢指令,終端返回售貨參數(shù),實(shí)現(xiàn)售貨人員隨時(shí)隨地的查詢。
關(guān)鍵字:GSM模塊;串口通信;自動(dòng)售貨機(jī);監(jiān)測(cè)反饋系統(tǒng)
中圖分類號(hào):TN27 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)11-0275-03
1 背景
自動(dòng)售貨機(jī)被稱為24小時(shí)營(yíng)業(yè)的微型自助超市,又稱自動(dòng)販賣機(jī),它的售貨領(lǐng)域非常廣泛,是絕大多數(shù)發(fā)達(dá)國(guó)家商品零售的主流零售模式。自從1999年,自動(dòng)售貨機(jī)逐步進(jìn)入中國(guó)。如今,在全國(guó)各地客流較大的公共場(chǎng)所,都能看到自動(dòng)售貨機(jī)的身影。中國(guó)自動(dòng)售貨機(jī)專業(yè)委員會(huì)對(duì)中國(guó)內(nèi)地自動(dòng)售貨機(jī)(自動(dòng)販賣機(jī))應(yīng)用市場(chǎng)做出的預(yù)測(cè)是,啟動(dòng)期至少應(yīng)布機(jī)10萬(wàn)臺(tái),年生產(chǎn)總值在10億元人民幣,到發(fā)展期至少應(yīng)布機(jī)50萬(wàn)臺(tái),年產(chǎn)值應(yīng)達(dá)到100億元人民幣,而到成熟期將達(dá)到300萬(wàn)臺(tái),年生產(chǎn)總值將達(dá)到600億元之巨,屆時(shí)中國(guó)的自動(dòng)售貨機(jī)將發(fā)展成一個(gè)巨大的產(chǎn)業(yè)[1]。
自動(dòng)售貨機(jī)的出現(xiàn),的確極大地方便了人們的生活,但是,除了其自身具備的便利性等優(yōu)勢(shì)外,也存在部分需要深入研究并加以解決的問(wèn)題。首先,在大量的自動(dòng)售貨機(jī)投入使用后,他的區(qū)域分布將非常廣泛,這將會(huì)給運(yùn)營(yíng)商的管理帶來(lái)了諸多不便。其次,運(yùn)營(yíng)商也無(wú)法及時(shí)了解各個(gè)售貨機(jī)的銷售情況,形成系統(tǒng)化的管理。不能在第一時(shí)間得知商品剩余情況,這將會(huì)延誤補(bǔ)貨從而影響經(jīng)濟(jì)收益。綜上所述,若能將售貨機(jī)的銷售情況直接反饋給運(yùn)營(yíng)商,并且運(yùn)營(yíng)商也可通過(guò)主動(dòng)查詢來(lái)獲取售貨機(jī)的銷售情況,將會(huì)極大的方便其對(duì)自動(dòng)販賣機(jī)的管理。
2 總體方案設(shè)計(jì)
2.1總體框架
如圖1所示,考慮到單片機(jī)具有體積小、功耗低、可控性強(qiáng)、擴(kuò)展靈活等優(yōu)點(diǎn),本項(xiàng)目采用單片機(jī)STM32F103ZET6作為核心控制器,使用壓力傳感器對(duì)信息進(jìn)行采集,經(jīng)由單片機(jī)處理后將相應(yīng)的信息通過(guò)GSM模塊發(fā)送到預(yù)先設(shè)定的手機(jī)端。同
時(shí)借助外部定時(shí)器可實(shí)現(xiàn)固定時(shí)間發(fā)送相應(yīng)信息到手機(jī)端。實(shí)物如圖2所示:
2.2稱重傳感器模塊
本設(shè)計(jì)選用雙孔懸臂平行梁應(yīng)變式稱重傳感器,它的特點(diǎn)是:精度高、易加工、結(jié)構(gòu)簡(jiǎn)單緊湊、抗偏載能力強(qiáng),固有頻率高。模擬/數(shù)字轉(zhuǎn)換器芯片選用HX711芯片,這是一款專為高精度電子秤而設(shè)計(jì)的 24 位 A/D 轉(zhuǎn)換器芯片,集成了包括穩(wěn)壓電源、片內(nèi)時(shí)鐘振蕩器等其他同類型芯片所需要的外圍電路,具有集成度高、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)良特點(diǎn)[2]。大大降低了電子秤的整體成本,提高了稱重傳感器模塊的性能和可靠性。工作原理如圖3所示。
圖4 應(yīng)變式力傳感器的電路工作原理
將四個(gè)應(yīng)變片粘貼到受力的力敏彈性元件上, 當(dāng)彈性元件因?yàn)槭芰Ξa(chǎn)生變形時(shí),應(yīng)變片會(huì)隨之產(chǎn)生相應(yīng)的應(yīng)變, 然后經(jīng)過(guò)內(nèi)部轉(zhuǎn)化成電阻值變化。將應(yīng)變片接成如圖 4 所示的電橋,壓力引起的電阻變化將轉(zhuǎn)換為測(cè)量電路的電壓變化,通過(guò)測(cè)量輸出電壓的數(shù)值, 再通過(guò)換算即可得到所測(cè)量物體的重量[3]。
電橋的四個(gè)臂上接工作應(yīng)變片,都參與機(jī)械變形,同處一個(gè)溫度場(chǎng),溫度影響相互抵消,電壓輸出靈敏度高。當(dāng) 4 個(gè)應(yīng)變片的材料、阻值都相同時(shí),可推導(dǎo)出以下公式[4]:
[ΔUBC=Ek4ε1-ε2+ε3-ε4=Ek44ε1] (1)
式中,[ΔUBC]:BC兩點(diǎn)電壓,E:供橋電壓,K:電阻應(yīng)變計(jì)的靈敏系數(shù),[ε1,ε2,ε3,ε4]:應(yīng)變計(jì) 1、2、3、4 的應(yīng)變值,正號(hào)表示拉伸,負(fù)號(hào)表示壓縮。
2.3 通訊模塊
利用串行通訊與外設(shè)進(jìn)行數(shù)據(jù)交互。串行通信是指在計(jì)算機(jī)總線或其他數(shù)據(jù)通道上,每次傳輸一個(gè)位元數(shù)據(jù),并連續(xù)進(jìn)行以上單次過(guò)程的通信方式。相對(duì)于并行通信,即在串行端口上通過(guò)一次同時(shí)傳輸若干位元數(shù)據(jù)的方式進(jìn)行通信,雖然串行連接單個(gè)時(shí)鐘周期能夠傳輸?shù)臄?shù)據(jù)比并行數(shù)據(jù)更少,看起來(lái)前者傳輸能力比后者要弱一些,實(shí)際的情況卻常常相反,串行通信可以比并行通信更容易提高通信時(shí)鐘頻率,從而提高數(shù)據(jù)的傳輸速率。同時(shí)使用串行通信成本更加低廉,電路更加簡(jiǎn)化[5]。
利用GSM模塊進(jìn)行對(duì)外的信息傳達(dá)。GSM模塊是將GSM射頻芯片、基帶處理芯片、存儲(chǔ)器、功放器件等集成在一塊線路板上,具有獨(dú)立的操作系統(tǒng)、GSM射頻處理、基帶處理并提供標(biāo)準(zhǔn)接口的功能模塊。作為全球移動(dòng)通信系統(tǒng),已經(jīng)廣泛運(yùn)用了幾十年的時(shí)間,發(fā)展到今日其應(yīng)用已經(jīng)相當(dāng)成熟。因而選擇GSM作為設(shè)備系統(tǒng)的無(wú)限距離數(shù)據(jù)傳輸工具[6]。
3 軟件設(shè)計(jì)
3.1程序設(shè)計(jì)方案
本設(shè)備是由數(shù)據(jù)采集、數(shù)據(jù)處理識(shí)別、數(shù)據(jù)的接收發(fā)送三個(gè)程序模塊組成。使用C語(yǔ)言來(lái)實(shí)現(xiàn)該系統(tǒng)的全部代碼工作。通過(guò)稱重傳感器對(duì)貨物信息進(jìn)行采集獲取,獲取數(shù)據(jù)后通過(guò)串行通信直接輸入主控芯片做進(jìn)一步的處理,根據(jù)主控的處理結(jié)果控制GSM模塊完成貨物信息的發(fā)送。系統(tǒng)的主程序流程圖如圖5所示:
在整個(gè)程序中對(duì)于中斷的處理是一個(gè)關(guān)鍵的部分,嵌套中斷向量控制器部分的函數(shù)如下[7]:
在程序運(yùn)行過(guò)程中,優(yōu)先處理貨物售完的情況,其實(shí)是到達(dá)預(yù)定時(shí)間發(fā)送信息,最后是運(yùn)營(yíng)商通過(guò)短信查詢的情況。以此來(lái)確保貨物售完及時(shí)通知運(yùn)營(yíng)商。
3.2短信發(fā)送流程
短信發(fā)送步驟如下:
首先,發(fā)送:AT+CMGF=1,設(shè)置為文本模式。
然后,發(fā)送:AT+CSMP=17,167,2,25,設(shè)置文本模式參數(shù)。
最后,發(fā)送:AT+CSCS="UCS2",設(shè)置編碼字符集為UCS2。
此時(shí),我們便可以發(fā)送 AT+CMGS 指令來(lái)發(fā)送中英文短信了,不過(guò)由于使用了 UCS2 字符集,所有字符/數(shù)字/漢字,都必須使用 UNICODE 編碼。
以給指定手機(jī)號(hào)碼182xxxxxxxx發(fā)送一條中英文短信為例。假定短信內(nèi)容為“SIM900A 中英文短信發(fā)送測(cè)試”。
第一步:將號(hào)碼和發(fā)送內(nèi)容轉(zhuǎn)換為 UNICODE 字符串,182xxxxxxxx轉(zhuǎn)換UNICODE 字符串為:
00310038003200780078007800780078007800780078。SIM900A中英文短信發(fā)送測(cè)試經(jīng)過(guò)轉(zhuǎn)換后的 UNICODE 字符串:
00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5。
第二步:發(fā)送指令:AT+CMGS="0031003800320 0780078007800780078007800780078",接收到這個(gè)指令后模塊返回:> . 此時(shí)我們輸入我們需要發(fā)送的內(nèi)容:00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5,注意,此處不發(fā)送回車。在發(fā)送完內(nèi)容以后,最后以十六進(jìn)制(HEX)格式單獨(dú)發(fā)送(不用添加回車):1A(即0X1A),啟動(dòng)一次短信發(fā)送[8]。發(fā)送命令代碼如下:
Void sendSMS(){
char a = 0x1A;
printf("AT\r\n");//握手
delay_ms(100);
printf("AT+CMGF=1\r\n");//設(shè)置文本格式
delay_ms(100);
printf("AT+CSMP=17,167,2,25\r\n");//設(shè)置文本模式參數(shù)
delay_ms(100);
printf("AT+CSCS=\"UCS2\"\r\n" );//設(shè)置UCS2編碼字符集
delay_ms(100);
printf("AT+CMGS=\"00310038003200780078007800780078007800780078\"\r\n");//設(shè)置目標(biāo)手機(jī)號(hào)
printf("00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5");//短信內(nèi)容
delay_ms(100);
printf("%c",a);//啟動(dòng)短信發(fā)送
}
3.3英文短信的讀取流程
我們將用其他手機(jī)先發(fā)送一條英文短信到 GSM模塊上,然后讀取模塊接收到的這條英文短信。
第一步,發(fā)送:AT+CMGF=1,設(shè)置為文本模式。
第二步,發(fā)送:AT+CSCS="GSM",設(shè)置GSM 字符集,
第三步,發(fā)送:AT+CNMI=2,1,設(shè)置新消息提示。
此時(shí),若我們用別的手機(jī)發(fā)送一條英文短信“SIM900AModule”到GSM模塊上(如果不知道模塊號(hào)碼,可以發(fā)送:AT+CNUM,查詢模塊號(hào)碼)。模塊接收到短信后,會(huì)提示如:+CMTI:"SM",2,表明收到了新的短信,存放在 SIM 卡位置 2。通過(guò)發(fā)送 AT+CMGR=2指令,即可讀取該短信。接收讀取短信代碼如下:
Void receiveSMS(){
printf("AT\r\n");//握手
delay_ms(100);
printf("AT+CMGF=1\r\n");//設(shè)置文本格式
delay_ms(100);
printf ("AT+CNMI=2,1\r\n");//設(shè)置新消息提示
delay_ms(100);
printf ("AT+CMGR=2\r\n");//讀取SIM卡位置2的信息}
4 結(jié)束語(yǔ)
本系統(tǒng)作為一個(gè)簡(jiǎn)易的自動(dòng)售貨機(jī)銷售情況監(jiān)測(cè)反饋模型,在實(shí)驗(yàn)室的多次測(cè)試結(jié)果表明:該系統(tǒng)能夠快速準(zhǔn)確的采集貨物信息并及時(shí)反饋到預(yù)先設(shè)定的手機(jī)端,使用起來(lái)簡(jiǎn)單方便。可廣泛的應(yīng)用到各類自動(dòng)售貨機(jī)系統(tǒng)之中,能夠較為有效的解決運(yùn)營(yíng)商因貨機(jī)分布過(guò)于分散而造成的管理問(wèn)題,同時(shí)可作為輔助工具幫助運(yùn)營(yíng)商優(yōu)化其送貨體系,具有良好的應(yīng)用價(jià)值。
參考文獻(xiàn):
[1] 白麗.自動(dòng)售貨機(jī):第三次零售業(yè)革命[J].電子商務(wù),2005(03).
[2] 朱鵬飛,黃松和,梅菊.組合秤稱重傳感器大變形致非線性誤差分析[J].包裝工程,2015(12).
[3] 孟強(qiáng).基于STM32的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[D].南京林業(yè)大學(xué),2014.
[4] 譚琦瑛,曹金宏,羅剛.應(yīng)變式扭矩傳感器應(yīng)變系數(shù)的測(cè)量結(jié)果不確定度評(píng)定[J].計(jì)量技術(shù),2015(12).
[5] 臧克家,李寶營(yíng),楊劍飛.基于STC89C52和TC35的智能家居系統(tǒng)設(shè)計(jì)[J].大連工業(yè)大學(xué)學(xué)報(bào),2015(05).
[6] 陸培源.基于GSM的無(wú)線智能控制設(shè)計(jì)分析[J].科技展望,2015(27).
[7] 陳志旺.STM32嵌入式微控制器快速上手[M].電子工業(yè)出版社,2014.
[8] 李志偉.基于AT指令的串行通信程序的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007(03).