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.rhkb.cn/news/240694.html

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

相关文章

网工每日一练(1月15日)

1.某计算机系统由下图所示的部件构成&#xff0c;假定每个部件的千小时可靠度为R&#xff0c;则该系统的千小时的可靠度为 ( D ) 。 2.以下IP地址中&#xff0c;属于网络 201.110.12.224/28 的主机IP是&#xff08; B &#xff09;。 A.201.110.12.224 B.201.110.12.238 C.20…

【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法

目录 1. File 概述 1.1 File的属性 1.2 File的构造方法 1.3 File的方法 2.读文件 2.1 InputStream 概述 2.2 FileInputStream 概述 2.3 正确打开和关闭文件的方式 2.4 不同方式读取文件代码示例 2.4 另一种方法:利用 Scanner 进行字符读取 3.写文件 3.1 OutputStre…

滚动菜单ListView

activity_main.xml <include layout"layout/title"/> 引用上章自定义标题栏 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app&qu…

Rust之构建命令行程序(三):重构改进模块化和错误处理

开发环境 Windows 10Rust 1.74.1 VS Code 1.85.1 项目工程 这次创建了新的工程minigrep. 重构改进模块化和错误处理 为了改进我们的程序&#xff0c;我们将修复与程序结构及其处理潜在错误的方式有关的四个问题。首先&#xff0c;我们的main函数现在执行两项任务:解析参数和…

使用pdfbox 为 PDF 增加水印

使用pdfbox 为 PDF增加水印https://www.jylt.cc/#/detail?activityIndex2&idbd410851b0a72dad3105f9d50787f914 引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>3.0.1</ve…

如何卸载旧版docker

环境&#xff1a; Docker1.13 centos7.6 问题描述&#xff1a; 如何卸载旧版docker 解决方案&#xff1a; 1.停止Docker服务。使用以下命令停止Docker服务&#xff1a; sudo service docker stop2.卸载Docker软件包。根据您的Linux发行版&#xff0c;使用适当的包管理器来…

Qt SDL2播放Wav音频

这里介绍两种方法来实现Qt播放Wav音频数据。 方法一&#xff1a;使用QAudioOutput pro文件中加入multimedia模块。 #include <QApplication> #include <QFile> #include <QAudioFormat> #include <QAudioOutput>int main(int argc, char *argv[]) {…

P4学习(四)实验一:Basic Forwarding

目录 一.前置知识二.实验过程记录1.找到实验文件2.拓扑图3.明确实验内容4.实验初体验 三. 编写解决方案1.Parse部分1.1 Code1.2 知识点解析 2.Ingress部分2.1 Code2.2 知识点解析 3.Deparse部分3.1 Code3.2 知识点 四.实验完成测试 一.前置知识 Linux基础命令(vim)V!Model的架…

kibana查看和展示es数据

本文来说下使用kibana查看和展示es数据 文章目录 数据准备查询所有文档示例kibana查看和展示es数据 数据准备 可以使用es的命令或者java程序来往&#xff0c;es进行新增数据 查询所有文档示例 在 apifox 中&#xff0c;向 ES 服务器发 GET请求 &#xff1a;http://localhost:92…

【Qt-license】误操作qt下载导致只能安装商业版试用十天,无法安装社区版

背景&#xff1a; 原本是为了学习qml&#xff0c;需要下载一个design studio&#xff0c;而这个需要比较新版的安装程序&#xff0c;但新版的安装程序官方都是online安装。于是从官网找下载链接。毕竟是英文的&#xff0c;又心急&#xff0c;误打误撞中我选择了商业版试用。 其…

线程安全的集合类

Java中提供了许多集合类&#xff0c;其中有的是线程安全的&#xff0c;有的是线程不安全的。线程安全的集合类有&#xff1a; 1. Vector&#xff1a;Vector类实现了一个动态数组&#xff0c;与ArrayList相似&#xff0c;但Vector是同步访问的 2. Stack&#xff1a;Stack是Vec…

血糖仪定制_基于联发科MT6761平台的血糖尿酸检测仪解决方案

高尿酸血症和糖尿病患者的发病都受到遗传因素和相同的饮食习惯的影响;高尿酸血症患者往往也是糖尿病的高发人群。糖尿病患者常常伴有肥胖、胰岛素抵抗等症状&#xff0c;这些都会影响尿酸的代谢。因此&#xff0c;在预防高尿酸的同时也需要预防高血糖的发生。 为了方便高尿酸人…

Unity关于纹理图片格式带来的内存问题和对预制体批量格式和大小减半处理

我们经常会遇到内存问题&#xff0c;这次就是遇到很多图片的默认格式被改成了RGB32&#xff0c;导致Android打包后运行内存明显增加。 发生了什么 打包Android后&#xff0c;发现经常崩溃&#xff0c;明显内存可能除了问题&#xff0c;看了内存后发现了问题。 见下图&#xf…

使用composer生成的DMG和PKG格式软件包有何区别

在使用Composer从包源构建软件包时候&#xff0c;有两种不同类型的包&#xff1a;PKG和DMG。你知道两者之间的区别吗? 以及如何选取吗&#xff1f; 每种格式都有各自的优势具体取决于软件包的预期用途以及用于部署软件包的工具。下面我们来了解一下PKG和DMG格式的区别和用途。…

Puppeteer让你网页操作更简单(1)屏幕截图

网页自动化设计爬虫工具 中就使用了Puppeteer进行对网页自动化处理&#xff0c;今天就来看看它是什么东西&#xff01; 我们将学习什么? 在本教程中,您将学习如何使用JavaScript自动化和抓取 web。 为此,我们将使用Puppeteer。 Puppeteer是一个Node库API,允许我们控制无头Ch…

STM32项目设计:人脸识别门禁系统

文章目录 项目简介硬件设计 项目视频链接&#xff1a;【还在制作中&#xff0c;制作好会发在哔哩哔哩&#xff1a;化作尘my&#xff0c;记得先关注】 项目实物链接&#xff1a;【可以看看某鱼&#xff1a;化作尘my】 有需要可以购买一个实物&#xff0c;会提供相应的参考资料学…

CNAS认可是什么?湖南长沙CNAS专业第三方软件检测机构有哪些?

CNAS是中国合格评定国家认可委员会(China National Accreditation Service for Conformity Assessment)的缩写&#xff0c;是专门负责评定和认可各类检验机构、实验室、认证机构和校验机构的国家认可机构。CNAS认可的好处在于&#xff0c;它证明了软件企业和软件产品具备严格的…

k8s集群环境搭建以及插件安装

前置条件 终端工具MobaXterm很好用。 1、虚拟机三台&#xff08;ip按自己的网络环境相应配置&#xff09;(master/node) 节点ipk8s-master192.168.200.150k8s-node1192.168.200.151k8s-node2192.168.200.152 2、关闭防火墙(master/node) systemctl stop firewalld systemc…

在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型

在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型 0. 背景1. 安装依赖2. 开发 main.py3. 运行 main.py 0. 背景 看了一些文章之后&#xff0c;今天尝试在 Windows 11 上通过 Autoawq 启动 Mixtral 8*7B 大语言模型。 1. 安装依赖 pip install torch torchvision …

django后台手机号加密存储

需求&#xff1a; 1 &#xff1a;员工在填写用户的手机号时&#xff0c;直接填写&#xff0c;在django后台中输入 2&#xff1a;当员工在后台确认要存储到数据库时&#xff0c;后台将会把手机号进行加密存储&#xff0c;当数据库被黑之后&#xff0c;手机号字段为加密字符 3&am…