基于Arduino与LabVIEW的远程家庭监控系统

简介: 基于Arduino与LabVIEW的远程家庭监控系统

在基于Arduino与LabVIEW的远程家庭监控系统中,Arduino Uno控制器需要完成以下功能:1)通过W5100网络模块接收并判断命令,采集和传输温度、煤气浓度、热释电传感器的数据,并通过W5100网络模块上传给LabVIEW软件。2)通过W5100网络模块接收并判断命令、控制多路继电器模组的断开与闭合,以控制家用电器的关闭与工作。

1.Arduino硬件连接

将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、模拟输入A0,并且在B端与GND之间串接负载电阻。

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

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

2.Arduino程序设计

代码清单:远程智能家居系统Arduino控制器程序代码

#include <OneWire.h> // 包含I2C函数库
#include <DallasTemperature.h> // 包含Dallas单总线函数库#include <SPI.h> // 包含SPI函数库#include <Ethernet.h> // 包含W5100网络函数库#define ONE_WIRE_BUS 2 // 定义数字口2为单总线的控制引脚#define gas_Command 0x81 // 气体采集命令#define temp_Command 0x82 // 温度采集命令#define infrared_Command 0x80 // 热释电采集命令#define SW1_ON_Command 0x11 // 继电器1闭合命令#define SW1_OFF_Command 0x10 // 继电器1断开命令#define SW2_ON_Command 0x21 // 继电器2闭合命令
#define SW2_OFF_Command 0x20 // 继电器2断开命令#define SW3_ON_Command 0x31 // 继电器3闭合命令#define SW3_OFF_Command 0x30 // 继电器3断开命令#define SW4_ON_Command 0x41 // 继电器4闭合命令#define SW4_OFF_Command 0x40 // 继电器4断开命令OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);// 设置MAC地址和IP地址byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };IPAddress ip(192,168,1,177);// 设置端口号EthernetServer server(8000);int SW1=3; // 定义继电器1的控制引脚int SW2=4; // 定义继电器2的控制引脚int SW3=5; // 定义继电器3的控制引脚
int SW4=6; // 定义继电器4的控制引脚
int inrared_Pin=7; // 定义热释电传感器信号的读取引脚
byte comdata[3]={0}; // 定义数组,用于保存接收命令数据
void test_do_data(void); // 测试串口数据是否正确并执行命令
void setup()
{
Ethernet.begin(mac, ip); // 初始化TCP/IP协议栈
server.begin(); // 启动服务器
sensors.begin(); // 初始化单总线传感器
pinMode(SW1, OUTPUT);
pinMode(SW2, OUTPUT);
pinMode(SW3, OUTPUT);
pinMode(SW4, OUTPUT); // 将继电器的控制引脚设置为输出状态
}
void loop()
{
int i ;
// 等待连接,并创建一个用户对象
EthernetClient client = server.available();
if (client) {
while(client.connected()) {
if(client.available()) {
for(i=0;i<3;i++)
{
comdata[i] =client.read();
delay(2);
}
test_do_data();
}
}
client.stop(); // 关闭连接
}
}
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));
break;
case gas_Command: // 气体采集命令
server.print(analogRead(A0));
break;
case SW1_ON_Command: // 继电器1闭合命令
digitalWrite(SW1, HIGH);
break;
case SW1_OFF_Command: // 继电器1断开命令
digitalWrite(SW1, LOW);
break; case SW2_ON_Command: // 继电器2闭合命令
digitalWrite(SW2, HIGH);
break;
case SW2_OFF_Command: // 继电器2断开命令
digitalWrite(SW2, LOW);
break;
case SW3_ON_Command: // 继电器3闭合命令
digitalWrite(SW3, HIGH);
break;
case SW3_OFF_Command: // 继电器3断开命令
digitalWrite(SW3, LOW);
break;
case SW4_ON_Command: // 继电器4闭合命令
digitalWrite(SW4, HIGH);
break;
case SW4_OFF_Command: // 继电器4断开命令
digitalWrite(SW4, LOW);
break;
}
}
}
}


目录
相关文章
|
1月前
|
网络协议 Go 网络安全
一种远程升级PLC和HMI组态屏程序的方法-做个笔记
一种远程升级PLC和HMI组态屏程序的方法-做个笔记
25 2
|
4月前
|
传感器 数据采集 监控
毕业设计|基于51单片机的配电室远程监控系统设计环境检测GSM环境报警设计
毕业设计|基于51单片机的配电室远程监控系统设计环境检测GSM环境报警设计
|
9月前
|
网络协议 Java 程序员
慧安-PLC4X学习
慧安-PLC4X学习
245 0
|
11月前
|
传感器 数据采集 人工智能
LabVIEW Arduino RS-485智能农业监测系统(项目篇—4)
智能农业是目前农业发展的新方向,它根据农作物的生长习性及时调整土壤状况和环境参数,以最少的投入获得最高的收益,改变了传统农业中必须依靠环境种植的弊端及粗放的生产经营管理模式,改善了农产品的质量与品质,调整了农业的产业结构,确保了农产品的总产量,高效地利用了各种各样的农业资源,可取得可观的经济效益和社会效益。
|
11月前
|
传感器 数据采集 物联网
LabVIEW Arduino ZigBee无线气象站(项目篇—3)
目前,国内气象站对地面气象数据的采集大多采用传统的有线方式,其布线成本高,维护不方便,尤其对于山区等一些复杂的地形来说,这种缺点更为明显。传统的无线通信方式有很多,无线电、微波、红外线、蓝牙、射频等,在某些只需简单的无线连接的应用领域对数据速率的要求并不很高,设备的功耗是更需要考虑的问题。ZigBee网络是低功耗、低成本、高可靠性的无线传感器网络,其在环境检测等领域中有着广阔的应用前景。
|
11月前
|
传感器 数据采集 芯片
LabVIEW Arduino电子称重系统(项目篇—1)
质量是物理学中的7个基本量纲之一。在工业生产和日常生活中,我们都需要获取一个物体的质量,比如购买某件商品时,需要确定其质量大小,或者以质量作为中间量以进一步获得物体的其他参数,如质心、偏心等。
|
11月前
|
传感器 前端开发 机器人
LabVIEW Arduino无线蓝牙遥控智能车(项目篇—2)
智能小车是以轮子作为移动机构,并且能够实现自主行驶的机器人,又被称为轮式机器人。由于具有智能化的特点,可以应用于不适合人类工作的环境中,例如灾难救援、户外探险等。智能小车有别于遥控小车,因为后者需要操作人员来控制其转向、启停和前进后退,以及控制其速度,常见的模型小车,都属于这类遥控车。智能小车,则可以通过计算机编程来实现其对行驶方向、启停以及速度的控制,无须人工干预,也可以通过修改智能小车的程序来改变它的行驶方式。 ———————————————— 版权声明:本文为CSDN博主「不脱发的程序猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:htt
LabVIEW工业过程控制系统
本篇博文基于LabVIEW实现工业过程控制系统
|
数据采集 监控 数据挖掘
基于labview的智能大棚监控系统-上位机
基于labview的智能大棚监控系统-上位机
105 0