基于stm32F4的智能宠物喂食器的设计:LVGL界面、定时喂食喂水通风
宠物喂食器
- 一、功能设计
- 二、元器件选型
- 三、UI设计
- 四、原理图设计
- 五、源代码设计
- 六、成品展示
实物链接:https://m.tb.cn/h.5iCUX6H?tk=PL65WXCEipQ CZ3457

一、功能设计
1、设计一个触摸屏作为人机交互
2、通过触摸屏设置时间定时喂食喂水通风
3、获取当前水槽的水位并显示
4、获取环境温湿度并显示
二、元器件选型
1、触摸屏采用2.8寸电阻触摸屏
2、单片机采用STM32F407ZGT6
3、喂水使用直流水泵
4、喂食使用舵机
5、通风使用风扇
6、控制开关使用继电器
7、温湿度获取使用DHT11
8、水位检测使用水位传感器
三、UI设计
1、UI使用LVGL
2、UI设计环境使用SquareLine Studio



3、生成代码导入到vsCode进行仿真运行,编译比较快

4、调试UI界面比较满意后导入UI代码到keil5下载到单片机运行

四、原理图设计
1、STM32F407ZGT6最小系统设计


2、继电器控制电路设计
3、水泵和舵机电路设计
五、源代码设计
1、移植正点原子LVGL最小工程

2、导入生成的UI代码

3、编写IO控制程序,舵机控制程序,系统时间、定时喂食喂水程序、事件记录程序
void scan_timeout(void)
{int32_t remain_time[SCAN_TIME_NUM];static int32_t p_time = 0x7fffffff;static uint8_t p_num;TimeTypeDef remain_time_min = {0};char sprbuff[64];int32_t n_num = 0;char buff[SCAN_TIME_NUM][8] = {"喂食","喂食","喂水","喂水","通风","通风"};char * pbuf = NULL;get_sys_date_time();//获取系统时间remain_time[0] = time_compare(&System.para.systime,&System.para.feed.time1 );//计算时间差remain_time[1] = time_compare(&System.para.systime,&System.para.feed.time2 );//计算时间差remain_time[2] = time_compare(&System.para.systime,&System.para.feedwater.time1);//计算时间差remain_time[3] = time_compare(&System.para.systime,&System.para.feedwater.time2);//计算时间差remain_time[4] = time_compare(&System.para.systime,&System.para.ventilate.time1);//计算时间差remain_time[5] = time_compare(&System.para.systime,&System.para.ventilate.time2);//计算时间差for(int i=0; i<SCAN_TIME_NUM; i++) //看看时间差哪个短 找到最短那个任务优先执行{if(p_time > remain_time[i] && remain_time[i] >= 0){remain_time_min.hour = remain_time[i] / 3600;remain_time_min.min = remain_time[i] % 3600 /60;remain_time_min.sec = remain_time[i] % 60;p_time = remain_time[i];pbuf = buff[i];p_num = i;if(p_time == 0)p_time = 0x7fffffff;printf("i = %d, remain_time[i]=%d\r\n",i,remain_time[i]);}if(remain_time[i] < 0){n_num ++;}}if(n_num != SCAN_TIME_NUM) //今天任务做完了吗? 哦 没有就进去{if(p_time < 30) //如果距离任务还不到 XXX秒了,就进来运行任务{switch(p_num){case 0:sprintf(sprbuff,"喂食时间到! %02d:%02d", System.para.feed.time1.hour,System.para.feed.time1.min);SW1_ON();break;case 1:sprintf(sprbuff,"喂食时间到! %02d:%02d", System.para.feed.time2.hour,System.para.feed.time2.min);SW1_ON();break;case 2:sprintf(sprbuff,"喂水时间到! %02d:%02d", System.para.feedwater.time1.hour,System.para.feedwater.time1.min);SW2_ON();break;case 3:sprintf(sprbuff,"喂水时间到! %02d:%02d", System.para.feedwater.time2.hour,System.para.feedwater.time2.min);SW2_ON();break;case 4:sprintf(sprbuff,"通风时间到! %02d:%02d", System.para.ventilate.time1.hour,System.para.ventilate.time1.min);SW3_ON();break;case 5:sprintf(sprbuff,"通风时间到! %02d:%02d", System.para.ventilate.time2.hour,System.para.ventilate.time2.min);SW3_ON();break;}lv_label_set_text(ui_MainInfoLabel7,sprbuff);}else if(pbuf != NULL){sprintf(sprbuff,"主线任务 - %s %02d:%02d:%02d",pbuf,remain_time_min.hour,remain_time_min.min,remain_time_min.sec);printf("%s\r\n",sprbuff);lv_label_set_text(ui_MainInfoLabel7,sprbuff);switch_all_off();}}else{lv_label_set_text(ui_MainInfoLabel7,"今日暂无任务");}
}
六、成品展示




相关文章:
基于stm32F4的智能宠物喂食器的设计:LVGL界面、定时喂食喂水通风
宠物喂食器 一、功能设计二、元器件选型三、UI设计四、原理图设计五、源代码设计六、成品展示 实物链接:https://m.tb.cn/h.5iCUX6H?tkPL65WXCEipQ CZ3457 一、功能设计 1、设计一个触摸屏作为人机交互 2、通过触摸屏设置时间定时喂食喂水通风 3、获取当前水槽的…...
jumpserver堡垒机docker方式安装部署
1、环境要求 请先自行创建 数据库 和 Redis, 版本要求参考上面环境要求说明 mysql>5.7 redis >5.0 2、创建数据库 mysql: create database jumpserver default charset utf8; GRANT ALL PRIVILEGES ON jumpserver.* TO jumpserver% IDENTIFIED BY nu4x599…...
在基于亚马逊云科技的湖仓一体架构上构建数据血缘的探索和实践
背景介绍 随着大数据技术的进步,企业和组织越来越依赖数据驱动的决策。数据的质量、来源及其流动性因此显得非常关键。数据血缘分析为我们提供了一种追踪数据从起点到终点的方法,有助于理解数据如何被转换和消费,同时对数据治理和合规性起到关…...
VScode clangd 插件浏览 linux 源码
文章目录 VScode clangd 插件浏览 linux 源码clangd 安装与配置VScode 插件安装clangd 安装方法一方法二 clangd 配置 cmake 生成bear 生成 compile_commands.json触发 clangd linux 内核脚本生成 compile_commands.json 文件三种方式对比 VScode clangd 插件浏览 linux 源码 …...
GZ035 5G组网与运维赛题第8套
2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第8套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) 子…...
《golang设计模式》第三部分·行为型模式-02-命令模式(Command)
文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 命令模式(Command)将类的业务行为以对象的方式封装,以便实现行为的参数化、撤销或重做等需求。 非命令模式的困惑: 类的行为在运行时是以实例方法…...
【linux进程控制(一)】进程终止--如何干掉一个进程?
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:Linux从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学更多操作系统知识 🔝🔝 进程终止 1. 前言2. 文章整体…...
言情小说怎么推广?如何推广网络小说?
网络小说是一种文学形式,它的受众群体相当广泛,其实也面临着很强的竞争,因此,网络推广是小说宣传的一项重要工作,这里小马识途营销顾问就分享一下小说推广的渠道和方法。 1、软文推广 在推广小说的过程中,…...
TensorFlow 的应用场景有哪些
TensorFlow是一个开源的人工智能框架,由Google公司开发。它是一个强大的工具,可以用于数值计算、机器学习和深度学习等领域,具有灵活性、可扩展性、可移植性等特点。 TensorFlow的基本概念包括: Tensor:Tensor是Tens…...
JAVA提取嵌套夹带文件之Apache Tika
目录结构 前言tika简介Tika支持的文件格式MAVEN依赖JAVA程序JAVA测试程序测试文件测试结果部分文件提取失败参考连接 前言 Apache Tika提取文件整理如下,如有特定的文件需要提取可以先参照【部分文件提取失败】章节对照,以免浪费您的宝贵时间,…...
SSL数字证书服务
SSL/TLS 证书允许Web浏览器使用安全套接字层/传输层安全 (SSL/TLS) 协议识别并建立与网站的加密网络连接。 SSL数字证书主要功能 SSL证书在浏览器或用户计算机与服务器或网站之间建立加密连接。这种连接可以保护传输中的敏感数据免遭非授权方的拦截,从而使在线交易…...
浅谈安科瑞直流电表在荷兰光伏充电桩系统中的应用
摘要:本文介绍了安科瑞直流电表在荷兰光伏充电桩系统中的应用。主要用于充电桩的电流电压电能的计量。 Abstract: This article introduces the application of Acrel DC meters in PV charging pile system in Netherlands.The device is measuring current,volt…...
淘宝详情API接口怎么实现大数据分析和商品价格监控
一、引言 随着互联网的快速发展,大数据分析和价格监控成为了电商行业的关键环节。淘宝作为中国最大的电商平台之一,其详情API接口提供了丰富的商品信息,为大数据分析和价格监控提供了便利。本文将探讨如何使用淘宝详情API接口实现大数据分析…...
智能政务,办事更轻松!拓世法宝AI智慧政务数字人一体机,重新定义你的政务办理体验!
在构建现代化的政务服务体系中,高效、便捷是最重要的衡量标准。随着信息化技术的发展,很多政务服务已经实现了重要的线上办理,减轻了公民和企业的办事负担,同时也提升了政府部门的服务效率。可是,一些场景下的办事流程…...
WebBits库如何使用
WebBits 是一个用于构建 Web 应用程序的 Python 库。以下是使用 WebBits 库的一般步骤: 安装 WebBits:在终端或命令提示符中运行以下命令来安装 WebBits 库: pip install webbits 导入 WebBits 库:在 Python 脚本中导入 WebBits…...
通过netstat命令查看Linux的端口占用
一、netstat 完整写作network statistics,简写为netstat ,常用的几个参数为l、n、t、u、p。 -l : 仅展示监听状态下的程序(state 为LISTEN)。 -n :会使用ip端口的方式,来进行地址的描述。不使用-n就会变成服务器的名称…...
不用动脑小白也能制作出精美的电子杂志
随着互联网技术的发展和微信的普及程度,电子杂志制作已经受到越来越多人的关注,毕竟电子杂志的阅读便利性是纸质杂志无法比拟的。那如何制作一本精美的电子杂志呢? 这其实很easy,可以使用在线电子杂志制作平台FLBOOK ,…...
【计算系统】5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别
5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别 1. 超算2. 高性能计算3. 并行计算4. 分布式计算5. 网格计算6. 集群计算7. 云计算小结相关资料 1. 超算 超级计算机(Sup…...
6大场景,玩转ChatGPT!
文章目录 一、故事叙述提问举例 二、产品描述提问举例 三、报告撰写提问举例 四、邮件和信件撰写提问举例 五、新间稿和公告撰写提问举例 六、学术论文和专业文章撰写提问举例 本文是在GPT3.5版本下演示的 我们知道AI技术不仅能够自动生成文章和内容,还可以根据我们…...
工业废水再利用在哪些地方
工业废水再利用主要应用于以下几个方面: 工业生产:回收废水中含有的各种有价值的资源,如水、盐、油、悬浮物等,用于生产过程。预处理和深度处理:为满足工业生产过程对水质的要求,对废水进行预处理和深度处…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
