当前位置:首页Arduino > 正文

Arduino智慧农业之温湿度数据可视化

作者:野牛程序员:2023-12-25 11:06:52Arduino阅读 2642

要实现温湿度数据的可视化,可以使用传感器采集环境数据,然后将数据传输到云平台或本地服务器,最后使用相应的工具进行数据可视化。以下是一个示例方案,硬件部分包括 DHT22 温湿度传感器和 NodeMCU ESP8266 微控制器。

硬件组件:

  1. NodeMCU ESP8266 微控制器

  2. DHT22 温湿度传感器

  3. 杜邦线

  4. 电源和线缆

连接方式:

  1. 将 DHT22 温湿度传感器的 VCC 引脚连接到 NodeMCU 的 3.3V 引脚。

  2. 将 DHT22 温湿度传感器的 GND 引脚连接到 NodeMCU 的 GND 引脚。

  3. 将 DHT22 温湿度传感器的 DATA 引脚连接到 NodeMCU 的 D2 引脚。

Arduino 代码:

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

#define DHTPIN 2          // DHT22传感器连接到D2引脚
#define DHTTYPE DHT22     // 使用DHT22型号的传感器

const char* ssid = "your-ssid";      // 替换成你的Wi-Fi网络名称
const char* password = "your-password";  // 替换成你的Wi-Fi网络密码
const char* server = "your-server";  // 替换成你的服务器地址

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
  connectToWiFi();
}

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

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

  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.print("°C, Humidity: ");
  Serial.print(humidity);
  Serial.println("%");

  sendToServer(temperature, humidity);

  delay(60000);  // 每分钟发送一次数据,根据实际情况调整
}

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

void sendToServer(float temperature, float humidity) {
  WiFiClient client;

  String url = "/api/record?temperature=" + String(temperature) + "&humidity=" + String(humidity);
  Serial.print("Connecting to server: ");
  Serial.println(server);

  if (client.connect(server, 80)) {
    Serial.println("Connected to server");

    client.print(String("GET ") + url + " HTTP/1.1\\r\\n" +
                 "Host: " + server + "\\r\\n" +
                 "Connection: close\\r\\n\\r\\n");

    Serial.println("Data sent to server");
  } else {
    Serial.println("Connection to server failed");
  }

  client.stop();
}

这个示例代码连接到Wi-Fi网络,然后读取 DHT22 温湿度传感器的数据,并通过 HTTP 请求将数据发送到服务器。在服务器端,可以使用相应的后端技术(例如Node.js、Python、PHP等)接收数据,并将其存储在数据库中。随后,可以使用数据可视化工具,例如Grafana、ThingSpeak、或自己搭建的Web界面,实现温湿度数据的实时监测和可视化。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击