首页 > 分享 > ESP8266开发板制作一个自动浇花系统

ESP8266开发板制作一个自动浇花系统

#include <ESP8266WiFi.h>

#include <DHT.h>

#include <PubSubClient.h>

#define DHTPIN D4     // DHT11 pin

#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

#define SOIL_MOISTURE_PIN A0

#define RELAY_PIN D5

const char* ssid = "your_SSID";

const char* password = "your_PASSWORD";

const char* mqtt_server = "your_mqtt_server";

const int mqtt_port = 1883;

const char* mqtt_user = "your_mqtt_user";

const char* mqtt_password = "your_mqtt_password";

const char* topic_soil_moisture = "garden/soil_moisture";

const char* topic_temperature = "garden/temperature";

const char* topic_humidity = "garden/humidity";

WiFiClient espClient;

PubSubClient client(espClient);

void setup() {

  Serial.begin(115200);

  pinMode(RELAY_PIN, OUTPUT);

  digitalWrite(RELAY_PIN, LOW);

  dht.begin();

  setup_wifi();

  client.setServer(mqtt_server, mqtt_port);

  client.setCallback(callback);

}

void setup_wifi() {

  delay(10);

  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");

  Serial.println("IP address: ");

  Serial.println(WiFi.localIP());

}

void callback(char* topic, byte* payload, unsigned int length) {

}

void reconnect() {

  while (!client.connected()) {

    Serial.print("Attempting MQTT connection...");

    if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {

      Serial.println("connected");

      client.subscribe("garden/control");

    } else {

      Serial.print("failed, rc=");

      Serial.print(client.state());

      Serial.println(" try again in 5 seconds");

      delay(5000);

    }

  }

}

void loop() {

  if (!client.connected()) {

    reconnect();

  }

  client.loop();

  int soilMoistureValue = analogRead(SOIL_MOISTURE_PIN);

  float h = dht.readHumidity();

  float t = dht.readTemperature();

  Serial.print("Soil Moisture: ");

  Serial.println(soilMoistureValue);

  Serial.print("Temperature: ");

  Serial.println(t);

  Serial.print("Humidity: ");

  Serial.println(h);

  if (soilMoistureValue < 300) { 

    digitalWrite(RELAY_PIN, HIGH); 

  } else {

    digitalWrite(RELAY_PIN, LOW);  

  }

  client.publish(topic_soil_moisture, String(soilMoistureValue).c_str());

  client.publish(topic_temperature, String(t).c_str());

  client.publish(topic_humidity, String(h).c_str());

  delay(2000); 

}

相关知识

入手NodeMCU(ESP8266)玩玩——自动浇花
Arduino Esp8266 Nodemcu Blinker 物联网浇花系统 EspTouch配网使用方法
如何制作自动灌溉浇花系统
自动浇花系统
基于ESP32的开源定时浇花系统
智能化的自动浇花系统
基于STM32和云平台的花卉养护系统设计(微信小程序)(209)
基于STM32设计的智慧浇花系统(华为云IOT)
esp8266使用Arduino编程实现自动浇水、OTA升级功能
基于物联网的智能浇水系统(STM32+华为云IOT)

网址: ESP8266开发板制作一个自动浇花系统 https://m.huajiangbk.com/newsview403532.html

所属分类:花卉
上一篇: Arduino 智能花草看护系统
下一篇: 盆花的自动浇水系统的设计与实现开