// Networking and Communications - UART Slave Node // Board: XIAO ESP32-C3 or custom PCB with XIAO ESP32-C3 // Communication: UART wired network // TX = D4, RX = D5 // Local output device: LED on D2 #include #define RX_PIN D5 #define TX_PIN D4 #define LED_PIN D2 HardwareSerial NodeSerial(1); String nodeAddress = "SLAVE01"; void setup() { Serial.begin(115200); delay(2000); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); NodeSerial.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN); Serial.println("SLAVE NODE READY"); Serial.println("Node address: SLAVE01"); Serial.println("Waiting for commands..."); } void loop() { if (NodeSerial.available()) { String message = NodeSerial.readStringUntil('\n'); message.trim(); Serial.print("Message received: "); Serial.println(message); if (message == "SLAVE01:ON") { digitalWrite(LED_PIN, HIGH); Serial.println("LED ON"); NodeSerial.println("SLAVE01:ACK_LED_ON"); } else if (message == "SLAVE01:OFF") { digitalWrite(LED_PIN, LOW); Serial.println("LED OFF"); NodeSerial.println("SLAVE01:ACK_LED_OFF"); } else { Serial.println("Command not for this node or unknown command"); NodeSerial.println("SLAVE01:UNKNOWN_COMMAND"); } } }