我是靠谱客的博主 快乐荷花,最近开发中收集的这篇文章主要介绍【如何通过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, DHTTYPE);

// Variables to hold data from DHT11 sensor
float humidity;
float temperature;


void setup(void)
{  
  // Start Serial
  Serial.begin(9600);
  
  // Init DHT 
  dht.begin();
  
  // Initialize variables for REST API
  rest.variable("humidity",&humidity);
  rest.variable("temperature",&temperature);
    
  // Give name and ID to device
  rest.set_id("1");
  rest.set_name("esp8266");
  
  // Connect to WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
  
  // Show IP address
  Serial.println(WiFi.localIP());
  
}

void loop() {
    
  // Reading temperature and humidity
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  
  // Handle REST calls
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  while(!client.available()){
    delay(1);
  }
  rest.handle(client);
 
}

现在解释源代码。

1.首先我们导入需要的库

#include "ESP8266WiFi.h"
#include "aREST.h"
#include "DHT.h"
  1. 设置 WiFi 连接需要以下代码行。首先,我们将 wifi 凭据保存在变量 ssid 和密码中。在这里,您必须将 yourWiFiSSID 和 yourWiFipassword 替换为您实际的 WiFi SSID 和密码。别名 MYPORT 用于保存端口号 80,这是 http 端口,传感器数据与 URL 一起可见。然后我们创建一个 WiFi 服务器,我们在其中传递端口号。
// WiFi parameters
const char* ssid = "";
const char* password = "";

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

// Create an instance of the server
WiFiServer server(MYPORT);
  1. 以下代码行用于 DHT11 传感器。首先,我们创建别名 DHT11 传感器引脚和 DHT 传感器类型,可以是 DHT11 或 DHT22。这里我们使用 DHT11 传感器。然后我们初始化了 DHT 传感器。还创建了两个名为 humidity 和 temperature 的浮点类型变量,它们将保存来自传感器的湿度和温度数据。
// DHT11 sensor pins
#define DHTPIN 4
#define DHTTYPE DHT11

// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);

// Variables to hold data from DHT11 sensor
float humidity;
float temperature;
  1. 然后我们使用以下行的 aREST() 函数创建一个名为 rest 的 REST 实例。稍后我们可以使用这个 rest 实例使用各种方法。
// Create aREST instance
aREST rest = aREST();

  1. 在 setup() 循环中,我们首先使用以下代码行设置串行连接。这用于读取 WiFi 连接状态。我们可以使用 Arduino 串行监视器来检查 WiFi 连接,或者我们可以使用任何其他串行终端,例如 Tera Term。
// Start Serial
  Serial.begin(9600);
  1. 以下代码用于DHT传感器的初始化。
// Init DHT 
  dht.begin();
  1. 以下代码用于 REST API,用于通过 WiFi(TCP) 进行数据传输。其余的是 aREST 实例和 variable()、set_id() 和 set_name() 是它的方法。这些方法由实例使用点表示法访问。
// Initialize variables for REST API
  rest.variable("humidity",&humidity);
  rest.variable("temperature",&temperature);
    
  // Give name and ID to device
  rest.set_id("1");
  rest.set_name("esp8266");
  1. 下一行代码用于建立和检查 NodeMCU 与 WiFi 接入点之间的 WiFi 连接。
 // Connect to WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
  
  // Show IP address
  Serial.println(WiFi.localIP());
  1. 在 loop() 中,我们读取传感器的湿度和温度数据并将它们存储在之前创建的变量 humidity 和 temperature 中。
// Reading temperature and humidity
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  1. 在最后一步中,我们创建一个名为 client(NodeMCU)的 WiFi 客户端,并检查它是否连接到服务器(WiFi 接入点路由器)。如果没有 wifi 连接或存在任何客户端创建错误,我们将中止。如果有连接并且客户端可用,我们会创建 1 毫秒的延迟。rest.handle(client) 用于将数据从 NodeMCU 传输到 WiFi 服务器。如果有客户端可用,则在数据传输之间有 1 毫秒的延迟。
/ Handle REST calls
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  while(!client.available()){
    delay(1);
  }
  rest.handle(client);

结果

将代码上传到 NodeMCU 后,当您打开 Arduino 串行监视器时,您应该看到 WiFi 已连接,服务器已启动,客户端的 IP 地址由 DHCP 服务器提供。
在这里插入图片描述
然后,如果您打开 Firefox 等浏览器并输入 http://192.168.1.8/humidity,您应该会看到来自传感器的湿度数据、给定的设备 ID 和名称以及连接状态。如下所示。

在这里插入图片描述同样可以在浏览器上的url http://192.168.1.8/temperature 上查看温度传感器数据。

在这里插入图片描述原始 JSON 格式数据显示在 google chrome 浏览器(如果您选择查看原始数据,则为 Firefox),如下所示。
在这里插入图片描述您可以使用任何设备(例如手机)并输入网址来查看湿度和温度数据。

最后

以上就是快乐荷花为你收集整理的【如何通过WiFi从NodeMCU传输数据?】的全部内容,希望文章能够帮你解决【如何通过WiFi从NodeMCU传输数据?】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部