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

原创 美男子玩编程 2022-08-19 12:00

点击上方蓝色字体,关注我们



1


项目概述


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


这个管理过程的实现要依赖于计算机技术、网络技术、通信技术和综合布线技术等关键技术。其目的是为了给人们提供一个更加舒适、更加安全、更加便利的环境,从而真正地提高人们的生活品质,让人们感受到现代化时尚便利式的生活。


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



2


项目架构


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




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 #include #define ONE_WIRE_BUS 2     //DS18B20接至Arduino数字口2OneWire 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 #include // Adresses MAC et IP à changer suivant vos besoinsbyte 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上位机前面板如下图所示:



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无线蓝牙遥控智能车(项目篇—2)

  • LabVIEW Arduino ZigBee无线气象站(项目篇—3)

  • LabVIEW Arduino RS-485智能农业监测系统(项目篇—4)

点击阅读原文,更精彩~
美男子玩编程 多领域、有深度的开发者交流平台
评论
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 150浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 90浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 708浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 212浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 215浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 127浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 195浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 199浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 143浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 358浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 165浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 709浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 69浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦