基于STM32的蓝牙版智能宠物喂食系统(完整项目)
随着人们生活水平的提升,宠物逐渐成为家庭生活的重要组成部分,而快节奏的生活使得宠物主人常常面临无法按时投喂、无法实时掌握宠物生活环境状态的难题。传统宠物喂食设备功能单一、操作繁琐,仅能实现简单的手动喂食,无法满足现代宠物饲养的智能化、便捷化需求。本文设计了一款基于STM32F103C8T6单片机的蓝牙版智能宠物喂食系统,整合温湿度采集、宠物靠近检测、重量检测、水位检测、屏幕显示、自动/手动投喂控制
基于STM32的蓝牙版智能宠物喂食系统设计
摘要
随着人们生活水平的提升,宠物逐渐成为家庭生活的重要组成部分,而快节奏的生活使得宠物主人常常面临无法按时投喂、无法实时掌握宠物生活环境状态的难题。传统宠物喂食设备功能单一、操作繁琐,仅能实现简单的手动喂食,无法满足现代宠物饲养的智能化、便捷化需求。本文设计了一款基于STM32F103C8T6单片机的蓝牙版智能宠物喂食系统,整合温湿度采集、宠物靠近检测、重量检测、水位检测、屏幕显示、自动/手动投喂控制、蓝牙远程交互等多重功能,实现宠物喂食的自动化、精准化与远程化管理。该系统以STM32F103C8T6为核心控制单元,通过各类传感器采集宠物窝环境与设备状态数据,借助OLED屏幕实时呈现关键信息,通过BT04A蓝牙模块实现与手机APP的无线通信,支持远程监测与控制。测试结果表明,该系统运行稳定、响应迅速,各项功能均能满足设计要求,操作便捷、可靠性高,能够有效解决宠物主人的投喂困扰,提升宠物饲养的智能化水平,具有较高的实际应用价值与推广前景。
关键词:STM32F103C8T6;智能宠物喂食;蓝牙通信;传感器检测;自动控制

第一章 绪论
1.1 研究背景与意义
近年来,宠物饲养在我国呈现普及化趋势,越来越多的家庭选择饲养宠物,宠物的生活质量也成为主人关注的重点。然而,现代社会中,人们的工作压力大、出行频繁,常常出现无法按时给宠物喂食、喂水的情况,长期不规律的投喂会影响宠物的身体健康;同时,宠物主人无法实时了解宠物窝的温湿度、食物剩余量、水位等状态,难以及时应对宠物的需求。
传统宠物喂食器多为手动式或简单定时式,缺乏环境监测、宠物状态识别、远程控制等功能,灵活性差、智能化程度低,无法满足宠物主人的多样化需求。基于此,本文设计一款蓝牙版智能宠物喂食系统,结合嵌入式技术、传感器技术与蓝牙通信技术,实现自动定时喂食、宠物靠近感应喂水、环境参数监测、远程控制等功能,能够有效解决宠物主人的投喂难题,保障宠物的健康生活,同时为宠物饲养提供便捷化、智能化的解决方案,具有重要的理论研究意义与实际应用价值。

1.2 国内外研究现状
国外宠物智能设备产业起步较早,技术体系较为成熟,智能宠物喂食系统产品功能完善,多集成了定时投喂、远程控制、环境监测、宠物行为识别等功能,部分高端产品还支持语音交互、多宠物管理等特性,通过蓝牙或WiFi实现与手机APP的联动,操作便捷、用户体验好,但此类产品价格较高,难以在普通家庭中普及。
国内智能宠物喂食设备市场近年来发展迅速,众多企业纷纷布局相关产品,产品性价比不断提升,功能逐渐完善。目前国内产品多以STM32系列单片机为控制核心,结合传感器与无线通信模块,实现基本的定时喂食与远程控制功能,但部分产品存在检测精度不足、响应速度慢、功能单一、蓝牙通信不稳定等问题,且缺乏宠物靠近感应、重量精准控制等个性化功能。因此,设计一款功能全面、运行稳定、性价比高、蓝牙通信可靠的智能宠物喂食系统,具有广阔的市场前景。
1.3 研究内容与目标
本文的主要研究内容是设计一款基于STM32F103C8T6的蓝牙版智能宠物喂食系统,具体包括系统总体方案设计、硬件选型与电路设计、软件逻辑设计、系统调试与测试等方面,实现预设的所有功能,确保系统运行稳定、操作便捷。

研究目标如下:
- 完成系统硬件选型与电路设计,严格按照材料清单选用元器件,确保各模块协同工作,实现温湿度、宠物靠近、食物重量、水位等参数的精准采集;
- 设计合理的软件逻辑,实现自动模式与手动模式的顺畅切换,自动模式下完成定时喂食、语音播报、蜂鸣提醒、自动喂水等功能,手动模式下实现按键控制喂食与喂水;
- 实现BT04A蓝牙模块与手机APP的稳定连接,完成环境数据上报与控制指令下发,实现手机远程监测与控制功能;
- 通过系统调试与测试,确保系统运行稳定、响应迅速,参数采集精度与控制精度满足设计要求,各项功能均能正常实现,满足用户的实际使用需求。
1.4 论文结构安排
本文共分为6章,具体结构安排如下:
- 第一章为绪论,阐述研究背景与意义、国内外研究现状、研究内容与目标以及论文结构安排;
- 第二章为系统总体方案设计,介绍系统的整体架构、设计原则以及功能模块划分,明确各模块的核心功能与工作逻辑;
- 第三章为系统硬件设计,详细介绍各元器件的选型依据、各功能模块的电路设计以及硬件整体连接关系;
- 第四章为系统软件设计,阐述软件设计思路、主程序流程以及各功能模块的逻辑实现,重点说明蓝牙通信与手机APP的接入方法;
- 第五章为系统调试与测试,介绍调试环境、调试过程以及各项功能的测试结果与分析,验证系统的可行性与稳定性;
- 第六章为总结与展望,总结本文的研究成果,分析系统存在的不足,并对未来的改进方向进行展望。
第二章 系统总体方案设计
2.1 系统整体架构
本智能宠物喂食系统以STM32F103C8T6单片机为核心控制单元,采用分层设计理念,分为硬件层、软件层与蓝牙通信层三个部分,整体架构如图2-1所示(此处可插入架构图,论文中可预留图位)。
硬件层是系统的基础,主要包括主控单元、环境与状态检测模块、显示模块、执行模块、按键模块、蓝牙通信模块、报警与语音模块,负责参数采集、指令执行、数据显示、蓝牙传输、语音播报与报警提醒;软件层运行于STM32单片机中,负责处理传感器采集的数据、解析用户按键指令与手机APP下发的指令,控制执行模块动作,实现模式切换、阈值调节、定时控制等功能,并与蓝牙模块进行数据交互;蓝牙通信层采用BT04A蓝牙模块,负责实现单片机与手机APP之间的无线通信,完成环境数据上报与控制指令下发,为用户提供远程监测与控制入口。
2.2 系统设计原则
为确保系统的实用性、可靠性、经济性与可扩展性,结合智能宠物喂食的使用场景与用户需求,本次设计遵循以下原则:
- 实用性原则:贴合宠物饲养的实际需求,实现温湿度监测、自动定时喂食、宠物靠近喂水、远程控制等核心功能,操作简洁易懂,无需专业知识即可上手使用;
- 可靠性原则:选用性能稳定、口碑良好的元器件,优化电路设计与软件逻辑,减少故障发生,确保系统长期稳定运行,尤其保证喂食、喂水功能的可靠性,避免影响宠物进食;
- 经济性原则:在满足功能需求与性能要求的前提下,选用低成本、高性价比的元器件,降低系统整体成本,便于批量推广与普通宠物主人使用;
- 可扩展性原则:系统设计预留一定的接口,便于后续增加功能模块(如语音控制、视频监控等),适应不同用户的个性化需求与智能宠物设备的发展趋势。
2.3 系统功能模块划分
根据系统的设计目标与功能需求,结合材料清单中的元器件,将系统划分为以下8个功能模块,各模块协同工作,实现智能宠物喂食系统的全部预设功能:
- 主控模块:以STM32F103C8T6单片机为核心,是系统的“大脑”,负责接收各模块的反馈信号,解析按键指令与手机APP指令,控制执行模块动作,处理检测数据,实现各模块的协同工作;
- 检测模块:由DHT11温湿度传感器、光电红外传感器、HX711称重模块、水位传感器组成,负责采集宠物窝温湿度、宠物靠近状态、食物重量、喂水水位等参数,为系统控制提供数据支撑;
- 显示模块:采用OLED屏幕,负责实时显示当前时间、宠物窝温度、湿度、食物重量、水位、系统工作模式、定时时间、各项阈值等信息,方便用户现场查看;
- 执行模块:由步进电机、ULN2003步进电机驱动芯片、继电器、水泵组成,步进电机用于模拟喂食控制,继电器与水泵配合实现自动喂水控制;
- 按键模块:负责实现模式切换(自动/手动)、进入设置界面、参数阈值调节(加/减)、手动控制喂食与喂水等操作,是用户与系统现场交互的主要方式;
- 蓝牙通信模块:采用BT04A蓝牙模块,负责实现单片机与手机APP之间的无线通信,上传环境与设备状态数据,接收手机APP下发的控制指令;
- 语音与报警模块:由JR6001语音模块、扬声器、有源蜂鸣器组成,自动模式下定时喂食时,语音模块通过扬声器播报语音,蜂鸣器发出提醒声音,告知宠物进食;
- 指示模块:由LED灯组成,用于指示系统的工作状态(电源状态、模式状态、蓝牙连接状态等),方便用户快速了解系统运行情况。
第三章 系统硬件设计
3.1 硬件选型
硬件选型是系统设计的基础,结合系统功能需求、性能要求与经济性原则,严格按照用户提供的材料清单进行选型,确保各元器件适配性良好、性能稳定,具体选型如下:
3.1.1 主控单元:STM32F103C8T6单片机
STM32F103C8T6是ST公司推出的一款基于ARM Cortex-M3内核的32位微控制器,主频最高可达72MHz,拥有丰富的IO接口、ADC接口、UART接口等,能够满足系统多传感器数据采集、多设备控制、蓝牙通信等需求。该单片机体积小、功耗低、性能稳定、性价比高,广泛应用于嵌入式系统设计中,非常适合作为本智能宠物喂食系统的主控单元。其最小系统需满足供电、时钟、复位等基本需求,供电电压为3.3V,采用外部8MHz晶体振荡器提供时钟信号,配置复位按键实现系统复位功能,同时设置正确的启动模式,确保单片机正常工作。
3.1.2 检测模块元器件
- DHT11温湿度传感器:采用单总线通信方式,能够同时采集宠物窝的温度与湿度,测量范围为温度0-50℃、湿度20%-90%RH,精度满足宠物窝环境监测需求,接线简单、成本低廉。该传感器通过DATA引脚与单片机进行串行单向数据传输,一次通讯时间约4ms,数据格式包含湿度、温度数据与校验和,确保数据采集的准确性。
- 光电红外传感器:采用漫反射式红外传感器,当有宠物靠近时,传感器输出低电平信号,无人/宠物靠近时输出高电平信号,通过GPIO接口与单片机连接,实现宠物靠近状态的检测,为自动喂水功能提供依据。该传感器检测距离可调,响应迅速,抗干扰能力强,适合宠物靠近检测场景。
- HX711称重模块:专门用于重量检测,采用24位高精度ADC转换,测量精度高、稳定性好,能够准确检测投喂食物的重量,通过DOUT与PD_SCK两个引脚与单片机连接,实现重量数据的采集。该模块支持校准功能,可根据实际需求校准测量范围,适合用于食物重量的精准控制。
- 水位传感器:采用电阻式水位检测模块,通过检测水位变化改变自身电阻值,进而输出不同的电压信号,通过ADC接口与单片机连接,实现喂水水位的检测。该模块灵敏度可调,能够准确检测水位高低,当水位低于阈值时,触发自动喂水功能。
3.1.3 显示模块:OLED屏幕
选用0.96英寸OLED屏幕,采用I2C通信方式,具有分辨率高、功耗低、响应快、视角广、显示清晰等优点,能够实时显示当前时间、宠物窝温湿度、食物重量、水位、系统模式、定时时间等信息。该屏幕体积小、重量轻,便于安装在设备控制面板上,方便用户现场查看系统状态与相关参数,无需额外驱动电路,接线简单,与STM32单片机适配性良好。
3.1.4 执行模块元器件
- 步进电机:选用28BYJ-48步进电机,搭配ULN2003步进电机驱动芯片,能够实现精准的转速与角度控制,用于模拟喂食动作,控制食物的投放量。该电机体积小、力矩大、运行稳定,工作电压为5V,通过GPIO接口与驱动芯片连接,由单片机输出控制信号驱动其正转、反转与停止,实现喂食的精准控制。
- ULN2003步进电机驱动芯片:专门用于驱动步进电机,能够放大单片机输出的控制信号,为步进电机提供足够的驱动电流,保护单片机IO口,同时具有过流保护功能,提升执行模块的可靠性。该芯片与28BYJ-48步进电机适配性良好,接线简单,便于集成。
- 继电器:选用5V继电器模块,用于控制水泵的启停,通过GPIO接口与单片机连接,单片机输出控制信号控制继电器的吸合与断开,进而控制水泵工作,实现自动喂水功能。继电器能够实现弱电控制强电,保护单片机,确保水泵稳定工作。
- 水泵:选用小型直流水泵,工作电压为5V,通过继电器与单片机连接,由继电器控制其启停,用于自动喂水时向喂水盘供水。该水泵体积小、功耗低、出水稳定,适合宠物喂水场景。
3.1.5 按键模块:独立按键
选用5个独立按键,分别用于模式切换(自动/手动)、进入设置界面、参数阈值调节(加/减)、手动控制喂食、手动控制喂水,通过GPIO接口与单片机连接。按键采用高有效方式连接,无需额外添加下拉电阻,可通过软件配置单片机内部下拉电阻,实现按键信号的精准检测,操作简单、可靠,能够满足用户现场操作的需求。
3.1.6 蓝牙通信模块:BT04A蓝牙模块
选用BT04A蓝牙模块,支持蓝牙4.0协议,采用UART通信方式与单片机连接,能够实现与手机APP的稳定无线通信,上传环境与设备状态数据,接收手机APP下发的控制指令。该模块体积小、功耗低、通信距离远(可达10米),支持一对一配对,配对成功后通信稳定,无需复杂的配置,便于用户操作,是实现远程控制的核心元器件。
3.1.7 语音与报警模块元器件
- JR6001语音模块:支持语音录制与播放功能,可预先录制喂食提醒语音(如“小宝贝,该吃饭啦”),通过GPIO接口与单片机连接,当自动模式下定时喂食时,单片机发送控制信号,触发语音模块通过扬声器播放语音,提醒宠物进食。该模块操作简单,支持多段语音录制,音量可调。
- 扬声器:用于播放JR6001语音模块的语音,选用小型8Ω扬声器,工作电压为3.3V,通过音频接口与语音模块连接,音量适中,能够清晰播放语音提醒,适合宠物喂食场景。
- 有源蜂鸣器:用于定时喂食时的声音提醒,工作电压为3.3V,通过GPIO接口与单片机连接,当自动模式下定时喂食时,与语音播报同步工作,发出连续的提醒声音,进一步吸引宠物的注意力。该蜂鸣器无需额外驱动电路,响应迅速,音量可调。
3.1.8 指示模块:LED灯
选用3个普通LED灯(红、绿、蓝),分别用于指示系统电源状态、工作模式、蓝牙连接状态,通过GPIO接口与单片机连接,串联220Ω限流电阻保护LED灯与单片机IO口。红灯亮表示系统通电,绿灯亮表示自动模式,蓝灯亮表示蓝牙连接成功,便于用户快速了解系统运行状态。
3.2 硬件电路设计
系统硬件电路主要包括主控单元电路、检测模块电路、显示模块电路、执行模块电路、按键模块电路、蓝牙通信模块电路、语音与报警模块电路、指示模块电路,各电路相互独立又相互关联,通过导线连接形成完整的硬件系统,电路设计遵循简洁、可靠、抗干扰的原则,确保各模块稳定工作。
3.2.1 主控单元电路
STM32F103C8T6单片机最小系统电路包括供电电路、时钟电路、复位电路与启动模式配置电路。供电电路采用LM1117低压差线性调整器,将5V输入电压转换为3.3V稳定电压,为单片机及其他需3.3V供电的模块(如OLED屏幕、BT04A蓝牙模块)供电,同时在供电引脚旁配置100nF旁路电容,滤除电源噪声,保证供电稳定性;时钟电路采用外部8MHz晶体振荡器,搭配两个22pF匹配电容与1MΩ反馈电阻,为单片机提供稳定的时钟信号,确保单片机正常运行;复位电路采用轻触按键复位,利用单片机内部上拉电阻,无需额外添加上拉电阻,按下按键时实现系统复位,松开按键后系统正常工作;启动模式配置电路通过两个10kΩ电阻将BOOT0与BOOT1引脚下拉到地,默认设置为主Flash存储器启动模式,确保单片机上电后正常加载程序。
3.2.2 检测模块电路
检测模块各传感器电路设计如下:
- DHT11温湿度传感器:VCC引脚接3.3V电源,GND引脚接地,DATA引脚通过10kΩ上拉电阻连接到单片机的GPIO引脚,实现温湿度数据的采集,上拉电阻用于保证数据传输的稳定性;
- 光电红外传感器:VCC引脚接3.3V电源,GND引脚接地,OUT引脚连接到单片机的GPIO引脚,实现宠物靠近状态的检测,输出低电平表示有宠物靠近,高电平表示无宠物靠近;
- HX711称重模块:VCC引脚接5V电源,GND引脚接地,DOUT引脚与PD_SCK引脚分别连接到单片机的两个GPIO引脚,通过专用通信协议实现重量数据的采集,模块的VCC引脚旁配置电容,保证供电稳定;
- 水位传感器:采用分压电路,传感器一端接3.3V电源,另一端接地,中间节点连接到单片机的ADC接口,通过检测节点电压的变化,实现水位的采集,电压随水位升高而增大,灵敏度可通过电位器调节。
3.2.3 显示模块电路
OLED屏幕采用I2C通信方式,其SDA引脚与SCL引脚分别连接到单片机的两个GPIO引脚,VCC引脚接3.3V电源,GND引脚接地,无需额外驱动电路,通过I2C通信协议,单片机向OLED屏幕发送显示指令与数据,实现各类信息的实时显示,接线简单、功耗低。
3.2.4 执行模块电路
执行模块电路包括步进电机驱动电路、继电器与水泵控制电路:
- 步进电机驱动电路:ULN2003驱动芯片的VCC引脚接5V电源,GND引脚接地,IN1-IN4引脚分别连接到单片机的四个GPIO引脚,驱动芯片的OUT1-OUT4引脚连接到步进电机的四个引脚,由单片机输出控制信号,通过驱动芯片放大后,驱动步进电机正转、反转与停止,实现喂食控制;
- 继电器与水泵控制电路:继电器模块的VCC引脚接5V电源,GND引脚接地,IN引脚连接到单片机的GPIO引脚,继电器的常开端连接到水泵的正极,水泵的负极接地,单片机输出高电平时,继电器吸合,水泵工作,实现喂水;输出低电平时,继电器断开,水泵停止工作。
3.2.5 按键模块电路
五个独立按键的一端分别连接到单片机的五个GPIO引脚,另一端共同接地,通过软件配置单片机内部下拉电阻,当按键按下时,GPIO引脚检测到高电平信号,单片机通过检测电平变化识别按键操作,实现模式切换、阈值调节、手动喂食、手动喂水等功能,电路设计简洁、可靠,无需额外添加电阻元件。
3.2.6 蓝牙通信模块电路
BT04A蓝牙模块的VCC引脚接3.3V电源,GND引脚接地,TXD引脚连接到单片机的RX引脚,RXD引脚连接到单片机的TX引脚,通过UART通信协议,实现单片机与模块之间的数据交互,进而实现与手机APP的无线通信。需注意模块与单片机的共地,避免通信干扰,同时在模块电源引脚旁配置100nF旁路电容,保证模块供电稳定。
3.2.7 语音与报警模块电路
语音与报警模块电路包括JR6001语音模块电路、扬声器电路与有源蜂鸣器电路:
- JR6001语音模块:VCC引脚接3.3V电源,GND引脚接地,PLAY引脚连接到单片机的GPIO引脚,单片机输出低电平信号时,触发语音模块播放预设语音;语音模块的音频输出端连接到扬声器,实现语音播报;
- 扬声器电路:扬声器的一端连接到语音模块的音频输出端,另一端接地,串联100Ω电阻限制电流,保护扬声器;
- 有源蜂鸣器电路:有源蜂鸣器的VCC引脚接3.3V电源,GND引脚通过GPIO引脚接地,当单片机输出低电平信号时,蜂鸣器发出提醒声音;输出高电平时,蜂鸣器停止工作。
3.2.8 指示模块电路
三个LED灯的阳极分别通过220Ω限流电阻连接到单片机的三个GPIO引脚,阴极共同接地,单片机输出高电平时,对应LED灯点亮;输出低电平时,LED灯熄灭。红灯对应电源指示,绿灯对应自动模式指示,蓝灯对应蓝牙连接指示,电路设计简洁,能够清晰指示系统运行状态。
3.3 硬件连接总览
系统硬件连接采用模块化设计,各模块通过导线与STM32F103C8T6单片机的对应引脚连接,确保各模块能够正常通信与工作,具体连接关系如下(可根据实际引脚分配调整,均选用单片机空闲IO口与ADC接口):
- DHT11温湿度传感器:DATA → PA0
- 光电红外传感器:OUT → PA1
- HX711称重模块:DOUT → PA2,PD_SCK → PA3
- 水位传感器:信号输出端 → PA4(ADC接口)
- OLED屏幕:SDA → PB0,SCL → PB1
- ULN2003驱动芯片:IN1 → PB2,IN2 → PB3,IN3 → PB4,IN4 → PB5
- 继电器:IN → PB6
- 按键:K1(模式切换)→ PC0,K2(进入设置)→ PC1,K3(加)→ PC2,K4(减)→ PC3,K5(手动喂食/喂水)→ PC4
- BT04A蓝牙模块:TXD → PC5,RXD → PC6
- JR6001语音模块:PLAY → PC7
- 有源蜂鸣器:GND → PD0
- LED灯:红灯 → PD1,绿灯 → PD2,蓝灯 → PD3
- 水泵:通过继电器连接到5V电源与GND
- 扬声器:通过JR6001语音模块连接到3.3V电源与GND
硬件连接完成后,需对各模块进行绝缘处理,避免引脚短路,确保系统硬件的安全性与可靠性;同时检查各元器件的接线是否正确,避免接反电源导致元器件损坏。
第四章 系统软件设计
4.1 软件设计思路
系统软件设计采用模块化设计思想,以STM32F103C8T6单片机为核心,按照功能模块划分软件模块(检测模块、显示模块、模式切换与控制模块、阈值调节模块、蓝牙通信模块、语音与报警模块、指示模块),各模块独立设计、协同工作,便于软件的调试、修改与扩展。
软件设计的核心思路是:系统上电后,首先完成各模块的初始化,包括单片机IO口、ADC、UART、I2C等外设的初始化,以及各传感器、OLED屏幕、BT04A蓝牙模块、JR6001语音模块等的初始化;初始化完成后,OLED屏幕显示系统启动信息,LED红灯点亮(电源指示),系统进入主循环;在主循环中,系统实时采集各检测参数(温湿度、宠物靠近状态、食物重量、水位),对采集到的数据进行处理与校准;然后判断当前工作模式(自动模式或手动模式),根据模式解析按键指令与手机APP指令,控制执行模块(步进电机、水泵)动作,同时将检测数据上传到手机APP,通过OLED屏幕显示相关信息;当自动模式下达到定时时间时,启动定时喂食流程(语音播报、蜂鸣提醒、步进电机喂食),当宠物靠近且水位低于阈值时,启动自动喂水流程;循环执行上述流程,确保系统持续稳定运行。
4.2 主程序设计
主程序是系统软件的核心,负责统筹各模块的工作,协调各模块之间的数据交互与指令执行,其流程如下:
1. 系统上电,初始化系统时钟、单片机外设(IO口、ADC、UART、I2C);
2. 初始化各功能模块:检测模块(DHT11、光电红外、HX711、水位传感器)、OLED显示模块、BT04A蓝牙模块、JR6001语音模块、按键模块、执行模块、报警模块、指示模块;
3. OLED屏幕显示系统启动信息(如“智能宠物喂食系统启动中...”),LED红灯点亮,延迟2秒后切换到正常显示界面;
4. 系统进入主循环,首先调用检测模块函数,采集各参数(温湿度、宠物靠近状态、食物重量、水位),对数据进行校准与处理,转换为可显示、可判断的实际数值;
5. 调用显示模块函数,将处理后的检测参数、当前系统模式、定时时间、各项阈值等信息显示在OLED屏幕上,实时更新;
6. 检测按键信号,解析按键指令,实现模式切换、阈值调节、进入设置界面、手动喂食、手动喂水等功能;
7. 检测BT04A蓝牙模块与手机APP的连接状态,若连接正常(LED蓝灯点亮),将检测参数上传到手机APP,并接收APP下发的控制指令,解析后执行相应动作;若未连接,LED蓝灯熄灭,提示蓝牙未连接;
8. 根据当前工作模式执行相应的控制逻辑:自动模式下(LED绿灯点亮),判断是否达到定时喂食时间,若达到则启动定时喂食流程;判断宠物是否靠近且水位低于阈值,若满足则启动自动喂水流程;手动模式下(LED绿灯熄灭),根据按键指令或远程指令控制步进电机(喂食)与水泵(喂水)的动作;
9. 循环执行步骤4-8,确保系统持续稳定运行,实时响应各类指令与状态变化。
4.3 各功能模块软件设计
4.3.1 检测模块软件设计
检测模块软件主要负责采集各传感器的输出信号,并对信号进行处理、校准,得到实际的检测参数,为系统控制提供数据支撑,各传感器的软件处理逻辑如下:
- DHT11温湿度传感器:软件通过GPIO引脚向传感器发送启动信号(拉低总线18ms以上,再拉高20-40us),等待传感器响应后,接收传感器输出的40bit数据,对数据进行校验(前32bit数据的校验和与后8bit校验和一致则数据有效),解析后得到温度与湿度的实际数值;
- 光电红外传感器:通过GPIO接口采集传感器的输出电平信号,检测到低电平时,判定为有宠物靠近;检测到高电平时,判定为无宠物靠近,设置防抖处理,避免误检测;
- HX711称重模块:通过GPIO接口向模块发送控制指令,启动重量采集,接收模块输出的重量数据,对数据进行滤波与校准(根据校准参数消除误差),转换为实际的食物重量值(单位:g),实时监测食物投放量;
- 水位传感器:通过ADC接口采集传感器的输出电压信号,将模拟信号转换为数字信号(0-4095),再通过校准公式转换为实际的水位值,设定水位阈值,当水位低于阈值时,输出低电平信号,触发自动喂水功能。
软件设置定时采集机制,每隔1秒采集一次各检测参数,确保数据的实时性,同时对采集到的数据进行异常判断,若数据超出传感器的测量范围,则视为无效数据,采用上一次的有效数据替代,提升数据采集的可靠性。
4.3.2 显示模块软件设计
显示模块软件负责控制OLED屏幕显示相关信息,采用I2C通信协议,通过编写OLED屏幕的驱动函数,实现字符、数字、字符串的显示,显示界面分为正常显示界面与设置界面。
正常显示界面:实时显示当前时间、宠物窝温度(℃)、湿度(%RH)、食物重量(g)、水位状态(正常/偏低)、系统工作模式(自动/手动)、3个定时喂食时间、食物重量阈值、水位阈值,显示格式清晰、简洁,便于用户现场查看;设置界面:当用户按下“进入设置”按键时,切换到设置界面,显示可设置的选项(当前时间、定时喂食时间、食物重量阈值、水位阈值),用户通过“加/减”按键切换选项与调整参数,设置完成后再次按下“进入设置”按键保存参数并返回正常显示界面。
软件通过定时器实现显示信息的更新,每隔1秒更新一次检测参数与系统状态,确保显示信息的实时性,同时避免频繁刷新导致屏幕闪烁,提升用户体验。
4.3.3 模式切换与控制模块软件设计
模式切换与控制模块软件负责处理按键指令与手机APP指令,实现自动模式与手动模式的顺畅切换,以及执行模块的精准控制,具体逻辑如下:
- 模式切换:当用户按下“模式切换”按键或通过手机APP发送模式切换指令时,系统切换工作模式(自动→手动/手动→自动),并在OLED屏幕上显示当前模式,LED绿灯点亮表示自动模式,熄灭表示手动模式,同时保存当前模式状态,下次上电后自动加载上次的模式;
- 自动模式控制逻辑:系统实时对比当前时间与预设的3个定时喂食时间,当达到任意一个定时时间时,启动定时喂食流程——控制JR6001语音模块通过扬声器播放预设语音,同时控制有源蜂鸣器发出提醒声音,启动步进电机正转(模拟喂食),实时监测HX711称重模块的食物重量,当重量达到设定阈值时,控制步进电机反转,停止喂食,语音与蜂鸣同时停止;同时,系统实时检测宠物靠近状态与水位,当检测到有宠物靠近且水位低于阈值时,控制继电器吸合,启动水泵进行自动喂水,当水位达到正常阈值时,控制继电器断开,停止喂水;
- 手动模式控制逻辑:手动模式下,系统不进行自动调控,用户可通过现场按键或手机APP远程控制喂食与喂水——按下“手动喂食”按键或发送远程喂食指令,控制步进电机正转,达到重量阈值后停止;按下“手动喂水”按键或发送远程喂水指令,控制水泵启动,持续喂水一段时间(如5秒)后停止,或用户再次按下按键停止喂水,动作响应迅速,控制准确。
4.3.4 阈值调节模块软件设计
阈值调节模块软件负责处理用户的设置指令,实现当前时间、3个定时喂食时间、食物重量阈值、水位阈值的调节与保存,具体逻辑如下:
当用户按下“进入设置”按键时,系统进入设置模式,OLED屏幕显示设置菜单,依次显示“当前时间设置”“定时喂食时间1”“定时喂食时间2”“定时喂食时间3”“食物重量阈值”“水位阈值”六个选项,用户通过“加/减”按键切换选项,选中某一选项后,再次通过“加/减”按键调整参数大小(如定时时间范围:00:00-23:59,食物重量阈值:10-100g,水位阈值:0-100%);设置完成后,按下“进入设置”按键,系统保存当前设置的参数到单片机的Flash中,下次上电后自动加载,同时退出设置模式,返回正常显示界面。
软件设置参数保护机制,确保调节的参数在合理范围内,避免超出范围导致控制逻辑异常,同时设置默认参数,当用户未进行参数设置时,系统采用默认参数运行(如默认定时时间:08:00、12:00、18:00,食物重量阈值:50g,水位阈值:30%)。
4.3.5 蓝牙通信模块软件设计
蓝牙通信模块软件负责实现BT04A蓝牙模块与单片机、手机APP的通信,完成检测数据上报与控制指令接收,具体实现步骤如下:
1. BT04A蓝牙模块初始化:系统上电后,单片机通过UART接口向模块发送AT指令,配置模块的工作模式(从机模式)、蓝牙名称、通信波特率(与单片机一致,如9600bps),完成模块初始化;
2. 手机APP配对与连接:用户打开手机蓝牙,搜索并配对BT04A蓝牙模块(配对密码默认1234或0000),配对成功后,手机APP与蓝牙模块建立稳定通信,LED蓝灯点亮,提示蓝牙连接成功;
3. 数据上报:单片机将处理后的检测参数(温湿度、食物重量、水位、宠物靠近状态)以及系统状态(工作模式、定时时间、各项阈值)通过UART接口发送给BT04A蓝牙模块,模块将数据无线传输到手机APP,供用户远程查看,上报频率为1次/秒;
4. 指令接收:手机APP发送的控制指令(模式切换、手动喂食、手动喂水、参数设置)通过蓝牙模块无线传输到单片机,单片机通过UART接口接收指令,解析后执行相应的动作,并将执行结果上传到手机APP,实现指令的闭环控制。
软件设置蓝牙通信异常处理机制,当蓝牙连接断开时,LED蓝灯熄灭,OLED屏幕显示“蓝牙断开连接”提示,模块自动进入可配对状态,等待手机重新配对;若连续3次配对失败,系统提示“配对失败,请重试”,确保蓝牙通信的稳定性与可靠性。
4.3.6 语音与报警模块软件设计
语音与报警模块软件负责控制JR6001语音模块、扬声器与有源蜂鸣器的工作,实现定时喂食时的语音播报与声音提醒,具体逻辑如下:
自动模式下,当达到定时喂食时间时,单片机输出低电平信号,触发JR6001语音模块播放预设的喂食提醒语音,同时输出低电平信号,控制有源蜂鸣器发出连续的提醒声音,语音与蜂鸣同步工作,持续3-5秒后自动停止;若宠物未及时靠近,可设置每隔10秒重复一次提醒,直至宠物靠近或喂食结束。
手动模式下,语音与蜂鸣模块不进行自动提醒,仅在用户通过按键或手机APP发送提醒指令时启动,确保提醒功能的灵活性;同时软件支持语音音量调节,用户可通过设置界面调整语音与蜂鸣的音量大小。
4.3.7 指示模块软件设计
指示模块软件负责控制三个LED灯的亮灭,实现系统状态的实时指示,具体逻辑如下:
- 电源指示(红灯):系统上电后,红灯始终点亮,提示系统正常供电;若系统出现供电异常,红灯闪烁,提示用户检查电源;
- 模式指示(绿灯):系统处于自动模式时,绿灯点亮;处于手动模式时,绿灯熄灭,方便用户快速区分当前工作模式;
- 蓝牙连接指示(蓝灯):蓝牙模块与手机APP配对成功并建立通信时,蓝灯点亮;蓝牙未连接或连接断开时,蓝灯熄灭,提示用户蓝牙连接状态。
第五章 系统调试与测试
5.1 调试环境与工具
本次系统调试分为硬件调试与软件调试,调试的目的是检查硬件连接的正确性、软件逻辑的合理性,确保系统各项功能正常实现,调试环境与工具如下:
- 硬件调试工具:万用表、示波器、杜邦线、面包板、5V电源适配器、USB A TTL CH340串口工具;
- 软件调试工具:Keil MDK5开发环境、串口调试助手、蓝牙调试APP、手机智能宠物喂食APP;
- 调试环境:室温25℃、湿度50%RH,无干扰的实验室环境,模拟宠物靠近场景(用物体遮挡光电红外传感器),确保调试过程不受外界环境干扰。
5.2 硬件调试
硬件调试的核心是检查各元器件的连接是否正确、各模块是否能够正常工作,供电是否稳定,具体调试步骤如下:
- 电源调试:将5V电源适配器接入系统,用万用表测量各模块的供电电压,确保STM32单片机、OLED屏幕、BT04A蓝牙模块等需3.3V供电的模块获得稳定的3.3V电压,步进电机、水泵等需5V供电的模块获得稳定的5V电压,无短路、漏电现象,供电引脚无虚焊、脱焊。
- 主控单元调试:将单片机最小系统单独上电,通过USB A TTL CH340串口工具连接电脑,在串口调试助手发送指令,检查单片机的IO口、ADC、UART、I2C等外设是否正常工作,确保单片机能够正常接收与发送数据,程序能够正常下载与运行。
- 检测模块调试:分别对各传感器进行单独调试,用万用表测量传感器的输出信号,检查传感器是否能够准确采集参数:用手遮挡光电红外传感器,观察输出电平的变化;向HX711称重模块放置不同重量的物体,观察采集到的重量数据;调整水位传感器的水位,观察输出电压的变化;确保各传感器数据采集正常、响应迅速。
- 显示模块调试:给OLED屏幕上电,检查屏幕是否能够正常点亮,通过单片机发送显示指令,检查字符、数字、字符串的显示是否清晰、准确,无乱码、卡顿现象,显示界面切换顺畅。
- 执行模块调试:给步进电机、继电器、水泵供电,通过单片机发送控制信号,检查步进电机是否能够正常正转、反转与停止,继电器是否能够正常吸合与断开,水泵是否能够正常启动与停止,动作响应迅速,无卡顿、异响现象。
- 蓝牙通信模块调试:将BT04A蓝牙模块与单片机连接,上电后通过蓝牙调试APP搜索模块,进行配对连接,检查模块是否能够正常配对、通信,数据传输是否正常,蓝牙连接距离是否满足要求(≥10米)。
- 语音与报警模块调试:给JR6001语音模块、扬声器、有源蜂鸣器供电,通过单片机发送控制信号,检查语音模块是否能够正常播放预设语音,扬声器声音是否清晰,蜂鸣器是否能够正常发出提醒声音,音量可调。
- 指示模块调试:给LED灯供电,通过单片机发送控制信号,检查三个LED灯是否能够正常亮灭,状态指示是否准确,与系统运行状态一致。
经过硬件调试,各模块连接正确,供电稳定,各元器件均能正常工作,无故障现象,数据采集与信号传输正常,满足系统的硬件需求。
5.3 软件调试
软件调试的目的是检查软件逻辑是否正确、各功能模块是否能够正常协同工作,指令解析是否准确,具体调试步骤如下:
- 初始化调试:将编写好的初始化程序下载到单片机中,上电后检查各模块的初始化是否成功,包括传感器、OLED屏幕、BT04A蓝牙模块、JR6001语音模块的初始化,确保系统能够正常启动,无初始化失败现象。
- 检测功能调试:运行检测模块软件,采集各检测参数,通过串口调试助手查看采集到的数据,检查数据是否准确、稳定,对采集到的数据进行校准,确保数据误差在允许范围内(如DHT11温度误差±1℃,湿度误差±5%RH;HX711称重误差±1g)。
- 显示功能调试:运行显示模块软件,检查OLED屏幕是否能够正常显示检测参数、系统模式、定时时间、阈值等信息,显示信息实时更新,无乱码、卡顿现象,设置界面切换顺畅,参数调节显示正常。
- 模式切换与控制功能调试:分别测试自动模式与手动模式,检查模式切换是否顺畅;自动模式下,测试定时喂食功能(语音播报、蜂鸣提醒、步进电机喂食、重量控制)与自动喂水功能(宠物靠近+水位偏低触发喂水),确保功能正常;手动模式下,测试按键与远程控制喂食、喂水功能,控制准确、响应迅速。
- 阈值调节功能调试:进入设置界面,测试修改当前时间、3个定时喂食时间、食物重量阈值、水位阈值,检查参数修改是否成功,修改后是否能够正常生效,参数是否能够永久保存,下次上电后是否自动加载,参数调节范围是否在合理范围内。
- 蓝牙通信调试:测试BT04A蓝牙模块与手机APP的配对、连接,检查检测数据是否能够正常上传到APP,手机APP是否能够实时查看数据;发送控制指令(模式切换、手动喂食、手动喂水、参数设置),检查单片机是否能够正常接收指令并执行相应的动作,指令响应时间≤1s,蓝牙通信稳定可靠。
- 语音与报警功能调试:自动模式下,测试定时喂食时的语音播报与蜂鸣提醒,检查语音播放是否清晰、蜂鸣声音是否适中,同步工作是否正常;测试语音与蜂鸣的音量调节功能,确保调节有效。
- 指示功能调试:测试三个LED灯的状态指示,检查电源、模式、蓝牙连接状态的指示是否准确,与系统运行状态一致,无指示错误现象。
经过软件调试,各功能模块逻辑正确,协同工作良好,无程序报错、功能异常现象,指令解析准确,数据传输稳定,满足系统的软件需求。
5.4 系统测试结果与分析
系统调试完成后,对系统的各项功能进行全面测试,模拟实际宠物饲养场景,验证系统的可行性、稳定性与实用性,测试结果如下:
5.4.1 检测功能测试
在不同环境条件下,测试检测模块的采集精度与稳定性,测试结果如下表5-1所示(此处可插入测试表格,论文中可预留表位):
测试结果表明,各传感器采集精度均满足设计要求:DHT11温湿度传感器的温度测量误差在±1℃范围内,湿度测量误差在±5%RH范围内;光电红外传感器响应时间≤0.5s,检测距离0.1-1m,无漏检、误检现象;HX711称重模块测量误差≤1g,重量采集稳定;水位传感器测量误差≤5%,能够准确检测水位高低;各传感器采集数据稳定,无明显波动,能够准确反映宠物窝环境与设备状态。
5.4.2 显示功能测试
测试
更多推荐



所有评论(0)