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

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

1、项目概述

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


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


2、项目架构

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


dc7e52c412e84575b732c9e6c420bab8.png


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

https://download.csdn.net/download/m0_38106923/85773217


3、传感器选型


3.1、气体传感器

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


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


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


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


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


495f97100aeb407b8dd47b7b9d377dc8.png


3.2、温度传感器

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


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

https://blog.csdn.net/m0_38106923/article/details/125134871


3.3、热释电红外传感器

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


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


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


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


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


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


ab0ba408c40d4548ad86cfdb1ef51cdb.png


3.4、继电器

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


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


d3e866f8d30d420cbf2299ae3e531d37.png


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。此处没有在硬件连接图上表示出来。


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


b836605e506f4cd0a1ef7c49f5a4cb75.png


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/IP
  server.begin();               // Démarrage du serveur
  sensors.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 lieu
  EthernetClient client = server.available();
  if (client) {                                // Un client existe
    while (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上位机前面板如下图所示:


a097ce70430c46bb8d4cbc7cff945240.png


6.2、程序框图设计

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


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


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


65584ec5893345d4b977a209bac9b834.png

839ff98fe8084cbeb4a6f4e681a548a9.png


473d7e63f89942b2a2700a1bbebb390a.png



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


6648f83145494bc190ee97ad90f4cbeb.png

dac1c438b79e4a7697f57f3819d6e720.png


cda3a4006db045d294f0198beb6f4ce6.png


efeaac8379ce4938adeb3c1fb316795c.png



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


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


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
算法 索引 智能硬件
智能家居系统
【9月更文挑战第05天】
56 5
|
15天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
56 3
|
5月前
|
存储 安全 网络安全
智能家居系统的安全漏洞及防护措施
【7月更文挑战第8天】随着物联网技术的飞速发展,智能家居系统已经逐渐走进千家万户。本文将深入探讨智能家居系统中存在的安全漏洞,分析其产生的原因,并提出有效的防护措施。通过本文,读者将了解到如何保护自己的智能家居设备免受黑客攻击,确保家庭网络环境的安全。
|
2月前
|
传感器 监控 算法
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
110 6
|
3月前
|
传感器 监控 智能硬件
我们可以构想一个智能家居场景,并通过智能家居系统来执行一系列操作
具体化到一个假设的场景或功能中,我们可以构想一个智能家居场景,并通过智能家居系统来执行一系列操作。这里,我将以“智能灯光控制”和“智能安防系统”为例,说明如何通过智能家居系统来操作这些设备。
|
3月前
|
数据安全/隐私保护 智能硬件
智能家居系统入门指南
随着科技的飞速发展,智能家居系统已不再是遥不可及的梦想。本文将带你走进智能生活的世界,从基础概念到实用设备,再到搭建步骤和常见问题解答,全方位解析如何打造一个舒适、便捷、高效的智能居家环境。让我们一起探索,如何通过简单的操作,实现家居生活的智能化升级。
|
4月前
|
传感器 监控 安全
智能家居系统:物联网技术的应用与挑战
在这篇文章中,我们将深入探讨智能家居系统背后的技术原理、实际应用以及面临的主要挑战。通过分析物联网技术如何实现家居自动化,并结合具体案例,本文旨在提供对智能家居发展现状和未来趋势的全面理解。
|
4月前
|
机器学习/深度学习 人工智能 安全
智能家居系统的未来展望
【8月更文挑战第29天】 随着科技的飞速发展,智能家居系统已从简单的遥控操作进化到能够学习用户习惯、自主决策的智能平台。本文将探讨智能家居系统的最新技术趋势、面临的挑战以及未来可能达到的新高度。通过分析当前技术进展和市场动态,我们将一窥智能家居如何塑造更加便捷、高效和可持续的生活方式。
60 4
|
4月前
|
机器学习/深度学习 人工智能 物联网
智能家居系统的未来:技术融合与生活革新
【8月更文挑战第22天】本文探讨了智能家居系统的未来发展趋势,着重分析了物联网、人工智能、大数据等技术的融合如何推动智能家居的革新。文章从智能家居的定义和发展历程出发,逐步深入到技术融合的具体应用,以及这些技术如何影响我们的日常生活。通过对未来可能的生活场景进行描绘,文章旨在启发读者思考技术与日常生活的深刻联系,并展望智能家居系统带给我们的便利和挑战。
|
4月前
|
人工智能 安全 物联网
智能家居系统的未来:从自动化到人工智能的演进
随着科技的迅速发展,智能家居系统正经历着一场革命性的变革。本文将深入探讨智能家居技术的最新进展,包括物联网(IoT)、大数据和人工智能(AI)如何塑造未来家居生活。通过分析当前技术趋势,本文旨在揭示智能家居系统如何从简单的自动化向智能化转变,并预测未来可能的发展方向。
140 3