STM32智能开关窗设备
功能需求
根据是否有雨水;湿度的高低;风力的大小;防盗监控功能;烟雾探测功能。自动开关窗户的设备。通过APP设置,具体湿度大小、风力大小、开关窗时间等阈值,并且实时参数显示在APP上。
具体要求
开关窗就用继电器的闭合和开启来模拟。
有雨关窗;没雨开窗。
室外湿度大于等于70%关窗;小于70%开窗。
风力大于等于8米每秒关窗;小于8米每秒开窗。
防盗就是比如红外震动的时候关窗;防盗触发后,8小时内不开窗,除非有烟雾才开窗。
检测到有烟雾开窗;触发后,如果1小时内检测不到烟雾,且满足所有关窗条件时,自动关窗。
优先级:烟雾(有烟雾必须开窗,没烟雾再看下一优先级)>防盗(防盗触发后不开窗,防盗未触发再看下一优先级)>雨滴=风力=湿度
雨滴、风力、湿度,三者同时满足开窗条件(没雨、风力小于8米每秒、湿度小于70%)才开窗;
雨滴、风力、湿度,三者满足任意一项关窗条件(有雨、风力大于等于8米每秒、湿度大于等于70%)就要关窗。
实物
原理图
APP界面
单片机部分代码
#include "system.h"
#include "in.h"
#include "out.h"
#include "adc.h"
#include "dht11.h"
#include "GeneralTim.h"
#include "bluetooth.h"typSYSTEM SYSTEM_ST = {0};
typSETTING SETTING_ST = {0};u8 NEW_FLAG;
u8 OLD_FLAG = 0;
u8 CLOSE_FLAG = 0;
u8 OPEN_FLAG = 0;void SYSTEM(void)
{IN();ADC();DHT11();if(SYSTEM_ST.smoke)//有烟 {OUT1_ON;//开窗NEW_FLAG = 1;SYSTEM_ST.window_state = 1;//窗状态:窗开SYSTEM_ST.window_reason = 0;//开窗原因:有烟TIM_Cmd(GENERAL_TIM3, ENABLE);//开启定时器3,定时1小时CLOSE_FLAG = 1;}else if(SYSTEM_ST.smoke == 0)//无烟{if(CLOSE_FLAG == 0){if(SYSTEM_ST.thief)//有贼{OUT1_OFF;//关窗NEW_FLAG = 0;SYSTEM_ST.window_state = 0;//窗状态:窗关SYSTEM_ST.window_reason = 1;//关窗原因:有贼TIM_Cmd(GENERAL_TIM4, ENABLE);//开启定时器4,定时8小时OPEN_FLAG = 1;}else if(SYSTEM_ST.thief == 0)//无贼{if(OPEN_FLAG == 0){if(SYSTEM_ST.rain == 0 && SYSTEM_ST.wind < SETTING_ST.wind_setting && SYSTEM_ST.humi < SETTING_ST.himi_setting)//无雨,并风速小于设定值,并湿度小于设定值{OUT1_ON;//开窗NEW_FLAG = 1;SYSTEM_ST.window_state = 1;//窗状态:窗开SYSTEM_ST.window_reason = 2;//开窗原因:同时满足条件}else if(SYSTEM_ST.rain == 1 || SYSTEM_ST.wind >= SETTING_ST.wind_setting || SYSTEM_ST.humi >= SETTING_ST.himi_setting)//有雨,或风速大于等于设定值,或湿度大于等于设定值{OUT1_OFF;//关窗NEW_FLAG = 0;SYSTEM_ST.window_state = 0;//窗状态:窗关if(SYSTEM_ST.rain){SYSTEM_ST.window_reason = 3;//关窗原因:有雨}else if(SYSTEM_ST.wind >= SETTING_ST.wind_setting){SYSTEM_ST.window_reason = 4;//关窗原因:风力大于等于设定值}else if(SYSTEM_ST.humi >= SETTING_ST.himi_setting){SYSTEM_ST.window_reason = 5;//关窗原因:湿度大于等于设定值}}}}}}if(NEW_FLAG != OLD_FLAG){BLUETOOTH_SendData2_Process();OLD_FLAG = NEW_FLAG;}
}
STM32智能开关窗设备相关推荐
- STM32配置组合设备(HID+CDC)
STM32组合设备 STM32配置组合设备(HID+CDC) 1. CDC基础工程,HID基础工程生成 2.USB工程熟悉 2.1 USB初始化 2.2USB中断 2.3 相关结构体 2.3.1 ` ...
- STM32 USB组合设备HID+MIDI
目的:完成一个HID + MIDI的组合设备 准备工作: ·用CUBE生成HID工程: ·复制一份工程修改为MIDI工程:(参考之前博客已完成这两个工程) ·新建USB_User文件夹,将USB相关配 ...
- 关于STM32的USB设备库DIY机械键盘
前言 为什么想写这个呢,首先一方面是因为自己喜欢DIY一些小玩意,另一方面关于USB-HID的东西断断续续的学习了不少东西,想总结整理一下.其次就是网络上关于STM32制作USB-HID的案例很多,我 ...
- 在ubuntu下设置eclipse开发STM32等嵌入式设备
之前为了能够让ROS与底层能够顺利通讯,我采用可开源开发板arduino ,因为arduino有ROS的库,能够按照ROS wiki上所给的教程就可以顺利的开发,但由于arduino的局限性,我觉得是 ...
- stm32自定义usb_HID设备
Usb自定义HID设备(游戏控制器)总结工程是由cubemx创建的不会创建的可以参考文章最后链接.该链接教程为未定义输入输出设备,本教程为游戏控制器属于输入设备.在建立好USB工程之后,我们主要修改的 ...
- 【RT-Thread】STM32的UART设备读取GPS数据
目录 前言 1. 开发环境搭建 2. RTT Studio创建工程 3. CubeMX配置系统时钟 4. SConscript构建目录 5. UART设备驱动程序 6. 获取GPS定位信息 小结 前言 ...
- 【STM32学习】 基于STM32 USB存储设备的w25qxx自动判断容量检测
简介 使用STM32USB功能配置成Mass Storage Class 存储介质使用w25qxx做U盘时,发现一个比较好玩的事情. 当换不同容量的存储介质时需要改下程序,显示不同的大小. 更改usb ...
- stm32——自定义HID设备
一.开发环境 硬件平台:stm32f767 软件平台:keil5,cubmx 二.cubemx创建工程 1.配置RCC 2.USB_OTG_FS,选择Device_Only模式 3.Middlewar ...
- 面向对象编程 面向过程编程_面向对象的编程真的是死定了
面向对象编程 面向过程编程 重点(Top highlight) Programming in the 1960s had a big problem: computers weren't that p ...
最新文章
- 中体骏彩C++面试题
- 2017寒假第一篇随笔(寒假作业一)
- OutOFMemoryError
- LeetCode 1442. 形成两个异或相等数组的三元组数目(前缀异或)
- delay在java中有什么用_DelayQueue怎么在Java多线程并发开发中使用
- Java servlet ajax
- Nginx+PHP(FastCGI)环境搭建
- 爆竹声中一岁除,春风送暖入屠苏
- 9.1.4 前端 - HTML body标签 - 标题,段落,分割线,换行,特殊符号,列表,超链接,图片,div/span,表格,表单,input标签,多行文本,单选/多选,下拉,按钮...
- 一文彻底看懂Base64原理(并使用java实现)
- uniapp跳转指定小程序
- 计算机系固态硬盘机械硬盘,固态硬盘和机械硬盘可以在一起使用吗?
- 中央处理器(CPU)—— 控制器的功能和基本原理(微程序控制器(CU))
- Linux 系统日常维护
- 布道微服务_03服务的发布和引用
- 小学生C++编程基础 课程6(共9题)
- idea maven 本地仓库有但是引不进来问题记录
- 【ThreeJS基础教程-初识Threejs】1.3 右手坐标系
- Linux的远程终端连不上,Linux系统远程连接终端连接不上怎么办
- css 半透明尖角上下调过来,不和背景色重叠