当前位置: 首页 > news >正文

【Proteus仿真】【STM32单片机】智能阳台控制系统

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用按键、LCD1604液晶、DHT11温湿度模块、PCF8591 ADC、光线传感器、PM2.5传感器、土壤湿度传感器、继电器、水泵、电灯、28BYJ48步进电机等。
主要功能:
系统运行后,LCD1604显示环境温湿度、光线、风速、PM2.5、土壤湿度,
窗帘和窗户开关状态;
若按下K4键可切换自动/手动模式,手动模式下,K1控制窗帘开关;
K2控制窗户开关;K5控制电灯开关;K6控制水泵开关;
在自动模式下,若按下K3键进入阈值设置模式,K3选择参数,
可通过K1和K2调节阈值,当设定好后按下K4键确定并退出设置界面;
如果光线太亮或者晚上,关闭窗帘;
如果晚上,检测有人,打开电灯,人离开关闭电灯;
如果PM2.5检测超限,关闭窗户,否则打开窗户;
如果土壤湿度高于上限,关闭水泵;
如果土壤湿度低于下限,打开水泵;


二、软件设计

/*
作者:嗨小易(QQ技术交流群:570487280)*///系统数据设置
void sys_data_set(void)
{u8 key=0;key=KEY_Scan(0);//模式设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>5)sys_ctrl.mode=1;sys_parm_set_show();//系统参数设置界面显示}//设置模式if(sys_ctrl.mode!=0){//加if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://光线下sys_ctrl.set_light[0]++;if(sys_ctrl.set_light[0]>99)sys_ctrl.set_light[0]=0;break;case 2://光线上sys_ctrl.set_light[1]++;if(sys_ctrl.set_light[1]>99)sys_ctrl.set_light[1]=0;break;case 3://PM2.5sys_ctrl.set_pm25++;if(sys_ctrl.set_pm25>255)sys_ctrl.set_pm25=0;break;case 4://土壤湿度低sys_ctrl.set_trhumi[0]++;if(sys_ctrl.set_trhumi[0]>99)sys_ctrl.set_trhumi[0]=0;break;case 5://土壤湿度高sys_ctrl.set_trhumi[1]++;if(sys_ctrl.set_trhumi[1]>99)sys_ctrl.set_trhumi[1]=0;break;}}//减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://光线下sys_ctrl.set_light[0]--;if(sys_ctrl.set_light[0]<0)sys_ctrl.set_light[0]=99;break;case 2://光线上sys_ctrl.set_light[1]--;if(sys_ctrl.set_light[1]<0)sys_ctrl.set_light[1]=99;break;case 3://PM2.5sys_ctrl.set_pm25--;if(sys_ctrl.set_pm25<0)sys_ctrl.set_pm25=255;break;case 4://土壤湿度低sys_ctrl.set_trhumi[0]--;if(sys_ctrl.set_trhumi[0]<0)sys_ctrl.set_trhumi[0]=99;break;case 5://土壤湿度高sys_ctrl.set_trhumi[1]--;if(sys_ctrl.set_trhumi[1]<0)sys_ctrl.set_trhumi[1]=99;break;}}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;sys_open_show();//系统开机界面显示}}//正常模式else{//自动手动if(key==KEY4_PRESS){sys_ctrl.auto_flag=!sys_ctrl.auto_flag;}//手动模式if(sys_ctrl.auto_flag==1){//窗帘开关if(key==KEY1_PRESS){sys_ctrl.cl_flag=!sys_ctrl.cl_flag;}//窗户开关else if(key==KEY2_PRESS){sys_ctrl.ch_flag=!sys_ctrl.ch_flag;}//电灯开关else if(key==KEY5_PRESS){DD_PIN=!DD_PIN;}//水泵开关else if(key==KEY6_PRESS){SB_PIN=!SB_PIN;}}}
}//系统功能控制
void sys_fun_ctrl(void)
{static u8 cl_oneflag=0;static u8 ch_oneflag=0;//自动模式if(sys_ctrl.auto_flag==0){//正常模式if(sys_ctrl.mode==0){//如果光线太亮或者晚上,关闭窗帘if(sys_ctrl.light>sys_ctrl.set_light[1]|| sys_ctrl.light<sys_ctrl.set_light[0]){sys_ctrl.cl_flag=0;}else{sys_ctrl.cl_flag=1;}//如果晚上,检测有人,打开电灯,人离开关闭电灯//如果晚上if(sys_ctrl.light<sys_ctrl.set_light[0]){//如果检测有人,打开电灯if(sys_ctrl.man==1){DD_PIN=0;}else DD_PIN=1;	}else{DD_PIN=1;}//如果PM2.5检测超限,关闭窗户,否则打开窗户if(sys_ctrl.pm25>sys_ctrl.set_pm25){sys_ctrl.ch_flag=0;LED_PIN=0;//指示灯打开}else{sys_ctrl.ch_flag=1;LED_PIN=1;//指示灯关闭}//如果土壤湿度高于上限,关闭水泵if(sys_ctrl.trhumi>sys_ctrl.set_trhumi[1]){SB_PIN=1;}//如果土壤湿度低于下限,打开水泵else if(sys_ctrl.trhumi<sys_ctrl.set_trhumi[0]){SB_PIN=0;}}}//窗帘打开if(sys_ctrl.cl_flag==1){if(cl_oneflag==0){step_motor_28BYJ48_send_pulse(4,cl_oneflag,STEPMOTOR_MAXSPEED,3,1);cl_oneflag=1;}}//窗帘关闭else{if(cl_oneflag==1){step_motor_28BYJ48_send_pulse(4,cl_oneflag,STEPMOTOR_MAXSPEED,3,1);cl_oneflag=0;}}//窗户打开if(sys_ctrl.ch_flag==1){if(ch_oneflag==0){step_motor2_28BYJ48_send_pulse(4,ch_oneflag,STEPMOTOR_MAXSPEED,3,1);ch_oneflag=1;}}//窗户关闭else{if(ch_oneflag==1){step_motor2_28BYJ48_send_pulse(4,ch_oneflag,STEPMOTOR_MAXSPEED,3,1);ch_oneflag=0;}}
}//应用控制系统
void appdemo_show(void)
{sys_parm_init();//系统参数初始化KEY_Init();DHT11_Init();ctrl_pin_init();pcf8591_init();step_motor_gpio_init();step_motor2_gpio_init();lcd1604_init();//LCD1604初始化sys_open_show();//系统初始界面显示while(1){sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制		}
}

三、实验现象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

相关文章:

【Proteus仿真】【STM32单片机】智能阳台控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用按键、LCD1604液晶、DHT11温湿度模块、PCF8591 ADC、光线传感器、PM2.5传感器、土壤湿度传感器、继电器、水泵、电灯、28BYJ48步进电机等。 主要…...

Manus AI Agent 技术解读:架构、机制与竞品对比

目录 1. Manus 是什么&#xff1f; 1.1 研发背景 1.2 技术特点 1.3 工具调用能力 1.4 主要应用场景 2. Manus 一夜爆火的原因何在&#xff1f; 2.1 技术突破带来的震撼 2.2 完整交付的产品体验 2.3 生态与开源策略 3. Manus 与其他 AI Agent 的对比分析 3.1 技术架构…...

【时间序列】因果推断:从时序数据中探寻“因”与“果”

在日常生活中&#xff0c;我们经常听到这样的问题&#xff1a;“为什么股票价格会突然下跌&#xff1f;”、“天气变化是否会影响销售额&#xff1f;”这些问题背后&#xff0c;其实都在试图寻找一种因果关系。然而&#xff0c;在时间序列数据中&#xff0c;探寻因果关系并不像…...

IDEA2023 使用枚举类型java: 非法字符: ‘\ufffd‘

一、异常&#xff1a; 二、原因 文件编码问题 IDE或文本编辑器的文件编码设置不正确&#xff0c;可能会导致在保存文件时引入了错误的字符。 三、解决 在IntelliJ IDEA中&#xff0c;你可以通过File -> Settings -> Editor -> File Encodings来设置。...

深度学习模型组件之优化器--基础优化器(GD、SGD、Mini-batch SGD)

深度学习模型组件之优化器–基础优化器&#xff08;GD、SGD、Mini-batch SGD&#xff09; 文章目录 深度学习模型组件之优化器--基础优化器&#xff08;GD、SGD、Mini-batch SGD&#xff09;1. 梯度下降&#xff08;Gradient Descent, GD&#xff09;1.1 基本原理1.2 优点与缺点…...

使用 AIStor、MLflow 和 KServe 将模型部署到 Kubernetes

在之前几篇关于 MLOps 工具的文章中&#xff0c;我展示了有多少流行的 MLOps 工具跟踪与模型训练实验相关的指标。我还展示了他们如何使用 MinIO 来存储作为模型训练管道一部分的非结构化数据。但是&#xff0c;一个好的 MLOps 工具应该做的不仅仅是管理您的实验、数据集和模型…...

宝塔 Linux 计划任务中添加运行项目网站PHP任务-定时任务

一、指定php版运行&#xff0c; cd /www/wwwroot/www.xxx.com/ && /www/server/php/56/bin/php think timedtasks start >> /tmp/timedtasks.log 2>&1 二、不指定php版 cd /www/wwwroot/www.xxx.com/ && php think timedtasks start >> …...

unity学习64,第3个小游戏:一个2D跑酷游戏

目录 学习参考 素材资源导入 1 创建项目 1.1 创建1个2D项目 1.2 导入素材 2 背景图bg 2.0 bg素材 2.1 创建背景 2.2 修改素材&#xff0c;且修改摄像机等 2.2.1 修改导入的原始prefab素材 2.2.2 对应调整摄像机 2.2.3 弄好背景 2.3 背景相关脚本实现 2.3.1 错误…...

rom定制系列------小米note3 原生安卓15 批量线刷 默认开启usb功能选项 插电自启等

小米Note 3搭载骁龙660处理器&#xff0c;1200万像素广角镜头、俗称大号版的小米6&#xff0c;官方最终版为12.0.1稳定版安卓9的固件。客户需要运行在安卓15的rom。根据原生官网的rom修改一些功能选项。以便客户操作需求。 定制资源说明 根据客户需求采用安卓15原生系统为底包…...

基于开源 AI 大模型、AI 智能名片及 S2B2C 商城小程序源码的个人 IP 用户运营策略研究

摘要&#xff1a;本文深入剖析了个人 IP 运营领域中用户运营的核心地位与关键作用&#xff0c;详细阐述了以拉新、留存和促活为主要方式的用户运营策略&#xff0c;旨在实现对用户的有效管理和用户价值的全面提升&#xff0c;进而延长用户生命周期&#xff0c;推动用户向消费者…...

什么是:马尔可夫博弈

什么是:马尔可夫博弈 马尔可夫博弈(Markov Game),也被称为随机博弈(Stochastic Game),是马尔可夫决策过程(MDP)在多智能体环境下的扩展。它描述了多个智能体在一个环境中相互作用的动态过程,每个智能体的决策不仅取决于当前环境状态,还会影响其他智能体的决策以及环…...

【探商宝】大数据企业销售线索平台:销售型公司的战略转型引擎

一、市场现状与销售型公司的核心痛点 在数字经济高速发展的2025年&#xff0c;全球企业获客成本较五年前增长超过300%&#xff0c;而B2B销售线索的平均转化率仍徘徊在15%-20%之间。这一矛盾背后&#xff0c;折射出传统销售模式的三重困境&#xff1a; ​数据孤岛导致决策滞后…...

用Ruby的Faraday库来进行网络请求抓取数据

在 Ruby 中&#xff0c;Faraday 是一个非常强大的 HTTP 客户端库&#xff0c;它可以用于发送 HTTP 请求并处理响应。你可以使用 Faraday 来抓取网页数据&#xff0c;处理 API 请求等任务。下面我将向你展示如何使用 Faraday 库进行网络请求&#xff0c;抓取数据并处理响应。 1.…...

Ubuntu的软件源

百度搜索 ubuntu清华镜像源 根据下面的网页&#xff0c;选择对应Ubuntu操作系统的源&#xff0c;一定要对应&#xff01;&#xff01;&#xff01; https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/上图的系统是16.04 xenial&#xff0c;这时就一定要使用16.04 xenial的源 …...

笔记五:C语言编译链接

Faye&#xff1a;孤独让我们与我们所爱的人相处的每个瞬间都无比珍贵&#xff0c;让我们的回忆价值千金。它还驱使你去寻找那些你在我身边找不到的东西。 ---------《寻找天堂》 目录 一、编译和链接的介绍 1.1 程序的翻译环境和执行环境 1.1.1 翻译环境 1.1.2 运行环境 …...

GitCode 助力 vue3-element-admin:开启中后台管理前端开发新征程

源码仓库&#xff1a; https://gitcode.com/youlai/vue3-element-admin 后端仓库&#xff1a; https://gitcode.com/youlai/youlai-boot 开源助力&#xff0c;开启中后台快速开发之旅 vue3-element-admin 是一款精心打造的免费开源中后台管理前端模板&#xff0c;它紧密贴合…...

SyntaxError: Invalid regular expression flag “x“

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

HiveServer2与Spark ThriftServer详细介绍对比

HiveServer2与Spark ThriftServer详细介绍对比 1、概述 1.1 HiveServer2 是 Apache Hive 提供的基于 Thrift 的服务进程&#xff0c;用于让远程客户端执行 Hive SQL 查询 ([一起了解一下HiveServer2 - zourui4271 - 博客园]。它是早期 HiveServer1 的改进版本&#xff0c;引入…...

ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)

1.开发板配置 本人开发板使用ESP32S3-wroom1-n16r8最小系统板 由于基于vscode与PlatformIO框架开发&#xff0c;无espidf框架&#xff0c;因此无法直接烧录程序&#xff0c;配置开发板参数如下&#xff1a; 在platformio.ini文件中&#xff0c;配置使用esp32-s3-devkitc-1开发…...

软考初级程序员知识点汇总

以下是计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称“软考”&#xff09;中 程序员&#xff08;初级&#xff09; 考试的核心知识点汇总&#xff0c;涵盖考试大纲的主要方向&#xff0c;帮助你系统复习&#xff1a; 一、计算机基础 计算机组…...

STM32L152RE 32MHz时钟配置库:超低功耗MCU高频稳定启动方案

1. 项目概述ST_L152_32MHZ是一个专为 STMicroelectronics Nucleo-L152RE 开发板设计的轻量级时钟配置库&#xff0c;其核心目标是将系统主频&#xff08;SYSCLK&#xff09;从出厂默认的 32 kHz LSE 或 16 MHz HSI 稳定提升至32 MHz&#xff0c;并确保所有关键外设时钟&#xf…...

避坑指南:UR5e机器人SpeedL模式下的笛卡尔空间控制,如何避免奇异点和超限?

UR5e机器人SpeedL模式避坑实战&#xff1a;笛卡尔空间控制的三大安全策略 实验室里&#xff0c;机械臂突然发出刺耳的警报声——这可能是每个UR5e初学者都经历过的噩梦。当你在笛卡尔空间用SpeedL指令控制机器人画复杂轨迹时&#xff0c;关节超限、奇异点问题和自碰撞就像三个隐…...

Phi-4-Reasoning-Vision行业落地:教育领域图像题解与隐藏线索识别案例

Phi-4-Reasoning-Vision行业落地&#xff1a;教育领域图像题解与隐藏线索识别案例 1. 项目背景与价值 在教育领域&#xff0c;图像题解和隐藏线索识别一直是教学和考试中的难点。传统方法依赖人工标注和分析&#xff0c;效率低下且容易遗漏关键信息。Phi-4-Reasoning-Vision多…...

ABC系统实战指南:逻辑综合与形式验证的数字电路设计工具

ABC系统实战指南&#xff1a;逻辑综合与形式验证的数字电路设计工具 【免费下载链接】abc ABC: System for Sequential Logic Synthesis and Formal Verification 项目地址: https://gitcode.com/gh_mirrors/ab/abc 在现代数字电路设计流程中&#xff0c;逻辑综合与形式…...

开源风扇控制工具FanControl全攻略:从问题诊断到散热方案优化

开源风扇控制工具FanControl全攻略&#xff1a;从问题诊断到散热方案优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...

[深度解析] AXI4-Stream Register Slice:时序优化的“外科手术刀”

1. 为什么需要AXI4-Stream Register Slice&#xff1f; 在FPGA设计中&#xff0c;时序问题就像血管中的血栓&#xff0c;随时可能让整个系统瘫痪。想象你正在设计一个4K视频处理流水线&#xff0c;每个像素都要经过十几级处理模块。当系统时钟频率提升到300MHz以上时&#xff0…...

简述双亲委派机制以及其优点

面试 概念&#xff1a;加载类的时候先交给自己的父类加载器执行&#xff0c;直到顶层的启动类加载器&#xff0c;如果父加载器能够完成加载&#xff0c;则交给父类加载器&#xff0c;否则自己尝试加载。 优点&#xff1a;保证类的加载的安全性&#xff0c;避免类的重复加载。...

FPGA信号调试必备:Quartus中keep、preserve、noprune的正确用法与避坑指南

FPGA信号调试必备&#xff1a;Quartus中keep、preserve、noprune的正确用法与避坑指南 在FPGA开发过程中&#xff0c;信号调试是最令人头疼的环节之一。特别是当你发现仿真时明明存在的关键信号&#xff0c;在综合后却神秘消失时&#xff0c;那种挫败感简直难以言表。作为一名长…...

ANPC逆变器下垂控制的“阻抗相消术

ANPC-下垂功率均分-两台ANPC三电平逆变器在不同阻感性线路阻抗下实现有功均分与无功均分&#xff0c;采用积分改进法&#xff08;阻抗相消法&#xff09;&#xff0c;电压电流双闭环控制&#xff0c;中点电位平衡控制&#xff0c;SPWM调制。 1.下垂&#xff0c;电压电流双闭环控…...

Obsidian Full Calendar:5步构建个人知识与时间管理一体化系统

Obsidian Full Calendar&#xff1a;5步构建个人知识与时间管理一体化系统 【免费下载链接】obsidian-full-calendar Keep events and manage your calendar alongside all your other notes in your Obsidian Vault. 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian…...