【毕业设计项目】基于STM32智能窗户 电子信息 物联网等 可以手机APP控制

您所在的位置:网站首页 智能开关成果简介 【毕业设计项目】基于STM32智能窗户 电子信息 物联网等 可以手机APP控制

【毕业设计项目】基于STM32智能窗户 电子信息 物联网等 可以手机APP控制

2024-07-15 14:58| 来源: 网络整理| 查看: 265

文章目录 一、项目简介1.功能组成概括2.本项目主要使用到的技术 二、项目组成三、原理图设计四、源码设计五、APP设计六、成品展示 项目视频 哔哩哔哩视频链接: 1项目介绍 2原理图绘制 3程序讲解 4成品展示

一、项目简介

本设计是一款基于STM32单片机的智能窗户系统,使用STM32F103C8T6单片机作为核心控制部分,使用DH11温湿度传感器来采集环境温湿度,使用红外对射传感器来检测是否有人入侵,使用雨滴传感器来检测是否下雨,使用独立按键来切换模式与开关窗,使用OLED显示屏来作为显示部分,使用蜂鸣器用来警报,使用ULN2003步进电机驱动板和步进电机来模拟窗户,使用ESP8266_WIFI模块来进行网络传输,将数据上传到ONENET云平台,同时使用APP inventor2制作APP获取传输到ONENET云平台的数据进行手机远程监控功能。

1.功能组成概括

在这里插入图片描述

2.本项目主要使用到的技术

1.单总线-DHT11温湿度传感器 2.ADC-YL69雨滴传感器 3.串口-ESP8266_WIFI模块 4.定时器 5.SPI -OLED显示屏

二、项目组成

在这里插入图片描述

三、原理图设计

在这里插入图片描述

四、源码设计

部分截图 在这里插入图片描述 main.c

//单片机头文件 #include "stm32f10x.h" //网络协议层 #include "onenet.h" //网络设备 #include "net_device.h" //硬件驱动 #include "led.h" #include "oled.h" #include "delay.h" #include "usart.h" #include "hwtimer.h" #include "SysTick.h" #include "system.h" #include "iwdg.h" #include "fault.h" #include "selfcheck.h" #include "info.h" #include "dht11.h" #include "adc.h" #include "lsens.h" #include "hwds.h" #include "key.h" //C库 #include #define Z1 GPIO_ResetBits(GPIOB,B1);GPIO_SetBits(GPIOB,B2);GPIO_SetBits(GPIOB,B3);GPIO_SetBits(GPIOB,B4); #define Z2 GPIO_SetBits(GPIOB,B1);GPIO_ResetBits(GPIOB,B2);GPIO_SetBits(GPIOB,B3);GPIO_SetBits(GPIOB,B4); #define Z3 GPIO_SetBits(GPIOB,B1);GPIO_SetBits(GPIOB,B2);GPIO_ResetBits(GPIOB,B3);GPIO_SetBits(GPIOB,B4); #define Z4 GPIO_SetBits(GPIOB,B1);GPIO_SetBits(GPIOB,B2);GPIO_SetBits(GPIOB,B3);GPIO_ResetBits(GPIOB,B4); #define ZZ Z1;delay_ms(t);Z2;delay_ms(t);Z3;delay_ms(t);Z4;delay_ms(t);//正转 #define F1 GPIO_ResetBits(GPIOB,B4);GPIO_SetBits(GPIOB,B3);GPIO_SetBits(GPIOB,B2);GPIO_SetBits(GPIOB,B1); #define F2 GPIO_SetBits(GPIOB,B4);GPIO_ResetBits(GPIOB,B3);GPIO_SetBits(GPIOB,B2);GPIO_SetBits(GPIOB,B1); #define F3 GPIO_SetBits(GPIOB,B4);GPIO_SetBits(GPIOB,B3);GPIO_ResetBits(GPIOB,B2);GPIO_SetBits(GPIOB,B1); #define F4 GPIO_SetBits(GPIOB,B4);GPIO_SetBits(GPIOB,B3);GPIO_SetBits(GPIOB,B2);GPIO_ResetBits(GPIOB,B1); #define FZ F1;delay_ms(t);F2;delay_ms(t);F3;delay_ms(t);F4;delay_ms(t);//反转 #define TZ GPIO_ResetBits(GPIOB,B4);GPIO_ResetBits(GPIOB,B3);GPIO_ResetBits(GPIOB,B2);GPIO_ResetBits(GPIOB,B1); u8 temperature; u8 humidity; u8 shuidi; _Bool W_M=0;//0窗户关 1窗户开 _Bool C_M=0; //0儿童模式关 1儿童模式开 _Bool M_S=0;//0自动模式 1手动模式 _Bool R=0;//0无人 1有人 _Bool RAIN=0;//0没下雨 1下雨 //数据流 DATA_STREAM dataStream[] = { {"wendu", &temperature, TYPE_UCHAR, 1}, {"shidu", &humidity, TYPE_UCHAR, 1}, {"RAIN", &RAIN, TYPE_BOOL, 1}, {"R", &R, TYPE_BOOL, 1}, {"W_M", &W_M, TYPE_BOOL, 1}, {"C_M", &C_M, TYPE_BOOL, 1}, {"moshi", &M_S, TYPE_BOOL, 1}, }; unsigned char dataStreamLen = sizeof(dataStream) / sizeof(dataStream[0]); /* ************************************************************ * 函数名称: Hardware_Init * * 函数功能: 硬件初始化 * * 入口参数: 无 * * 返回参数: 无 * * 说明: 初始化单片机功能以及外接设备 ************************************************************ */ void Hardware_Init(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断控制器分组设置 Delay_Init(); //systick初始化 Led_Init(); //LED初始化 B_Init(); Usart1_Init(115200); //初始化串口 115200bps netDeviceInfo.reboot = 0; TIM2_Int_Init(49, 35999); //72MHz,36000分频-500us,50重载值。则中断周期为500us * 50 = 25ms TIM3_Int_Init(1999, 35999); //72MHz,36000分频-500us,2000重载值。则中断周期为500us * 2000 = 1s //定时检查网络状态标志位 UsartPrintf(USART_DEBUG, "3.Hardware init OK\r\n"); //提示初始化完成 } /* ************************************************************ * 函数名称: main * * 函数功能: * * 入口参数: 无 * * 返回参数: 0 * * 说明: ************************************************************ */ int main(void) { u16 i; u8 k; unsigned char *dataPtr; unsigned int runTime = 0; u8 t=3; _Bool sendFlag = 0; SysTick_Init(72); Hardware_Init(); //硬件初始化 NET_DEVICE_IO_Init(); //网络设备IO初始化 NET_DEVICE_Reset(); //网络设备复位 NET_DEVICE_Set_DataMode(DEVICE_CMD_MODE); //设置为命令收发模式(例如ESP8266要区分AT的返回还是平台下发数据的返回) OLED_Init(); DHT11_Init(); Adc_Init(); Lsens_Init(); KEY_Init(); Hwds_Init(); OLED_ShowCHinese(0,0,0); OLED_ShowCHinese(15,0,2); OLED_ShowCHinese(60,0,1); OLED_ShowCHinese(75,0,2); OLED_ShowCHinese(0,2,3); OLED_ShowCHinese(15,2,4); OLED_ShowCHinese(30,2,5); OLED_ShowCHinese(45,2,6); OLED_ShowCHinese(0,4,7); OLED_ShowCHinese(15,4,8); OLED_ShowCHinese(30,4,9); OLED_ShowCHinese(45,4,10); OLED_ShowCHinese(80,4,12); OLED_ShowCHinese(0,6,13); OLED_ShowCHinese(15,6,14); OLED_ShowCHinese(30,6,15); OLED_ShowCHinese(45,6,16); OLED_ShowCHinese(80,6,17); while(1) { DHT11_Read_Data(&temperature,&humidity); //读取温湿度值 shuidi=Shuidi_Get_Val(); //OLED_ShowNum(100,2,shuidi,3,16); OLED_ShowNum(35,0,temperature,3,16); OLED_ShowNum(90,0,humidity,3,16); //非儿童保护模式 if(C_M==0) { //如果是自动模式 if(M_S==0)//自动模式 { if(shuidi>60) //表示下雨 { RAIN=1; OLED_ShowCHinese(80,2,3); //如果窗户是开的,则关窗 if(W_M==1) { for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3