실내외 온도, 흙 수분, 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 |