2025年1月14日 星期二

ESP32 4 RELAY Control (Blynk)

 ESP32 4 RELAY Control  (Blynk)








Wokwi程式


#define BLYNK_PRINT Serial

#define BLYNK_TEMPLATE_ID         "TMPL6LesDW5_h"
#define BLYNK_TEMPLATE_NAME       "ESP32 4 Relay"
#define BLYNK_AUTH_TOKEN          "UehmJvhbd6YtPkMQHkxF2t6iYdWQm__d"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial

char ssid[] = "Wokwi-GUEST";
char pass[] = "";

BlynkTimer timer;


// Define the pins for 4 relays
#define relay1 2
#define relay2 15
#define relay3 4
#define relay4 5
#define buttonPin 12 // Pin for the button to control all relays
int SW_relay1 = 0;
int SW_relay2 = 0;
int SW_relay3 = 0;
int SW_relay4 = 0;

BLYNK_WRITE(V1)
{
  SW_relay1 = param.asInt();
  controlRelay(relay1, SW_relay1, V1);
}

BLYNK_WRITE(V2)
{
  SW_relay2 = param.asInt();
  controlRelay(relay2, SW_relay2, V2);
}

BLYNK_WRITE(V3)
{
  SW_relay3 = param.asInt();
  controlRelay(relay3, SW_relay3, V3);
}

BLYNK_WRITE(V4)
{
  SW_relay4 = param.asInt();
  controlRelay(relay4, SW_relay4, V4);
}

BLYNK_WRITE(V5)
{
  int value = param.asInt();
  if (value == 1)
  {
    // Set all relays to ON
    digitalWrite(relay1, HIGH);
    digitalWrite(relay2, HIGH);
    digitalWrite(relay3, HIGH);
    digitalWrite(relay4, HIGH);
  }
  else
  {
    // Set all relays to OFF
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, LOW);
    digitalWrite(relay3, LOW);
    digitalWrite(relay4, LOW);
  }
  Blynk.virtualWrite(V1, value);
  Blynk.virtualWrite(V2, value);
  Blynk.virtualWrite(V3, value);
  Blynk.virtualWrite(V4, value);
}

void controlRelay(int pin, int state, int virtualPin)
{
  if (state == 1)
  {
    digitalWrite(pin, HIGH);
    Serial.println("Relay terbuka");
    Blynk.virtualWrite(virtualPin, HIGH);
  }
  else
  {
    digitalWrite(pin, LOW);
    Serial.println("Relay tertutup");
    Blynk.virtualWrite(virtualPin, LOW);
  }
}

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("ESP32 Blynk");
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // Set buttonPin as input with internal pull-up resistor
  Blynk.begin(BLYNK_AUTH_TOKEN ,ssid, pass);
}

void loop()
{
  // put your main code here, to run repeatedly:
  Blynk.run();
  timer.run();
}

沒有留言:

張貼留言

作業2 MQTT (Relay + DHT22) 控制 ------- 利用Node-Red

作業2 MQTT (Relay + DHT22) 控制 ------- 利用Node-Red 1) 安裝Node-Red  https://ithelp.ithome.com.tw/articles/10201795 https://www.youtube.com/watch?v...