当前位置:首页Arduino > 正文

Arduino智慧农业之基于WiFi的远程温湿度监测系统

作者:野牛程序员:2023-12-25 11:48:12Arduino阅读 2692

要实现基于WiFi的远程温湿度监测系统,可以选择以下硬件模块:

  1. WiFi 模块与微控制器一体化:

    • NodeMCU ESP8266 或 ESP32: 这些是集成了WiFi模块的微控制器开发板,适用于物联网应用。

  2. 温湿度传感器:

    • DHT22 或 DHT11: 这是一种数字温湿度传感器,适用于Arduino项目。

  3. 电源:

    • 5V 直流电源适配器: 用于供电NodeMCU等设备。

下面是一个简单的Arduino代码框架,用于读取温湿度数据并通过WiFi发送到远程服务器。这个例子中,使用了ThingSpeak作为远程服务器,需要在ThingSpeak上创建一个账户并设置一个通道,获取相应的API密钥。

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

const char* ssid = "your-ssid";        // 替换成你的Wi-Fi网络名称
const char* password = "your-password";  // 替换成你的Wi-Fi网络密码
const char* server = "api.thingspeak.com";
const String apiKey = "your-api-key";  // 替换成你的ThingSpeak通道API密钥

const int DHTPin = D2;                  // DHT22传感器连接到D2引脚
DHT dht(DHTPin, DHT22);

void setup() {
  Serial.begin(115200);
  delay(10);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
}

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

  Serial.print("Temperature: ");
  Serial.println(temperature);
  Serial.print("Humidity: ");
  Serial.println(humidity);

  sendToThingSpeak(temperature, humidity);

  delay(10000);  // 每隔10秒发送一次数据,根据实际情况调整
}

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

  String url = "/update?api_key=" + apiKey + "&field1=" + String(temperature) + "&field2=" + String(humidity);
  
  if (client.connect(server, 80)) {
    client.print(String("GET ") + url + " HTTP/1.1\\r\\n" +
                 "Host: " + server + "\\r\\n" +
                 "Connection: close\\r\\n\\r\\n");
    delay(1000);
    client.stop();
    Serial.println("Data sent to ThingSpeak");
  } else {
    Serial.println("Connection to ThingSpeak failed");
  }
}

在这个例子中,温湿度传感器通过D2引脚连接到NodeMCU。通过WiFi连接到指定的网络后,将温湿度数据通过HTTP GET请求发送到ThingSpeak服务器。


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

最新推荐

热门点击