基于物联网技术的智能家居系统设计
本文介绍了基于物联网技术的智能家居系统设计与实现。系统采用STM32芯片作为主控,通过传感器采集温湿度数据,实现环境监测、安全报警等功能。硬件设计包括电源模块、主控芯片、传感器接口等部分;软件部分提供了芯片调用和显示模块的代码实现。系统具有经济可行性和技术可行性,能满足用户对智能家居在环境控制、安全防护等方面的需求。通过物联网技术实现了家居设备的智能化管理和远程监控,为提升生活品质提供了有效解决方
第2章 硬件技术和现状介绍
科学技术水平的高速发展,使我国进入互联网时代,人们的生活水平发生了了质的改变,智能化家居成为人们新的选择。对于智能化家居而言,其又可称为电子家庭、智能屋以及家庭自动化等,其运行原理主要通过网络、结构化布线、计算机等多项设备和技术,通过科学规范的组合设计,构建成智能化家居系统。在智能家居系统中,功能十分全面,包括家电设备设施、办公、通信娱乐等功能,能够实现一体化操作,为人们提供安全、舒适、高效以及节能环保的生活环境。对于该智能家居系统而言,其主要通过五部分结构实现系统的控制,分别是小区、智能、家居智能、外部网络以及家庭网卡这五部分系统组成。同时,通过对物联网技术的运用,实现了对智能家居系统的研发,在这过程中还涉及到传感器以及C语言的运用。
2.1 智能家居系统体系结构
对于智能家居系统而言,其结构体系主要包括防盗报警控制、娱乐系统控制、智能三表查抄系统以及窗帘控制等构成,具体体系结构如下所示

对于智能家居系统而言,其结构体系涉及内容较多,在本文中,主要对智能安防监控系统、照明设备控制系统、入侵检测报警框图及电路以及远程医疗系统进行分析及讲解。
第3章 智能家居系统需求分析
3.1项目总体功能规划
智能家居的温度测试系统的显示装置使用了传感器技术,采集数据,并显示到设备,同时传输到电脑温湿度的控制、预警,使用软件程序设计,当温度及湿度达到设定值,可以及时报警,并通过外部设备及时处理外部人员进入时候的报警装置,使用了红外线传感技术,当外部人员无端进入时,及时警报并提醒住户。
3.2系统需求分析
3.2.1 整体系统需求分析
(1) 硬件模块:传感器采集数据,通过单总线传输到主芯片,通过SWD模块采集数据发送至电脑端。实现调控和预警。
(2) 软件模块:硬件端口传输数据后,通过算法实现温湿度阀值的设定,预警触发以及数据最后的显示和调控。
系统用户功能框架如图3-1所示。

图3-1 系统总框架
3.2.2 用户需求分析
随科技的不断发展,物联网技术的不断提升,万物互联的时代即将来到。传统的家庭电器已经渐渐的不能适应人们对于智能化的日益需求,对于家电智能化,联通化的想法日渐渴求。作为物联网技术下的第三大应用领域,不单单是在家电方面,在医疗,社会治安,等等一系列的方面中都有一席之地。所以本次毕业设计选择基于物联网技术的智能家居系统设计,以实现在未来对于家居的智能化,可视化。在温度,湿度的控制,显示,以及危险报警,以及红外线报警的功能,从而进一步提高人们的生活水平以及居家安全。
3.3 可行性分析
3.3.1 经济可行性
对于本次系统的开发所需要的材料价格平价,对于用户来说可以通过这个一个装置实现很多项功能,相较于同类产品会好一点。同时在后续的过程中,随着人们生活水平的提升,会有越来越多的人来尝试。
3.3.2 技术可行性
智能家居系统在调试和运行的时候比较简单,个人计算机配置足以满足开发要求,学校中的计算机平台操作系统也没有任何问题,都可以熟练的使用,综合以上因素来分析,从技术方面上讲,该系统在技术方面上是可行的。
3.3.3 应用可行性
随着网络技术的完善,网络技术建设对于生活也造成了巨大的影响,再加上互联网的建设越发完善越,人们对于智能家居这个人性化的家居充满好奇,基本都可应用。
3.4 本章小结
本章主要从项目的总体功能规划入手,然后分别分析系统和用户对这个系统的需求,得到系统总的功能,然后从当前经济建设的可行性角度出发来对三个不同的方面进行系统性分析,最后对这个系统做一个预期的目标,列出能够实现的功能。
第4章 硬件设计
本系统硬件设计由电源部分,主芯片,最小电路系统,下载模块,温湿度采集,预警电路,显示部分六个部分组成。
4.1电源部分
采用DC5V输入DC3.3V输出 22UF 和104电容做滤波和去耦,通过CC电路来增加电压的稳定性,使得系统电压稳定在3.3V或者5V。图4-1为电源部分原理图
图4-1 电源部分原理图
第5章 软件相关
5.1 芯片调用
下面为芯片调用代码
#include “stm32f10x.h”
//---------------pin decription------------------------
//使用芯片 24LC02
#define ADDR_24CXX 0xA0
#define AT24CXX_SCL_H GPIOG->BSRR = GPIO_Pin_10
#define AT24CXX_SCL_L GPIOG->BRR = GPIO_Pin_10
#define AT24CXX_SDA_H GPIOG->BSRR = GPIO_Pin_11
#define AT24CXX_SDA_L GPIOG->BRR = GPIO_Pin_11
#define AT24CXX_SCL_read GPIOG->IDR & GPIO_Pin_10
#define AT24CXX_SDA_read GPIOG->IDR & GPIO_Pin_11
//#define AT24CXX_SCL_H GPIOC->BSRR = GPIO_Pin_12 //TEST
//#define AT24CXX_SCL_L GPIOC->BRR = GPIO_Pin_12 //TEST
//
//#define AT24CXX_SDA_H GPIOC->BSRR = GPIO_Pin_11 //TEST
//#define AT24CXX_SDA_L GPIOC->BRR = GPIO_Pin_11 //TEST
//
//#define AT24CXX_SCL_read GPIOC->IDR & GPIO_Pin_12 //TEST
//#define AT24CXX_SDA_read GPIOC->IDR & GPIO_Pin_11 //TEST
//主机设备描述符,存入EEPROM
static bool I2C_Start(void);
static void I2C_Stop(void);
static void I2C_NoAck(void);
static bool I2C_WaitAck(void);
static void I2C_SendByte(u8 SendByte);
static u8 I2C_ReceiveByte(void);
void I2C_24CXX_Init(void);
static bool I2C_WriteOneByte(u8 SendByte, u16 WriteAddress, u8 DeviceAddress);
static u8 I2C_ReadOneByte( u16 ReadAddress, u8 DeviceAddress);
void I2C_24CXX_Write(u16 nAddr, u8* pDat, u16 nLen);
void I2C_24CXX_Read(u16 nAddr, u8* pDat, u16 nLen);
static void I2C_delay(void);
5.2 显示模块
下面为显示模块代码
#ifndef _12864_H
#define _12864_H
#include"sys.h"
//管脚定义,移植修改区
//**************************************************************************************************************************
#define LCD12864_GPIO GPIOB
#define GPIOCLK RCC_APB2Periph_GPIOB
#define RS GPIO_Pin_0
#define RW GPIO_Pin_1
#define EN GPIO_Pin_3
#define PSB GPIO_Pin_4
#define RST GPIO_Pin_5
#define Busy GPIO_Pin_15
#define LCD_GPIO_DAT GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10 |GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15
#define LCD_GPIO_CMD GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5
#define LCD_RS(x) x ? GPIO_SetBits(LCD12864_GPIO,RS): GPIO_ResetBits(LCD12864_GPIO,RS)
#define LCD_RW(x) x ? GPIO_SetBits(LCD12864_GPIO,RW): GPIO_ResetBits(LCD12864_GPIO,RW)
#define LCD_EN(x) x ? GPIO_SetBits(LCD12864_GPIO,EN): GPIO_ResetBits(LCD12864_GPIO,EN)
#define LCD_PSB(x) x ? GPIO_SetBits(LCD12864_GPIO,PSB): GPIO_ResetBits(LCD12864_GPIO,PSB)
#define LCD_RST(x) x ? GPIO_SetBits(LCD12864_GPIO,RST): GPIO_ResetBits(LCD12864_GPIO,RST)
#define Text_Busy GPIO_ReadInputDataBit(LCD12864_GPIO ,Busy) //PBin(7)
#define LCD_WriteData(x) {LCD12864_GPIO->BSRR = x<<8 & 0xff00;LCD12864_GPIO->BRR = ((~x)<<8) & 0xff00;} //高8位的数据
//#define LCD_WriteData(x) {LCD12864_GPIO->BSRR = x & 0x00ff;LCD12864_GPIO->BRR = ((~x)<<8) & 0x00ff;} //低8位的数据
void LCD12864_InitPort(void); //硬件端口初始化
void NOP(void); //延时函数
u8 LCD12864_busy(void); //检测忙状态
void LCD12684_Wcmd(u8 dat); //写指令
void LCD12684_Wdat(u8 dat); //写数据
void LCD12864_Init(void); //液晶初始化
void LCD12864_Clr(void); // 清屏
void LCD12864_Pos(u8 x,u8 y); //设置显示位置
void LCD12864_PhotoDis(u8 bmp); // 显示图片
void LCD_ShowString(u8 x,u8 y,const u8 p); // 显示字符串
void LCD_Shownumber(u8 x,u8 y,const u8 m);
//*******************************************************************************************************************
#endif
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。
更多推荐


所有评论(0)