当前位置: 首页 > news >正文

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);                                         }}  
}

相关文章:

51单片机_智能家居终端

实物演示效果&#xff1a; https://www.bilibili.com/video/BV1bh4y1A7ZW/?vd_source6ff7cd03af95cd504b60511ef9373a1d 51单片机是否适合做多功能智能家居控制系统&#xff1f;51单片机的芯片是否具有与WiFi通信的能力&#xff1f;如果有的话&#xff0c;具体有哪些芯片啊&a…...

css实现动态水波纹效果

效果如下&#xff1a; 外层容器 (shop_wrap)&#xff1a; 设置外边距 (padding) 提供一些间距和边距 圆形容器 (TheCircle)&#xff1a; 使用相对定位 (position: relative)&#xff0c;宽度和高度均为 180px&#xff0c;形成一个圆形按钮圆角半径 (border-radius) 设置为 50%&…...

Chrome 开发者工具

Chrome 开发者工具 介绍控制面板时间线下载信息概要请求列表单个请求时间线优化时间线上耗时项 lighthouse 插件Performance&#xff08;性能指标&#xff09;Accessibility&#xff08;可访问性&#xff09;Best Practices&#xff08;最佳实践&#xff09;SEO&#xff08;搜索…...

Error: error:0308010C:digital envelope routines::unsupported的解决方案

因为最近安装了pnpm对node版本有要求&#xff0c;升级了node版本是18以后&#xff0c;在运行之前的项目&#xff0c;就跑不起来了&#xff0c;报错如下&#xff1a; Error: error:0308010C:digital envelope routines::unsupported解决方案一&#xff1a; node版本切换到16版…...

vue基于spring boot框架的发艺美发店理发店管理系统的设计q9xpe

店铺信息、美发信息是发艺美发店管理系统的重要组成部分&#xff0c;信息清晰、详细、准确&#xff0c;能够有效地促进发艺美发店管理系统的运行[5]。基础设定函数是对整个系统的总体布局进行合理安排&#xff0c;包括&#xff1a;店铺活动、物品信息、领用信息等。通过对各类资…...

JS取余运算符 %,ES2023 新增数组方法Array.at

取余运算符&#xff08;%&#xff09;的作用就是用来两个操作数进行相除运算之后的余数。 注意&#xff0c;两个操作数取余是有循环范围的&#xff0c;这个范围为 0 - 第二个参数 - 1。 如下图&#xff1a; 对于6取余的话&#xff0c;得到的取余数据就会一直在0-5之间进行循环…...

unity SqLite读取行和列

项目文件 链接&#xff1a;https://pan.baidu.com/s/1BabHvQ-y0kX_w15r7UvIGQ 提取码&#xff1a;emsg –来自百度网盘超级会员V6的分享 using System.Collections; using System.Collections.Generic; using UnityEngine; using Mono.Data.Sqlite; using System; using Syste…...

使用docker部署RStudio容器并结合内网穿透实现公网访问

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE&#xff0c;并通过 Web 浏览器进行访问…...

adb wifi 远程调试 安卓手机 命令

使用adb wifi 模式调试需要满足以下前提条件&#xff1a; 手机 和 PC 需要在同一局域网下。手机需要开启开发者模式&#xff0c;然后打开 USB 调试模式。 具体操作步骤如下&#xff1a; 将安卓手机通过 USB 线连接到 PC。&#xff08;连接的时候&#xff0c;会弹出请求&#x…...

Android Activity的启动流程(Android-10)

前言 在Android开发中&#xff0c;我们经常会用到startActivity(Intent)方法&#xff0c;但是你知道startActivity(Intent)后Activity的启动流程吗&#xff1f;今天就专门讲一下最基础的startActivity(Intent)看一下Activity的启动流程&#xff0c;同时由于Launcher的启动后续…...

flask不使用flask-login插件

由于flask版本升级问题&#xff0c;flask-manager里面的Command命令高版本不支持&#xff0c;低版本的兼容flask-sqlalchemy启动也会报错&#xff0c;第三方插件有很多问题&#xff0c;所以痛定思痛决定放弃使用这个&#xff0c;使用flask自带语法自己写一个 类似于django继承…...

1. SpringBoot3 基础

文章目录 1. SpringBoot 概述2. SpringBoot 入门3. SpringBoot 配置文件3.1 SpringBoot 配置文件基本使用3.2 yml 配置文件 4. SpringBoot 整合 Mybatis5. Bean 管理5.1 Bean 扫描5.2 Bean 注册5.3 注册条件 6. 组合注解7. 自动配置原理8. 自定义 Starter 1. SpringBoot 概述 …...

美易官方:苹果承认GPU安全漏洞存在:iPhone 12和M2系列受影响

苹果承认GPU安全漏洞存在&#xff1a; iPhone 12和M2 MacBook Air受影响 近日&#xff0c;苹果公司承认其部分产品存在GPU安全漏洞&#xff0c;这些漏洞可能会影响iPhone 12和M2 MacBook Air等设备的安全性。这一消息引起了广泛的关注和担忧&#xff0c;因为这些设备是许多用户…...

【Vue3】3-1 : 章节介绍 - Vue3组件应用及单文件组件

本书目录&#xff1a;点击进入 一、本章学习目标 二、课程安排 一、本章学习目标 Vue3组件相关概念掌握组件之间的通信封装一个可复用的组件单文件组件SFC&#xff1a;即.vue文件 样式 结构 逻辑脚手架的使用和底层实现机制工程化的认知 二、课程安排 组件的概念及组件的基…...

【数据结构】二叉树(遍历,递归)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​ 目录 二叉树遍历规则 前序遍历 ​…...

《微信小程序开发从入门到实战》学习八十五

6.15 设备API 6.15.2 添加联系人API 使用wx.addPhoneContact接口可以在用户的手机通讯录中添加联系人信息。用户可以选择“新增联系人”或“添加到已有联系人”。该接口接受Object参数&#xff0c;参支持属性如下所示&#xff1a; firstName&#xff1a;必填&#xff0c;名字…...

设计模式——命令模式

命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将一个请求封装为一个对象&#xff0c;使发出请求的对象和执行请求的对象解耦。这样可以方便地对请求排队、记录日志、撤销/重做操作以及支持可扩展性。 原理 命令接口&#xff08;Comman…...

Modbus协议学习第三篇之协议通信规则

导语 本篇博客将深入介绍Modbus协议的一些内容&#xff0c;主要包括通讯方式和通讯模型的介绍 Modbus通讯方式 Modbus协议是单主机、多从机的通信协议&#xff0c;即同一时间&#xff0c;总线上只能有一个主设备&#xff0c;但可以有一个或者多个从设备&#xff08;最多好像是2…...

git仓库使用说明

Git软件使用 1.先下载git相关软件 下载地址&#xff1a; Git - Downloading Package (git-scm.com) 下载其中一个安装 2.打开gitee网站&#xff0c;注册账号 3.打开个人中心&#xff0c;选择ssh公钥&#xff0c;查看如何生成公钥 4.生成公钥后&#xff0c;添加相应的公钥 …...

边缘计算和联邦学习的联系

1. 什么是边缘计算&#xff1f; 边缘计算&#xff08;Edge Computing&#xff09;是一种计算模型&#xff0c;其主要思想是将计算、存储和数据处理能力推送到离数据源近的边缘设备&#xff0c;而不是依赖于远程的云服务器。这样做的目的是减少数据传输延迟、提高响应速度&…...

机器学习算法理论:贝叶斯

贝叶斯定理对于机器学习来说是经典的概率模型之一&#xff0c;它基于先验信息和数据观测来得到目标变量的后验分布。具体来说&#xff0c;条件概率&#xff08;也称为后验概率&#xff09;描述的是事件A在另一个事件B已经发生的条件下的发生概率&#xff0c;公式表示为P(A|B)&a…...

229.【2023年华为OD机试真题(C卷)】手机App防沉迷系统(模拟-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-手机App防沉迷系统二.解题思路三.题解代码Pyth…...

关系运算符

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 补充: 如果要想对所选择的数据行进行控制&#xff0c;那么可以利用 WHERE 子句完成&#xff0c;此时的 SQL 语法结构变为如下形式 先系统性介绍下: ● 关系运算&#xff1a; >、、&…...

K8s-架构

一、K8s节点划分 K8s集群包含Master(控制节点)和Node(工作节点)&#xff0c;应用部署在Node节点上。 集群架构图&#xff1a; 二、Master节点 Master节点分成四个组件&#xff1a;scheduler、ApiServer、Controller Manager、ETCD。类似三层结构&#xff0c;controller&#…...

C++ 并发编程 | 进程与线程

一、进程与线程 1、进程 1.1、定义 操作系统中最核心的概念就是进程&#xff0c;进程是对正在运行中的程序的一个抽象&#xff0c;是系统进行资源分配和调度的基本单位。进程是一种抽象的概念&#xff0c;一般由程序、数据集合和进程控制块三部分组成&#xff0c;如下&#x…...

基于Python实现身份证信息识别

目录 前言身份证信息识别的背景与意义自动识别身份证的需求实现环境与工具准备Python编程语言OpenCV图像处理库Tesseract OCR引擎身份证信息识别算法原理图像预处理步骤(图像裁剪、灰度化 、二值化、去噪)信息提取与解析Python代码实现通过OCR提取身份证号码代码解析身份证信息…...

深度学习记录--正则化(regularization)

什么是正则化&#xff1f; 正则化(regularization)是一种实用的减少方差(variance)的方法&#xff0c;也即避免过度拟合 几种正则化的方法 L2正则化 又被称为权重衰减(weight dacay) 在成本函数中加上正则项&#xff1a; 其中 由于在w的更新过程中会递减&#xff0c;即权…...

Java的便捷输入方法及解析

在 Java 中&#xff0c;有多种便捷的输入方法可以从用户那里获取输入。下面是一些常见的便捷输入方法及解析&#xff1a; 使用 Scanner 类&#xff1a;在上述示例中&#xff0c;首先导入了 java.util.Scanner 类&#xff0c;创建了一个 Scanner 对象&#xff0c;并使用 System…...

抖音矩阵云混剪系统源码(免授权版)多平台多账号一站式管理,附带系统搭建教程

搭建教程 MySQL 5.6 PHP 7.2 Apache 数据库名称 juzhen Nginx环境切换伪静态 1、解压安装包到项目根目录&#xff0c;找到application/database.php 更换自己的数据库密码 2、阿里云现有的配置不要动 其他按照文档进行添加 3、项目访问目录&#xff1a;public 4、域名…...

【Linux】权限的深度解析

前言&#xff1a;在此之前我们学习了一些常用的Linux指令&#xff0c;今天我们进一步学习Linux下权限的一些概念 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:Linux的学习 &#x1f448; &#x1f4af;代码仓库:卫卫周大胖的学习日记&a…...