目录

1、项目概述

2、项目架构

3、传感器选型

3.1、气体传感器

3.2、温度传感器

3.3、热释电红外传感器

3.4、继电器

4、硬件环境

5、Arduino功能设计

​6、LabVIEW功能设计

6.1、前面板设计

6.2、程序框图设计


1、项目概述

智能家居是以家为平台,兼备建筑化于一体的高效、舒适、安全、便利的家居环境。它是采用家庭控制总线、互联网、通信、人工智能、单片机、传感器等一系列高新技术将家居设备控制,安防管理生活信息及资讯管理,家居互联网通信等与我们日常生活息息相关的常用生活元素全面并缜密地结合在一起,能够高度地提升我们的日常生活质量、便利性、安全性、舒适性和丰富性,是实现真正意义上的数字化、网络化、信息化和智能化家庭的一种全新的系统。它是依托于住宅这个平台,能够科学统筹管理家居生活的各个方面,让家居生活“"智慧"起来。这个管理过程的实现要依赖于计算机技术、网络技术、通信技术和综合布线技术等关键技术。其目的是为了给人们提供一个更加舒适、更加安全、更加便利的环境,从而真正地提高人们的生活品质,让人们感受到现代化时尚便利式的生活。

智能家居系统是实现对家用电器、数据采集设备和安防设备进行智能化监控的系统,它包含入侵报警、煤气检测、数据采集以及家电控制等功能模块。其中,具有安防功能的煤气检测、入侵报警模块是为家庭提供安全方面的保障;数据采集模块用于对温度湿度等物理量的采集,把数据发送到控制模块,通过控制模块对空调、照明灯具和电动窗帘等设备进行控制,该模块实现的目的是为用户提供舒适、便捷、安全的家居环境。

2、项目架构

本篇博文主要介绍一个基于TCP/IP网络的远程智能家居系统,采用Arduino Uno控制器作为下位机,采用LabVIEW作为远程监控软件,两者通过网络实现通信。

项目资源下载请参见:LabVIEW Arduino TCP/IP远程智能家居系统【实战项目】

3、传感器选型

3.1、气体传感器

为了防止厨房内的煤气发生泄露,引发煤气中毒和火灾等危险的发生,本系统在厨房中安装气体传感器,以检测是否有天然气泄露。

气体传感器选用MQ-X系列气体传感器,此款传感器采用MQ-X型气敏元件,可以很灵敏地检测到空气中的烟雾以及甲烷气体。结合蜂鸣器模块与继电器模块,可以制作烟雾报警器、甲烷泄露报警器、自动烟雾排风机等产品,是使室内的空气达到环保标准的理想传感器。

MQ-2是一种气体电阻控制型的气敏器件,其阻值随被测气体的浓度(成分)而变化。气敏器件是一种“气—电"传感器件,它将被测气体的浓度(成分)信号转变成相应的电信号,而且气敏器件阻值与气体浓度之间一般为非线性关系,但在固定浓度域的气体检测时可近似认为是线性的,在一定的浓度范围内的检测是有效的。

气敏器件一般都是在加热条件下工作,但工作温度不宜太高(一般不要超过35℃),否则会造成性能衰减,降低气敏灵敏度。器件放置一段时间后,再通电使用时,阻值是先下降,然后又上升,通电大约10分钟后(初期稳定时间),才能稳定到与气氛状态相应的阻值。为了避免通电开始时的误报动作,应特别注意要设置十几分钟的延迟时间。器件的响应时间约为10秒,恢复时间约为30~60秒。使用时,要避免油浸或油垢污染,更不要将气敏器件长时间放在腐蚀气体中。长时间使用时,要有防止灰尘堵塞不锈钢网的措施。

MQ-2气体传感器实物图如下图所示:

3.2、温度传感器

DS18B20是美国DALLAS半导体公司的数字化单总线智能温度传感器,与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。从DS18B20读出信息或写入信息仅需要一根线(单总线)读写,总线本身也可以向所挂接的设备供电,而无需额外电源。

拓展学习:LabVIEW控制Arduino采集多路DS18B20温度数值(进阶篇—3)

3.3、热释电红外传感器

热释电红外传感器主要由一种高热电系数的材料,如错钛酸铅系陶瓷、担酸锂、硫酸三甘钛等制成尺寸为2mm×1mm的探测元件。在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。为了提高探测器的探测灵敏度以增大探测距离,一般在探测器的前方装设一个菲涅尔透镜,该透镜用透明塑料制成,将透镜的上、下两部分各分成若干等份,制成一种具有特殊光学系统的透镜,它和放大电路相配合,可将信号放大70dB以上,这样就可以测出10~20米范围内人的行动。

热释电红外传感器的窗口接收光线,滤波片对自然界中的白光信号具有抑制作用,因此只有特定波长的红外信号才能透过滤波片照射在热释电元件上。热释电元件被光照后,由于热释电元件的上下表面受到的光照不同,产生电子并且形成电流,使两块黑色涂膜产生不同的热释电,电流经过场效应管后放大输出电压信号。

热释电红外传感器具有不发任何类型的辐射、器件功耗很小、隐蔽性好、价格低廉等优点,其缺点如下:

1、容易受各种热源、光源干扰;

2、被动红外穿透力差,人体的红外辐射容易被遮挡,不易被探头接收;

3、环境温度和人体温度接近时,探测和灵敏度明显下降,有时造成短时失灵。

3.4、继电器

继电器是一种电控制器件,当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系,通常应用于自动化的控制电路中,实际上是用小电流去控制大电流运作的一种“自动开关”。

电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力下返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭"触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。

4、硬件环境

将DS18B20温度传感器的Vcc和GND分别连接至Arduino Uno控制器的+5V和GND,以给DS18B20提供电源,DS18B20的DQ引脚接至ArduinoUno控制器数字引脚D2,且连接4.7KΩ的上拉电阻,因为DS18B20的DQ引脚正常工作需要添加上拉电阻。

将MQ-2气体传感器的两个H引脚分别接至加热电源的正负极,并调整电源模块输出+5V电压;将A端、B端分别接至Arduino Uno控制器的+5V、模拟输入AO,并且在B端与GND之间串接负载电阻。

将固态继电器模组的控制端分别接至Arduino Uno控制板上的数字端口D3、D4、D5、D6、GND。硬件连接图上只表示了一路继电器,其余的类似。

将热释电红外传感器的VCC、OUT、GND分别接至Arduino Uno控制板上的5V、数字接口D7和GND。此处没有在硬件连接图上表示出来。

远程智能家居系统部分硬件连接如下图所示:

5、Arduino功能设计

在基于Arduino与LabVIEW的远程家庭监控系统中,Arduino Uno控制器需要完成以下功能:

1、通过W5100网络模块接收并判断命令,采集和传输温度、煤气浓度、热释电传感器的数据,并通过W5100网络模块上传给LabVIEW软件;

2、通过W5100网络模块接收并判断命令、控制多路继电器模组的断开与闭合,以控制家用电器的关闭与工作。

远程智能家居系统Arduino控制器程序代码如下所示:

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2     //DS18B20接至Arduino数字口2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);#define gas_Command        0x81
#define temp_Command       0x82
#define infrared_Command   0x80
#define SW1_ON_Command     0x11
#define SW1_OFF_Command    0x10
#define SW2_ON_Command     0x21
#define SW2_OFF_Command    0x20
#define SW3_ON_Command     0x31
#define SW3_OFF_Command    0x30
#define SW4_ON_Command     0x41
#define SW4_OFF_Command    0x40   #include <SPI.h>
#include <Ethernet.h>
// Adresses MAC et IP à changer suivant vos besoins
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);// Initialisation de la librairie ethernet
// et création d'un objet "Server" qui va accepter
// les connexions extérieures à l'adresse IP defini plus
// haut et sur le port indiqué (ici 8000)
EthernetServer server(8000);byte comdata[3]={0};
void test_do_data(void);    //测试串口数据是否正确并执行命令int SW1=3;
int SW2=4;
int SW3=5;
int SW4=6;
int inrared_Pin=7;void setup()
{Ethernet.begin(mac, ip);      // Initialisation de la pile TCP/IPserver.begin();               // Démarrage du serveursensors.begin();pinMode(SW1, OUTPUT); pinMode(SW2, OUTPUT); pinMode(SW3, OUTPUT); pinMode(SW4, OUTPUT);
}void loop()
{int i ;// Attente des connexions et création d'un objet client s'il y a lieuEthernetClient client = server.available();if (client) {                                // Un client existewhile (client.connected()) {               // il est connectéif (client.available()) {                // et il a envoyé des caractères    for(i=0;i<3;i++){comdata[i] =client.read();//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失delay(2);}test_do_data();}// on renvoie au client une chaine de caractère qui représente le résultat de// la conversion AN (par ex: '236') suivi des caractères CR+LF}client.stop();                             // Fermeture de la connexion}
}
void test_do_data()
{if(comdata[0] == 0x55)    //0x55和0xAA均为判断是否为有效命令{if(comdata[1] == 0xAA){switch (comdata[2]){case temp_Command: sensors.requestTemperatures();server.print(sensors.getTempCByIndex(0),2);    break;case infrared_Command:       server.print(digitalRead(inrared_Pin)*5/1024,2); break;case gas_Command:  server.print(analogRead(A0));      break;case SW1_ON_Command:  digitalWrite(SW1, HIGH);        break;case SW1_OFF_Command:  digitalWrite(SW1, LOW);        break;case SW2_ON_Command:  digitalWrite(SW2, HIGH);        break;case SW2_OFF_Command:digitalWrite(SW2, LOW);        break;case SW3_ON_Command:  digitalWrite(SW3, HIGH);        break;case SW3_OFF_Command:  digitalWrite(SW3, LOW);        break;case SW4_ON_Command:  digitalWrite(SW4, HIGH);        break;case SW4_OFF_Command:  digitalWrite(SW4, LOW);        break;}}}
}     

​6、LabVIEW功能设计

LabVIEW上位机部分需要完成以下功能:

1、当家用电器的开关触发时,向下位机Arduino控制器发送指定家电的状态切换命令,Arduino控制器通过W5100模块读取上位机的命令,进而控制固态继电器模组的闭合和断开,实现指定家用电器的打开/关闭;

2、当前面板无操作而超时1秒时,依次向下位机Arduino控制器发送温度、煤气浓度、热释电传感器的读取命令,Arduino控制器通过W5100模块读取上位机的命令,读取所需的数据并通过W5100模块上传至LabVIEW上位机软件显示。

6.1、前面板设计

LabVIEW前面板分为仪表盘显示、波形图显示和电器开关等部分,仪表盘部分用于显示当前的煤气浓度,波形图显示部分用于显示温度的变化趋势,电器开关部分用于控制各路电器的工作状态。同时,右下角的防盗指示灯显示热释电传感器的状态。

远程家庭监控系统的LabVIEW上位机前面板如下图所示:

6.2、程序框图设计

采用事件结构+超时结构来实现测量和控制两部分,在测量中使用条件结构+枚举的状态机来实现温度、气体浓度和热释电传感器数据的读取,将测量程序划分为3个状态:温度测量、气体检测和防盗指示。

为了更好地实现通信,制定如下的通信协议︰帧头+操作码。0x55AA为帧头,操作码0x80为热释电传感器数据的采集,0x81为气体浓度的采集,0x82为温度采集,0x11为第一路继电器闭合,0x10为第一路继电器断开,0x21为第二路继电器闭合,0x20为第二路继电器断开,0x31为第三路继电器闭合,0x30为第三路继电器断开,0x41为第四路继电器闭合,0x40为第四路继电器断开。

LabVIEW上位机超时部分的程序框图如下所示:

四个开关的值改变事件的程序框图如下所示:

在将程序烧写到Arduino Uno控制器之后,用网线将W5100网络模块与计算机连接在同一个路由器的不同的LAN接口,在LabVIEW程序中使用“高亮执行代码”,观察TCP初始化能否成功。如不能,则重启Arduino Uno控制器。

另外,在Arduino Uno控制器一端的路由器需要直接与公网相连接,而不是作为二级路由,同时需要设置路由器,使得Arduino Uno控制器的网络IP地址能够被远程的LabVIEW软件所侦听到。由于不同的路由器的设置方法不同,具体的路由器设置方法请上网搜索。

项目资源下载请参见:LabVIEW Arduino TCP/IP远程智能家居系统【实战项目】

LabVIEW Arduino TCP/IP远程智能家居系统(项目篇—5)相关推荐

  1. LabVIEW Arduino无线蓝牙遥控智能车(项目篇—2)

    目录 1.项目概述 2.项目架构 3.传感器和控制器 3.1.传感器 3.2.控制器 4.硬件环境 5.Arduino功能设计 6.LabVIEW功能设计 6.1.前面板设计 6.2.程序框图设计 1 ...

  2. 基于Arduino+nodemcu+blink的智能家居系统

    基于Arduino+nodemcu+blink的智能家居系统 #此篇为代码部分,实物视频演示在下面这个链接https://www.bilibili.com/video/BV1iA411v7qt/ 链接 ...

  3. 树莓派python智能家居英文参考文献_Home Assistant + 树莓派:强大的智能家居系统 · 小米篇...

    小米的智能家居设备物美价廉,博得了国内外不少用户的喜爱.不要不信,在 Home Assistant 官方论坛上,米家设备相关话题的热度一直居高不下. 通过之前的 安装篇 与 设备接入篇,相信大家对 H ...

  4. 基于GEC6818的智能家居系统[完整源码/项目报告/笔记分享]

    基于GEC6818的智能家居系统 项目目标: 使用GEC6818(ARM开发板)以及Linux操作系统来设计一个可以实现动感相册/监控/音乐播放器功能且UI友好,人机交互性高的智能家居系统. 代码编写 ...

  5. 一、基于wifi控制的智能家居系统之项目简介和设计方案(硬件基于arduino+esp8266,软件Android+Web端+scoket服务器,实现语音控制)

    由于是物联网工程的学生,会一点硬件,会一点Android开发,会一点Web开发,于是乎决定毕设的时候做一个简单一点的毕设,但是能够把所有的知识都应用,串联起来,将所学的知识实践. 一.项目功能介绍 项 ...

  6. 机智云AIoT+arduino单片机+智能家居系统及安防控制

    摘要:提出了一种基于机智云物联网云平台和Arduino单片机控制的智能家居安防系统设计模式,主要研究智能家居系统在无线组网技术和下位机子系统的软硬件功能,经过理论验证.仿真实验.电路搭建到智能家居模型 ...

  7. arduino读取水位传感器的数据显示在基于i2c的1602a上_构建Arduino的LoRa远程智能空气质量监测系统...

    背景知识视频教程 Arduino分步指南:完整指南 - 国外课栈​viadean.com Arduino微控制器:学习Arduino制作项目 - 国外课栈​viadean.com 通过构建实际应用程序 ...

  8. 适用于arduino uno物联网学习套件智能家居系统scratch图形化编程

    适用于arduino uno物联网学习套件智能家居系统scratch图形化编程 成品到手可用 有资料程序 实现功能:1.手机可以单独控制车库,储物间,卧室,客厅,阁楼灯光 2.手机控制风扇 3.手机控 ...

  9. 源码 | Arduino + EMQ X + Spring Boot + Vue 开源全栈物联网智能家居系统

    物美智能(wumei-smart)是一套开源的软硬件系统,可用于二次开发和学习,快速搭建自己的智能家居系统.硬件工程师可以把自己的设备集成到系统:软件工程师可以使用项目中的设备熟悉软硬件交互. 01 ...

最新文章

  1. call指令和ret指令的配合使用
  2. 自定义checkbox大小(注:用CSS的ZOOM属性 )
  3. 书法的艺术 —— 大家的作品
  4. [图解]管理九段的新排列
  5. python大神作品_Python大神的书单
  6. Trustdata:《2018年Q1中国移动互联网行业发展分析报告》
  7. spss20安装许可证代码_Spss 23软件下载与安装
  8. 2021年4月蓝桥杯软件类省赛:题目+解析(完整版)
  9. 学习笔记20--自动驾驶测试体系
  10. Dotnet WebAPI 项目启动提示 500.30 - ANCM In-Process Start Failure
  11. python修改文件的某一行_简单文件操作python 修改文件指定行的方法
  12. 阿里云python中文社区_python 写中文
  13. HTML5直播技术探究
  14. 任职母校!C9,迎来新副校长!
  15. JVM--藤原豆腐店自用
  16. C++ opencv之像素值统计(minMaxLoc,meanStdDev)
  17. 计算机组成原理实验存储器部件实验,实验4存储器部件实验.doc
  18. Web3中文|42岁退休身价百亿,王慧文高调复出再创业只为Ta
  19. CLI 发行uni-app到微信小程序,如何不打开微信开发者工具去进行小程序发布?
  20. 锁相环PLL --原理浅析

热门文章

  1. cityscapes和foggy_cityscapes数据集使用记录
  2. bigemap软件的优势分析
  3. D3D12渲染技术之混合
  4. 安装引导黑屏_电脑开机黑屏,提示NTLDR is missing怎么解决?
  5. 数字图像处理:关于BMP格式图像的理解和读写(c++)
  6. asterisk中eyebeam与移动的IMS帐号对接
  7. 自动动锁螺丝机程序采用显控触摸屏加三菱FX3GA或者FX3U , 用PLC变址寄存器做配方,用D1000-D7999存储数据
  8. 无U 盘纯净安装Win10
  9. 打印unicode汉字编码字符串为乱码怎么办?
  10. 思维导图软件TheBrain快捷方式键全攻略!快速完成各种操作