基于stm32的智能家居系统

目录

1.课题研究目的和内容

1.1 课题研究目的

1.2 课题研究内容

2.系统总体方案设计及功能模块介绍

2.1 总体方案设计

2.2  DHT11模块介绍

2.3  TFTLCD显示功能模块介绍

2.4  ESP8266WIFI模块介绍

2.5  MQ-135 空气质量模块介绍

2.6  步进电机模块介绍

2.7  光敏传感器模块介绍

3.系统硬件设计与实现

3.1 系统硬件实物图

3.2  STM32F103ZET6

3.3  DHT11模块

3.4  TFTLCD显示模块设计与实现

3.5  Esp8266模块设计与实现

3.6  MQ-135模块设计与实现

3.7  光敏传感器模块设计与实现

4.系统软件设计与实现

4.1主程序设计与实现

4.2 步进电机模块子程序

4.3 TFTLCD显示子程序

5.系统测试

5.1系统软件测试

5.2系统硬件测试

6.总结与展望

1.课题研究目的和内容

1.1 课题研究目的

智能家居,或称智能住宅,是以住宅为平台,兼备建筑设备、网络通讯、信息家电和设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。它在保持了传统的居住功能的基础上,摆脱了被动模式,成为具有能动性智能化的现代工具。智能家居不仅提供了全方位的信息交换功能,还优化了人们的生活方式和居住环境,帮助人们有效地安排时间、节约各种能源,实现了家电控制、照明控制、室内外遥控、窗帘自控、防盗报警、计算机控制、定时控制以及电话远程遥控等功能。

1.2 课题研究内容

随着科学技术的快速发展以及经济水平的提升,人们对于生活质量有了更高的追求。传统家电产品性能已发展到极限,难有大幅度上升。传统家电行业急需创新产品,时下最热门的人工智能便成了行业突破口。因此,智能家居成为了家电大厂和互联网巨头的必争红海。本文介绍的智能云家居共有三大部分:第一部分采用了STM32F103ZET6作为主控芯片,由数据采集系统、数据处理系统、数据云传输系统以及智能家居智能调节系统构成;第二部分采用了多种传感器和ESP8266 WIFI模块搭建一个具有远程控制的智能家居控制系统,实现家居环境的远程监测与家电控制;第三部分手机APP端通过云平台的数据共享,即可实现远程对家居设备的控制以及家庭温湿度等环境信息的实时查看。

2.系统总体方案设计及功能模块介绍

2.1 总体方案设计

涉及技术:物联网感知与识别技术、C语言、无线传感网络

开发环境:keil5

平台及其功能

平台:ONENET云平台、微信小程序

图2-1-1 WIFI通信模块流程图

图2-1-2传感器数据采集模块流程图

2.2  DHT11模块介绍 

DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,内部由一个 8 位单片机控制一个电阻式感湿元件和一个 NTC 测温元件。DHT11 是采用单总线协议, DHT11 既能检测温度又能检测湿度,其温度测量范围为 0~50℃,误差在±2℃;湿度的测量范围为 20%~90%RH,误差在±5%RH。

图2-2-1温度传感器

2.3  TFTLCD显示功能模块介绍 

本次设计使用的4.3TFTLCD。分辨率为800*480,16 位真彩显示,自带触摸屏,可以用来作为控制输入。LCD 接口连接在 STM32F103ZET6 的 FSMC 总线上面,可以显著提高 LCD 的刷屏速度。

图2-3-1LED显示屏

2.4  ESP8266WIFI模块介绍 

ESP8266是一种强大的WIFI模块,它由ESPRESSIF SYSTEMS公司开发,可以实现与网络通信的功能。ESP8266在物联网中被广泛使用,可以通过串行通信接口连接到微控制器,例如Arduino,以实现智能家居、智能灯光、智能车辆等应用场景。

图2-4-1  Esp8266

2.5  MQ-135 空气质量模块介绍 

MQ135空气质量传感器是MQ气体传感器的一种,用于检测、测量和监测空气中存在的各种气体,如氨、酒精、苯、烟雾、二氧化碳等。它在5V电源和150mA下工作消耗。需要注意,在操作前需要预热20秒,以获得准确的输出。

2.5  MQ-135 空气质量模块介绍 

MQ135空气质量传感器是MQ气体传感器的一种,用于检测、测量和监测空气中存在的各种气体,如氨、酒精、苯、烟雾、二氧化碳等。它在5V电源和150mA下工作消耗。需要注意,在操作前需要预热20秒,以获得准确的输出。

图2-5-1  空气质量传感器        图2-5-2  空气质量传感器引脚连接图

2.6  步进电机模块介绍 

步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。当步进驱动器接收到一个脉冲信号时,它就可以驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”。步进电机的旋转是以固定的角度一步一步运行的,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时可以通过控制脉冲频率,来控制电机转动的速度和加速度,从而达到调速的目的。

图2-6-1  步进电机

2.7  光敏传感器模块介绍 

光敏传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。 光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可 。

图2-7-1  光敏传感器

3.系统硬件设计与实现

3.1 系统硬件实物图

图3-1-1 系统硬件实物图

3.2  STM32F103ZET6

STM32系列产品基于ARM Cortex-M0,M0+,M3,M4和M7内核,具有高性能、低成本、低功耗等特点,适用于各种嵌入式应用开发。

本次设计采用STM32F103ZET6开发板,共有54个可供用户使用的引脚,以及一个34引脚的LCD屏幕插槽。属于中低端的32位ARM微控制器,基于高性能内核Cortex-M3,频率约为1.25DMips/MHz。拥有1μs的双12位ADC,4M/s的UART,18MHz的I/O翻转速度,18M/s的SPI。同时保持低功耗的特点。该芯片集成了UART,USB,定时器,ADC,CAN,I2C,SPI等多项功能。是一款非常常用的微型控制器。STM32系列产品成本比51单片机要高出不少,但其性能及可供使用引脚也较之提高不少,相信随着成本的不断降低,市场上将会有更多基于STM32的诸如医疗用品、电力电子系统应用、编程控制器、电机驱动、警报系统等产品。原理图如下图所示。

图3-2-1 STM32F103ZET6原理图

3.3  DHT11模块 

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。

传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。DHT11的供电电压为3-5.5V。传感器上电后,要等待1s以越过不稳定状态,在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。

图3-3-1  dht11引脚图

3.4  TFTLCD显示模块设计与实现

图3-4-1  TFTLCD引脚图

 

TFTLCD引脚如图,图中的CS:TFTLCD片选信号WR:TFTLCD 写入数据RD:从TFTLCD读取数据D[15:0]:16位双向数据线RST:硬复位TFT LCDRS:命令/数据标志(0,读写命令;1,读写数据)。

3.5  Esp8266模块设计与实现

ESP8266是一款高性能的WIFI串口模块,内部集成MCU能实现单片机之间串口通信,是目前使用最广泛的一种WIFI模块之一可以简单理解为一个WIFI转串口的设备

序号

名称

说明

1

VCC

电源(3.3V~5V)

2

GND

电源地

3

TXD

模块串口发送脚

4

RXD

模块串口接收脚

5

RST

复位(低电平有效)

6

IO

用于进入固件烧写模式

ESP8266 模块支持 LVTTL 串口,兼容 3.3V 和 5V 单片机系统

图3-5-1 ESP8266原理图

3.6  MQ-135模块设计与实现

气体传感器所使用的气敏材料是在清洁空气导电率较低的二氧化锡,当传感器所处环境中存在污染气体时,传感器的导电率随空气中污染气体浓度的增加而增大,使用简单的电路即可将电导率的变化换为与该气体浓度相对应的输出信号。

图3-6-1MQ135模块原理图

3.7  光敏传感器模块设计与实现

ALIENTEK 战舰 STM32F103 板载了一个光敏传感器,可以用来感应周围光线的变化,该 部分电路如图所示:

图3-7-1光敏模块原理图

图中的 LS1 就是光敏传感器,其实就是一个光敏二极管,周围环境越亮,电流越大,反之 电流越小,即可等效为一个电阻,环境越亮阻值越小,反之越大,从而通过读取 LIGHT_SENSOR的电压,即可知道周围环境光线强弱。LIGHT_SENSOR 连接在 MCU ADC3_IN6ADC3 通道 6)上面,即 PF8 引脚。

4.系统软件设计与实现

4.1主程序设计与实现 

当系统接入电源并打开开发板开关后,主程序将会自动完成系统的初始化工作,主要包括头文件及一些变量定义的初始化。随后通过ESP8266连接网络,再启动TFTLCD模块显示获取到的传感器的数据,再从云平台获取数据对步进电机和灯进行控制系统主程序流程图如图4-1-1所示。

图4-1-1 主程序流程图

主要代码如下所示:

 while (1){DHT11_Read_Data(&tempValue,&humidity);	// 读取温湿度值if (t == 10){t = 0;adcx=Lsens_Get_Val();numToString(adcx);printf("light: %s, ", strValue);LCD_ShowString(30,170,200,16,16,(u8 *)strValue);esp8266_str_data("light", strValue);Auto_adjust(90 , 40,adcx);				ac = ADC_Trans();ad=ac* 99 / 4096.0;//	printf("电压为:%f\r\n",3.3/4095*ac);numToString(ad);printf("MQ: %.2f,", strValue);LCD_ShowString(30,210,200,16,16,(u8 *)strValue);esp8266_str_data("mq", strValue);// 将温度和湿度上传到云平台numToString(tempValue);printf("tempValue: %s, ", strValue);LCD_ShowString(30,90,200,16,16,(u8 *)strValue);	esp8266_str_data ("test", strValue);numToString(humidity);printf("humidity: %s\r\n\r\n", strValue);LCD_ShowString(30,130,200,16,16,(u8 *)strValue);	esp8266_str_data("time", strValue);	High_OBJ = esp8266_get_data("steppwm");Manual_adjust();//手动设置窗帘			ledctr = esp8266_get_data("ledbtn");if(ledctr == 1){LED1 = 0;LED0 = 0;}else{LED1 = 1;LED0 = 1;}}delay_ms(1000);t++;
}
}

4.2 步进电机模块子程序

Stm32通过对光敏传感器的检测与阈值比较进行对窗帘的自动控制,低于阈值开窗帘,高于阈值关闭窗帘,手动调节通过对云平台下达指令实现对窗帘的控制。

图4-2-1步进电机模块子程序流程图

主要代码如下所示:


void Auto_adjust(u8 luxmax , u8 luxmin ,u8 value )//预设 光强
{	//大于预设光强,窗帘下降
if(( luxmax < value )&&(luxmin > value)){windous_down(5000);Step_M -- ;}//小于预设光强,窗帘上升 else if( luxmin < value){windous_up(5000);Step_M ++ ;}			elsestep_stop();	}			

4.3 TFTLCD显示子程序

先设置字符显示起始坐标,然后设置需要显示的字符,需要显示的字体大小。lcd模块在运行时的具体流程为先读取各传感器的数据,并在屏幕中显示,然后实时更新,流程图如图4-3-1所示。

图4-3-1 TFTLCD显示子程序流程图

void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
{         u8 x0=x;width+=x;height+=y;while((*p<='~')&&(*p>=' '))//判断是不是非法字符!{       if(x>=width){x=x0;y+=size;}if(y>=height)break;//退出LCD_ShowChar(x,y,*p,size,0);x+=size/2;p++;}  
}

5.系统测试

5.1系统软件测试

智能家居系统是利用C语言程序,使用Keil作为开发工具。使用Keil软件完成该系统的软件设计,通过新建源文件、建立工程文件、编译和连接,最后生成所需单片机烧录的HEX文件。

本次设计主要用到Keil uvision5进行程序代码编写、编译、调试并生成.HEX文件,通过USB接口将所生成的.HEX文件烧写到开发板上进行测试。

主函数调试运行成功并生成 .hex文件如图5-1-1所示。

图5-1-1 主函数运行结果图

5.2系统硬件测试

本次设计中选择STM32F1战舰V3开发板作为本次设计的硬件测试。

代码编译运行通过后,开始对设计进行测试。在STM32F1战舰V3开发板中将所有电路、电子元件准确连接。

实物各种元器件的参考值及数量如表5-2-1所示。

元件

数量

STM32FI战舰V3开发板

1个

4.3寸FTFLCD显示器

1个

Mq-135

1个

Dht11

1

步进电机

1个

Esp8266

1个

表5-2-1 元器件清单

将各个元器件连接到开发板以后,给开发板供电,开始硬件测试,实物设计正常执行,并得到预期结果。如图5-2-1所示。

图5-2-1 实物图

6.总结与展望

这次的课程设计,用时两个星期,这两个星期不敢说自己有多大的进步,获得了多少知识,但起码是了解了stm32与传感器连接的部分过程。通过这次课程设计发现这其中需要的很多知识我们没有接触过,去图书馆查资料的时候发现我们前边所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我们不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。

  从各种文档的阅读到开始的挑选题目、硬件结构设计、软件结构设计、程序烧写。亲身体验了一回系统的设计开发过程。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想办法去设计一个的时候才发现其中的难度。经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。


其实不管做什么,我们都要相信自己,不能畏惧,不能怕遇到困难,什么都需要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来她并没有你以前觉得的那样,自己也是可以的。如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标,大学毕业出去即面临找工作,从学习这个专业,到以后从事这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想!

  以上基本是这次做课设的体会了,设计艰难,编码不易, 但找出错误并能修改正确,那一刻的喜悦还是令人难以忘记的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

solr-8.11.3

https://solr.apache.org/downloads.html https://archive.apache.org/dist/solr/solr/ F:\Document_Solr.apache.org\solr-8.11.3\bin Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。 C:\Users\Administrator>F: F:\> F:\>…

2023年03月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;共50分&#xff09; 第1题 有如下程序段&#xff1a; with open(mistakes.txt, w) as f:words [believe,memorize]f.write(\n.join(words))执行该代码后&#xff0c;…

springboot基础及上传组件封装

简介 本文主要以文件上传为demo&#xff0c;介绍了一些 springboot web 开发的入门的技术栈。 对应刚接触 springboot 的可以参考下。 主要包括文件md5比对、生成图片缩略图、数据库迁移、文件记录持久化、请求全局异常处理等功能。 准备工作 在 idea 中创建项目&#xff…

Ceph集群存储案例

Ceph是一种可靠的、可扩展的、统一的、分布式的存储系统。Ceph高度可靠、易于管理且免费。Ceph提供了非凡的可扩展性——数以千计的客户端访问PB到EB的数据。Ceph存储集群相互通信以动态复制和重新分配数据。目前众多云厂商都在使用Ceph&#xff0c;应用广泛。如&#xff1a;华…

【C++ ——— 哈希】位图 | 布隆过滤器

文章目录 1、位图1.1位图概念 2.位图实现位图的应用1.一百亿个整数&#xff0c;设计算法找到只出现一次的整数?2.给两个文件&#xff0c;分别有一百亿个整数&#xff0c;我们只有1G内存该如何找到两个文件的交集&#xff1f;3.位图应用变形&#xff1a;一个文件有100亿个int&a…

【介绍下运维,什么是运维?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Linux 编译安装python

以deepin操作系统安装Python3.8.10为例。 下载 python3.8.10 官网下载 Linux要下载源码&#xff0c;进行编译。 下图tarball即tar包&#xff0c;是压缩包的意思。python官网给出两种压缩格式的tarball&#xff0c;下载哪个都可以。 方式一&#xff1a;直接点击链接下载 方式…

python-模块-网络编程-多任务

一、模块 1-1 Python 自带模块 Json模块 处理json数据 {"key":"value"} json不是字典 本质是一个有引号的字符串数据 json注意点 {} 中的数据是字符串引号必须是双引号 使用json模块可以实现将json转为字典&#xff0c;使用字典的方法操作数据 。 或者将…

Debian和ubuntu 嵌入式的系统的 区别

随着开源操作系统的日益流行&#xff0c;Debian和Ubuntu这两个基于Linux的发行版本成为了众多开发者和系统管理员的首选。它们各自拥有独特的优势和特点&#xff0c;那么&#xff0c;在选择时&#xff0c;哪一个更适合你呢&#xff1f;接下来&#xff0c;我们将深入探讨两者的关…

C++候捷stl-视频笔记2

深度搜索list list是双向链表&#xff1a;底部实现是环状双向链表 list内部除了存data之外&#xff0c;还要存一个前向指针prev和一个后向指针next list的iterator&#xff0c;当迭代器的时候&#xff0c;是从一个节点走到下一个节点&#xff0c;是通过访问next指针实现的 主要…

NFS p.1 服务器的部署以及客户端与服务端的远程挂载

目录 介绍 应用 NFS的工作原理 NFS的使用 步骤 1、两台机子 2、安装 3、配置文件 4、实验 服务端 准备 启动服务&#xff1a; 客户端 准备 步骤 介绍 NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;是一种古老的用于在UNIX/Linux主…

新宏观范式和产业趋势下,纷享销客如何助力企业出海?

出海&#xff0c;已不再是企业的“备胎”&#xff0c;而是必须面对的“大考”&#xff01;在这个全球化的大潮中&#xff0c;有的企业乘风破浪&#xff0c;勇攀高峰&#xff0c;也有的企业在异国他乡遭遇了“水土不服”。 面对“要么出海&#xff0c;要么出局”的抉择&#xff…

C++设计模式-策略模式

文章目录 27. 策略模式 运行在VS2022&#xff0c;x86&#xff0c;Debug下。 27. 策略模式 策略模式让算法的选择与使用独立开来&#xff0c;使得代码更灵活、可扩展和易维护。应用&#xff1a;如在游戏开发中&#xff0c;AI角色需要根据环境和条件做出不同的行为&#xff0c;如…

微型导轨在自动化制造中有哪些优势?

微型导轨在自动化制造中发挥重要作用&#xff0c;能够满足自动化设备制造中对精度要求较高的工艺环节。适用于自动装配线、自动检测设备和机器人操作等环节&#xff0c;推动了行业的进步与发展。那么&#xff0c;微型导轨在使用中有哪些优势呢&#xff1f; 1、精度高和稳定性强…

Vue之组件基础(插槽)

在HTML中&#xff0c;开发者可以在双标签内添加一些信息。而在Vue中&#xff0c;组件以标签的形式引用&#xff0c;那么如何在组件的标签内添加一些信息并将信息渲染到页面中呢?其实&#xff0c;Vue 提供了插槽&#xff0c;专门用来实现这样的效果。 一.什么是插槽 Vue为组件…

【会议征稿】2024年无人驾驶与智能传感技术国际学术会议(ADIST 2024)

2024年无人驾驶与智能传感技术国际学术会议&#xff08;ADIST 2024&#xff09;将于2024年6月28-30日在珠海召开。ADIST 2024旨在搭建学术资源共享平台&#xff0c;加强中外学术合作&#xff0c;促进自动驾驶和智能传感技术的发展&#xff0c;促进全球研究人员、开发人员、工程…

react、vue动态form表单

需求在日常开发中反复写form 是一种低效的开发效率&#xff0c;布局而且还不同这就需要我们对其封装 为了简单明了看懂代码&#xff0c;我这里没有组件&#xff0c;都放在一起&#xff0c;简单抽离相信作为大佬的你&#xff0c;可以自己完成&#xff0c; 一、首先我们做动态f…

PostgreSQL的学习心得和知识总结(一百四十四)|深入理解PostgreSQL数据库之sendTuples的实现原理及功能修改

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

C# 类型系统

1. 隐式类型 c#允许使用 var 声明变量&#xff0c;编译期会通过初始化语句右侧的表达式推断出变量的类型。 // i is compiled as an int var i 5;// s is compiled as a string var s "Hello";// a is compiled as int[] var a new[] { 0, 1, 2 };// expr is co…

521源码网-免费网络教程-Cloudflare使用加速解析-优化大陆访问速度

Cloudfalre 加速解析是由 心有网络 向中国大陆用户提供的公共优化服务 接入服务节点: cf.13d7s.sit 接入使用方式类似于其它CDN的CNAME接入&#xff0c;可以为中国大陆用户访问Cloudflare网络节点大幅度加速&#xff0c;累计节点130 如何接入使用 Cloudflare 加速解析&#…