Discuz! Board

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 240|ตอบกลับ: 0

esp32 smart valve

[คัดลอกลิงก์]

11

กระทู้

11

โพสต์

69

เครดิต

Member

Rank: 2

เครดิต
69
#include "DHT.h"
#include <WiFi.h>
#include <WebServer.h>

#define DHTPIN 33
float temp;

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
const char* ssid = "IoT99";  // Enter SSID here
const char* password = "iot0837286389";  //Enter Password here

const char* host = "colo2u.com";  //ใส่ IP หรือ Host ของเครื่อง Database ก็ได้

//=======ประกาศค่า pin ทื่ใช้งาน

const int PinLED1=36;  //Start /Stop Motor
const int PinLED5=39;  //กลับทางหมุน
const int PinLED6=25;  //เปลี่ยนแรงดัน
const int PinSW7=34; //เช็ควาวล์เปิด
const int PinSW8=35; //เช็ควาวล์ปิด

//========ตัวแปรที่จะส่งไป Server====================
int LED1  = 0;  //สถานะ Start / Stop Motor
int LED5  = 0;  //สถานะทิศทางหมุน
int LED6  = 0;  //สถานะ Relay เพิ่มแรงดัน
int SWITCH7 = 0; //สถานะวาวล์เปิด
int SWITCH8 = 0; //สถานะวาวล์ปิด
//===========================
WebServer server(80);
WiFiClient client;
/////////////////////อินเตอร์รับ////////////////////================================================
struct Button {
  const int PIN;
  int numberKeyPresses;
  bool pressed;
};

Button button1 = {PinSW7, 0, false};
Button button2 = {PinSW8, 0, false};

void IRAM_ATTR isr() {
  button1.numberKeyPresses += 1;
  button1.pressed = true;
  digitalWrite(PinLED1,LOW);
}
///////////////////////////////////////====================================================================

DHT dht(DHTPIN, DHTTYPE);

void setup() {
/////////////////////อินเตอร์รับ interrupe////////////////////================================================
  attachInterrupt(button1.PIN, isr, LOW);
///////////////////////////////////////====================================================================

  pinMode(PinLED1,OUTPUT);
  pinMode(PinLED5,OUTPUT);
  pinMode(PinLED6,OUTPUT);
  pinMode(PinSW7,INPUT_PULLUP);
  pinMode(PinSW8,INPUT_PULLUP);
  
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

  dht.begin();
  Serial.println("Connecting to ");
  Serial.println(ssid);

  //connect to your local wi-fi network
  WiFi.begin(ssid, password);

  //check wi-fi is connected to wi-fi network
  while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected..!");
  Serial.print("Got IP: ");  Serial.println(WiFi.localIP());

}

void loop() {
/////////////////////อินเตอร์รับ interrupe////////////////////================================================
if (button1.pressed) {
      Serial.printf("Button 1 has been pressed %u times\n", button1.numberKeyPresses);
      button1.pressed = false;
  }

///////////////////////////////////////====================================================================
  
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));

//====================================  
  
  
  SWITCH7 = digitalRead(PinSW7);
  SWITCH8 = digitalRead(PinSW8);

  
  
  if (SWITCH7==1 && SWITCH8==0) {  //เช็คว่าวาวล์เปิดอยู่หรือเปล่า
digitalWrite(PinLED5,HIGH); //สลับทิศทางหมุน
digitalWrite(PinLED1,HIGH); //สั่งมอเตอร์หมุน
  } else if (SWITCH7==0 && SWITCH8==1){  //เช็คว่าวาวล์ถึงตำแหน่งปิดแล้วหรือยัง
digitalWrite(PinLED1,LOW);  //สั่งมอเตอร์หยุด
  }
  
  String url = "/iot/update.php?L5="+String(LED5);      //ชุด Directory ที่เก็บไฟล์ และตัวแปรที่ต้องการจะฝาก
  url += "&L6="+String(LED6);
  url += "&S7="+String(SWITCH7);
  url += "&S8="+String(SWITCH8);   //ส่งค่าตัวแปร

  Serial.print("Requesting URL: ");
  Serial.println(url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
  unsigned long timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Client Timeout !");
      client.stop();
      return;
    }
  }  
}
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|IoT Inc.

GMT+7, 2021-4-20 17:38 , Processed in 0.086748 second(s), 18 queries .

Powered by Discuz! X3.4, Rev.60

© 2001-2019 Comsenz Inc.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้