基于ESP32的电子秤系统设计

2021-05-24 08:43李嘉明冯建廖明华徐操喜
电脑知识与技术 2021年12期
关键词:电子秤

李嘉明 冯建 廖明华 徐操喜

摘要:设计了一种基于ESP32的电子秤系统,通过HX711模块对称重传感器输出的重量信号进行高精度的模数转换,转换后的数字信号供主控芯片ESP32处理,ESP32将称重数据输出到OLED屏上显示,同时上传至OneNet云平台,实现每次称重数据的自动记录,在需要统计物料出库情况的应用领域,具有一定的实用及推广价值。

关键词:电子秤;ESP32;OLED;OneNet;物料出库

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2021)12-0216-04

1 背景

电子秤以嵌入式芯片作为主控系统,具有测量精度高、测量速度快、可靠性强、应用面广等一系列优点[1-2],逐渐取代了传统的杆秤,广泛应用于各种商贸活动中[3-5]。然而,目前市面上常用的电子秤不具备自动记录称重数据的功能,无法自动保存从仓库领取物料的多少,只能通过人工手动记录称重后显示的数值。相对于电子秤自动保存测量称重数值,人工记录的方式比较容易出错,并且不符合智能化的要求。

针对上述问题,结合传感器技术、嵌入式技术、信息通信技术、云技术,采用MicroPython编写主控程序,设计一款基于ESP32的电子秤系统。通过对称重物重量的测量、模数转换、数据上传,完成每次称重数据自动接入中国移动的OneNet物联网云平台,包括所称物料的重量以及出库时间,相关的仓库管理人员可以登录OneNet云平台查看每次上传的称重数据,非常直观便捷地掌握某物料的领用情况,整个过程无需人工进行数据记录。本系统对于现有的电子秤產品的改进具有一定的参考价值。

2 系统方案设计

基于ESP32的电子秤系统主要包括称重传感器、HX711模块、按键模块、ESP32主控模块、OLED显示屏模块,系统框图如图1所示。本系统上电后进入网络连接模式,根据预设的WiFi账号和密码,接入本地的无线网络,网络连接成功后进入称重模式。在称重模式下,称重传感器检测所称物料的重量,转换成电信号输出至HX711模块,主控芯片ESP32不断读取由HX711模块进行模数转换输出的数字信号,该数字信号经过ESP32解析后显示在OLED屏上,所显示的值便是所称物料的重量。得到所称物料的重量后,操作人员按下按键模块中的“S2”按键持续2秒,系统进入数据上传模式,在该模式下,ESP32通过http协议上传当前称重数据,同时锁定当前的称重数据,不再解析HX711发送过来的数字信号,直至接收到OneNet云平台确认成功接入数据的响应信息,系统回到称重模式。若接收到的是上传出错的响应信息,则系统不会切换回称重模式,同时ESP32会驱动蜂鸣器工作,发出警报声提醒操作人员数据上传失败,此时操作人员再次按下按键模块的按键“S2”2秒,重新上传称重数据,数据上传成功后,蜂鸣器停止报警。

3 系统硬件设计

3.1 ESP32主控模块

ESP32可作为独立系统运行应用程序,也可作为主机MCU的从设备,通过SPI/SDIO或I2C/UART接口提供WiFi和蓝牙功能,其引脚电路图如图2所示。ESP32性能稳定,工作温度范围达到-40℃到+125℃,内部集成了自校准电路,能够动态调整电压,并且适应外部条件的变化。本系统选用ESP32作为系统的主控芯片和通信芯片,完成本地数据的分析处理,同时通过WiFi上传称重数据至云平台。

3.2 称重传感器

称重传感器如图3所示,属于电阻应变式压力传感器。力敏型弹性元件上粘贴上应变片,当弹性元件因受力产生形变时,导致应变片发生相应的应变,进而转化成电阻的变化,最后引起内部测量电路输出电压的变化。

3.3 HX711模块

HX711模块是专为高精度电子秤而设计的,电路图如图4所示。主芯片HX711是一款24位高精度的模数转换器芯片,工作电压2.6V至5.5V,具有两路模拟通道输入,输出端的时钟线PD_SCK和数据线DOUT与主控芯片ESP32相连,用于输出转换成数字信号的称重数据。

3.4 OLED显示模块

OLED显示模块通过I2C接口与主控ESP32芯片连接,接收并显示ESP32发送的信息,主要有当前的称重数据、连接WiFi的状态,用户可以从OLED屏上显示的数据获知当前称重数据以及系统的联网状态。

3.5 按键模块

按键模块用于实现人机交互,其电路图如图6所示。当需要上传称重数据时,按下按键“S2”超过2秒,ESP32的GPIO0引脚检测到持续2秒的低电平,系统进入上传数据模式,此时会锁定当前的称重数据,直至接收到云平台返回接入成功的响应信息。当需要切换物料种类时,短按按键“S2”,即按键“S2”按下的持续时间小于2秒,OLED屏显示切换后的物料名称,称重数据也会上传到切换后的物料所对应的云平台数据流中。当遇到运行故障或是网络连接失败时,按下按键“S1”,系统将会重启。

3.6 蜂鸣器模块

蜂鸣器模块用于声音报警,提醒操作人员当前称重数据上传失败,其电路图如图7所示。图中的蜂鸣器属于有源蜂鸣器,使用直流信号即可令其鸣叫。ESP32的输出引脚连接限流电阻R5后接入三极管Q1的基级,当该输出引脚为低电平时,三极管截止,蜂鸣器不发出声响,反之,三极管导通,蜂鸣器持续发出声响。

4 系统软件设计

本系统采用Mu作为开发软件,代码用MicroPython编写,程序流程图如图8所示。系统上电并初始化后,ESP32开始连接WiFi网络。若WiFi连接失败,则在10秒内进行重连,10秒后如果还是连接不成功,OLED屏上显示“WiFi连接失败,请重启系统”,并结束程序运行。

WiFi连接成功后,ESP32接收并解析HX711传递过来的称重数据,并将其显示在OLED显示屏上,单位是kg(千克),接着ESP32检测按键“S2”有无被按下,若没有检测到按键“S2”被按下,则采集并解析新的称重值,若检测到按键“S2”有被按下,则根据被按下的时长,即相应输入引脚检测到的低电平持续时间是否大于2秒,来判断是进入上传数据的模式还是切换物料的模式,超过2秒进入数据上传模式,低于2秒则进入物料切换模式。

数据上传模式下,ESP32会将当前称重数据锁定,并将该数据发送OneNet云平台,接入协议是http,直至接收到云平台返回的成功接收的应答信息,ESP32才会解开锁定的称重数据,重新获取新的称重值,否则将会判定本次数据上传失败,并驱动蜂鸣器报警,蜂鸣器响起后须重新进行上传操作,成功本次称重数据后蜂鸣器停止报警。物料切换模式下,OLED显示当前所选的物料名称,仍然是通过按下按键“S2”来触发物料的切换。

5 系统测试

OneNet是由中国移动打造的PaaS(平台即服务)物联网开放平台,提供数据接入、分析和可视化功能,为企业提供成熟、稳定的物联网云平台,帮助开发者轻松实现设备接入与设备连接,快速完成产品开发及部署,提供完善的物联网解决方案。本系统采用OneNet4.0作为云端接入,接入协议为HTTP,云平台的配置部署流程如图9所示。

打开浏览器访问OneNet官网“https://open.iot.10086.cn/”,首先注册并登录账号,然后进入控制台,选择“切换至旧版”,点击“多协议接入”,在“HTTP”选项栏下添加产品,填写产品相关信息。产品创建成功后,点击进入该产品,左侧栏点击“设备列表”,点击“添加设备”,填写设备相关信息。设备创建成功后,点击该设备对应的“详情”,在设备详情页面中点击“添加APIKey”,云平台会根据用户输入的表单信息生成一串加密字符串,如图10所示,由图可知该设备的设备ID和APIKey这两个关键信息,通过设备ID和APIKey,可以唯一地识别云平台上所创建的设备。接着点击左侧栏的“数据流模板”,添加两个数据流,数据流名称分别为“matterA”、“matterB”,单位名称均为“千克”,单位符号均为“kg”。最后,点击左侧栏的“应用管理”添加应用,在应用编辑器里完成控件与设备数据流之间的关联,完成后保存并发布该应用。

完成云平台的配置后,保存设备ID和APIKey对应的值,上传称重数据时需要使用上述两个值,否则不能完成数据上传操作。ESP32实现HTTP数据上传需要导入urequest依赖包,通过HTTP的post请求上传数据至云平台的核心代码如下:

headersData = { "api-key":"1ekLTm7pTjmInZ=7QLOgvtmfamU=" }

jsonData = {"datastreams": [{"id": "matterA","datapoints": [{"value": weight}]}]}

response = urequests.post('http://api.heclouds.com/devices/678335201/datapoints',

json =jsonData,headers = headersData)

云平台的APIKey值赋值给字典类型变量headersData的api-key字段,设备ID的值则替换掉post方法中第一个参数url中的数字部分,字典类型jsonData中包含了数据流名称和实际称重数据,其中,“id”字段对应的是数据流名称,“value”字段对应的是实际称重数据,实际测得的称重数据保存在变量weight中。数据上传成功后,ESP32将会接收到如下的响应信息:

{

"errno": 0,

"error": "succ"

}

系统数据上传测试效果如图11所示,更改称重传感器上的物体重量,分别对“matterA”和“matterB”测试10次。由图可知,所有测试均成功上传至云平台,并无数据在上传过程中丢失,系统运行稳定。

6 结束语

本文设计的基于ESP32的电子秤系统,能够检测物体的重量,ESP32经过换算之后的实际重量显示在OLED屏上,并通过ESP32自动上传当前称重数据至OneNet云平台,用户可登录OneNet云平台查看每次称重的重量以及时间。采用本系统进行称重,无需人工手动记录称重数据,数据自动上传至云平台存储。在需要统计物料领用情况的工厂、餐厅等应用领域,相关管理人员可通过查询云平台的数据,非常便利地来了解到出库物料的领用情况,具有一定的实用价值。

参考文献:

[1] 邱麦迪,任芳,蒋飞.基于STM32的电子称重系统的设计与实现[J].中国仪器仪表,2020(7):73-76.

[2] 崔国强,詹宁,罗德雨,等.基于STM32和AD7791实现电子秤设计[J].仪器仪表用户,2020,27(2):5-8.

[3] 程麗霞,吴璞.家用智能电子秤设计[J].机械工业标准化与质量,2020(10):46-48.

[4] 赵云,李振,李海枫,等.基于51单片机电子秤重量报警系统[J].软件,2020,41(4):88-92.

[5] 刘嘉慧.基于STC89C52的智能无线称重系统设计[J].电脑知识与技术,2020,16(14):103-104.

【通联编辑:谢媛媛】

猜你喜欢
电子秤
电子秤
电子秤检定与称量误差补偿方法的分析
基于PLC的工业电子秤设计
基于单片机的商用电子秤设计与仿真
计量检定电子秤的误差及改进措施探究
关于电子秤的设计
基于样条函数的高精度电子秤设计
压死电子秤
基于单片机实时监测电子秤设计
基于STM32的高精度电子秤设计