ESP32_UART_MESH COMMUNICATION — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by usaamaamf4925.

Components

Sketch code

#define EMERGENCY_BTN 4

#define NODE2_LINE 13
#define NODE3_LINE 12
#define HEARTBEAT_IN 14

bool emergency = false;
bool failover = false;

unsigned long lastHeartbeat = 0;

void setup()
{
  pinMode(EMERGENCY_BTN, INPUT_PULLUP);

  pinMode(NODE2_LINE, OUTPUT);
  pinMode(NODE3_LINE, OUTPUT);

  pinMode(HEARTBEAT_IN, INPUT);

  digitalWrite(NODE2_LINE, LOW);
  digitalWrite(NODE3_LINE, LOW);

  Serial.begin(115200);
}

void loop()
{
  if (!emergency &&
      digitalRead(EMERGENCY_BTN) == LOW)
  {
    emergency = true;

    digitalWrite(NODE2_LINE, HIGH);

    Serial.println("EMERGENCY GENERATED");
    Serial.println("PRIMARY ROUTE ACTIVE");
    Serial.println("NODE1 -> NODE2 -> NODE4");
  }

  if (digitalRead(HEARTBEAT_IN))
  {
    lastHeartbeat = millis();
  }

  if (emergency &&
      !failover &&
      millis() - lastHeartbeat > 3000)
  {
    failover = true;

    digitalWrite(NODE3_LINE, HIGH);

    Serial.println("NODE2 UNAVAILABLE");
    Serial.println("AUTO RECOVERY INITIATED");
    Serial.println("NODE1 -> NODE3 -> NODE4");
  }
}

More projects by usaamaamf4925