一种新型智能电子秤系统的开发

高明华+杨根红+沈文波+许丽金



摘 要: 针对传统电子秤,记录、统计称重结果需耗费较多人力,并容易出现错记漏记等现象,设计一款新型智能电子秤系统。该电子秤采用STC89C52微处理器为系统控制核心,可显示物品名称、重量、单价、总价等信息,并基于App Inventor 2平台开发出相应的电子秤手机APP软件,电子秤通过蓝牙发送数据至手机APP,由手机保存数据。手机APP软件具备各种统计功能,并能够将统计结果导出Excel表格,便于电脑存储、分析。该系统性能稳定、可靠,成本低廉,手机APP软件方便实用,可广泛应用于现代商业市场中。
关键词: 电子秤; 蓝牙; 手机APP; Excel表格
中图分类号: TN99?34; TP312 文献标识码: A 文章编号: 1004?373X(2017)14?0040?04
Abstract: Since statistical record of weighting result of traditional electronic scales consumes more manpower, and is prone to the incorrect and omission phenomena, a new type of intelligent electronic scale system is designed in this paper. The STC89C52 microprocessor is used as the control core in the electronic scale system, which can display the name of goods, weight, unit price, total price and other information. The corresponding electronic scale mobile phone APP software was developed based on the App Inventor2 platform. The electronic scale sends data to mobile phone APP through Bluetooth, and save the data in the phone. The mobile APP software possesses a variety of statistical functions, and can export the statistical results to Excel form for storage and analysis of the computer. The system has the advantages of stable performance, reliability, low cost. The mobile APP software is convenient and practical. It can be widely used in modern commercial markets.
Keywords: electronic scale; Bluetooth; mobile APP; Excel table
自20世紀60年代以来,由于传感器技术的迅速发展,电子称重技术日趋成熟,并逐步取代传统机械秤。20世纪70年代初期,微处理机的出现使得电子称重技术得到了进一步的发展,快速、准确、操作方便、功能多样化等已成为现代称重技术的主要特点,称重装置的应用已遍及到国民经济各领域,与此同时,人们对称重仪表的要求也越来越高,要求更加智能化。于是出现了一种智能无线电子秤,运用无线蓝牙模块传送重量数据,通过RFID读取货品的名称、单价和单位重量,显示并存储[1]。还有一种无线接口电子秤,通过蓝牙收发器实现无线方式的体重数据上传至电脑或互联网上,以便个人健康数据的永久保存与分析[2]。传统电子秤的设计与研制尝试了多种方法,但由于其体积较大,不方便携带,测量数据不易保存和统计分析,因此逐渐不被人们所使用。近几年智能手机迅速普及,APP的开发技术也随着手机市场的发展日益成熟,因此把数据上传至手机,将电子秤与手机APP相结合是电子产品发展的必然趋势[3]。为此,本设计在传统的电子秤基础上,增加蓝牙数据传送模块,同时基于App Inventor 2平台开发出一款电子秤手机APP,可以通过蓝牙将称重数据发送到手机APP,APP查询某天的称重记录,并能统计某段时间,各种物品的重量,而且统计数据可以以Excel表格形式导出。该款智能电子秤符合现在人们对称重装置的要求。
1 智能电子秤总体架构
本文智能电子秤系统由下位机和上位机两部分构成。该系统整体框架如图1所示,下位机是基于51单片机的电子秤部分,上位机是基于谷歌App Inventor 2开发平台设计实现的手机APP。系统下位机部分是利用压力传感器采集重量数据 [4],经过HX711模块进行信号放大和A/D转换,再把数字信号上传单片机处理模块。单片机会对键盘按下进行处理,设置单价、折扣,并在LCD12864上显示重量、单价、总价等信息。上位机的手机APP,按下“发送”按键后,数据通过蓝牙模块上传到APP,APP接收数据后将其存放于数据库,以便查询和统计。APP可以选择物品编号列表(用户可自行增加、删除、修改列表),之后会在接收界面显示所选物品、单价、折扣等信息。APP接收到单片机发送的重量数据则会自动计算总价并显示,同时将物品名和单价发送至单片机,单片机接收到后显示于液晶屏。
APP的功能如图2所示,整个APP分三个主要界面:第一个界面为登录系统,实现登录、注册、退出功能;第二个界面为数据处理系统,实现数据的接收、统计、查表与微信扫描支付,根据统计分析数据,给出相应建议,还有导出统计表格的功能;第三个界面为资料管理系统,实现查看记录、导出记录功能,查看某天的历史记录,并且能够导出该记录的Excel表格。
2 系统方案设计
系统总体方案设计主要包括硬件电路设计、单片机控制程序设计及APP软件功能设计三部分。硬件电路主要由复位电路、压力传感器及A/D转换模块、蓝牙模块、矩阵键盘、单片机5部分构成,借鉴引用了传统的电子秤硬件设计。单片机程序设计是整个设计的关键部分,APP软件功能设计分为不同的功能界面。单片机采用了STC89C52,其是宏晶科技推出的一种低功耗、高性能CMOS8位微控制器,价格低廉,且能够实现本设计的功能[5]。压力传感器采用应变式压力传感器,其精度高、结构简单紧凑、抗偏载能力强,其输出电压和压力成正比,斜率稳定,因此易于实现将重量转变成电信号输出[6]。HX711是专为高精度电子秤而设计的24位
A/D转换器芯片,具有集成度高、响应快、抗干扰能力强等优点[7],与压力传感器结合使用效果佳。HC?05是一款性价比较高的蓝牙模块,完全兼容单片机系统,可实现单片机数据的收发,因此选择它作为系统的無线通信桥梁。
2.1 单片机控制方案
为了使得系统可以一直读取重量数据并显示,在液晶初始化和串口初始化后,进入循环读取、显示流程,读取HX711 A/D转换后的数值,存放到当前A/D数值变量;扫描矩阵键盘,判断是否有按键按下,根据按键值和系统设置模式进行相应的响应;将HX711传输的A/D数值转换成重量,再计算总价;然后根据显示模式,显示对应的主界面、改单价界面、改折扣界面、校准界面中;最后返回读取HX711数值的操作,如图3所示。
2.2 APP设计方案
APP主要有5个界面,登录注册界面、接收界面、查看历史记录界面、统计数据界面、扫描付款界面,关系如图4所示。接收界面是关键部分,为历史记录和统计提供数据。为了提高电子秤的实用性,方便付款,增加了扫描二维码进入微信支付功能。本设计所有数据都保存在手机微数据库中,相当于一个单机版软件,无论是本机微数据库还是联网的服务器数据库,都是采取键值对的存取方式。实现了在不联网的情况下也能读取之前所保存的所有数据。
3 电子秤软件设计
3.1 矩阵扫描的实现
先设置行为高电平,列为低电平,逐行扫描再逐列扫描,若有按键按下,则连通部分会由高电平变为低电平,确定行、列就可以确定是哪个按键按下[8]。其中矩阵键盘上的数值0~9是为了输入数字而设定的,为了可以输入小数,还加入“小数点”键。另外还有其他“清零/去皮”、“改单价”、“改折扣”、“删除/发送”、“校准”按键,充分应用了4×4的矩阵键盘。
3.2 LCD12864显示的实现
液晶显示前,需要对液晶进行初始化。编写相关函数,方便调用。显示字符串是液晶显示关键的程序,为了方便编写各种显示界面,先编写显示字符串的函数,判断要显示数据所在的行和列,再写入字符串,程序如下:
void LCD_DisStr(uint8 x,uint8 y,uint8 *pDat)
{
if(x==0) LCD_WriteOneByte(0,0x80+y);
else if(x==1) LCD_WriteOneByte(0,0x90+y);
else if(x==2) LCD_WriteOneByte(0,0x88+y);
else if(x==3) LCD_WriteOneByte(0,0x98+y);
while(*pDat!=′\0′) //字符串以\0结尾,用此判断是否已显示完字符串
{ LCD_WriteOneByte(1,*pDat);
pDat++; }
}
显示界面有4个,根据SystemSet变量的不同来显示相应界面,如图5所示。如果SystemSet==0(开机就是这个数),则显示主界面,即物品名、重量、单价、总价等信息;如果SystemSet==1,会进入修改单价界面,此时单价的显示会随着按下按键而左移显示;如果SystemSet==2,会进入修改折扣界面,此时折扣的显示会随着按下按键而左移显示;如果SystemSet==3,会进入校准提示界面,显示“请放置设定重量物品,然后按校准键进行校准!”的提示语;再输入校准物品的重量即可。
3.3 蓝牙收发的实现
对蓝牙模块的编程,首先要串口初始化,主要设置串口格式和波特率(9 600 b/s)。然后需要编写发送和接收数据的模块程序:发送(接收)一串数据,先判断TI(RI)是否为1,是,则表明发完一个8位数据;再判这串数据是否发完,如果发完,把相关变量(发送长度、发送标志、接收完成标志)置0,否则发送后面数据。
蓝牙发送重量数据和接收单价数据都采用HEX字符串,效率较高[9]。由于蓝牙接收物品名数据只能用ASCLL码文本形式。发送的重量数据经过读取A/D转换后的数值,再转换成以克为单位的整数,以移位的方法转换成HEX格式后保存到发送数组,触发发送模块后,将发送数组内容发送出去。蓝牙接收到单价数据后,则液晶屏显示。
4 APP功能设计
4.1 登录注册界面
该屏幕初始化时,从数据库读取用户名和密码保存在列表变量当中,以便输入的用户名和密码进行查询列表对比。在登录界面,若输入密码错误,会弹出错误提示框“密码错误!”,若为未注册的用户,点击“注册”会进入注册界面。
4.2 接收界面
该界面是接收单片机数据,并保存到数据库的主要功能界面,为了方便用户的使用,加入了定义、查询物品编号功能。用户定义一个编号,该编号对应一种物品及其单价、折扣等相关信息。用户则从编号列表选择或输入编号即可查询到相应信息并显示出来,当APP接收到单片机传过来的数据后,计算总价,并显示物品重量及总价,如图7所示。