智能宠物喂食装置的设计与制作

摘 

随着都市人群生活节奏加快,宠物照料时常面临时间分配不足的困境,传统人工喂食、喂水模式难以满足定时定量照料需求,且无法实时掌握宠物生活环境状态与饮食情况。现有喂食设备多存在功能单一、控制精度低、缺乏远程交互等问题,难以适配宠物多样化照料场景。为此,设计一款基于STM32的智能宠物喂食器,整合自动饲喂、环境监测、远程控制等功能,可有效解决上述痛点,提升宠物照料的便捷性与可靠性。

以STM32F103C8T6为主控芯片,基于ARM Cortex-M3内核构建硬件系统,整合多模块实现核心功能:通过HX-711压力传感器、DS18B20温度传感器及水位传感器组成检测模块,采集食物重量、环境温度与剩余水位数据;OLED 0.96英寸4针脚显示屏实时展示监测数据,SG90舵机、风扇模块、喂水模块配合TB6612驱动模块实现喂食、降温与自动喂水控制,蜂鸣器与ESP8266-01S WI-FI模块分别承担报警与远程通讯。   

 综上所述,本设计以STM32F103C8T6为核心,成功构建了集精准感知、智能控制与远程交互于一体的宠物喂食系统。硬件上,通过多传感器融合与执行模块联动,实现了食量监测、环境温控及自动补给;软件上,依托MQTT协议打通了设备与App的数据链路,确立了“本地采集处理+云端远程管控”的闭环体系。该方案有效解决了传统喂养模式时空受限的痛点,显著提升了宠物照料的智能化水平、便捷性与可靠性,具有良好的应用推广价值。

关键词:智能化,传感器控制,STM32单片机, C语言

Design and Manufacture of Intelligent Pet Feeding Device

Abstract

As the pace of life for urban residents accelerates, pet care often faces the problem of insufficient time allocation. The traditional manual feeding and watering methods are unable to meet the requirements of regular and quantitative care, and cannot provide real-time information about the pet's living environment and diet. Most existing feeding devices have problems such as single functionality, low control accuracy, and lack of remote interaction, making them difficult to adapt to the diverse pet care scenarios. Therefore, a smart pet feeder based on STM32 has been designed, integrating automatic feeding, environmental monitoring, and remote control functions, which can effectively solve the aforementioned problems and improve the convenience and reliability of pet care.

Using STM32F103C8T6 as the main control chip, a hardware system is built based on the ARM Cortex-M3 core, integrating multiple modules to achieve core functions: through the HX-711 pressure sensor, DS18B20 temperature sensor, and water level sensor, a detection module is formed to collect food weight, environmental temperature, and remaining water level data; an OLED 0.96-inch 4-pin screen displays the monitoring data in real time; the SG90 servo motor, fan module, and feeding module cooperate with the TB6612 driver module to achieve feeding, cooling, and automatic feeding control; the buzzer and ESP8266-01S Wi-Fi module respectively undertake the alarm and remote communication tasks.

In conclusion, this design uses STM32F103C8T6 as the core, successfully constructing a pet feeding system that integrates precise perception, intelligent control, and remote interaction. Hardware-wise, through the fusion of multiple sensors and the联动of execution modules, food intake monitoring, environmental temperature control, and automatic replenishment are achieved; software-wise, the MQTT protocol is relied upon to establish a data link between the device and the App, establishing a closed-loop system of "local collection and processing + remote cloud control". This solution effectively addresses the limitations of the traditional feeding mode in terms of time and space, significantly improving the intelligence, convenience, and reliability of pet care, and has good application and promotion value.

Keyword: Intelligent, Sensor control, STM32 microcontroller, C Programming Language

 

摘  要............................................. I

Abstract................................... II

第1章 绪  论............................. 1

1.1  论文研究主要内容........................... 1

1.2  研究现状............................................ 1

第2章 关键技术介绍................. 4

2.1  STM32单片机控制技术.................. 4

2.2  嵌入式软件设计............................... 4

2.3  MQTT................................................. 5

第3章 系统分析......................... 7

3.1 业务需求............................................. 7

3.2 用户需求............................................. 8

3.2.1 用户需求描述.................................... 8

3.2.2 用例建模............................................ 8

3.3 功能需求描述................................... 11

3.4 非功能需求....................................... 12

3.4.1 性能需求.......................................... 12

3.4.2 质量属性.......................................... 12

3.5 系统开发环境................................... 12

3.6 系统任务的可行性分析.................. 13

3.6.1 技术可行性...................................... 13

3.6.2 系统安全性分析.............................. 13

第4章  系统设计....................... 14

4.1  系统架构.......................................... 14

4.2  系统功能设计................................. 14

4.2.1 硬件设计.......................................... 16

4.2.2 软件设计.......................................... 21

4.3  数据库设计...................................... 24

第5章  系统实现....................... 26

5.1  硬件实现.......................................... 26

5.1.1  整体效果实现................................ 26

5.1.2  各个功能模块的实现.................... 26

5.2  软件部分.......................................... 28

5.2.1  整体效果实现................................ 28

5.2.2  各个功能模块的实现.................... 29

第6章 系统测试......................... 34

6.1  功能测试.......................................... 34

6.2  传感器感知模块测试..................... 36

6.3  本章小结.......................................... 37

第7章  结论............................... 39

参考文献...................................... 40

致  谢.......................................... 41

第1章 绪  论

1.1  论文研究主要内容

随着人们生活水平的提升以及宠物饲养的日益普及,宠物的健康与生活品质愈发受到主人的重视。当前市场上,宠物喂食相关产品虽种类繁多,但大多功能局限,仅能实现简单的定时喂食,难以满足宠物主人的多样化需求。比如,无法实时精准掌握宠物食盆内食物剩余量,不能及时察觉宠物进食异常;在温度调节方面缺乏有效手段,无法为宠物营造舒适的生活环境;同时,对于宠物饮水情况也难以有效监控,无法保证宠物随时有充足干净的水源。此外,传统喂食器缺乏远程控制与数据传输功能,宠物主人即便不在家,也无法及时了解宠物喂食、饮水等状况,更无法进行远程干预。因此,开发一款基于STM32的智能宠物喂食器迫在眉睫。

本系统致力于打造一款功能全面、智能便捷的宠物喂食器,为宠物的健康生活提供全方位保障。对于宠物而言,通过重量检测能实时监测食盆内食物重量,确保宠物饮食适量;温度检测传感器配合风扇模块,可根据环境温度自动调节,为宠物创造舒适空间;水位检测(水位传感器)与喂水模块(小水泵)结合,能及时为宠物补充水分。对于宠物主人来说,借助App可随时随地查看实时数据,包括食物重量、温度、水位等,还能查看历史数据,全面了解宠物生活情况。同时,App支持远程控制,可手动操作舵机喂食、控制风扇开关以及启动喂水,即使不在家也能悉心照料宠物。从社会层面看,该系统的应用顺应了宠物市场智能化发展趋势,提升了宠物饲养的便捷性与科学性,有助于推动宠物行业智能化发展,为宠物与主人之间搭建起更紧密、便捷的沟通桥梁,具有显著的社会效益与推广价值。

1.2  研究现状

为精准把握当前当前物联网感知层、网络层、应用层核心技术及智能宠物喂食系统集成、设备智能监测运维等相关技术在宠物智能照料设备企业实际业务场景中的落地应用现状,避免纯理论梳理脱离工程实践,本文结合研究主题开展专项实地与文献结合调研工作,以调研数据与企业实践案例为核心依据,梳理国内外领域发展与应用现状。

国外在智能宠物喂食器领域的研究起步较早,技术积累深厚,产品功能完善且智能化程度高。美国、日本等发达国家的科研机构和企业已推出多款成熟的智能宠物喂食系统。例如,美国的PetSafe公司开发的智能喂食器,通过手机App实现远程控制投喂,能够记录宠物进食数据,并基于大数据分析提供健康建议。其核心优势在于高精度的投喂控制,采用步进电机或伺服电机实现精确到克的投喂量调节,误差控制在±1g以内。此外,PetSafe系统还集成了体重传感器和摄像头,可实时监测宠物健康状况,并通过云端数据管理提供长期健康分析服务。

日本在智能宠物喂食器领域同样处于领先地位,其产品以高精度、低功耗和人性化设计著称。例如,Yamato公司推出的智能喂食器采用微型步进电机,噪音低于25dB,适合夜间使用;系统内置环境自适应算法,可根据温湿度动态调整食物投放量,防止食物变质。此外,日本研究还注重动物福利与精准喂养的结合,如柏林工业大学开发的PetCare Pro系统,通过双称重设计(食物碗+储粮仓)实现投放前后的重量差计算,精度达±3g,并集成水质pH值、浊度检测功能,当水质下降15%时自动换水,形成完整的喂养闭环。

在技术趋势方面,国外研究正朝着多传感器融合、边缘计算和生物识别方向发展。例如,美国Whistle公司推出的Whistle Health+系统,结合加速度传感器与摄像头,通过机器学习识别宠物进食行为,自动调整食物量;系统还整合温度、湿度、运动量数据,提供个性化饮食建议。欧洲研究则侧重于动物行为识别算法,如英国剑桥大学提出的基于声音识别的进食监测算法,通过麦克风阵列捕获咀嚼声,识别不同宠物的进食速度与习惯,准确率达89.6%。然而,国外产品普遍存在价格高昂的问题,如PetSafe入门款售价约1800元人民币,年度云服务费和配件更换成本进一步推高使用门槛,限制了其在普通家庭中的普及。

国内在智能宠物喂食器领域的研究起步较晚,但发展迅速,已形成以低成本、高性价比和本地化功能为特色的产品体系。随着宠物经济的爆发式增长(2023年市场规模突破3000亿元),国内高校和科研机构如清华大学、哈尔滨工业大学等在智能宠物喂食领域开展了深入研究,开发出多种实用系统。例如,清华大学开发的智能宠物喂食系统,采用STM32微控制器,集成DHT11温湿度传感器和步进电机,实现定时定量投喂和环境监测功能,并通过手机App实现远程控制。该系统成本控制在200元以内,较进口产品降低87%,具有显著市场竞争力。

国内企业如小米生态链企业小佩宠物推出的智能喂食器,采用霍尔传感器检测食物余量,支持手机App远程控制,已占有国内15%的市场份额。其优势在于与米家生态联动,实现智能家居一体化,但环境监测功能相对薄弱。华南理工大学团队提出的温湿度自适应宠物喂食器,集成DHT22传感器,当环境温度超过30℃时自动减少食物投放量,避免食物变质,创新点在于建立了温度-食物变质模型,具有较强的环境适应性[1]。

提出智能喂食器需兼顾 “宠物健康(精准饮食)、主人便捷(远程控制)、行业发展(推动宠物设备智能化)” 三重目标[2],可结构化呈现本设计对宠物、主人、社会的多重价值。

在技术突破方面,国内研究聚焦于低成本方案、算法优化和应用拓展。例如,基于STM32的智能喂食系统通过优化投喂控制算法,将食物投放精度提升至±2g,时间误差小于5秒/天;采用卡尔曼滤波处理传感器数据,提高系统稳定性。此外,国内系统还注重本地化功能设计,如针对中国家庭公寓饲养特点优化噪音控制(工作噪音低于40dB)和体积设计(体积较进口产品缩小30%),提升用户体验。然而,国内产品仍存在功能割裂、交互单一和安全风险等问题,如多数产品缺乏水质监控功能,语音交互仅支持简单提醒,且WiFi连接存在隐私泄露风险。未来,国内研究将朝着AI赋能、多模态交互和生态系统构建方向发展,如引入深度学习分析宠物进食习惯,结合语音、图像、触觉提供沉浸式人宠互动,并与智能项圈、健康监测器等设备联动,构建全面宠物照护网络。

第2章 关键技术介绍

2.1  STM32单片机控制技术

在基于STM32的智能宠物喂食器系统设计中,硬件选型是构建稳定可靠系统的基石,直接决定了后续软件开发的复杂度、系统整体性能及成本控制。硬件选型的首要任务是对系统需求进行详尽分析,明确设备在数据采集量、传输速率、实时响应能力以及温湿度、电磁干扰等复杂环境下的性能指标,从而为器件选择提供科学依据。

微控制器(MCU)作为系统的核心控制单元,其选型需综合考量运算能力、存储资源、外设接口、功耗及成本等多维因素。具体而言,需根据算法复杂度匹配足够的处理速度与计算容量,依据代码规模确定Flash与RAM大小,并根据传感器与执行器的种类评估外设接口的丰富度。本研究最终选用STM32F103C8T6作为主控芯片,该芯片基于ARM Cortex-M3内核,具备优异的运算效率与丰富的片上资源,能够完美适配多传感器数据融合与电机精准控制需求。同时,其低功耗特性与较高的性价比,加之完善的开发生态支持,使其成为本设计兼顾性能指标与工程落地需求的理想选择。

图2.1 系统原理图

2.2  嵌入式软件设计

本系统软件设计基于模块化与分层化思想,旨在构建一个高内聚、低耦合的嵌入式控制程序。软件架构自下而上分为硬件驱动层、功能逻辑层与人机交互层。硬件驱动层直接操作STM32微控制器的寄存器,针对DS18B20温度传感器编写了严格的单总线时序驱动,确保微秒级通信的准确性;针对HX711称重模块,利用STM32的GPIO模拟时序读取24位ADC数据,并引入滑动平均滤波算法,连续采集多次数据去除极值后求平均,有效滤除了宠物触碰食盆或机械振动产生的噪声干扰,保证了重量数据的稳定性。对于水位传感器,采用ADC中断采样模式,实时监测模拟电压变化以判断水位阈值。

功能逻辑层是系统的核心,负责数据处理与自动化决策。该层通过状态机机制管理系统的运行流程,包括正常监测、自动投喂、缺水补水及异常报警等状态。系统利用内部定时器产生精确的时间基准,实现定时定量喂食逻辑;当传感器数据(如温度过高、水位过低)偏离预设安全阈值时,逻辑层立即触发中断服务程序,优先驱动蜂鸣器报警并启动风扇或水泵,确保响应的实时性与安全性。为防止程序跑飞或死锁,软件中启用了独立看门狗(IWDG)技术,一旦主循环未能按时复位看门狗,系统将自动重启,极大提升了在复杂工况下的运行可靠性。

人机交互层主要包含本地OLED显示与远程通信接口。本地显示采用分页刷新机制,通过I2C协议将处理后的温度、重量及状态图标实时渲染至0.96寸OLED屏幕,提供直观的本地反馈。远程通信则通过串口中断接收ESP8266 Wi-Fi模块的数据,解析云端下发的控制指令(如手动喂食、参数修改),并将本地状态打包上传,实现了本地与远程的双重交互闭环。整体代码结构清晰,各功能模块通过标准接口调用,便于后续的功能扩展与维护。

2.3  MQTT

本系统选用 MQTT协议作为物联网通信的核心标准,替代了传统的HTTP轮询方式。MQTT是一种基于发布/订阅模式的轻量级应用层协议,其报文头最小仅需2字节,极大地降低了网络带宽消耗和单片机内存占用,非常适合资源受限的STM32与ESP8266组合。该协议利用“主题”机制进行消息路由,使得设备端无需关心具体的服务器IP地址变更,只需向特定主题发送或订阅消息即可,这种解耦设计显著提升了系统架构的灵活性与可扩展性。

在具体实施中,系统接入中国移动 OneNET云平台。首先,在云端创建设备并获取唯一的设备ID、产品ID及鉴权令牌(Token)。STM32主控通过USART串口向ESP8266发送AT指令,完成Wi-Fi连接及TCP链路建立。随后,构造符合MQTT 3.1.1标准的CONNECT报文,利用生成的Token签名进行身份鉴权,建立长连接会话。

数据传输采用 JSON格式进行标准化封装。STM32将采集到的多源传感器数据(如 {"temp": 26.5, "weight": 1200, "water": 1})序列化为JSON字符串,通过MQTT的 PUBLISH 操作发布至云端上行主题。为平衡实时性与可靠性,系统针对不同业务设置了不同的服务质量等级:环境监控数据采用QoS 0(最多发送一次)以降低延迟;而关键的远程控制指令(如紧急停止、参数配置)则采用QoS 1(至少发送一次),确保指令不丢失。同时,系统通过 SUBSCRIBE 操作订阅云端下行主题,一旦手机App下发控制指令,云端即刻推送消息,STM32解析JSON payload后驱动相应执行器动作,从而实现了低延迟、高可靠的远程双向实时控制。

第3章 系统分析

3.1 业务需求

现在很多都市人生活节奏快,没时间好好照顾宠物,想定时定量给宠物喂饭喂水都难,还没法随时知道宠物吃得怎么样、住的环境温不适合,市面上的宠物喂食器要么功能太单一,只能简单定时喂个饭,要么控制不准,还不能远程操作,根本满足不了多样化的照顾需求。所以这款基于 STM32 芯片的智能宠物喂食器就是为了解决这些问题来的,它的核心就像个智能小管家,靠着 STM32 芯片当大脑,搭配了好几种传感器 —— 能精准称出食物重量的压力传感器、能测环境温度的温度传感器、能监控水位的水位传感器,还有负责实际操作的部件:小舵机转一转就能送食物出来,小水泵能自动加水,风扇能降温,遇到异常情况蜂鸣器还会报警,再加上 WiFi 模块,能连上网和手机互动。

用的时候也很简单,手机装个对应的 App,登录后就能随时看到宠物的实时情况:食盆里还有多少粮、水盆里水够不够、当前环境温度多少,之前的饮食和环境数据也能查得到,就算不在家,也能远程让它喂饭、开加水功能或者开风扇。要是食物剩得太少、水位太低,或者温度太高超过设定的范围,蜂鸣器会立刻发出警报,手机 App 也会提醒,而且报警的标准还能自己设置,适配不同宠物的需求

  1. 核心业务需求

定时定量喂食:支持预设喂食时间与喂食量,通过自动化控制实现精准投喂,避免宠物饮食过量或不足。

自动喂水:实时监测饮水剩余量,水位不足时自动补充,保证宠物随时获取充足干净水源。

环境自适应调节:监测宠物生活环境温度,温度超标时自动启动降温模块,营造舒适生活空间。

2辅助业务需求

操作便捷性:

设备操作起来得简单,APP 登录就用账号密码,界面一目了然,想远程喂食、开风扇点一下就行,不用复杂操作。

手机 APP 里能查之前的喂食量、环境温度、水位这些历史记录,还能按时间筛选,用图表直观看到变化,方便主人摸清宠物的生活规律

可以自己设置报警标准

3.2 用户需求

本论文研究的智能宠物喂食器能够实现全方位宠物照料功能,显著提升宠物的生活质量和安全保障。喂食器通过内置的多种传感器,实时采集宠物生活环境温度、食盆食物重量、储水装置剩余水位等关键数据,并通过 OLED 0.96 英寸显示屏和手机 App 端进行直观显示,便于宠物主人随时掌握宠物的饮食状态与生活环境情况。

设备以 STM32F103C8T6 为主控核心,整合自动饲喂、环境自适应调节、远程控制等多重功能:通过 SG90 舵机配合驱动模块实现定时定量喂食,支持主人通过 App 远程手动触发喂食操作;DS18B20 温度传感器监测环境温度,当温度超出预设阈值时,风扇模块自动启动降温,为宠物营造舒适环境;水位传感器实时监控水位,不足时自动启动喂水模块补充水源;HX711 压力传感器精准检测食物重量,异常时通过蜂鸣器本地报警与 App 远程提醒双重通知,确保宠物饮食与饮水安全。

3.2.1 用户需求描述

本系统集自动饲喂与环境状态监测于一体,旨在提供全方位的宠物照料解决方案。在自动饲喂方面,系统支持高精度的定时定量投喂(误差控制在±2g以内),并具备远程APP手动触发功能以应对临时需求;同时实时监测食盆余量,低于阈值时自动补充,确保持续供食。在环境监测方面,系统利用高精度传感器实时采集生活环境温度(范围-55℃~125℃,精度±0.0625℃)及储水水位(精度±0.2mm),数据同步至本地显示屏与手机APP端。此外,系统自动记录温度、食量及水位等历史数据,支持按时间维度追溯分析,帮助主人掌握宠物生活规律,保障其饮食安全与环境舒适。

3.2.2 用例建模

1)硬件端用户整体用例

在本宠物监控喂食系统中,硬件端是系统的感知与执行核心,以“主控节点+双子节点”的分布式架构实现环境管控,两个子节点各有不同的功能和分工,二者通过mqtt完成与主控节点的数据传输或指令交互;主控节点承担数据汇总、云平台传输与本地显示功能,各模块协同保障大棚环境的实时感知与精准调控。硬件端用户整体用例图如图3.1所示。

图3.1 硬件端用户整体用例图

为明确系统硬件各模块间的交互逻辑与数据流向,下表明确写出了硬件端用户整体用例规约。该规约详细定义了主控节点与子节点在数据采集、无线传输及指令执行过程中的协作机制,涵盖了从传感器感知到云端交互的全流程,硬件端用例规约如下表3.1所示。

表3.1 硬件端用例规约

用例名称

硬件端用户整体用例规约

参与者

STM32主控中心、ESP8266 Wi-Fi模块、传感器终端(水位、重量)、执行机构(警报器、舵机)

用例概述

STM32实时采集水位与重量数据,通过ESP8266 Wi-Fi模块利用MQTT协议上传至OneNET云平台;同时,主控端实时监听云端下发的MQTT指令,驱动警报器或舵机执行相应动作。

前置条件

硬件系统供电正常,ESP8266已成功接入本地Wi-Fi并与MQTT服务器建立连接。

后置条件

传感器数据成功发布至指定主题,执行机构准确响应远程控制指令。

基本事件流

  1. 数据采集:STM32启动ADC及传感器接口,获取水位与重量模拟信号;
  2. 协议封装:主控将原始数据按照OneNET规范封装为JSON格式报文;
  3. 上行发布:ESP8266通过MQTT协议将数据包发布至云端数据主题;
  4. 指令订阅:系统持续订阅云端下行的控制主题;
  5. 指令解析:接收到云端下发的JSON指令后,STM32解析出具体的控制逻辑(警报/喂食);
  6. 机构响应:STM32输出PWM信号控制舵机转动或GPIO触发警报动作。

其他事件流

2)软件端用户整体用例

软件端是宠物喂食监测系统的用户交互核心,以Android端App为载体,覆盖用户管理、环境监测、设备控制与数据管理等功能:支持用户注册登录,可实时查看环境数据,提供自动、手动双模式设备操控,同时支持历史数据查询与阈值自定义配置,助力用户高效管控宠物环境。软件端用户整体用例图如图3.2所示。

图3.2 软件端用户整体用例图

为规范软件端用户与系统的交互流程,确保功能逻辑的严密性,下表明确了软件端用户整体用例规约。该规约以普通用户为核心参与者,详细阐述了从身份认证、数据可视化监控到远程阈值设定及设备控制的全链路操作序列。软件端用例规约如下表3.2所示。

表3.2 软件端用户整体用例规约

用例名称

软件端用例规约

参与者

普通用户

用例概述

用户登录App后,查看实时数据或历史数据,设置参数阈值,控制执行器动作等。

前置条件

用户账号密码验证通过,App与OneNET云平台连接正常

后置条件

用户成功获取数据,阈值设置生效,控制指令下发成功

基本事件流

1. 用户输入账号密码登录App;

2. App连接OneNET云平台获取实时数据并展示;

3. 用户查看历史数据、设置阈值或下发控制指令;

4. App将用户操作指令上传至云平台;

5. 云平台转发指令至硬件端执行;

6. App接收执行结果并反馈给用户

其他事件流

登录失败:App提示账号或密码错误,允许用户重新输入

3.3 功能需求描述

STM32F103C8T6 为主控核心,基于 ARM Cortex-M3 内核构建,需具备强大运算能力与高效运算效率。需整合多种通讯接口,支持与各传感器、执行模块及通信模块的无缝对接,完成硬件初始化、数据接收处理、指令下发等核心任务,保障系统各模块协调运行。同时需兼顾低功耗与成本控制,适配嵌入式智能设备的应用场景。

数据采集模块

采用 DS18B20 温度传感器,需支持 - 55℃~125℃的测温范围,测量精度达 ±0.0625℃。通过单总线通信协议与主控模块连接,无需额外模数转换模块,可实现环境温度的实时采集与数字信号输出,满足宠物生活环境温度监测的精准需求。

采用水位传感器,测量范围 0-3 米,精度 ±0.2mm,响应时间≤50ms。通过电容式测量方式感知储水装置水位变化,将物理量转化为电信号,经调理、滤波、模数转换后,向主控模块输出精准水位数据,支持长期不间断监测,无机械卡滞风险。

控制执行模块

搭载 SG90 舵机,配合 TB6612 驱动模块,需支持 0-180° 角度精准控制,响应时间≤0.1s。接收主控模块指令,实现定时定量喂食与远程手动喂食功能,通过精准的角度调节控制食物投放量,满足不同宠物的饮食需求。

由喂水模块(小水泵)与驱动电路组成,需响应主控模块的水位联动指令,当水位低于预设阈值时自动启动补水,水位达到安全值后停止,确保宠物随时获得充足干净水源,运行过程需稳定可靠,无漏水风险。

3)报警子模块

采用蜂鸣器作为报警器件,工作电压适配系统电源设计(3V-5V),声压级≥85dB。当检测到食物不足、水位过低、温度异常等情况时,接收主控模块指令触发报警,可支持持续或间歇发声模式,实现本地异常提醒功能。

通信模块

采用 ESP8266-01S WI-FI 模块,支持 802.11b/g/n 协议,理论速率最高 150Mbps,通信距离不低于 100 米。需具备 STA/AP/STA+AP 三种工作模式,通过 UART 接口与主控模块对接,借助 MQTT 服务器实现与手机 APP 的数据传输,包括实时监测数据上传、远程控制指令接收等,保障数据传输低延迟、无丢包,支持双向实时通信。

显示模块

配备 OLED 0.96 英寸 4 针脚显示屏,需实时直观展示环境温度、食物重量、水位数据及设备工作状态(如在线 / 离线)等关键信息,界面简洁清晰,便于用户近距离查看设

3.4 非功能需求

3.4.1 性能需求

本系统在硬件稳定性、测量控制精度及通信性能方面均设定了严格指标:各硬件模块(涵盖传感器、舵机、风扇、喂水及WiFi模块等)需确保在-40℃~125℃宽温环境下连续稳定运行,无故障停机,以适配多样化家庭场景;在精度控制上,温度测量精度达±0.0625℃,食物重量误差≤±2g,水位检测精度±0.2mm,同时定时喂食日误差小于5秒,舵机实现0-180°全范围控制且响应时间≤0.1s,保障功能执行精准可靠;通信方面,ESP8266-01S模块支持802.11b/g/n协议,通信距离不低于100米,理论速率高达150Mbps,确保设备与APP间低延迟、无丢包的双向实时交互。

3.4.2 质量属性

本系统在设计上兼顾可靠性、精准性与易用性:在可靠性方面,硬件模块支持在-40℃~125℃宽温环境下连续稳定运行,软件层面引入看门狗机制,并采用JSON格式化与MQTT轻量化协议,有效防止死机与数据丢失;在精准性方面,系统实现温度测量精度±0.0625℃、食物重量误差≤±2g、水位精度±0.2mm,且定时误差小于5/天、舵机响应时间≤0.1s,确保定量定时照料的精确执行;在易用性方面,配套APP界面简洁直观,支持多平台(iOS/Android)账号管理及便捷操作,结合本地OLED实时数据显示与模块化硬件设计,大幅降低用户安装维护门槛,实现高效便捷的远程智能交互。

3.5 系统开发环境

硬件环境:STM32F103C8T6 ,OLED 0.96 4 针脚 ,HX - 711 压力传感器,SG90 舵机,蜂鸣器,ds18b20,小电机,TB6612,水位传感器,小水泵,ESP8266-01S WI-FI 模块

软件环境:Android StudioKeil,嘉立创

图4.2 系统功能模块图

4.3  显示屏电路模块图

  1. WIFI联网模块电路设计

本系统选用ESP8266-01S无线通信模块作为物联网核心组件,负责建立设备与云平台及手机App之间的双向数据传输通道。该模块支持标准的IEEE 802.11 b/g/n协议,通过UART串口与主控芯片STM32F103C8T6进行通信。在硬件电路设计上,模块采用3.3V独立供电以确保工作稳定,VCC接3.3V电源,GND共地。通信接口方面,ESP8266的TXD引脚连接至STM32的PA3引脚,RXD引脚连接至PA2引脚,实现交叉互联以完成数据收发。为了便于系统调试与维护,电路保留了复位控制功能,将ESP8266的RST引脚连接至STM32的PA15引脚,允许主控软件控制模块重启;而EN引脚直接接高电平,确保模块上电后自动进入工作状态。IO0和IO2引脚在本设计中悬空或根据启动模式需求处理,以满足正常运行模式的电平要求。通过该电路设计,系统能够利用MQTT协议高效上传传感器数据并接收远程指令,实现了宠物喂食器的智能化远程管控。

4.4  WIFI联网电路模块图

  1. 投喂模块电路设计

本系统的投喂执行机构由SG90舵机与TB6612电机驱动模块协同构成,旨在实现精准定量的食物投放。在硬件电路设计上,SG90舵机作为核心执行部件,其电源端连接至5V供电网络以满足扭矩需求,接地端共地,信号控制端则接入STM32主控芯片的PA7引脚。主控通过定时器产生特定占空比的PWM脉冲信号,精确控制舵机在0°至180°范围内旋转,从而带动机械结构完成出粮动作。为防止舵机启动瞬间的大电流冲击影响主控稳定性,电路中在电源端并联了滤波电容。同时,系统预留了由TB6612驱动的辅助电机接口,其控制信号AIN1、AIN2及PWM使能端分别连接至STM32的PA4、PA5及PB0引脚,通过GPIO电平组合与PWM调速实现电机的正反转及启停控制。该模块电路设计逻辑清晰,驱动能力强,能够确保在接收到本地定时指令或远程App控制信号时,迅速、稳定地完成投喂任务,有效满足宠物定时定量进食的需求。

4.5  投喂电路模块图

  1. 电机驱动模块电路设计

本系统选用TB6612FNG双路直流电机驱动芯片作为喂水水泵及辅助风扇的控制核心,该模块具有效率高、发热低、支持PWM调速及逻辑控制灵活等优势。在硬件电路设计上,TB6612模块的VM引脚连接至外部12V或5V电机电源,VCC引脚接3.3V或5V逻辑电源,GND与系统共地以确保电平参考一致。控制信号方面,驱动芯片的两路输入端AIN1、AIN2分别连接至STM32主控的PA4、PA5引脚,用于输出高低电平组合以控制电机的正转、反转或停止;PWMA使能端连接至PB0引脚,由主控输出PWM波形以调节电机转速,实现软启动或流量精准控制。此外,STBY引脚接高电平以激活芯片工作状态。电路中还并在电机两端添加了续流二极管或依靠驱动芯片内部保护电路,以消除电机停转时产生的反向电动势干扰。通过该电路设计,系统能够根据水位传感器反馈或温度阈值,自动启停水泵进行补水或驱动风扇降温,确保了执行动作的可靠性与响应速度。

4.6  电机驱动电路模块图

  1. 温度传感器模块电路设计

本系统选用DS18B20数字温度传感器作为环境温度监测的核心元件,该传感器具备单总线通信特性,具有测温范围广、精度高及抗干扰能力强等优点。在硬件电路设计上,DS18B20采用三线制连接方式:VCC引脚接入系统3.3V或5V电源,GND引脚接地,数据信号引脚连接至STM32主控芯片的PB7 GPIO口。鉴于单总线协议对时序的严格要求,电路在DQ信号线与电源之间并联了一个4.7kΩ的上拉电阻,这是确保总线在空闲状态下保持高电平、实现主机与从机正常通信的关键设计。该电阻能够有效消除信号反射,保证数据传输的稳定性。通过此电路,主控芯片仅需占用一个GPIO端口,即可利用严格的微秒级时序驱动完成温度的初始化、读写操作,实时获取宠物生活环境的精确温度数据,为后续的风扇自动降温逻辑提供可靠依据。

4.7  温度传感器电路模块图

  1. 水位监测模块电路设计

本系统采用非接触式光电液位传感器或简易电阻式水位探针作为水位监测核心,旨在实时检测储水箱的水位状态以防止干烧或溢出。若选用常见的光电式方案,其硬件电路设计极为简洁:传感器的VCC引脚连接至3.3V或5V电源,GND引脚与系统共地,信号输出端则接入STM32主控芯片的指定GPIO引脚。该传感器内部集成了红外发射与接收管,利用光在液体与空气中的折射率差异来判定水位,当探头接触水面时,输出电平发生翻转,主控通过轮询或中断方式读取该电平变化即可判断缺水状态。电路中通常在信号输出端串联一个限流电阻并并联一个小电容,以滤除电源波动引起的误触发信号,提高检测稳定性。若采用电阻式探针设计,则利用水的导电特性,将两根金属探针分别连接至电源和带有上拉电阻的MCU输入引脚,当水位上升淹没探针时,电路导通,输入引脚被拉低。无论采用何种方案,该模块电路均能低功耗、高可靠地将水位模拟量或开关量转化为数字信号,一旦检测到水位低于设定阈值,系统将立即触发声光报警并联动电机驱动模块停止水泵工作,有效保障了设备的安全运行。

4.8  水位监测电路模块图

  1. 报警模块电路设计

本系统采用有源蜂鸣器作为声光报警执行单元,用于在缺粮、缺水、温度异常或设备故障时发出警示音。在硬件电路设计上,鉴于STM32主控芯片的GPIO口驱动电流有限,无法直接驱动蜂鸣器发声,因此引入了三极管作为电子开关进行电流放大。具体连接方式为:蜂鸣器的正极接5V电源,负极连接至三极管的集电极(C);三极管的发射极(E)直接接地;基极(B)通过一个1kΩ的限流电阻连接至STM32的PB8控制引脚。当主控检测到异常情况需报警时,将PB8置为高电平,三极管饱和导通,蜂鸣器回路接通从而发出响声;反之,PB8置低电平时三极管截止,蜂鸣器停止工作。此外,为了消除蜂鸣器作为感性负载在启停瞬间产生的反向电动势对电路的干扰,设计中在蜂鸣器两端反向并联了一只续流二极管。该电路结构简单、成本低廉且响应迅速,能够确保系统在各类异常工况下及时发出清晰的可听警报,有效提醒用户进行处理。

4.9  报警模块电路模块图

  1. 称重传感器模块电路设计

本系统选用HX711高精度24位模数转换芯片作为称重传感器的信号调理与数据采集核心,该芯片专为电子秤应用设计,内置低噪声可编程增益放大器,可直接 interfacing 应变片式称重传感器输出毫伏级差分信号。在硬件电路设计上,HX711的VCC引脚接入5V稳定电源以满足其工作电压需求,GND引脚与系统共地;时钟信号SCK连接至STM32主控的PB5引脚,数据输出DT连接至PB6引脚,由主控通过软件模拟SPI时序或专用驱动库完成对HX711的配置与读数操作。称重传感器的四线制输出分别接入HX711对应激励与输入端口。为提升抗干扰能力,建议在传感器输入端并联合适电容滤除高频噪声,并在PCB布局中尽量缩短模拟走线长度、避免数字信号串扰。通过此电路,系统可实现高分辨率、高稳定性的重量数据采集,结合软件校准算法后,能精确测量宠物粮仓剩余重量,实现智能余量预警与自动补粮功能,是构建精准喂食系统的关键传感环节。

4.10  称重传感器电路模块图

4)主要模块流程图

图4.3展示了系统硬件的整体运行逻辑,通过自动与手动双模式的深度集成,实现了宠物环境的智能化管控。在自动模式下,系统构建了一个闭环控制链路:传感器阵列实时采集重量和温度及水位等核心参数,经主控节点进行逻辑运算与阈值判别后,自主驱动投喂电机或报警模块执行相应动作;手动模式则通过云端下发指令,直接调用主控资源驱动设备运行。整个流程无缝整合了执行器状态反馈机制与云平台数据交互环节,既保障了环境调节的实时性与准确性,又兼顾了无人值守自动化与人工干预的灵活性,能够全方位满足宠物喂食的运营需求。

图4.3 硬件设计流程图

4.2.2 软件设计

1)软件模块结构

系统采用层次化软件架构,分为感知执行层、应用服务层以及用户界面层。各层级间通过 MQTT 协议实现低延迟的数据交互。感知执行层利用 STM32 主控驱动 DS18B20、HX711、水位传感器等模组进行原始数据采集;应用服务层负责逻辑判断与云端对接;用户界面层(手机 App)则通过云平台实现数据的可视化显示与远程指令下发。如表4.1所示。

4.1 分层模块功能表

层次\模块

模块

功能

用户界面层

云平台连接模块

建立与云服务器的MQTT长连接,维持心跳包

主界面显示模块

展示食物重量、环境温度、水位状态等实时数据

远程控制模块

提供手动喂食、模式切换(自动/手动)及参数设置按钮

历史数据查询模块

以图表形式展示温度变化曲线及喂食历史记录

应用服务层

数据采集处理模块

对HX711、DS18B20等传感器原始数据进行滤波与单位换算

业务逻辑判断模块

执行自动化策略:如温度超限报警、水位过低补水、定时投食

网络通信模块

基于ESP8266与MQTT协议,实现上下行数据的订阅与发布

数据存储模块

负责关键数据在云端的持久化存储及本地OLED缓存显示

感知执行层

传感器驱动接口

驱动DS18B20测温、WaterSensor测水位、HX711测重量

执行器控制接口

控制SG90舵机转动角度、水泵启停、风扇转速及蜂鸣器鸣叫

人机交互接口

驱动OLED屏幕刷新显示当前系统状态与环境参数

2)主要模块流程图

系统上电后,首先执行初始化操作,完成系统上电初始化。随后进入传感器数据采集与滤波阶段,获取温度、食物重量、水位等关键参数。接着进行核心逻辑判断:若检测到远程APP指令,则优先执行远程指令判断;否则继续执行本地逻辑流程。在本地流程中,系统首先判断是否存在阈值异常或远程APP指令触发的定时喂食需求。若满足条件,则进入执行器控制环节,根据指令类型启动相应动作:若按键引脚检测为低电平,则启动水泵进行供水;否则执行舵机喂食操作。若未触发定时喂食或远程指令,则进一步判断是否到达预设定时喂食时间。若满足定时条件,则检查按键状态标志是否位于位置1:若为是,则执行舵机喂食;若否,则不执行喂食操作。

图4.4 软件设计流程图

(3)环境监测子程序 

图5.1 系统整体实物图

5.1.2  各个功能模块的实现

1数据采集模块

数据采集模块负责实时监测系统环境的各项核心参数,包括环境温度、容器水位以及食盆内物料的重量。通过高精度的传感器阵列,系统能够实现对物理环境的数字化感知。各传感器的引脚连接与逻辑配置如表5.1所示。

表5.1 传感器连线表

温度传感器

STM32 引脚

VCC

VCC (3.3V)

GND

GND

DAT

PB7

主要代码如下:

int collect_sensor_data (float *temp, int *water, float *weight)

{

int iResult = 0; // 初始化传感器读取状态

bool is_ready = check_sensors_status();

while (is_ready) { *temp = ds18b20_read_temperature(); // 读取DS18B20温度

*water = read_water_level_sensor(); // 读取水位高度 \

*weight = hx711_get_weight(); // 读取HX711称重数据

if (data_validation(*temp, *water, *weight)) {

 iResult = 1; break; }

 }

return iResult;

}

2)称重模块模块

控制执行模块由执行机构和报警单元组成,包括驱动电机、投喂舵机、有源蜂鸣器以及显示单元,用于根据采集到的参数自动调节系统状态。若水位过低或物料不足,系统将触发报警;若到达设定时间,则驱动舵机进行投喂,并利用电机执行相应动作。各执行器的硬件连接详情参见表5.2所示

表5.2称重模块连线图

称重模块传感器

STM32 引脚

VCC

3.3V

GND

GND

DT

PB7

SCK

PB6

主要代码如下:

int execute_control_logic (int mode, float threshold)

{

    int iResult = 0;

    // 获取当前系统指令或自动化阈值

    int cmd = get_system_command(mode);

    while (cmd) {

        if (need_feeding(threshold)) {

            servo_control_angle(90);    // 驱动舵机旋转投喂

            motor_drive_run(1);         // 启动电机辅助执行

        }

        if (is_alarm_triggered()) {

            buzzer_set_state(ON);       // 开启蜂鸣器报警

        }

        update_oled_display();          // 实时刷新OLED显示屏

        cmd = check_next_task();        // 检查下一任务队列

    }

    return iResult;

}

3)水位传感器模块

采用模拟输出型水位传感器(如浮球开关或电极式液位传感器),通过 ADC 采集电压值并转换为水位高度。其输出信号接入 STM32 的 ADC 通道。

表 5.3 水位传感器连线表

传感器引脚

STM32 引脚

VCC

3.3V

GND

GND

OUT (模拟)

PA0 (ADC1_IN0)

主要读取代码如下:

int read_water_level_sensor(void) {

uint16_t adc_val = HAL_ADC_GetValue(&hadc1); // 读取ADC值

// 映射到水位高度(例如 0~100mm)

int water_level = (int)((float)adc_val * 100.0 / 4095.0);

return water_level;

}

4)舵机控制模块

舵机控制模块用于驱动投喂机构的机械臂,实现定时或按需精准投料。本系统采用标准 9g 微型舵机(如 SG90),通过 STM32 的通用定时器(TIM)输出 PWM 信号控制其旋转角度。舵机的控制精度直接影响投喂量的准确性,因此需对 PWM 占空比进行精确配置。其硬件连接如表 5.4 所示。

表 5.4 舵机连线表

舵机引脚

STM32 引脚

VCC

5V(外部供电)

GND

GND

SIG(信号)

PA1 (TIM2_CH2)

主要控制代码如下:

void servo_control_angle(uint8_t angle) {

if (angle > 180) angle = 180;

uint32_t ccr_value = 500 + (uint32_t)(angle * 11.11f);

__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, ccr_value);

HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);

HAL_Delay(500);

}

  1. 水泵控制模块

水泵控制模块为智能宠物喂食装置自动补水核心执行单元,以 STM32 单片机 PA0 引脚为控制信号端、PA1 引脚接收水位传感器反馈,搭配微型直流水泵与驱动电路构成;通过初始化 GPIO 口配置推挽输出模式,实现水泵的开 / 关精准控制,并依托水位阈值判断逻辑,在水位过低时自动启动补水、达标后关闭,完成全自动闭环供水,兼具低功耗、响应快、防溢水的特点,保障宠物饮水供给的智能化与稳定性。其硬件连接如表 5.5 所示。

表 5.5水泵连线表

水泵控制模块

STM32 引脚

VCC

3.3V/5V

GND

GND

IN(控制端)

PA0

水位传感器 OUT

PA1

   主要读取代码如下:

// 水泵初始化

void Pump_Init(void)

{

    GPIO_InitTypeDef GPIO_InitStruct;

    // 使能GPIOA时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    // 配置PA0为推挽输出

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 默认关闭水泵

}

// 打开水泵

void Pump_On(void)

{

    GPIO_SetBits(GPIOA, GPIO_Pin_0);

}

// 关闭水泵

void Pump_Off(void)

{

    GPIO_ResetBits(GPIOA, GPIO_Pin_0);

}

  1. 电机驱动模块

电机驱动风扇模块是智能宠物喂食装置环境温控的核心执行单元,由直流静音散热风扇、TB6612 电机驱动电路与 STM32 主控单元联动构成;以 STM32 PA2 引脚为风扇控制信号端,接收 DS18B20 温度传感器(PB7 引脚)的环境温度反馈,风扇由 5V 电源供电、与系统共地。模块通过初始化 GPIO 口为推挽输出模式实现风扇基础启停控制,依托温度阈值判断逻辑形成闭环温控:当环境温度超预设上限时,主控输出高电平驱动风扇启动降温,温度回落至正常范围后输出低电平关闭风扇。硬件连接如表 5.6 所示。

表 5.6电机驱动连线表

舵机引脚

STM32 引脚

VCC

5V(外部供电)

GND

GND

IN(控制端)

PA2

// 风扇初始化

void Fan_Init(void)

{

    GPIO_InitTypeDef GPIO_InitStruct;

    // 使能GPIOA时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    // 配置PA2为推挽输出

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_ResetBits(GPIOA, GPIO_Pin_2); // 默认关闭风扇

}

// 打开风扇

void Fan_On(void)

{

    GPIO_SetBits(GPIOA, GPIO_Pin_2);

}

// 关闭风扇

void Fan_Off(void)

{

    GPIO_ResetBits(GPIOA, GPIO_Pin_2);

}

5.2  软件部分

5.2.1  整体效果实现

用户在完成Android 平台智能宠物(养殖)监控 App的账号注册与安全登录后,即可进入系统核心主控界面。该界面作为人机交互中枢,实时接收并可视化展示嵌入式终端采集的多维度环境与状态数据:通过 DS18B20 数字温度传感器获取环境实时温度,由水位传感器监测容器液位高度,经 HX711 称重模块精准测算食盆剩余物料重量,为用户提供全面、直观的监测信息。

系统支持用户根据饲养需求,自定义温度、液位、料重等关键参数的报警阈值,当数据超限后自动触发提醒。同时具备完善的远程控制功能,用户可通过 App 下发指令,驱动舵机实现定量精准投喂,控制电机驱动模块完成相关机械装置管理,并支持手动远程启停蜂鸣器实现声光预警。整体界面布局清晰、交互逻辑简洁,数据刷新实时性强,控制响应迅速,实现了环境监测、阈值设置、远程操控与异常预警一体化,有效提升宠物喂养与智能养殖的自动化、便捷化与安全性App 的整体交互逻辑与视觉呈现效果如图 5.2 和图 5.3 所示。

图5.4 APP主界面

5.2.2  各个功能模块的实现

1)登录、注册的实现

本系统采用账号密码的方式进行用户认证。新用户首次使用时需要完成注册流程,在注册界面输入用户名、密码和确认密码。注册成功后系统自动跳转至登录界面。用户输入已注册的账号和密码,系统验证通过后即可进入主界面。若验证失败则提示错误信息。登录和注册界面的实现效果如图 5.4 和图 5.5 所示。

图5.5APP登录界面

主要代码如下:

public void login(String inputName, String inputPassword) {

    // 1. 使用 LitePal 查询数据库中是否存在该用户名

    List<User> users = LitePal.where("username = ?", inputName).find(User.class);

    if (users != null && users.size() > 0) {

        User user = users.get(0);

        int iResult = 0;

        if (user.getPassword().equals(inputPassword)) {

            iResult = 1; // 登录成功

        }

    }

}

2)实时数据监控

主界面实时呈现了系统的多维度环境监测数据,包括由传感器终端采集的实时温度、水位高度以及食盆物料重量等核心指标。这些数据由 STM32 主控节点进行统一调度与处理,利用集成在电路板上的 ESP8266 Wi-Fi 模块,通过 MQTT 协议远程上传至云平台,并最终推送到手机 App 的交互界面上。通过这种高效的数据链路,用户能够随时随地掌握现场的实时动态,及时发现并处理潜在的异常状况。数据监控的实时交互界面如图 5.8所示。

图5.6实时监控界面

主要代码如下:

void upload_system_data(void) {

    char *json_buf = NULL;

    cJSON *root = cJSON_CreateObject();

    cJSON_AddNumberToObject(root, "temp", get_ds18b20_temp());  

    cJSON_AddNumberToObject(root, "weight", get_hx711_weight());

    cJSON_AddNumberToObject(root, "water", get_water_level());  

   

    json_buf = cJSON_PrintUnformatted(root);

   

    // 通过 ESP8266 发布到云平台主题

    MQTT_Publish("sys/monitor/data", json_buf);

   

    cJSON_Delete(root);

    free(json_buf);

}

3)参数阈值配置

为了方便用户根据实际管理需求动态调整控制策略,本系统集成了灵活的阈值配置功能。用户可以在 App 界面中自定义输入温度监控范围、水位预警下限以及物料重量触发阈值等数值。在点击“确定”按钮后,App 会将这些配置参数封装为 JSON 格式的数据对象,并通过 MQTT 协议发布至云平台的特定配置主题。与此同时,硬件端的 ESP8266 模块持续订阅该主题,一旦接收到新的配置信息,主控单片机便会立即更新本地存储的变量,确保后续的自动投喂、报警及环境调节逻辑能够基于最新的阈值准则执行。温度阈值上限设置界面如图 5.5 所示,温度阈值下限设置界面如图 5.6 所示。

图5.7阈值设置界面

主要代码如下:

void on_threshold_receive(char *topic, char *payload) {

    cJSON *root = cJSON_Parse(payload);

    if (root != NULL) {

        cJSON *t_max = cJSON_GetObjectItem(root, "temp_max");

        cJSON *w_min = cJSON_GetObjectItem(root, "weight_min");

        if (t_max) g_temp_threshold_high = t_max->valuedouble;

        if (w_min) g_weight_threshold_low = w_min->valuedouble;

        save_settings_to_flash();

        cJSON_Delete(root);

    }

}

4)远程设备控制

App 提供了针对终端执行机构的远程控制功能,用户可以通过交互界面实时下达操作指令,手动干预投喂舵机的启闭、驱动电机的运行状态以及蜂鸣器的报警开关。这些控制指令经由 App 封装后,通过 MQTT 协议发送至云平台服务器,并由现场的 ESP8266 Wi-Fi 模块实时接收并透传至 STM32 主控芯片。主控系统解析指令后,将立即通过 PWM 信号或高低电平驱动相应的硬件电路执行动作,从而实现跨地域的精准远程调度。远程控制界面如图 5.9 所示。

图5.8实时监控界面

主要代码如下:

public void onControlClick(String device, boolean state) {

    try {

        JSONObject cmdObj = new JSONObject();

        cmdObj.put("target", device);    // 如 "servo" 或 "motor"

        cmdObj.put("action", state ? "ON" : "OFF");

        MqttMessage message = new MqttMessage(cmdObj.toString().getBytes());

        message.setQos(1);

        mqttClient.publish("sys/device/control", message);

       

    } catch (JSONException | MqttException e) {

        e.printStackTrace();

    }

}

第6章 系统测试

6.1  功能测试

单片机的功能试验主要是为了检查该系统的功能是否达到要求。进行登录试验,确认帐号和密码可以正确登录;执行演示试验,保证数据和状态等信息的精确展示;执行设定阀值的试验,看看设定之后,是否可以根据设定的设定来适当的反应。

① 登录测试登录与鉴权模块测试

STM32单片机通过ESP8266-01S WIFI模块与Wi-Fi相连后,对MQTT客户端进行初始化,并对公用的服务器地址进行配置,然后将该客户端ID与验证信息相关联,从而实现对该客户端的连接;App端通过调用设备/数据等话题来获取STM32发出的感知信息,并向相应话题发送诸如App/控件之类的命令。在获取话题之后,STM32会对命令进行分析,并对LED、继电器等外围器件进行操控,采用分发/订购方式进行实时、双向通讯,并采用JSON文件进行文件化处理,保证了文件的可读性,并充分利用MQTT的轻量化和低延时的特点,有效地实现了终端和手机之间的互联。

当在进行登录测试的时候,输入帐号和密码,然后再点击“登陆”,看看是否能够顺利登陆。再次键入一个不正确的口令,看看有没有出错的信息。然后测试空帐号和空密码登录,还有一些特别的文字录入,保证各种不正常登录都能得到准确的反馈。如图6.1所示。

图6.1登录

② 数据显示模块测试

该模块用于验证系统对环境数据的采集精度及APP端的实时展示能力。当用户登录成功后,系统通过JSON格式解析,将传感器采集的原始数据转换为可读信息并刷新至界面。测试中启动系统并观察APP首页的数据看板,对比现场实际环境与APP显示数值,同时多次刷新页面检查数据更新延迟。APP界面清晰展示了温度、水位及余粮重量等关键指标,数据显示与实测值基本一致且无明显延迟,证明了数据传输链路的可靠性。如图6.2所示。

图6.2查看各项数据

阈值控制模块测试

该模块是系统的核心逻辑部分,用于验证自动化控制策略的执行情况,重点检查当监测数据超过预设阈值时,执行机构能否被正确触发。测试时,首先在APP设置界面中设定具体的报警或执行阈值,随后模拟环境变化使传感器读数超过设定阈值,观察系统是否自动下发指令驱动相关硬件动作。如图6.3所示,当设置好阈值并满足触发条件后,系统立即响应,成功驱动投喂舵机旋转或触发蜂鸣器报警,表明自动控制逻辑运行正常。当设置好阈值后,测试外界数据超过阈值是否会正确出发执行器正确开始工作。如图6.3所示。

图6.3设置阈值

6.2  传感器感知模块测试

必须严格、系统地进行传感器的检测,在试验之前,要认真地对换能器进行外形检测,确认其无损伤和变形,导线的连接状态良好,无破损,各个界面的连接情况良好。将该传感器设置在指定的试验环境中,并确保该试验的工作状态满足其工作需要。

先对各个传感器进行初始化,设定好零位和范围。保证检测参考准确后,再逐级加载一个全量程的标准输入信号,按一定顺序选择几个测点。采集每个测点的实测值并与基准输出相比较得到测量误差。试验过程中要密切观察各换能器工作情况,注意是否有异常发热、噪音等现象。在所有测点完成测试之后,将收集到的数据汇总起来并对其性能做出评价,如线性度、重复性、准确性等等,若发现所检测出的数据不符合标准,则需排除故障原因可能是传感器自身的问题也有可能是安装问题又或者受到了外界因素影响等原因造成的。

图6.4硬件实物图

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐