Wiznet makers

lawrence

Published May 03, 2026 ©

145 UCC

9 WCC

32 VAR

0 Contests

0 Followers

0 Following

Original Link

REMS-RTA

REMS-RTA

COMPONENTS
PROJECT DESCRIPTION

Smart Home Environment Control System with ESP32 + W5500 (REMS-RTA)

A remote environment monitoring and control system using the W5500 web server


Overview

REMS-RTA is a smart home system for remotely monitoring and controlling a living environment — temperature, heating, cooling, and more.

It consists of two boards:

  • REMS board (Remote Environment Management System) — the main controller that monitors the environment and issues commands. The ESP32 + W5500 combination has proven to be the most stable configuration.
  • RTA board (REMS Testing Application) — an Arduino Nano-based test board that simulates real household loads such as a furnace and air conditioner.

GitHub: damhahlat/REMS-RTA


System Architecture


Why W5500? — The Key Hardware Choice

Testing several microcontroller combinations showed that ESP32 + W5500 was the most reliable. Here's why.

Limitations of ESP32's built-in Wi-Fi alone

  • Reconnection instability — dropped connections require complex recovery logic, risking missed commands
  • Software TCP/IP overhead — the ESP32 CPU must handle both application logic and the network stack simultaneously
  • 2.4 GHz interference — shared with Wi-Fi, Bluetooth, and other household devices

How the W5500 solves this

The W5500 uses a Hardwired TCP/IP architecture. The entire TCP/IP stack is implemented in dedicated hardware (iMCU), so the ESP32 only needs to issue socket-level commands — no stack management required.

 ESP32 Wi-Fi onlyESP32 + W5500
TCP/IP processingSoftware (CPU load)Hardwired (no CPU load)
Connection stabilityWireless, reconnect riskWired, physically stable
Simultaneous socketsLimited8 independent sockets
MCU compatibilityBuilt-in onlySPI — works with any MCU

In practice, when a browser sends a heating or cooling command, the W5500 independently receives and processes the HTTP request. The ESP32 is free to focus entirely on sensing and control logic — no network overhead. And because it's wired Ethernet, the system works regardless of Wi-Fi congestion in the home.


How It Works

The REMS board detects environmental changes and outputs command strings over serial:

"HEAT ON"  / "HEAT OFF"  →  heating control
"COOL ON"  / "COOL OFF"  →  cooling control

The RTA board receives these and activates the corresponding load:

A → Heat ON    B → Heat OFF
C → Cool ON    D → Cool OFF

The Python Bridge

Direct pin-to-pin communication between the REMS and RTA boards had signal recognition issues, so a Python script currently acts as the bridge.

It does three things: auto-compile and upload firmware to both boards via arduino-cli, read serial messages from the REMS board, and forward translated commands to the RTA board.

rems2Command = str(REMS2.readline())  if "HEAT ON"  in rems2Command: RTA2.write(bytes("A", "utf-8")) elif "HEAT OFF" in rems2Command: RTA2.write(bytes("B", "utf-8")) if "COOL ON"  in rems2Command: RTA2.write(bytes("C", "utf-8")) elif "COOL OFF" in rems2Command: RTA2.write(bytes("D", "utf-8"))

This adds some latency and is a temporary workaround, but it keeps the system functional while a direct hardware solution is developed.


Hardware

BoardRoleNotes
ESP32 + W5500REMS main controllerMost stable combination
Arduino MegaAlternative REMS boardTested
Arduino NanoRTA test boardLoad simulation

Use Cases

Smart home HVAC automation, home environment monitoring, IoT control system prototyping, and W5500-based web server reference implementations.


Current Status

This project is under active development. The W5500 web server interface is already stable. The next goal is replacing the Python bridge with direct board-to-board communication — making it a fully self-contained embedded system.

Documents
Comments Write