功能需求
根据是否有雨水;湿度的高低;风力的大小;防盗监控功能;烟雾探测功能。自动开关窗户的设备。通过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智能开关窗设备相关推荐

  1. STM32配置组合设备(HID+CDC)

    STM32组合设备 STM32配置组合设备(HID+CDC) 1. CDC基础工程,HID基础工程生成 2.USB工程熟悉 2.1 USB初始化 2.2USB中断 2.3 相关结构体 2.3.1 ` ...

  2. STM32 USB组合设备HID+MIDI

    目的:完成一个HID + MIDI的组合设备 准备工作: ·用CUBE生成HID工程: ·复制一份工程修改为MIDI工程:(参考之前博客已完成这两个工程) ·新建USB_User文件夹,将USB相关配 ...

  3. 关于STM32的USB设备库DIY机械键盘

    前言 为什么想写这个呢,首先一方面是因为自己喜欢DIY一些小玩意,另一方面关于USB-HID的东西断断续续的学习了不少东西,想总结整理一下.其次就是网络上关于STM32制作USB-HID的案例很多,我 ...

  4. 在ubuntu下设置eclipse开发STM32等嵌入式设备

    之前为了能够让ROS与底层能够顺利通讯,我采用可开源开发板arduino ,因为arduino有ROS的库,能够按照ROS wiki上所给的教程就可以顺利的开发,但由于arduino的局限性,我觉得是 ...

  5. stm32自定义usb_HID设备

    Usb自定义HID设备(游戏控制器)总结工程是由cubemx创建的不会创建的可以参考文章最后链接.该链接教程为未定义输入输出设备,本教程为游戏控制器属于输入设备.在建立好USB工程之后,我们主要修改的 ...

  6. 【RT-Thread】STM32的UART设备读取GPS数据

    目录 前言 1. 开发环境搭建 2. RTT Studio创建工程 3. CubeMX配置系统时钟 4. SConscript构建目录 5. UART设备驱动程序 6. 获取GPS定位信息 小结 前言 ...

  7. 【STM32学习】 基于STM32 USB存储设备的w25qxx自动判断容量检测

    简介 使用STM32USB功能配置成Mass Storage Class 存储介质使用w25qxx做U盘时,发现一个比较好玩的事情. 当换不同容量的存储介质时需要改下程序,显示不同的大小. 更改usb ...

  8. stm32——自定义HID设备

    一.开发环境 硬件平台:stm32f767 软件平台:keil5,cubmx 二.cubemx创建工程 1.配置RCC 2.USB_OTG_FS,选择Device_Only模式 3.Middlewar ...

  9. 面向对象编程 面向过程编程_面向对象的编程真的是死定了

    面向对象编程 面向过程编程 重点(Top highlight) Programming in the 1960s had a big problem: computers weren't that p ...

最新文章

  1. 中体骏彩C++面试题
  2. 2017寒假第一篇随笔(寒假作业一)
  3. OutOFMemoryError
  4. LeetCode 1442. 形成两个异或相等数组的三元组数目(前缀异或)
  5. delay在java中有什么用_DelayQueue怎么在Java多线程并发开发中使用
  6. Java servlet ajax
  7. Nginx+PHP(FastCGI)环境搭建
  8. 爆竹声中一岁除,春风送暖入屠苏
  9. 9.1.4 前端 - HTML body标签 - 标题,段落,分割线,换行,特殊符号,列表,超链接,图片,div/span,表格,表单,input标签,多行文本,单选/多选,下拉,按钮...
  10. 一文彻底看懂Base64原理(并使用java实现)
  11. uniapp跳转指定小程序
  12. 计算机系固态硬盘机械硬盘,固态硬盘和机械硬盘可以在一起使用吗?
  13. 中央处理器(CPU)—— 控制器的功能和基本原理(微程序控制器(CU))
  14. Linux 系统日常维护
  15. 布道微服务_03服务的发布和引用
  16. 小学生C++编程基础 课程6(共9题)
  17. idea maven 本地仓库有但是引不进来问题记录
  18. 【ThreeJS基础教程-初识Threejs】1.3 右手坐标系
  19. Linux的远程终端连不上,Linux系统远程连接终端连接不上怎么办
  20. css 半透明尖角上下调过来,不和背景色重叠

热门文章

  1. LeetCode 810 Chalkboard XOR Game【思维】
  2. win10背景色改成豆沙绿 锁屏后失效修改方式
  3. 14《游戏化思维》-豆瓣评分7.0
  4. 八字易经算法之用JAVA实现硬币卜卦辅助工具
  5. 前端导出excel自定义样式(行高除外)
  6. 恒讯科技资讯分享:境外服务器知识科普
  7. FPGA入门经历的阶段
  8. 【测试】黑盒测试(功能性测试)和白盒测试
  9. Java 公历转农历,然后农历减一年(或者几天或者任意天),再把这个日期转成公历...
  10. 从原理到实现 | 如何通过球面投影将点云转换为Range图像