汤姆福特属于什么档次| 检查脑袋应该挂什么科| 97属什么生肖| 姓陆的女孩取什么名字好| 游字五行属什么| 男人阴虱用什么药| 子宫肌瘤做什么检查能查出来| 无以言表什么意思| 7月17日是什么星座| 鸡杂是什么| 胃疼吃什么水果| 鸟语花香是什么生肖| 吃青椒有什么好处| 为什么一热脸就特别红| 断片是什么意思| 房性早搏什么意思| 黑裙子配什么鞋子| 为什么会牙痛| 白内障有什么症状表现| 长辈生日送什么礼物好| 经常腰酸是什么原因女性| 西安有什么好吃的特产| 宝宝什么时候开始说话| 什么样的眼睛形容词| 区间放量是什么意思| 辛巳五行属什么| 包公是什么意思| 吃什么长头发快| 低密度脂蛋白胆固醇高吃什么药| 属蛇与什么属相相克| 甲亢是什么病| 梦见河水是什么意思| 宝贝疙瘩是什么意思| 贤上腺瘤是什么意思| 胆囊壁增厚是什么意思| 巨蟹座女和什么座最配| 什么是鸡皮肤图片| 6月20号什么星座| 梦见别人吐血是什么预兆| 什么泡茶好喝| 豆蔻年华是什么意思| 男生手淫有什么危害| 酸枣仁有什么功效| 手术后能吃什么| 多多包涵是什么意思| 为什么男人喜欢吃槟榔| 痢疾吃什么药最有效| 日行千里是什么生肖| 戏谑是什么意思| 谷氨酸是什么| 乙型肝炎核心抗体阳性是什么意思| 孙策是孙权的什么人| 腺样体肥大有什么症状| 宝宝喝什么奶粉好| 天天流鼻血是什么原因| 知性女性是什么意思| 牛油果和什么不能一起吃| ddi是什么意思| c7是什么意思| 什么病会引起腰疼| 吃什么能降胆固醇| 声色什么| 为什么会有肥胖纹| 为什么一动就满头大汗| 用什么泡脚可以去湿气| 酸梅汤不适合什么人喝| catl是什么意思| kailas是什么牌子| 高血压应该吃什么| 射手座与什么星座最配| 脑供血不足有什么症状| 肉蔻炖肉起什么作用| 丰富多腔的腔是什么意思| 胆汁为什么会反流到胃里面| 什么地听| 脾湿吃什么中成药| 扁平疣用什么治疗| 肌酐高是什么原因造成的| 肌酐低有什么危害| 血沉高是什么病| 16什么意思| 银针白毫是什么茶| 六字箴言是什么意思| 氧分压是什么意思| 618是什么星座| 前列腺炎有什么征兆| 坐月子吃什么补气血| hcg什么意思| 房性期前收缩是什么意思| hhv是什么病毒| 容易紧张是什么原因| 冰箱买什么牌子的好| 一个点是什么意思| 空调除湿是什么标志| 乳腺囊实性结节是什么意思| 梦见吐血是什么预兆| 黑头发有什么好处脑筋急转弯| 阴道壁是什么样的| 自贸区是什么意思| 什么是化学性肝损伤| 耳石症是什么引起的| 巽什么意思| 弱水三千什么意思| 头疼恶心是什么症状| 两个叉念什么| 早上跑步有什么好处| 引狼入室是什么意思| 三途苦是指的什么| 小孩老是眨眼睛是什么原因| 脾气虚吃什么中成药| 血压低吃什么药好| 亚瑟士和鬼冢虎的区别是什么| 腮腺炎吃什么药| 耍朋友是什么意思| 眼珠子疼是什么原因| 牙痛是什么原因引起的| 圣代是什么| 眼干眼涩眼疲劳用什么眼药水| 多金是什么意思| 孕妇吃猕猴桃对胎儿有什么好处| 丁丁历险记的狗是什么品种| 千秋无绝色悦目是佳人什么意思| 什么是规培| 肛瘘是什么| 赵云字什么| 早孕什么意思| 心率过快挂什么科| xswl什么意思| h是什么| 醋酸泼尼松片治什么病| 50岁用什么牌子化妆品好| 呓语是什么意思| 荨麻疹要注意什么| 舌头上火是什么原因| 树脂材料是什么| 一般细菌培养及鉴定是检查什么| MD是什么| 2049年是什么年| 开塞露擦脸有什么效果| 美国什么时候建国的| 憋尿憋不住是什么原因| 为什么喝酒后会头疼| 大放厥词是什么意思| 山东人喜欢吃什么| 6.25什么星座| 打完升白针有什么反应| 微信什么时候开始的| 公认是什么意思| 高同型半胱氨酸血症吃什么药| 慰藉是什么意思| 据悉是什么意思| cl是什么单位| 秽是什么意思| 羊肉不能和什么一起吃| 西瓜吃多了有什么坏处| 喝酒之前吃什么保护胃| 448是什么意思| 羊水穿刺是检查什么的| 拔罐痒是什么原因| 清和是什么意思| 驾驶证体检挂什么科| 什么是假药| 魅惑是什么意思| 什么是人乳头瘤病毒| 西元前是什么意思| 什么的大象| 妇检是检查什么| lu是什么单位| 12min是什么意思| 假体隆胸什么材料好| 一个胸大一个胸小是什么原因| 拉肚子用什么药| 一纸空文是什么意思| 退而求其次是什么意思| 11月18日什么星座| 不适是什么意思| 农历8月20日是什么星座| 仰仗是什么意思| 4月8号什么星座| 刀郎和那英是什么关系| 花千骨什么时候上映的| 中东是什么意思| 什么长而什么| 梦见好多猪肉是什么意思| 很长很长的什么填空| 梦见杀人了是什么意思| 梦见出国了是什么意思| 画皮是什么意思| 营卫不和吃什么中成药| 焦虑症吃什么药最好| 什么吃辣椒抓耳挠腮| 什么交加| 肝囊肿是什么原因造成的| 什么是水马| 足底筋膜炎吃什么药| 咽喉肿痛吃什么消炎药| 泡奶粉用什么水最好| 坐以待毙是什么意思| 硒酵母胶囊对甲状腺的作用是什么| 竖起中指是什么意思| 讨吃货什么意思| 白细胞低吃什么药| 左枕前位是什么意思| 上午九点多是什么时辰| 直击是什么意思| 什么东东| 打喷嚏是什么预兆| 肺和大肠相表里是什么意思| 掉头发是身体缺少什么| 膝盖疼痛挂什么科| aug什么意思| 夏天穿什么衣服| 康复治疗学学什么| 紫癜是什么意思| 唯有读书高的前一句是什么| 硫黄和硫磺有什么区别| 孤独症是什么| 为什么一吃饭就肚子疼| 贞操是什么| 平均分是什么意思| 为什么会血压低| 第一次为什么进不去| 风热感冒用什么药好| o型血的孩子父母是什么血型| 爷爷的妹妹叫什么| 庚辰五行属什么| 吃什么补钙最快| 脑瘫是什么原因引起的| 硬性要求是什么意思| 避孕套有什么危害| 舌头干涩是什么病前兆| 古尔邦节是什么意思| 马英九是什么生肖| 猫咪能吃什么水果| 子宫糜烂用什么药| 94年属什么生肖| 睡不着觉是什么原因引起的| 整个手掌发红是什么原因| 突破性出血是什么意思| 健身吃什么| 家道中落是什么意思| 县团级是什么级别| 一国两制什么时候提出的| 橙子和橘子有什么区别| 感情是什么| 什么是干细胞| 脑震荡挂什么科| 女孩和女人有什么区别| 睡觉为什么磨牙| 弊端是什么意思| 类风湿不能吃什么东西| 红绳有什么寓意| 车水马龙的意思是什么| 温文尔雅是什么意思| 皮肤脱皮是什么原因| 孕妇吃什么长胎不长肉| 优是什么意思| 小蓝瓶是什么| 儿童经常流鼻血什么原因造成的| 为什么生理期过后最容易掉秤| 香草是什么| 不割包皮有什么影响| 肝右叶钙化灶是什么意思| 宝鸡以前叫什么| 百度
"); //-->

博客专栏

EEPW首页 > 博客 > LabVIEW Arduino TCP/IP远程智能家居系统(项目篇—5)

思博伦发布全新无线测试解决方案,专为物联..

发布人:美男子玩编程 时间:2025-08-03 来源:工程师 发布文章
百度 孙亚芳女士将继续在华为治理体系的进一步建设与完善中发挥重要的作用。

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 <OneWire.h>#include <DallasTemperature.h>#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 <SPI.h>#include <Ethernet.h>// 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

相关推荐

技术专区

关闭
儿化音是什么意思 属龙和什么属相最配 蠼螋对人有什么危害 什么是耽美 人为什么会有头皮屑
高密度脂蛋白偏低是什么意思 非亲非故是什么意思 华在姓氏里读什么 瞳孔放大意味着什么 气虚便秘吃什么中成药
凌晨三点醒是什么原因 成群结队是什么意思 吃什么保肝护肝 球拍状胎盘对胎儿有什么影响 男人眉毛短是什么面相
孕妇用什么牙膏比较好 破伤风是什么意思 白塞氏是一种什么病 协会是什么意思 怀孕了吃什么药能打掉
钥字五行属什么hanqikai.com 什么东西越吃越饿hcv8jop8ns1r.cn 仙人板板 是什么意思hcv8jop7ns9r.cn 前呼后拥是什么意思hcv9jop3ns2r.cn 吃什么养肺hcv7jop9ns5r.cn
紫光檀是什么木hcv9jop0ns7r.cn 乳头痒是怎么回事是什么原因hcv8jop7ns3r.cn 干疮是什么样子的图片hcv8jop9ns6r.cn 过度换气是什么意思beikeqingting.com 减肥吃什么食物瘦得快hcv9jop0ns0r.cn
pst是什么意思hcv8jop4ns4r.cn 宝宝睡觉头上出汗多是什么原因hcv9jop4ns6r.cn 什么是变异性哮喘hlguo.com 五行属性是什么hcv8jop7ns7r.cn 哒哒是什么意思hcv8jop9ns5r.cn
冰丝是什么面料hcv8jop2ns1r.cn 88年属什么的生肖hcv9jop7ns0r.cn 杀青什么意思hcv9jop1ns9r.cn asmr是什么naasee.com 后背长痘痘是什么原因引起的beikeqingting.com
百度