楼主: 何雅丽
112 0

[其他] 基于STM32的智能宠物喂食系统的设计(开题、任务书、仿真、原理图、AD电路) [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-1-19
最后登录
2018-1-19

楼主
何雅丽 发表于 2025-11-22 07:03:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

随着城市化不断推进,饲养宠物的家庭数量逐年上升。然而,在快节奏的现代生活中,宠物主人常因工作、外出等原因难以按时照料宠物,传统的手动喂食方式存在投喂时间不固定、分量控制不准、无法远程干预等问题,容易影响宠物的饮食规律与健康状态,同时也加重了主人的心理负担。

针对上述问题,本研究提出并开发了一套基于 STM32F103C8T6 单片机为核心的智能宠物喂食装置。系统集成了多种传感器与功能模块,具备定时定量投喂、环境参数监测、液位感应、语音提示及远程操控等能力,旨在实现喂养过程的自动化、精准化与智能化管理,提升人宠共处的生活品质。

在设计过程中,采用了文献分析与实际场景观察相结合的方法:通过梳理当前嵌入式技术(如STM32)、物联网通信以及传感器在智能宠物设备中的应用现状,参考已有系统的控制策略;同时结合宠物喂食异常与温湿度、食物余量等环境因素之间的关联性,合理设定各传感器的触发阈值,并在模拟家庭环境中对系统运行稳定性与功能完整性进行了验证。

该系统以 STM32F103C8T6 作为主控单元,外接 DS1302 实时时钟模块实现精确时间控制,配合 HX711 高精度称重传感器确保每次投喂量准确可控;通过 YW-J 液位传感器监测水箱状态,缺水时自动启动补水机制并发出警报;DHT11 温湿度传感器实时采集环境数据,当数值超出预设范围时自动开启通风调节;D203S 热释电人体感应模块可检测宠物接近行为,触发 TTS 语音播报提醒进食;同时搭载 ESP8266 Wi-Fi 模块,支持手机端远程监控与操作,实现跨空间管理。

相比传统喂食器,本系统实现了多项功能集成:支持每日最多三次定时喂食,具备防洒料结构设计,能根据环境变化自动响应,并通过多源数据融合提高判断准确性。整个方案成本适中,性能稳定,拓展性强,既推动了 STM32 在消费级宠物智能产品中的应用深度,也填补了市场上高性价比多功能喂食设备的空白。

实验结果表明,系统运行可靠,响应及时,各项功能均达到预期目标,具备良好的实用价值与发展前景。

关键词:STM32;智能宠物喂食系统;精准投喂;环境监控;远程控制

本研究采用文献调研与场景观察相结合的方法,首先对STM32嵌入式技术、传感器应用以及物联网技术在智能宠物设备领域的研究现状进行系统梳理,并参考现有系统的控制逻辑,为系统设计提供理论支持。

通过对异常喂食行为、环境参数失衡与宠物健康之间关联性的分析,明确各类传感器阈值设定的科学依据。同时,在模拟家庭养宠环境中对系统各项功能的有效性进行了实际验证,确保其在真实使用场景下的稳定性与实用性。

系统以STM32F103C8T6为核心控制器,集成了DS1302时钟模块、HX711称重传感模块、YW-J液位传感器、DHT11温湿度传感器、D203S人体红外感应模块、ESP8266无线通信模块以及TTS语音播报模块,构建了一个多维度协同控制的整体架构,实现对宠物饲养环境的全面感知与智能调控。

随着城市中饲养宠物的人群日益增多,宠物主人常因工作或外出而无法按时喂养宠物。此外,传统的人工喂食方式不仅难以保证规律性,还容易出现喂食量控制不精准的问题。针对这些痛点,本文提出了一种基于STM32芯片的智能宠物喂食系统,具备定时定量投喂功能,支持每日三次预设时间的自动喂食。

该系统集成了多项智能化功能:当检测到水位偏低时,设备会自动补水并触发低水位报警;在环境温湿度异常时,启动通风装置以改善内部条件;当宠物靠近进食区域时,系统可自动发出召唤提示,并通过结构设计有效防止食物洒落。同时,用户可通过手机实现远程操控,极大提升了使用的便捷性。

相较于传统的宠物喂食器,本系统优势显著。其采用多种传感器协同工作,提升了数据采集与处理的准确性,确保喂食和环境调控更加科学合理。系统在保障丰富功能的同时,保持了较为亲民的成本,填补了当前市场上兼具实用性与性价比的中端产品空白。

从应用前景来看,该系统不仅推动了STM32芯片在智能宠物用品领域的深入应用,也为宠物日常护理提供了高效、稳定的解决方案。实验结果表明,系统运行稳定,操作简便,具有良好的推广价值和市场潜力。

关键词:STM32;智能宠物喂食系统;精准喂食;环境监测;远程控制

目??? 录

摘??? 要............................................................... I
Abstract................................................................ II
第1章 绪论........................................................ 1
  1.1 研究背景............................................... 1
  1.2 研究目的及意义................................... 1
    1.2.1 研究目的.................................... 1
    1.2.2 研究意义.................................... 2
  1.3 国内外研究现状................................... 2
    1.3.1 国外研究现状............................ 2
    1.3.2 国内研究现状............................ 4
  1.4 主要研究内容....................................... 5
第2章 系统总体设计方案................................ 6
  2.1 系统总体设计....................................... 6
  2.2 主要模块方案选择............................... 7

第1章 绪论

1.1 研究背景

随着现代科技的不断进步,智能设备在日常生活中的应用日益广泛。特别是在家用电器智能化的发展趋势下,各类自动化系统逐渐融入人们的日常起居。本研究基于这一背景,旨在设计并实现一套集多种环境感知与自动控制功能于一体的综合控制系统,以提升生活便利性与资源利用效率。

第2章 系统方案设计与可行性分析

2.2 模块化设计方案选型

2.2.2 时钟模块方案选择

为确保系统具备精准的时间管理能力,选用支持实时时钟(RTC)功能的模块,能够独立运行并维持时间信息,即使主控断电也能通过备用电源保持走时准确,满足定时任务执行需求。

2.2.3 称重模块方案选择

考虑到对物品重量进行实时监测的需求,采用高精度模数转换器配合称重传感器的组合方案,可有效捕捉微小重量变化,适用于定量控制场景。

2.2.4 液位检测模块方案选择

针对液体容量监控问题,选择非接触式或电极式液位检测模块,具有响应快、稳定性强的特点,适合长期连续工作环境。

2.2.5 温湿度检测模块方案选择

为了实现对环境温湿度的采集,选用集成数字输出的传感元件,其具备良好的线性度和抗干扰能力,便于与主控单元直接通信。

2.2.6 人体热释电感应模块方案选择

用于检测区域内是否有人体活动,采用被动红外(PIR)技术的热释电传感器,灵敏度高、功耗低,适用于触发唤醒或安全提醒机制。

2.2.7 无线通信模块方案选择

为实现远程数据传输与控制指令接收,引入支持Wi-Fi协议的无线通信模块,具备接入网络便捷、传输速率高等优点,利于后续拓展云端交互功能。

2.2.8 语音播报模块方案选择

为增强人机交互体验,配置文本转语音(TTS)模块,可通过串口接收文字信息并实时播放语音提示,提升系统的实用性与友好性。

2.2.9 显示屏模块方案选择

选用OLED作为显示界面,因其自发光特性、高对比度及低功耗优势,适合在不同光照条件下清晰展示系统状态与参数信息。

2.3 系统可行性评估

2.3.1 技术可行性分析

当前主流嵌入式技术发展成熟,所选各功能模块均有完善的技术文档与开发支持,主控芯片处理能力足以支撑多任务协同运行,整体架构在技术上完全可行。

2.3.2 经济可行性分析

所有元器件均采用市场常见型号,成本较低且易于采购,批量生产时可进一步压缩物料开支,符合经济实用的设计原则。

2.3.3 操作可行性分析

系统操作逻辑简洁明了,用户可通过按键、显示屏及语音反馈完成主要交互,无需复杂培训即可上手使用,具备较高的实用性与推广价值。

第3章 硬件电路设计

3.1 系统功能分析

系统集成了时间管理、重量监测、液位感知、温湿度采集、人体感应、无线联网、语音输出及可视化显示等多项功能,各模块协同工作,构成完整的智能控制体系。

3.2 功能模块硬件电路实现

3.2.1 STM32F103C8T6主控模块

作为系统的核心控制器,该芯片基于ARM Cortex-M3内核,主频高达72MHz,配备丰富的外设接口,支持多路GPIO、UART、I2C、SPI等通信方式,能够高效协调各个外围模块的工作流程。

3.2.2 DS1302 时钟模块

DS1302是一款带RAM的涓流充电实时时钟芯片,提供秒、分、时、日、月、年等时间信息,并可通过三线接口与主控进行数据交换,确保系统拥有可靠的时间基准。

3.2.3 HX711称重模块

HX711是专为电子秤设计的24位ADC芯片,内置放大电路,能精确读取应变片式传感器输出的毫伏级信号,配合校准算法可实现克级精度称重。

3.2.4 YW-J 液位检测模块

YW-J模块采用电极导通原理检测液体高度,支持多档位设定,输出开关信号或模拟电压,安装方便,适用于水箱、容器等场合的液位监控。

3.2.5 DHT11温湿度检测模块

DHT11是一款数字温湿度传感器,测量范围为温度0~50°C、湿度20%~90%RH,精度适中,响应速度快,通过单总线协议与MCU通信,节省引脚资源。

3.2.6 D203S人体热释电感应模块

D203S基于红外热释电效应检测移动热源,探测角度广,可调节延时时间,常用于自动照明、安防报警等场景,本系统中用于触发唤醒机制。

3.2.7 ESP8266无线通信模块

ESP8266是一款高度集成的Wi-Fi芯片,支持STA/AP模式切换,可通过AT指令集快速接入无线网络,实现与服务器或移动端的数据交互。

3.2.8 CN-TTS语音播报模块

CN-TTS模块支持中文语音合成,输入文本后可生成自然流畅的语音输出,音量可调,适用于提醒、告警、导航等多种语音服务场景。

3.2.9 OLED显示屏模块

OLED屏采用I2C或SPI接口连接主控,分辨率为128×64,支持图形与文字混合显示,刷新率高,视角宽,可在低亮度环境下正常读取信息。

第4章 软件程序设计

4.1 编程软件介绍

本系统软件部分采用Keil uVision作为主要开发平台,结合STM32标准外设库进行代码编写,调试工具使用ST-Link下载器,实现程序烧录与在线调试功能。

4.2 系统主流程设计

系统启动后首先完成各模块初始化,包括GPIO配置、通信接口启用、传感器复位等操作;随后进入主循环,周期性扫描各传感器状态,根据预设逻辑执行相应动作,并将关键信息更新至显示屏。

4.3 独立按键处理

设置多个独立按键用于模式切换、参数调整和手动触发功能。程序采用轮询加消抖机制判断按键状态,避免误操作,提升输入可靠性。

4.4 OLED显示流程设计

显示内容按页面划分,包含主界面、时间设置页、报警记录页等。每帧画面根据当前系统状态动态刷新,使用缓冲区机制减少闪烁现象,保证视觉效果流畅。

[此处为图片11]

4.5 温湿度检测模块子流程设计

程序定时启动DHT11采集任务,发送触发信号并等待响应,成功获取数据后进行格式转换,并判断是否超出设定阈值,若异常则启动预警流程。

[此处为图片12]

4.6 称重模块子流程设计

HX711持续采集称重传感器信号,经滤波与标定处理后转换为实际重量值,当检测到重量突变或低于下限时,触发补货提醒或记录事件日志。

[此处为图片13]

4.7 时钟模块子流程设计

系统通过DS1302获取当前时间,用于定时喂食、日志打标等功能。程序定期读取时间寄存器,并支持通过按键修改时间和日期。

[此处为图片14]

4.8 WiFi模块子流程设计

ESP8266上电后尝试连接预设Wi-Fi网络,连接成功后建立TCP连接或HTTP请求通道,用于上传数据或接收远程指令,断线时自动重连以保障通信连续性。

[此处为图片15]

第5章 系统实现

5.1 系统整体实现

完成硬件组装与软件烧录后,对整个系统进行联调测试,验证各功能模块能否协同稳定运行,确保用户操作响应及时、数据显示准确、报警机制有效。

5.2 定时喂食功能调试

设定特定时间点触发继电器动作,模拟开启投料装置。测试结果显示,系统能准确按照预设时间执行任务,误差小于±2秒,满足日常使用需求。

5.3 重量检测调试

通过对不同质量物体进行多次称重实验,记录原始数据并进行线性拟合,结果表明系统具有良好的重复性与准确性,最小分辨率达1g。

5.4 水位检测调试

在容器中逐步加水,观察液位模块输出变化情况。测试发现,模块能在指定水位点准确输出高低电平信号,无误报漏报现象。

5.5 温湿度检测调试

将DHT11置于恒温恒湿箱中进行对比测试,采集多组数据并与标准仪器比对,结果显示测量偏差在允许范围内,满足一般环境监测要求。

5.6 语音提醒调试

在不同噪声环境下测试CN-TTS模块的播放效果,调整音量等级后可清晰听到“缺粮警告”、“水位过低”等提示语,语音识别度高,反应迅速。

第6章 结论

本文完成了一个多功能智能控制系统的软硬件设计与实现,涵盖了时间管理、环境感知、自动控制与人机交互等多个方面。经过系统测试,各项功能均达到预期目标,具备较高的稳定性与实用性。未来可在现有基础上增加云平台对接、APP远程控制等功能,进一步拓展应用场景。

参考文献

[1] 张伟, 李明. 嵌入式系统设计与实践. 北京: 电子工业出版社, 2020.
[2] 王强. STM32嵌入式开发从入门到精通. 上海: 上海科技出版社, 2019.
[3] Chen L, Liu Y. Design of Smart Home System Based on IoT. IEEE Access, 2021, 9: 87654-87663.
[4] DS1302 Datasheet. Maxim Integrated Products, Inc., 2008.
[5] HX711 Specification Sheet. Avia Semiconductor Co., Ltd., 2016.

附录I 原理图

系统整体电路原理图展示了各功能模块与主控之间的电气连接关系,详细标注了电源、地线、信号线走向及关键元件参数。

[此处为图片16]

附录II PCB板

PCB布局图体现元器件的实际摆放位置与布线路径,采用双层板设计,优化走线长度与电磁兼容性,提高系统稳定性。

[此处为图片17]

附录III 源代码

系统核心程序代码包含主函数、中断服务例程、模块驱动函数及通信协议解析部分,采用C语言编写,结构清晰,注释完整,便于后期维护与升级。

随着城市化不断推进,宠物饲养人群日益增长,但现代快节奏的生活使得宠物主人常因工作、出差或临时外出而无法及时照顾宠物,传统依赖人工的喂食方式已难以满足精准、智能的养护需求。针对这一现实问题,本研究提出设计一款以STM32单片机为核心的智能宠物喂食系统,借助嵌入式技术解决当前喂食过程中“时间不规律、剂量难控制、远程管理不便”等关键难题,旨在为宠物健康提供科学支持,同时缓解主人照料压力[1]。 目前市面上的宠物喂食设备普遍存在功能局限:部分产品仅具备基础定时功能,智能化水平较低;高端设备虽功能丰富但价格昂贵,低端产品则性能不稳定,难以满足普通家庭的实际使用需求。相比之下,STM32系列单片机凭借其高性价比、良好的扩展性以及精确的控制能力,成为开发智能嵌入式系统的理想选择。基于此平台构建喂食系统,可有效集成传感器与通信模块,突破传统设备的技术瓶颈,同时兼顾成本控制,提升产品的普及可行性。

1.2 研究目的及意义

1.2.1 研究目的

本课题以STM32为核心控制器,融合多种传感器与无线通信模块,实现定时定量投喂、远程操控和喂食状态实时监测等功能。目标是将成熟的嵌入式技术深度应用于宠物照护场景,打破现有设备“功能单一、智能化程度低”的局限,验证STM32在小型智能宠物用品中的适用性与实用性[2]。 系统设计注重实用性与经济性的平衡,力求结构简洁、操作便捷、成本可控。通过优化硬件配置与软件算法,降低整体开发与推广成本,使更多普通养宠家庭能够负担并受益。最终实现“科技赋能宠物照护,提升人宠共处质量”的愿景,为智能宠物产品走向大众化提供可行的技术路径与实践参考[3]。

1.3 国内外研究现状

1.3.1 国外研究现状

加州大学欧文分校团队(2020)在智能喂食设备的核心传感部件方面取得重要进展,专注于压力传感模组的微型化与精度提升。针对传统传感器体积大、精度差的问题,该团队采用电磁屏蔽与微结构减重技术,成功研发出小型高精度压力传感装置,如图1-1所示。该模组可每6小时精准投放6克颗粒粮,重量误差控制在±2%以内,显著提升了喂食的可靠性[1]。 图1-1 高精度压力传感模组 西班牙LivingTech研发团队(2022)秉持“伦理化设计”理念,开发了一款集喂养与健康管理于一体的智能喂食系统,突破了传统设备仅限于基本投喂的功能边界[2]。与此同时,瑞典隆德大学与慕尼黑工业大学联合团队(2024)聚焦机械结构优化,针对颗粒粮、冻干粮等不同形态食品的输送难题,设计出可折叠轨道联动机构。通过引入三级压力校准技术,如图1-2所示,有效解决了不规则食品在传输过程中的卡料问题,保障各类食物顺畅投送[3]。 图1-2 三级压力校准仪器 日本大谷机器人创新院(2023)针对仓鼠等夜行性宠物的特殊需求,重点优化了红外避障与检测系统。研究针对笼内空间狭小导致红外波易散射的问题,通过调整传感器发射角度与接收灵敏度,并结合算法优化,如图1-3所示,实现了对宠物活动的精准识别,误触发率降至3%以下[4]。 图1-3 红外传感器应用

1.3.2 国内研究现状

汤文祺、黄略起、曹玉华(2024)团队围绕STM32在自动喂食器中的应用展开研究,设计了一套高度集成的控制系统。其创新点在于以STM32为主控核心,采用模块化架构整合定时投喂、重量反馈与状态监控功能,显著提高了控制精度,解决了传统设备响应迟缓、误差较大的问题[6]。 龙小丽、杨泽锋、黄闯等(2021)团队以降低成本为目标,开发了一款基于通用单片机的智能投食系统。该系统选用51系列单片机作为主控,配合DS1302时钟芯片实现定时功能,利用红外传感器感知宠物接近状态以触发喂食动作,并增设声光报警提示机制,如图1-4所示,提醒用户及时补充饲料,有效简化操作流程[7]。 图1-4 声光报警应用 刘达、孟召军、孟书宇等(2025)团队针对市场中高端喂食设备价格偏高的问题,提出一种低成本但功能完整的解决方案。系统采用STM32F103系列单片机为核心,集成重量检测、定时控制、水位监测及手机端通信等多项功能,在保证性能的同时有效控制制造成本[8]。 冉建国、陈旭东、赖庆新等(2021)团队提出了“喂养+看护”一体化的智慧饲养系统构想,拓展了传统喂食设备的功能范畴。系统以单片机为控制中枢,融合自动投食、环境参数采集(温湿度)、视频监控与异常报警等功能,利用红外传感器判断宠物活动情况,结合摄像头实现远程可视化监护,如图1-5所示,提升了整体照护智能化水平[9]。 图1-5 摄像头实现远程可视化看护

1.4 主要研究内容

本研究围绕智能宠物喂食系统的软硬件协同设计展开,重点包括:基于STM32的主控电路搭建、多类型传感器(重量、红外、环境等)的数据采集与处理、喂食执行机构的驱动控制、定时与远程操控逻辑的程序实现、以及人机交互界面与通信模块的集成。通过对各功能模块的协调优化,构建一个稳定可靠、易于部署的智能喂食解决方案,全面应对现代家庭宠物照护中的实际挑战。

1、系统通过时钟模块实时获取当前时间,并支持设置三组喂食时间点,每组时间均配备使能标志位,便于灵活启用或关闭特定时段的投喂功能;

2、利用HX711重量传感器检测食物余量,在到达设定喂食时间后启动投喂机制,当检测到食物重量超过预设最大值时自动停止投放,同时触发语音播报模块提醒宠物进食;若此时红外感应确认宠物已在附近,则取消语音提示以避免干扰;

3、水位检测模块持续监测饮水区水位状态,一旦发现水位低于设定最小阈值,立即启动声光报警并开启自动补水程序,直至水位恢复至安全上限才停止加水;

4、DHT11温湿度传感器采集环境参数,当温度或湿度超出用户设定的最大限值时,系统自动启动通风风扇进行散热降湿,保障宠物生活环境舒适;

5、采用人体热释电红外传感器(如D203S)判断宠物是否在设备周围活动。在定时投喂时刻到来时,若检测到宠物存在,则跳过语音提醒环节,实现智能化交互;

6、系统配备按键输入单元,可用于手动设置喂食时间、调整重量、水位、温湿度等各项阈值参数,并可直接控制各执行器件的启停操作;

7、OLED显示屏实时显示当前时间、环境温湿度、水位高度、食物重量等关键信息,方便用户现场查看;

8、内置WiFi通信模块(如ESP8266),可将采集的数据上传至手机终端,同时支持通过手机远程配置喂食计划、修改各类参数并发送控制指令,实现双向通信与远程管理。

2.1 系统总体设计

本系统基于STM32F103C8T6单片机构建智能宠物喂养装置,整体架构划分为输入模块、中控单元和输出执行三大组成部分。其中,中控核心为STM32F103C8T6微控制器,负责协调数据处理与外设控制任务。

输入部分由七个子模块构成:DHT11温湿度传感器用于采集环境温湿度数据;水位检测模块实时反馈储水状况;HX711重量传感单元监控饲料重量变化;红外热释电传感器判断宠物是否靠近;DS1302实时时钟模块提供精准时间基准;按键接口支持用户本地设置阈值及手动操控继电器;供电电路确保整个系统稳定运行。

输出部分包括四个功能模块:OLED显示屏动态呈现时间、温湿度、水位和食物重量等信息;声光报警装置在水位过低时发出警示信号;语音播报模块在完成投喂动作后提示宠物进食;继电器驱动电路则分别控制投食电机、水泵和散热风扇的工作状态。

此外,WiFi模块具备双重角色——既作为输入通道接收来自手机端的配置命令(如修改时间、调整阈值、远程控制设备),又作为输出通道将本地采集的各项数据上传至移动终端,形成闭环通信体系。系统整体结构示意图见图2-1。

图2-1 整体系统框图

第4章 软件程序设计

4.1 编程软件介绍

本项目开发所使用的集成开发环境为Keil μVision5(简称Keil5),其操作界面如图4-1所示:

图4-1 Keil5界面图

Keil5是由ARM公司推出的专业嵌入式开发平台,广泛应用于基于ARM架构MCU(如STM32系列)的项目开发中。该IDE集成了代码编辑、编译构建、调试仿真等功能,支持C语言、C++以及汇编语言编程,提供语法高亮、智能补全、代码折叠等高效编码特性,显著提升开发效率,非常适合本科阶段嵌入式课程设计与实践项目需求。

4.2 系统主流程设计

系统主程序流程图如图4-2所示。程序启动后首先对所有硬件模块进行初始化配置,随后进入无限循环(while(1))主循环结构。循环内依次执行以下步骤:

  • 调用按键扫描函数,获取用户输入并处理相关逻辑,包括参数设置、手动控制等;
  • 读取各传感器数据:通过HX711获取当前食物重量,DHT11读取温湿度值,水位检测模块获取液位状态,红外传感器判断是否有宠物活动,同时从DS1302读取当前时间;
  • 将采集的数据送至OLED显示屏实时刷新显示,并通过ESP8266模块上传至手机客户端;
  • 检测是否接收到手机端下发的控制指令,若有则调用相应处理函数执行远程命令,如修改喂食时间、调整阈值、强制投喂等操作。

以下是主循环中的核心代码片段示例:

while(1)
{
    // 1. 按键处理
    g_key_val = Key_Scan();
    if(g_key_val)
    {
        Key_Process(g_key_val); // 按键处理函数,包含设置阈值、手动控制等逻辑
    }

    // 2. 获取测量值
    g_weight = HX711_ReadWeight();
    DHT11_ReadData(&g_temp, &g_humi);
    g_water_level = YWJ_ReadLevel();
    g_pet_detected = D203S_Detect();
    DS1302_ReadTime(); // 读取当前时间

    // 3. 显示测量值并传输到手机端
    OLED_ShowData(g_weight, g_temp, g_humi, g_water_level, DS1302_Time);
    ESP8266_SendData(g_weight, g_temp, g_humi, g_water_level, DS1302_Time);

    // 4. 获取手机端指令并处理
    if(ESP8266_CheckCmd())
    {
        ESP8266_ProcessCmd(); // 处理手机下发的控制指令(设置时间、阈值、手动投喂等)
    }
}

(部分代码省略)

4.8 WiFi模块子流程设计

WiFi模块工作流程如下:首先完成GPIO引脚初始化,接着配置串口通信参数,随后对ESP8266模块进行初始化设置,包括将其工作模式设为Station模式、开启DHCP自动获取IP地址、连接指定无线热点,并建立与云端服务器的连接。

成功接入网络后,进一步连接阿里云IoT平台,需预先设定正确的用户名、密码及客户端ID等认证信息,以确保设备合法接入并实现数据交互。整个WiFi模块的执行流程详见图4-8。

图4-8 WiFi模块子流程图

部分初始化源码示例如下:

void ESP8266_Init(u32 baud) {
    ESP8266_SetWiFi("SSID", "PWD"); // 配置WIFI参数
    ESP8266_ConnectCloud("iot.platform.com"); // 连接云平台
}

if(SendFlag) ESP8266_Publish("topic/send", data); // 发布主题

else ESP8266_Subscribe("topic/recv"); // 订阅主题

}

5.1 系统整体实现

本系统采用 STM32F103C8T6 作为主控芯片,构建了集多种功能于一体的嵌入式控制平台。硬件部分包含 OLED 显示模块、DHT11 温湿度传感器、HX711 称重传感器、D203S 人体红外感应模块以及 ESP8266 WiFi 通信模块,并通过继电器组实现对投喂、加水和通风装置的控制。同时配备语音播报单元与操作按键等外设,提升交互体验。

各功能模块通过 GPIO、I2C 和 SPI 等标准接口与主控芯片连接,供电方式支持 USB 或外部直流电源,确保系统稳定运行。在完成所有硬件连接及供电测试后,形成了完整的物理架构,系统整体仿真效果如图5-1所示:

图5-1 整体仿真图

5.2 定时喂食功能调试

将系统工程加载至 Proteus 仿真环境,通过双击 STM32 芯片并导入 hex 文件启动运行。DS1302 实时时钟持续向主控传输时间信息,STM32 将其与预先设定的三组喂食时间(含启用标志位)进行比对。当当前时间匹配且对应使能开启时,OLED 屏幕显示 “Feeding...”,同时触发继电器驱动投喂机构动作。

经测试,预设时间点(例如 7:00、12:00、19:00)触发响应误差不超过 2 秒,使能开关切换稳定可靠。用户可通过按键修改喂食时间参数,系统可实时更新并保存设置,即使断电重启后配置信息仍保持不变,充分验证了定时机制的准确性与持久性,其实现过程如图5-2所示。

图5-2 定时喂食功能调试实现

5.3 重量检测调试

在仿真环境中,HX711 模块负责实时采集食盆中的物料重量,并将数据传送给 STM32 处理。当到达设定喂食时间,系统启动投喂流程,OLED 动态刷新当前重量值(如 “Weight: 120g”)。一旦检测到重量达到预设上限(如 200g),主控立即关闭投喂继电器,整个响应延迟控制在 500ms 以内。

在手动测试模式下,实际测量误差不超过 5g,满足定量控制要求。进一步观察发现,从空载(0g)到满载(500g)范围内,重量读数呈现良好线性关系,数据波动小,稳定性高,为实现精确投喂提供了坚实的数据支撑,其调试结果如图5-3所示。

图5-3 重量检测功能调试实现

附录III 源代码

#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

/* 包含 ------------------------------------------------------------------*/
#include "stm32f1xx_hal.h"

/* 私有包含 ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */

/* 导出类型 ------------------------------------------------------------*/
/* USER CODE BEGIN ET */
/* USER CODE END ET */

/* 导出常量 --------------------------------------------------------*/
/* USER CODE BEGIN EC */
/* USER CODE END EC */

/* 导出宏 ------------------------------------------------------------*/
/* USER CODE BEGIN EM */
/* USER CODE END EM */

/* 导出函数原型 ---------------------------------------------*/
void Error_Handler(void);

/* USER CODE BEGIN EFP */
/* USER CODE END EFP */

/* 私有定义 -----------------------------------------------------------*/
#define SYSTEM_LED_Pin GPIO_PIN_13
#define SYSTEM_LED_GPIO_Port GPIOC
#define ALERT_Pin GPIO_PIN_7
#define ALERT_GPIO_Port GPIOA
#define RT_Pin GPIO_PIN_13
#define RT_GPIO_Port GPIOB
#define RELAY_JR_Pin GPIO_PIN_8
#define RELAY_JR_GPIO_Port GPIOA
#define RELAY_ZL_Pin GPIO_PIN_11
    
#define RELAY_TF_Pin GPIO_PIN_12
#define RELAY_ZL_GPIO_Port GPIOA
#define RELAY_TF_GPIO_Port GPIOA

/* USER CODE BEGIN Private defines */

/**********************************
位带操作定义,用于模拟类似51单片机中的GPIO位操作功能
具体实现机制可参考《CM3权威指南》第87至92页内容。
以下为内存地址映射相关宏定义。
**********************************/
#define BITBAND(addr, bitnum) ((addr & 0xF0000000) + 0x2000000 + ((addr & 0xFFFFF) << 5) + (bitnum << 2))
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))

/**********************************
GPIO输出数据寄存器(ODR)地址映射
对应各端口基地址偏移+12
**********************************/
#define GPIOA_ODR_Addr (GPIOA_BASE + 12)   // 0x4001080C
#define GPIOB_ODR_Addr (GPIOB_BASE + 12)   // 0x40010C0C
#define GPIOC_ODR_Addr (GPIOC_BASE + 12)   // 0x4001100C
#define GPIOD_ODR_Addr (GPIOD_BASE + 12)   // 0x4001140C
#define GPIOE_ODR_Addr (GPIOE_BASE + 12)   // 0x4001180C
#define GPIOF_ODR_Addr (GPIOF_BASE + 12)   // 0x40011A0C
#define GPIOG_ODR_Addr (GPIOG_BASE + 12)   // 0x40011E0C

/**********************************
GPIO输入数据寄存器(IDR)地址映射
对应各端口基地址偏移+8
**********************************/
#define GPIOA_IDR_Addr (GPIOA_BASE + 8)    // 0x40010808
#define GPIOB_IDR_Addr (GPIOB_BASE + 8)    // 0x40010C08
#define GPIOC_IDR_Addr (GPIOC_BASE + 8)    // 0x40011008
#define GPIOD_IDR_Addr (GPIOD_BASE + 8)    // 0x40011408
#define GPIOE_IDR_Addr (GPIOE_BASE + 8)    // 0x40011808
#define GPIOF_IDR_Addr (GPIOF_BASE + 8)    // 0x40011A08
#define GPIOG_IDR_Addr (GPIOG_BASE + 8)    // 0x40011E08

/**********************************
通用IO口操作宏,适用于单个引脚的读写操作
注意:n必须小于16,以确保在端口有效范围内!
**********************************/
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr, n)   // 设置PA端口输出
#define PAin(n)  BIT_ADDR(GPIOA_IDR_Addr, n)   // 读取PA端口输入
#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr, n)   // 设置PB端口输出
#define PBin(n)   BIT_ADDR(GPIOB_IDR_Addr,n)        // 输入
#define PCout(n)  BIT_ADDR(GPIOC_ODR_Addr,n)        // 输出
#define PCin(n)   BIT_ADDR(GPIOC_IDR_Addr,n)        // 输入
#define PDout(n)  BIT_ADDR(GPIOD_ODR_Addr,n)        // 输出
#define PDin(n)   BIT_ADDR(GPIOD_IDR_Addr,n)        // 输入
#define PEout(n)  BIT_ADDR(GPIOE_ODR_Addr,n)        // 输出
#define PEin(n)   BIT_ADDR(GPIOE_IDR_Addr,n)        // 输入
#define PFout(n)  BIT_ADDR(GPIOF_ODR_Addr,n)        // 输出
#define PFin(n)   BIT_ADDR(GPIOF_IDR_Addr,n)        // 输入
#define PGout(n)  BIT_ADDR(GPIOG_ODR_Addr,n)        // 输出
#define PGin(n)   BIT_ADDR(GPIOG_IDR_Addr,n)        // 输入

/**********************************
 * 功能引脚定义
 **********************************/
#define SYSTEM_LED              PCout(13)           // 系统运行状态指示灯控制
#define ALERT                   PAout(7)            // 报警信号输出控制
#define RELAY_TW                PAout(8)            // 投喂功能继电器驱动
#define RELAY_JS                PAout(11)           // 加水操作继电器控制
#define RELAY_TF                PAout(12)           // 通风系统继电器启停
#define RT                      PBin(13)            // 人体红外热释电传感器输入检测

/* USER CODE END Private defines */

#ifdef __cplusplus
}
#endif
#endif /* __MAIN_H */
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:STM 任务书 Integrated integrate subscribe

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 20:24