【如何通过WiFi从NodeMCU传输数据?】

如何通过WiFi从NodeMCU传输数据?

简介

这里展示了如何使用 WiFi 连接读取传感器数据并将其从 NodeMCU ESP8266MOD 板传输到 PC 或移动设备或其他设备浏览器。如果您想获取传感器数据或其他类型的数据并通过 wifi 将其发送到本地服务器或在 Internet 上发布数据,则这是必需的。这允许人们创建物联网 (IoT) 设备和 IoT 项目。在此演示中,我们将使用 NodeMCU 板从 DHT11 传感器获取湿度和温度数据,然后通过 WiFi 网络将该传感器数据无线发送到 PC。

硬件和接口

这里使用 NodeMCU ESP8266 板,它是具有 wifi 功能的微控制器板。下面显示了 NodeMPCU ESP8266MOD 板。
在这里插入图片描述这里使用的湿度和温度传感器是 DHT11,它有四个引脚,但 DHT 传感器分线板有三个引脚。在这里,我们将使用 DHT 传感器面包板。该 DHT 传感器板具有 Vcc 引脚、数字输出引脚和接地引脚。在这里,我们将 DHT11 传感器数字引脚连接到 nodemcu 板的 GPIO05(数字引脚 D1)。
下图为DHT11传感器模块。
在这里插入图片描述下面的电路图显示了如何将 DHT11 传感器的数字输出引脚连接到 NodeMCU 板的 GPIO05(数字引脚 D1)。
在这里插入图片描述DHT11传感器Vcc引脚连接到nodemcu板的3.3V引脚,接地引脚连接到nodemcu板的接地引脚。因此,DHT11 传感器模块使用 NodeMCU 板 3.3V 供电。

下面显示了连接到面包板并连接到 DHT11 的 Nodemcu 板。

在这里插入图片描述为了给 NodeMCU 供电,使用了连接到 NodeMCU 板的 Vin 引脚的 5V 稳压电源。如下所示。
在这里插入图片描述

软件与编程

NodeMCU 使用 Arduino IDE(开源且可免费下载)进行编程。除了 Arduino IDE,我们还需要安装两个库(wifi 和 DHT11)和一个头文件(aRest)。

1. DHT11传感器库

该库使我们可以轻松编写用于控制和从传感器获取数据的代码。它可以通过 Arduino IDE 中的库管理器安装。带 Arduino的 DHT11 湿度温度传感器教程解释了如何安装此库。

2.WiFi库

使用这个库,我们可以创建 wifi 连接并使 wifi 编程更容易。该库也可以通过 Arduino IDE 中的库管理器安装。如何安装这个 wifi 库在教程LED Blink using ESP8266 & Arduino IDE with Video and Pictures中有解释。

3.aRest头文件

需要此头文件才能将数据从 NodeMCU 发送到 PC、手机或任何其他设备浏览器。那就是 REST 框架用于通过 WiFi 连接发送数据。这个头文件可以从下面的链接下载。

https://github.com/marcoschwartz/aREST/blob/master/aREST.h

源代码

以下是从 NodeMCU 读取传感器数据并将其传输到 PC 或任何设备浏览器的完整代码

// Import required libraries
#include "ESP8266WiFi.h"
#include "aREST.h"
#include "DHT.h"

// WiFi parameters
const char* ssid = "yourWiFiSSID";
const char* password = "yourWiFipassword";

// declare port number for listening incoming TCP connections 
#define LISTEN_PORT 80

// Create an instance of the server
WiFiServer server(LISTEN_PORT);

// Create aREST instance
aREST rest = aREST();

// DHT11 sensor pins
#define DHTPIN 4
#define DHTTYPE DHT11

// Initialize DHT sensor
DHT dht(DHTPIN,
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是将ESP8266 NodeMCU开发板连接到Arduino Uno板并传输数据的示例代码: 在NodeMCU上运行的代码: ``` #include <ESP8266WiFi.h> const char* ssid = "your_SSID"; // 你的WiFi名称 const char* password = "your_PASSWORD"; // 你的WiFi密码 WiFiServer server(80); // 设置一个本地服务器 void setup() { Serial.begin(9600); // 与串口通信 delay(10); // 连接到WiFi网络 Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // 开启服务器 server.begin(); Serial.println("Server started"); } void loop() { // 等待客户端连接 WiFiClient client = server.available(); if (!client) { return; } // 读取客户端发送的数据 Serial.println("new client"); while(!client.available()){ delay(1); } String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // 发送数据Arduino Uno Serial.println("Sending data to Arduino..."); Serial1.println(request); delay(100); // 发送响应到客户端 client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // 空行必须添加 client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<body>"); client.println("<h1>ESP8266 NodeMCU</h1>"); client.println("<p>Data sent to Arduino Uno: " + request + "</p>"); client.println("</body>"); client.println("</html>"); delay(1); Serial.println("Client disconnected"); Serial.println(""); } ``` 在Arduino Uno上运行的代码: ``` void setup() { Serial.begin(9600); // 与串口通信 Serial1.begin(9600); // 与NodeMCU通信 } void loop() { // 读取NodeMCU发送的数据 if (Serial1.available()) { String data = Serial1.readStringUntil('\r'); Serial.println("Data received: " + data); } } ``` 这个例子中,NodeMCU运行一个本地服务器,等待客户端连接并发送数据。当有客户端连接时,NodeMCU会读取客户端发送的数据并将其发送到Arduino Uno。然后,NodeMCU会向客户端发送一个HTML响应,其中包含已发送到Arduino Uno的数据Arduino Uno只是读取NodeMCU发送的数据并将其打印到串口监视器中。 注意:确保将NodeMCUArduino Uno正确连接。将NodeMCU的TX引脚连接到Arduino Uno的RX引脚,将NodeMCU的RX引脚连接到Arduino Uno的TX引脚。如果您使用的是NodeMCU V1.0板,您需要将板上的开关设置为“UART”模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值