Source Code


    #define BLYNK_PRINT Serial
    // ขาที่ต่อกับ ultrasonic sensor
    #define TRIGGER_PIN D2
    #define ECHO_PIN    D3
    
    #include 
    #include 
    
    char auth[] = "2jE_ErnrSIOMNiABqo0A_8p0RLsxQvJ6";
    char ssid[] = "number";
    char pass[] = "0955075552";
    //ตัวแปลสำหรับคำนวนระยะ และ เก็บค่าระยะทาง
    long duration, distance;
    
    
    #include 
    #include 
    #include 
    #define DHTPIN D1
    #define DHTTYPE DHT11 // เปลี่ยนเป็น DHT22 หรือ DHT21 ตามที่คุณใช้
    DHT_Unified dht(DHTPIN, DHTTYPE);
    float Temperature;
    float Humidity;
    const int ledPin = D6;
    const int buttonPin = V1;
    
    // BLYNK_WRITE(V4) เป็นชุดคำสั่งให้เปิดปิดไฟ LED ในแอพ Blynk
    BLYNK_WRITE(V4) {
      // อ่านค่าจากปุ่ม
      int buttonValue = param.asInt();
    
      // ตรวจสอบค่าปุ่ม
      if (buttonValue == HIGH) {
        // เปิด LED เมื่อกดปุ่ม
        digitalWrite(ledPin, HIGH);
      } else {
        // ปิด LED เมื่อปล่อยปุ่ม
        digitalWrite(ledPin, LOW);
      }
    }
    
    
    // BLYNK_WRITE(V2) เป็นชุดคำสั่งให้เซนเซอร์วัดระยะทำงานเมื่อกดปุ่มในแอพ Blynk
    BLYNK_WRITE(V2)
    {
      // ตรวจสอบการกด ว่ากด(1) หรือ ปล่อย(0)  
      if(param.asInt())
      {
        // ทำการเช็คระยะ
        digitalWrite(TRIGGER_PIN, LOW); 
        delayMicroseconds(2); 
        digitalWrite(TRIGGER_PIN, HIGH);
        delayMicroseconds(10);
        digitalWrite(TRIGGER_PIN, LOW);
        duration = pulseIn(ECHO_PIN, HIGH);
    
        // คำนวนระยะ หน่วย CM
        distance = (duration/2) / 29.1;
        
        // แสดงค่าออก Serial
        Serial.print(distance);
        Serial.println(" cm");
    
        //เขียนค่าไปที่ Blynk V0 Labeled Value Widget
        Blynk.virtualWrite(V3,distance);   
      }
    }
    
    void setup()
    {
      Serial.begin(9600);
      // กำหนด pin mode
      pinMode(TRIGGER_PIN, OUTPUT);
      pinMode(ECHO_PIN, INPUT); 
      // กำหนเค่าเริ่มต้น Blynk
      Blynk.begin(auth, ssid, pass, "elec.cmtc.ac.th", 8080);
    
    
      sensor_t sensor;
      dht.temperature().getSensor(&sensor);
      dht.humidity().getSensor(&sensor);
      
      dht.begin();
    
    
      // กำหนดขาเป็น Output
      pinMode(ledPin, OUTPUT);
      // กำหนดขาเป็น Input
      pinMode(buttonPin, INPUT);
    }
    
    void loop()
    {
      // เริ่มการทำงาน
      Blynk.run();
      sensors_event_t event;
      dht.temperature().getEvent(&event);
      if (!isnan(event.temperature)) {
        Temperature = event.temperature;
        Serial.print("Temperature: ");
        Serial.print(Temperature);
        Serial.println(" °C");
        Blynk.virtualWrite(V0, Temperature);
      }
    
      dht.humidity().getEvent(&event);
      if (!isnan(event.relative_humidity)) {
        Humidity = event.relative_humidity;
        Serial.print("Humidity: ");
        Serial.print(Humidity);
        Serial.println(" %");
        Blynk.virtualWrite(V1, Humidity);
      }
    
      delay(1000);
    }