51单片机_智能家居终端

实物演示效果:

https://www.bilibili.com/video/BV1bh4y1A7ZW/?vd_source=6ff7cd03af95cd504b60511ef9373a1d

        51单片机是否适合做多功能智能家居控制系统?51单片机的芯片是否具有与WiFi通信的能力?如果有的话,具体有哪些芯片啊?做起来复不复杂?新手可以做吗?51比32好不好做啊?想做的话,哪里可以看51做多功能智能家居的教程啊?

接下来博主带大家做一个基于51单片机的智能家居终端

 以下我大概说明我制作的过程以及用到的资料方便同行能够获取使用。
       1,通过ESP8266-01S来进行一个信号的传输,就是手机与单片机来连接的一个桥梁。通过这个可以实现手机APP上实时显示单片机获取的数据,包括LED灯的状态,DHT11获取的温湿度当然我们也可以控制单片机做出相应的动作,通过手机APP的按键来操作。
        2,但是随着技术的日益进步,通常使用的洞洞板完全可以实现我所说的功能,但是不断地通过原理图焊接连线不仅复杂而且需要的时间非常多。那么绘制PCB是非常好的一个思路。它的好处(1)可以批量生产(2)大大减少工作量(3)我们只需做一遍就可以了。按照这个思路首先是我们需要绘制PCB的资料第一步:制作或是收集每个原件的原理图(其实大多数网上都是有的,但是多且杂乱无章。最后我会提供给大家非常齐全且整理好的的原理图库和封装还有3D库)。第二步:就是给每一个原理图添加封装(这里的封装是PCB封装和3D库,按照我的理解就是能看到原件本来的模样这个对你后期购买元器件是非常重要的)。

一、设计完成主要功能        

        本设计可分为温湿度检测与烟雾检测和人体检测部分。温湿度检测部分,是通过利用单总线型数字式温湿度传感器DHT11,实现系统具有测温湿度误差小、分辨率高、抗干扰能力强等特点。烟雾检测电路,利用气体传感器MQ-2与ADC0832模数转换器实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或有毒气体等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现火灾报警,智能化提示。人体检测部分,是通过HC-SR501模块实现,模块主要功能就是热释电红外传感器感应到入侵者的红外热辐射,将其转换成超低频信号,经电路放大、输出。检测器是利用红外人体检测探头检测预先设定好的范围内的情况,一旦有危险便向单片机发出信号,再经单片机处理,然后控制蜂鸣器和LED点亮发出警告,本设计还可以应用于家居防盗、仓库防盗等多种防盗场合,具有很强的实用价值和良好的市场前景。温湿度、烟雾和人体防盗检测是三种最基本的环境参数,其测量方法和装置对现在的生活、生产具有重要的意义。本课题基本完成预期设想,设计并实现了系统的硬件电路,完成了系统软件的编写和调试。测试结果证明,达到了设计要求

二、课题背景

        当今世界,随着科技的不断发展,智能环境监测成了人类关注的话题。智能家居通过物联网技术将家中的各种设备(如照明系统、火灾检测系统、空调控制、安防系统,报警控制等)连接到一起,提供家电控制、照明控制、智能温湿度调节、室内外遥控、防盗报警以及环境监测等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境,而且提供全方位的信息交互功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。

本文首先介绍了智能家居的发展前景,接着介绍了该课题设计构想,各模块电路的选择及其电路工作原理,最后对该课题的设计过程进行了总结与展望并附带各个模块的电路原理图,和本设计仿真图,以及C语言思想。智能家居实验是为智能家居系统实验做准备的,是实验的基础,智能家居是为了提高学生的动手能力,配合各类电子设计大赛,科技活动等而开发的设计模型。在此模型上我们可以进行多种实验,如测量,感应,报警等等。为了能更好的控制模拟家居,实现手动与自动控制相结合,进行各种功能实现,并且这个实验对现实生活也有一定的意义,所以我们就需要对这个实验进行一定的研究

 1.21概述及功能介绍

        本次设计主要分五个个功能,分别为测温湿度,烟雾及红外感应和报警,显示信息和报警信息。将这几个个功能巧妙的与家居结合,我们已经知道五个单独功能如何实现,现在要将五个功能通过单片机系统化反馈,以达到能实现综合五种功能的智能家居。

设计涉及主硬件为:STC89C52RC单片机,DHT11温湿度传感器,人体红外感应器,MQ-2烟雾传感器,按键设置与LCD1602液晶显示模块,蜂鸣器报警电路,以及超标指示显示模块组成。

 1.2.2 功能介绍

        (1)通过DHT11温湿度采集数据将信息显示于LCD1602上面,如果温湿度超出设定的预警值,指示灯有提示并蜂鸣器报警;待到坏境温湿度降到低于预警值的时候,报警自动关闭。

        (2)采用烟雾探头传感器来检测我们周围环境的烟雾,可对煤气甲烷,以及我们周围着火的烟雾,或是抽烟的浓度等实时监测,如有超标,蜂鸣器报警,并有指示灯动作来提醒你解决当前的问题,解决之后,这些显示和指示指标自动关闭,所以能给您带来一定的安全感。

        (3)人体红外检测电路能够根据外界移动人体进行判断,如果在布防状态并且有人时,指示灯有提示并蜂鸣器报警,来警告入侵者,直至手动撤防才可以解除报警。而且具有掉电保存的功能,即使人为关闭电源再开机也能继续报警,这样更加智能。

三、论文目录

四、项目子仿真图

        1).开机显示界面

        2).灯具关闭失败显示界面

        3).温度检测显示界面

五、部分源码程序

#include<reg52.h>
#include <I2C.H>#define  ADDR 0x90    //PCF8591 地址// 此表为 LED 的字模            // 0    1    2    3    4    5    6   7    8    9    A    b    c    d    E    -    L   P    U    Hidden  _ (20)
unsigned char code  Disp_Tab[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x88,0x83,0xC6,0xA1,0x86,0xbf,0xc7,0x8c,0xc1, 0xff,  0xf7 };
unsigned char TABLEW[8] ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char AD_CHANNEL;
unsigned char LedOut[8];
unsigned int  D[32];sbit KEY1 = P3^2;
sbit KEY2 = P3^3;/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(unsigned char i)//1ms延时
{unsigned char x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);            
}
/*******************************************************************
DAC 变换, 转化函数              
*******************************************************************/
bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val)
{Start_I2c();              //启动总线SendByte(sla);            //发送器件地址if(ack==0)return(0);SendByte(c);              //发送控制字节if(ack==0)return(0);SendByte(Val);            //发送DAC的数值if(ack==0)return(0);Stop_I2c();               //结束总线return(1);
}/*******************************************************************
ADC发送字节[命令]数据函数              
*******************************************************************/
bit ISendByte(unsigned char sla,unsigned char c)
{Start_I2c();              //启动总线SendByte(sla);            //发送器件地址if(ack==0)return(0);SendByte(c);              //发送数据if(ack==0)return(0);Stop_I2c();               //结束总线return(1);
}/*******************************************************************
ADC读字节数据函数              
*******************************************************************/
unsigned char IRcvByte(unsigned char sla)
{  unsigned char c;Start_I2c();          //启动总线SendByte(sla+1);      //发送器件地址if(ack==0)return(0);c=RcvByte();          //读取数据0Ack_I2c(1);           //发送非就答位Stop_I2c();           //结束总线return(c);
}//******************************************************************/
main()
{
unsigned char i,temp=1;
while(1)
{/********以下AD-DA处理*************/switch(AD_CHANNEL){case 0: ISendByte(ADDR,0x41);D[0]=IRcvByte(ADDR)*2;  //ADC0 模数转换1break;case 1: ISendByte(ADDR,0x42);D[1]=IRcvByte(ADDR)*2;  //ADC1  模数转换2break;case 2: ISendByte(ADDR,0x43);D[2]=IRcvByte(ADDR)*2;  //ADC2              模数转换3break;case 3: ISendByte(ADDR,0x40);D[3]=IRcvByte(ADDR)*2;  //ADC3   模数转换4break;case 4: DACconversion(ADDR,0x40, D[4]/4); //DAC                数模转换break;}if(++AD_CHANNEL>4) AD_CHANNEL=0;if(KEY1==0 || KEY2==0 )            {Delay_1ms(20);                               //20毫秒软件防抖if(KEY1 == 0){temp =1;}else if(KEY2 == 0){temp=2;                                                                     }}if(temp ==1){LedOut[0]=Disp_Tab[D[0]%10000/1000];LedOut[1]=Disp_Tab[D[0]%1000/100];LedOut[2]=Disp_Tab[D[0]%100/10]&0x7f;LedOut[3]=Disp_Tab[D[0]%10];LedOut[4]=Disp_Tab[D[1]%10000/1000];LedOut[5]=Disp_Tab[D[1]%1000/100]&0x7f;LedOut[6]=Disp_Tab[D[1]%100/10];LedOut[7]=Disp_Tab[D[1]%10];               }if(temp ==2){LedOut[0]=Disp_Tab[D[2]%10000/1000];LedOut[1]=Disp_Tab[D[2]%1000/100];LedOut[2]=Disp_Tab[D[2]%100/10]&0x7f;LedOut[3]=Disp_Tab[D[2]%10];LedOut[4]=Disp_Tab[D[3]%10000/1000];LedOut[5]=Disp_Tab[D[3]%1000/100]&0x7f;LedOut[6]=Disp_Tab[D[3]%100/10];LedOut[7]=Disp_Tab[D[3]%10];               }for(i=0;i<8;i++){P0 = LedOut[7-i];P2 = 7-i;Delay_1ms(2);                                         }}  
}

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

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

相关文章

如何正确使用数据库的读写分离

本文已收录至我的个人网站&#xff1a;程序员波特&#xff0c;主要记录Java相关技术系列教程&#xff0c;共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源&#xff0c;让想要学习的你&#xff0c;不再迷茫。 背景 在应用系统发展的初期&#xff0c;我们并不知…

使用Matplotlib绘制3d图形

目录 一&#xff1a;绘制一个正方体 二&#xff1a;绘制一个3*3*3魔方 为了绘制立体&#xff0c;主要用到Matplotlib中的一个函数voxels voxels([x, y, z, ], filled, facecolorsNone, edgecolorsNone, **kwargs) 绘制一组填充体素&#xff0c;所有体素在坐标轴上绘制为1x1x…

dubbo入门案例!!!

入门案例之前我们先介绍一下&#xff1a;zookeeper。 Zookeeper是Apacahe Hadoop的子项目&#xff0c;可以为分布式应用程序协调服务&#xff0c;适合作为Dubbo服务的注册中心&#xff0c;负责服务地址的注册与查找&#xff0c;相当于目录服务&#xff0c;服务提供者和消费者只…

Linux shell美化 zsh+oh-my-zsh+power10k

文章目录 安装zsh安装on-my-zsh安装power10k主题安装power10k将oh-my-zsh主题改为power10k字体 设置安装字体配置字体 power10k配置相关插件安装zsh-autosuggestionszsh-syntax-highlighting安装插件完成&#xff0c;重新加载配置文件 美化效果示意&#xff1a; 安装zsh 安装…

华为设备NAT的配置

实现内网外网地址转换 静态转换 AR1&#xff1a; sys int g0/0/0 ip add 192.168.10.254 24 int g0/0/1 ip add 22.33.44.55 24 //静态转换 nat static global 22.33.44.56 inside 192.168.10.1 动态转换 最多有两台主机同时访问外网 AR1&#xff1a; sys int g0/0/0 ip add…

动态住宅代理IP是什么?如何配置使用?

动态住宅代理IP&#xff0c;作为一种高效的网络工具&#xff0c;不仅能够为您的在线活动提供额外的保护层&#xff0c;还能增强匿名性和数据安全。接下来将深入探讨动态住宅代理IP的定义、设置步骤、以及它如何有效保护您的网络隐私和安全。 一、动态住宅代理是什么&#xff1f…

基于改进蝙蝠算法的三维航线规划算法

matlab2020a可正常运行 基于改进蝙蝠算法的三维航线规划资源-CSDN文库

BRC20通证的诞生与未来展望!如何导入bitget教程

BRC-20通证是什么&#xff1f; 嘿&#xff01;你知道BRC-20通证吗&#xff1f;这可是比特币区块链上的超级明星&#xff01;它们不依赖智能合约&#xff0c;而是把JSON代码刻在聪上&#xff0c;聪可是比特币的最小单位哦&#xff01;就像在比特币的乐高积木上盖房子&#xff0…

“重大利好”!以太坊坎昆升级临近!Layer2新玩家Blast不断蚕食市场份额,令竞品汗流浃背?

1月17日&#xff0c;坎昆升级&#xff08;Dencun&#xff09;率先在以太坊Goerli测试网启动&#xff0c;由于Goerli是参与者数量以及网络负载程度最高的测试网&#xff0c;仅次于以太坊主网&#xff0c;因此如果没什么问题&#xff0c;预示着主网升级已经不远。 而现在&#xf…

文件重命名方法:不同路径的文件名大小写如何批量转换技巧

在文件管理中&#xff0c;经常要处理文件重命名的问题&#xff0c;尤其是涉及到不同路径下的文件名大小写转换时。下面来看云炫文件管理器如何批量转换文件名的大小写的技巧&#xff0c;轻松完成这项任务。 准备多个不同路径文件夹&#xff0c;在里面各放几个文件。接下来开始…

重置aws上的ssh默认登录端口

aws上的ec2机器&#xff0c;默认ssh的登录都是22&#xff0c;为了防止被黑&#xff0c;记录下修改该默认端口的方法 修改/etc/ssh/sshd_config文件,将Port 22注释去掉在上面的文件中&#xff0c;加入一行&#xff0c;你想要增加的端口号&#xff0c;格式和22一致注意&#xff1…

opengauss-高斯数据库的安装部署及MySQL数据迁移实战.

目录 介绍 下载安装包 安装 1.设置SEMMNI 2.新建用户和用户组 3.下载安装包解压 4.安装数据库 5.修改配置 6.重启服务 数据库使用 gsql命令和常用sql 1.使用omm用户连接数据库-本地登陆无需输入密码&#xff1a; 2.查看用户信息 3.删除数据库 4.创建用户 5.创建…