ESP8266 NodeMCU:ESP-NOW Web 服务器传感器仪表板(ESP-NOW + Wi-Fi)

本文档介绍如何使用ESP8266 NodeMCU创建一个结合ESP-NOW通信协议和Wi-Fi的Web服务器,展示从多个ESP8266发送板收集的BME280传感器数据。内容包括项目概述、前提条件(如开发环境、BME280库和Web服务器库的设置)、硬件需求、接收板和发送板的代码实现,以及如何通过服务器发送事件(SSE)实现实时更新网页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本项目中,您将学习如何使用 ESP8266 NodeMCU 板托管 Web 服务器并同时使用 ESP-NOW 通信协议。您可以让多个 ESP8266 板通过 ESP-NOW 将传感器读数发送到一个 ESP8266 接收器,该接收器在网络服务器上显示所有读数。软件代码使用 Arduino IDE 进行编程。

同时使用 ESP-NOW 和 Wi-Fi

如果您想使用 Wi-Fi 托管 Web 服务器并同时使用 ESP-NOW 从其他开发板接收传感器读数,则需要考虑一些事项:

  • ESP8266 发送板必须使用与接收板相同的 Wi-Fi 通道。
  • 接收板的 Wi-Fi 信道由您的 Wi-Fi 路由器自动分配。
  • 接收板的Wi-Fi模式必须是接入点和站点(WIFI_AP_STA).
  • 您可以手动设置相同的 Wi-Fi 通道,也可以在发送器上添加简单的代码,将其 Wi-Fi 通道设置为与接收板相同的 Wi-Fi 通道。

项目概况

下图显示了我们将构建的项目的概览。

  • 有两块 ESP8266 发送板,通过 ESP-NOW将BME280温度和湿度读数发送到一块 ESP8266 接收板( ESP-NOW 多对一配置);
  • ESP8266 接收板接收数据包并在网络服务器上显示读数;
  • 每次使用服务器发送事件 (SSE) 接收到新读数时,网页都会自动更新。
  • 该网页还显示了上次使用 JavaScript 更新读数的时间。

前提条件

在继续此项目之前,请确保检查以下先决条件。

开发环境

我们将使用 Arduino IDE 对 ESP8266 板进行编程,因此在继续本教程之前,请确保您的 Arduino IDE 中安装了 ESP8266 板。

  • 在 Arduino IDE(Windows、Mac OS X 和 Linux)中安装 ESP8266 开发板

BME280 图书馆

ESP8266 发送板将从 BME280 传感器发送温度和湿度读数。

要从 BME280 传感器读取数据,我们将使用Adafruit_BME280 库。要使用此库,您还需要安装 Adafruit Unified Sensor 库。按照后续步骤安装这些库。

在搜索框中搜索“ adafruit bme280  ”并安装库。

要使用 BME280 库,您还需要安装 Adafruit_Sensor 库。按照以下步骤在您的 Arduino IDE 中安装该库:

转到 Sketch  >  Include Library  >  Manage Libraries ,然后在搜索框中 键入“ Adafruit Unified Sensor ”。一直向下滚动以找到库并安装它。

要了解有关 BME280 温度、湿度和压力传感器的更多信息,请阅读我们的指南:ESP8266 和 BME280 使用 Arduino IDE(压力、温度、湿度)。

异步 Web 服务器库

要构建 Web 服务器,您需要安装以下库:

这些库无法通过 Arduino 库管理器安装,因此您需要将库文件复制到 Arduino Installation Libraries 文件夹中。或者,在您的 Arduino IDE 中,您可以转到 Sketch  >  Include Library  >  Add .zip Library 并选择您刚刚下载的库。

Arduino_JSON 库

您需要安装 Arduino_JSON 库。您可以在 Arduino IDE 库管理器中安装此库。只需转到 Sketch  >  Include Library  >  Manage Libraries 并搜索库名称,如下所示:

所需硬件

要学习本教程,您需要多个 ESP8266 开发板。我们将使用三个 ESP8266 板。您还需要:

  • 3x ESP8266 (阅读 最佳 ESP8266 开发板)
  • 2x BME280 传感器– ESP8266 的 BME280 指南
  • 面包板
  • 跳线

获取接收板MAC地址

要通过 ESP-NOW 发送消息,您需要知道接收板的。每块板都有一个唯一的 MAC 地址。

将以下代码上传到您的 ESP8266 接收板以获取其 MAC 地址。

// 获取和更改ESP MAC地址的完整代码:

#ifdef ESP32
  #include <WiFi.h>
#else
  #include <ESP8266WiFi.h>
#endif

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("ESP Board MAC Address:  ");
  Serial.println(WiFi.macAddress());
}
 
void loop(){

}

上传代码后,按下 RST/EN 按钮,MAC 地址应该显示在串口监视器上。

ESP8266 接收器(ESP-NOW + Web 服务器)

ESP8266 NodeMCU 接收板接收来自发送板的数据包,并托管一个网络服务器以显示最新接收的读数。

将以下代码上传到您的接收板 - 该代码已准备好接收来自两个不同板的读数。

#include <espnow.h>
#include <ESP8266WiFi.h>
#include "ESPAsyncWebServer.h"
#include "ESPAsyncTCP.h"
#include <Arduino_JSON.h>

// Replace with your network credentials (STATION)
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Structure example to receive data
// Must match the sender structure
typedef struct struct_message {
  int id;
  float temp;
  float hum;
  unsigned int readingId;
} struct_message;

struct_message incomingReadings;

JSONVar board;

AsyncWebServer server(80);
AsyncEventSource events("/events");

// callback function that will be executed when data is received
void OnDataRecv(uint8_t * mac_addr, uint8_
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值