ESP8266与Node-RED构建可视化物联网项目

2025-06发布5次浏览

在物联网(IoT)领域,ESP8266和Node-RED是两个非常流行的工具。ESP8266是一款低成本、功能强大的Wi-Fi模块,能够轻松实现设备的联网功能;而Node-RED是一个基于浏览器的流程编辑器,可以用来创建复杂的逻辑流,从而将各种硬件设备和服务连接起来。

下面我们将详细介绍如何使用ESP8266与Node-RED构建一个可视化的物联网项目。

1. 硬件准备

首先,你需要以下硬件:

  • ESP8266开发板(如NodeMCU或Wemos D1)
  • 面包板和跳线
  • 可选:传感器(如DHT11温湿度传感器)

2. 软件准备

软件方面,你需要安装以下工具:

  • Arduino IDE(用于编写ESP8266代码)
  • Node-RED(可以通过npm安装或直接在Raspberry Pi上运行)

3. 配置ESP8266

3.1 安装Arduino IDE中的ESP8266支持

打开Arduino IDE,进入文件 -> 偏好设置,在“附加开发板管理器网址”中添加以下URL:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

然后,在工具 -> 开发板 -> 开发板管理器中搜索并安装esp8266

3.2 编写ESP8266代码

以下是一个简单的示例代码,它将通过Wi-Fi发送温度和湿度数据到Node-RED:

#include <ESP8266WiFi.h>
#include <DHT.h>

#define DHTPIN 2          // DHT11连接到GPIO2
#define DHTTYPE DHT11     // 使用DHT11

DHT dht(DHTPIN, DHTTYPE);

const char* ssid = "你的SSID";
const char* password = "你的密码";

WiFiClient client;

void setup() {
  Serial.begin(115200);
  dht.begin();
  
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
}

void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  if (client.connect("你的Node-RED服务器IP", 1880)) {
    String data = "{\"humidity\":" + String(humidity) + ",\"temperature\":" + String(temperature) + "}";
    client.print(data);
    Serial.println("Data sent");
  } else {
    Serial.println("Connection failed");
  }
  client.stop();
  delay(5000);
}

4. 配置Node-RED

4.1 安装Node-RED

如果你还没有安装Node-RED,可以通过以下命令在Linux系统上安装:

sudo npm install -g --unsafe-perm node-red

启动Node-RED:

node-red

4.2 创建Node-RED流

在Node-RED中,拖拽以下节点来创建流:

  • HTTP In节点:接收来自ESP8266的数据。
  • JSON节点:解析接收到的JSON数据。
  • Debug节点:查看解析后的数据。
  • Chart节点:可视化显示温度和湿度数据。

4.3 配置HTTP In节点

双击HTTP In节点,配置其方法为POST,路径为/sensor-data

4.4 配置Chart节点

双击Chart节点,选择Line Chart类型,并将输入字段分别设置为msg.payload.temperaturemsg.payload.humidity

5. 运行项目

上传ESP8266代码后,启动Node-RED。你应该能够在Node-RED的调试窗口中看到来自ESP8266的数据,并且在仪表板上看到实时更新的图表。

sequenceDiagram
    participant ESP as ESP8266
    participant NR as Node-RED
    ESP->>NR: POST /sensor-data {"humidity":50,"temperature":25}
    NR->>NR: 解析JSON数据
    NR->>NR: 更新图表显示