自动售货机销售监测反馈系统
周婷婷++王宁诚
摘要:自90年代以来,自动售货机逐步进入我国市场,经过数十年的发展,已经逐步渗透进了人们的生活。自动售货机的出现和广泛使用,方便了人们的购物,为商家创造了商机。但由于自动售货机自身的缺陷,例如,多故障、易缺货和分布分散等,使得运营商的管理成本大大提高。设计以STM32单片机作为核心控制器,结合称重传感器和GSM模块实现对自动售货机货物销售情况的监测。可用于查询售货机的货物剩余情况,及时提醒运营商送货等。该作品主要包括以下三个模块:称重传感器模块、中央控制模块和GSM通信模块。通过称重传感器模块对数据进行采集,借助中央主控STM32单片机进行数据处理,利用串口发送相应指令到GSM短信收发模块,实现发送货物销售情况到预先设置的手机上。同时也可以通过手机发送查询指令,终端返回售货参数,实现售货人员随时随地的查询。
关键字:GSM模块;串口通信;自动售货机;监测反馈系统
中图分类号:TN27 文献标识码:A 文章编号:1009-3044(2016)11-0275-03
1 背景
自动售货机被称为24小时营业的微型自助超市,又称自动贩卖机,它的售货领域非常广泛,是绝大多数发达国家商品零售的主流零售模式。自从1999年,自动售货机逐步进入中国。如今,在全国各地客流较大的公共场所,都能看到自动售货机的身影。中国自动售货机专业委员会对中国内地自动售货机(自动贩卖机)应用市场做出的预测是,启动期至少应布机10万台,年生产总值在10亿元人民币,到发展期至少应布机50万台,年产值应达到100亿元人民币,而到成熟期将达到300万台,年生产总值将达到600亿元之巨,届时中国的自动售货机将发展成一个巨大的产业[1]。
自动售货机的出现,的确极大地方便了人们的生活,但是,除了其自身具备的便利性等优势外,也存在部分需要深入研究并加以解决的问题。首先,在大量的自动售货机投入使用后,他的区域分布将非常广泛,这将会给运营商的管理带来了诸多不便。其次,运营商也无法及时了解各个售货机的销售情况,形成系统化的管理。不能在第一时间得知商品剩余情况,这将会延误补货从而影响经济收益。综上所述,若能将售货机的销售情况直接反馈给运营商,并且运营商也可通过主动查询来获取售货机的销售情况,将会极大的方便其对自动贩卖机的管理。
2 总体方案设计
2.1总体框架
如图1所示,考虑到单片机具有体积小、功耗低、可控性强、扩展灵活等优点,本项目采用单片机STM32F103ZET6作为核心控制器,使用压力传感器对信息进行采集,经由单片机处理后将相应的信息通过GSM模块发送到预先设定的手机端。同
时借助外部定时器可实现固定时间发送相应信息到手机端。实物如图2所示:
2.2称重传感器模块
本设计选用双孔悬臂平行梁应变式称重传感器,它的特点是:精度高、易加工、结构简单紧凑、抗偏载能力强,固有频率高。模拟/数字转换器芯片选用HX711芯片,这是一款专为高精度电子秤而设计的 24 位 A/D 转换器芯片,集成了包括稳压电源、片内时钟振荡器等其他同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优良特点[2]。大大降低了电子秤的整体成本,提高了称重传感器模块的性能和可靠性。工作原理如图3所示。
图4 应变式力传感器的电路工作原理
将四个应变片粘贴到受力的力敏弹性元件上, 当弹性元件因为受力产生变形时,应变片会随之产生相应的应变, 然后经过内部转化成电阻值变化。将应变片接成如图 4 所示的电桥,压力引起的电阻变化将转换为测量电路的电压变化,通过测量输出电压的数值, 再通过换算即可得到所测量物体的重量[3]。
电桥的四个臂上接工作应变片,都参与机械变形,同处一个温度场,温度影响相互抵消,电压输出灵敏度高。当 4 个应变片的材料、阻值都相同时,可推导出以下公式[4]:
[ΔUBC=Ek4ε1-ε2+ε3-ε4=Ek44ε1] (1)
式中,[ΔUBC]:BC两点电压,E:供桥电压,K:电阻应变计的灵敏系数,[ε1,ε2,ε3,ε4]:应变计 1、2、3、4 的应变值,正号表示拉伸,负号表示压缩。
2.3 通讯模块
利用串行通讯与外设进行数据交互。串行通信是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。相对于并行通信,即在串行端口上通过一次同时传输若干位元数据的方式进行通信,虽然串行连接单个时钟周期能够传输的数据比并行数据更少,看起来前者传输能力比后者要弱一些,实际的情况却常常相反,串行通信可以比并行通信更容易提高通信时钟频率,从而提高数据的传输速率。同时使用串行通信成本更加低廉,电路更加简化[5]。
利用GSM模块进行对外的信息传达。GSM模块是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。作为全球移动通信系统,已经广泛运用了几十年的时间,发展到今日其应用已经相当成熟。因而选择GSM作为设备系统的无限距离数据传输工具[6]。
3 软件设计
3.1程序设计方案
本设备是由数据采集、数据处理识别、数据的接收发送三个程序模块组成。使用C语言来实现该系统的全部代码工作。通过称重传感器对货物信息进行采集获取,获取数据后通过串行通信直接输入主控芯片做进一步的处理,根据主控的处理结果控制GSM模块完成货物信息的发送。系统的主程序流程图如图5所示:
在整个程序中对于中断的处理是一个关键的部分,嵌套中断向量控制器部分的函数如下[7]:
在程序运行过程中,优先处理货物售完的情况,其实是到达预定时间发送信息,最后是运营商通过短信查询的情况。以此来确保货物售完及时通知运营商。
3.2短信发送流程
短信发送步骤如下:
首先,发送:AT+CMGF=1,设置为文本模式。
然后,发送:AT+CSMP=17,167,2,25,设置文本模式参数。
最后,发送:AT+CSCS="UCS2",设置编码字符集为UCS2。
此时,我们便可以发送 AT+CMGS 指令来发送中英文短信了,不过由于使用了 UCS2 字符集,所有字符/数字/汉字,都必须使用 UNICODE 编码。
以给指定手机号码182xxxxxxxx发送一条中英文短信为例。假定短信内容为“SIM900A 中英文短信发送测试”。
第一步:将号码和发送内容转换为 UNICODE 字符串,182xxxxxxxx转换UNICODE 字符串为:
00310038003200780078007800780078007800780078。SIM900A中英文短信发送测试经过转换后的 UNICODE 字符串:
00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5。
第二步:发送指令:AT+CMGS="0031003800320 0780078007800780078007800780078",接收到这个指令后模块返回:> . 此时我们输入我们需要发送的内容:00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5,注意,此处不发送回车。在发送完内容以后,最后以十六进制(HEX)格式单独发送(不用添加回车):1A(即0X1A),启动一次短信发送[8]。发送命令代码如下:
Void sendSMS(){
char a = 0x1A;
printf("AT\r\n");//握手
delay_ms(100);
printf("AT+CMGF=1\r\n");//设置文本格式
delay_ms(100);
printf("AT+CSMP=17,167,2,25\r\n");//设置文本模式参数
delay_ms(100);
printf("AT+CSCS=\"UCS2\"\r\n" );//设置UCS2编码字符集
delay_ms(100);
printf("AT+CMGS=\"00310038003200780078007800780078007800780078\"\r\n");//设置目标手机号
printf("00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5");//短信内容
delay_ms(100);
printf("%c",a);//启动短信发送
}
3.3英文短信的读取流程
我们将用其他手机先发送一条英文短信到 GSM模块上,然后读取模块接收到的这条英文短信。
第一步,发送:AT+CMGF=1,设置为文本模式。
第二步,发送:AT+CSCS="GSM",设置GSM 字符集,
第三步,发送:AT+CNMI=2,1,设置新消息提示。
此时,若我们用别的手机发送一条英文短信“SIM900AModule”到GSM模块上(如果不知道模块号码,可以发送:AT+CNUM,查询模块号码)。模块接收到短信后,会提示如:+CMTI:"SM",2,表明收到了新的短信,存放在 SIM 卡位置 2。通过发送 AT+CMGR=2指令,即可读取该短信。接收读取短信代码如下:
Void receiveSMS(){
printf("AT\r\n");//握手
delay_ms(100);
printf("AT+CMGF=1\r\n");//设置文本格式
delay_ms(100);
printf ("AT+CNMI=2,1\r\n");//设置新消息提示
delay_ms(100);
printf ("AT+CMGR=2\r\n");//读取SIM卡位置2的信息}
4 结束语
本系统作为一个简易的自动售货机销售情况监测反馈模型,在实验室的多次测试结果表明:该系统能够快速准确的采集货物信息并及时反馈到预先设定的手机端,使用起来简单方便。可广泛的应用到各类自动售货机系统之中,能够较为有效的解决运营商因货机分布过于分散而造成的管理问题,同时可作为辅助工具帮助运营商优化其送货体系,具有良好的应用价值。
参考文献:
[1] 白丽.自动售货机:第三次零售业革命[J].电子商务,2005(03).
[2] 朱鹏飞,黄松和,梅菊.组合秤称重传感器大变形致非线性误差分析[J].包装工程,2015(12).
[3] 孟强.基于STM32的数据采集系统设计[D].南京林业大学,2014.
[4] 谭琦瑛,曹金宏,罗刚.应变式扭矩传感器应变系数的测量结果不确定度评定[J].计量技术,2015(12).
[5] 臧克家,李宝营,杨剑飞.基于STC89C52和TC35的智能家居系统设计[J].大连工业大学学报,2015(05).
[6] 陆培源.基于GSM的无线智能控制设计分析[J].科技展望,2015(27).
[7] 陈志旺.STM32嵌入式微控制器快速上手[M].电子工业出版社,2014.
[8] 李志伟.基于AT指令的串行通信程序的设计[J].微计算机信息,2007(03).