基于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技术不仅能够自动生成文章和内容,还可以根据我们…...

工业废水再利用在哪些地方
工业废水再利用主要应用于以下几个方面: 工业生产:回收废水中含有的各种有价值的资源,如水、盐、油、悬浮物等,用于生产过程。预处理和深度处理:为满足工业生产过程对水质的要求,对废水进行预处理和深度处…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...