본문 바로가기

IOT(Arduino+Inventor)

ESP8266온도_흙 수분_LED

실내외 온도, 흙 수분, LED ON, OFF제어를 합니다.

 

 

온도 센서 : AM2320, AM2302

흙 습도 센서 : 흙의 수분 측정

LED ON,OFF : 화분, 텃밭 자동 물 뿌리기 위해 모터 제어를 위함

온돋센서 am2302

am2320

 수분 센서

 

source code

 

#include <ESP8266WiFi.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_AM2320.h>

#include<DHT.h>
#define DHTPIN 14
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

Adafruit_AM2320 am2320 = Adafruit_AM2320();

const char* ssid = "IOT999";
const char* password = "kbs48752";
// Port 80
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80); 
float temper = 0.0;
String temper1;

unsigned long previousMillis = 0;    

const long interval = 10000;
String moisture;
#define AOUT_PIN A0 // Arduino pin that connects to AOUT pin of moisture sensor

#define LED2  2    // LED2 is a Built-in LED.
#define LED12  12
#define LED13  13  

String situation = "";
int wait30 = 30000; // time to reconnect when connection is lost.

void setup() {
  Serial.begin(115200);
  pinMode(LED2, OUTPUT);
pinMode(LED12, OUTPUT);
pinMode(LED13, OUTPUT);


// Connect WiFi net.
  Serial.println();
  Serial.print("Connecting with ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected with WiFi.");
 
  // Start Web Server.
dht.begin();
  server.begin();
   Serial.println("Adafruit AM2320 Basic Test");
  am2320.begin();



  Serial.println("Web Server started.");
 
  // This is the IP
 // Serial.print(" WebServer IP: ");
  Serial.print("http://");
  Serial.println(WiFi.localIP());


}
 
void loop() {


   unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
   
    previousMillis = currentMillis;
     float newT = am2320.readTemperature();
    if (isnan(newT)) {
      Serial.println("Failed to read from AM2320 sensor!");
    }
    else {
      
   
      temper = newT;

       Serial.print("2320 : ");
      Serial.print(temper);
      delay(2000);
temper1=String(dht.readTemperature());

Serial.print(" : ");
Serial.print("2302 : ");
     Serial.println(temper1);
    
 int value = analogRead(AOUT_PIN); // read the analog value from sensor

  Serial.print("Moisture: ");
  Serial.println(value);
moisture=String(value);

    
    }
    

  }



// If disconnected, try to reconnect every 30 seconds.
  if ((WiFi.status() != WL_CONNECTED) && (millis() > wait30)) {
    Serial.println("Trying to reconnect WiFi...");
    WiFi.disconnect();

    WiFi.begin(ssid, password);
    wait30 = millis() + 30000;
  }
   
   
  // Check if a client has connected..
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
   
  Serial.print("New client: ");
  Serial.println(client.remoteIP());
   
  // Wait until the client sends data.
  // Wait until the client sends data.
  
  // Read the information sent by the client.
  String req = client.readStringUntil('\r');
  Serial.println(req);

  // Make the client's request.
       if (req.indexOf("on2") != -1) {digitalWrite(LED2, HIGH); situation = "ON";}
       if (req.indexOf("off2") != -1){digitalWrite(LED2, LOW); situation = "OFF";}
       if (req.indexOf("on12") != -1) {digitalWrite(LED12, HIGH); situation = "ON";}
       if (req.indexOf("off12") != -1){digitalWrite(LED12, LOW); situation = "OFF";}
       if (req.indexOf("on13") != -1) {digitalWrite(LED13, HIGH); situation = "ON";}
       if (req.indexOf("off13") != -1){digitalWrite(LED13, LOW); situation = "OFF";}
       
     
     if (req.indexOf("consultation") != -1){
         if (digitalRead(LED2)){situation = "ON";}
         else {situation = "OFF";}
          }
if (req.indexOf("consultation") != -1){
         if (digitalRead(LED12)){situation = "ON";}
         else {situation = "OFF";}
          }
if (req.indexOf("consultation") != -1){
         if (digitalRead(LED13)){situation = "ON";}
         else {situation = "OFF";}
          }     
  //  WEB PAGE. ////////////////////////////
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  Important.
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head><meta charset=utf-8>");
 client.println(" <style>");
client.println("button {");
client.println("  background-color: #4CAF50;");
client.println("  border: none;");
client.println("  color: white;");
client.println("  padding: 15px 40px;");
client.println("  text-align: center;");
client.println("  text-decoration: none;");
client.println("  display: inline-block;");
client.println("  font-size: 40px;");
client.println("  margin: 4px 2px;");
client.println("  cursor: pointer;");
client.println("}");
client.println("p {font-size: 40px;}");
client.println("</style>");

client.println("  </head>");

  
  client.println("<body><center><font face='Arial'>");
  client.println("<h1>Temperature Control</h1>");
  client.println("<br><br>");
  client.println("<p>");
   client.print("In");
  client.print(temper);
  client.print(" Out");
  client.println(temper1);
  client.println("</p>");
  
client.print("<p> moisturee : ");
  client.println(moisture);
  client.println("</p>");

  client.println("<p>");
  //client.println("<a href='consultation'><button>상태</button></a>");
  client.println (situation);
  client.println("</p>");
  client.println("<p>");
  client.println("<a href='on2'><button>ON LED2</button></a>");
  client.println("<a href='off2'><button> OFF LED2</button></a>"); 
  client.println("</p>");

client.println("<p>");
  client.println("<a href='on12'><button> ON LED12</button></a>");
  client.println("<a href='off12'><button> OFF LED12</button></a>"); 
  client.println("</p>");
client.println("<p>");
  client.println("<a href='on13'><button> ON LED13</button></a>");
  client.println("<a href='off13'><button> OFF LED13</button></a>"); 
  client.println("</p>");

  client.println("</font></center></body></html>");

  Serial.print("Client disconnected: ");
  Serial.println(client.remoteIP());
  client.flush();
  client.stop();
}

 

 

 

'IOT(Arduino+Inventor)' 카테고리의 다른 글

ESP-01 Firmware[01]  (0) 2023.03.23
온라인 온도계  (0) 2023.03.23
ESP8266_AM2320_LED  (0) 2023.03.14
esp8266_LED_On_OFF  (1) 2023.03.13
esp8266_led_On_off  (0) 2023.03.12