Skip to content

Instantly share code, notes, and snippets.

@askpatrickw
Created September 29, 2024 06:00
Show Gist options
  • Select an option

  • Save askpatrickw/c79399870e2c0495a869ea8b6b033884 to your computer and use it in GitHub Desktop.

Select an option

Save askpatrickw/c79399870e2c0495a869ea8b6b033884 to your computer and use it in GitHub Desktop.
ESP32-Based Relay Board with Power Monitoring and PoE Integration

ESP32-Based Relay Board with Power Monitoring and PoE Integration

Objective: Design and build a custom relay board using the ESP32 microcontroller with integrated Power over Ethernet (PoE) functionality. The board will control 8 relays, each capable of handling up to 10A at 24VDC, and include current monitoring for each relay using ACS712 sensors. The system will be compatible with ESPHome for easy integration with Home Assistant.

Project Requirements:

1. Functional Requirements:

  • Relay Control:

    • 8 relays, each rated for 16A at 250VAC and 10A at 24VDC.
    • Relay model: G5RLU-1A-E DC3 (Omron Electronics), with a 3V coil voltage.
    • Controlled via the ESP32 microcontroller.
    • Maximum Load: 10A per circuit at 24VDC.
  • Power Monitoring:

    • Each relay circuit will include an ACS712 current sensor for real-time current monitoring, calibrated for up to 10A.
    • The current sensors will be configured and calibrated for accurate power measurements in ESPHome.
  • PoE Power Supply:

    • Power input through an Ethernet RJ45 connector (TRP Connector B.V. 2250506-1).
    • PoE module: Silvertel AG9903-MTB, providing 3.3V output for the ESP32 and relays.
  • Microcontroller:

    • ESP32-WROOM-32 or ESP32-WROVER module with Wi-Fi and Bluetooth support.
    • Programmed using ESPHome for integration with Home Assistant.
  • Relay Driver:

    • ULN2803A 8-channel Darlington array for driving the relay coils.

2. Technical Specifications:

  • Input Voltage: 36V - 57V DC from the PoE module.
  • Output Voltage: 3.3V DC, up to 2A (provided by the PoE module).
  • Relay Coil Voltage: 3V DC, 200mA per relay.
  • Load Voltage: 24VDC, maximum current per circuit: 10A.
  • Current Measurement Range: 0A - 10A per relay (using ACS712 sensors).
  • Communication Protocol: Wi-Fi (802.11 b/g/n) for ESP32.

3. PCB Design Considerations:

  • PCB Layout:

    • Compact design with all components securely mounted.
    • Proper trace width for high-current paths (at least 2mm) to handle up to 10A per circuit.
    • Adequate isolation between high-voltage (24VDC) and low-voltage (3.3V) sections.
  • Component Placement:

    • PoE module and RJ45 connector placed close together to minimize power loss.
    • Relays and current sensors placed with sufficient spacing to reduce interference.
  • Ground Planes:

    • A solid ground plane for noise suppression and signal integrity.

4. Software Requirements:

  • ESPHome Configuration:

    • Define GPIO pins for each relay.
    • Configure each ACS712 sensor for accurate current monitoring.
    • Implement calibration logic for the current sensors based on the 10A max load.
  • Integration with Home Assistant:

    • Each relay and sensor will be configured as an entity in Home Assistant.
    • Ability to control relays and monitor current consumption remotely.

5. Deliverables:

  • Schematic Design: Detailed schematic diagram of the complete system.
  • PCB Layout: Optimized PCB design files in Gerber format.
  • BOM (Bill of Materials): Complete list of components with part numbers and quantities.
  • ESPHome Configuration Files: YAML configuration for ESPHome with all relays and sensors defined.
  • Prototype Board: Fully assembled and tested prototype for evaluation.

6. Additional Notes:

  • External Fusing: No internal fuses will be included on the board. It is assumed that each load will be fused externally using a separate fuse block.
  • Flyback Diodes: For inductive loads (e.g., motors or solenoids), flyback diodes should be added externally to protect the relay contacts from voltage spikes.
@askpatrickw
Copy link
Author

This is based on a chatGPT discussion... I'm assuming there are issues but its a good jumping off point I'm sure.

@askpatrickw
Copy link
Author

GPT5Pro Notes

  1. Relay type mismatch (latching vs non‑latching)
    Verify the exact Omron G5RLU-1A-E DC3 variant is monostable vs latching. If it’s latching, the current ULN2803A low‑side drive scheme won’t support the required reverse/reset actuation.

  2. Relay coil drive headroom with ULN2803A
    Validate coil pull‑in at worst case: 3.3V supply – ULN VCE(sat) may leave the 3V coil under‑driven. Confirm pull‑in margin across temperature and supply droop.

  3. PoE power budget is too tight at “all relays on”
    8 relays × ~200mA = ~1.6A, leaving little margin for ESP32 + sensors + transients. Recheck AG9903 output capability vs worst case and consider power sequencing / alternative rail strategy.

  4. Driver thermal dissipation (ULN2803A)
    At ~200mA/channel, ULN2803A dissipates significant heat (especially with 8 channels on). Confirm package thermal limits and temperature rise; consider MOSFET drivers if needed.

  5. ACS712 supply voltage incompatibility
    ACS712 is typically a 5V part. If you only have 3.3V, either add a 5V rail (and handle output scaling) or switch to a 3.3V-capable sensor (preferred).

  6. ACS712 output range vs ESP32 ADC
    If powered at 5V, ACS712 zero-current output is ~2.5V and peaks can exceed 3.3V depending on variant/current direction. Ensure ADC attenuation/scaling/dividers prevent overvoltage and preserve resolution.

  7. ESP32 ADC channel selection (Wi‑Fi conflict)
    Ensure all 8 current sensors land on ADC1 pins only. ADC2 readings become unreliable when Wi‑Fi is active.

  8. ESP32 boot/strapping pin hazards
    Don’t drive relay inputs from strapping pins or pins that glitch at boot. Ensure relays default OFF on reset/boot with proper pulldowns and safe pin mapping.

  9. PCB trace width/copper weight is under-specified
    “2mm for 10A” is likely insufficient on 1oz copper. Recalculate per IPC‑2152 assumptions; use wide pours, short paths, 2oz copper, via stitching, and avoid bottlenecks.

  10. Connector ratings (per-channel and aggregate)
    Verify terminal blocks and the 24V input connector are rated for the real currents. Worst case aggregate could be very high; design should assume realistic max or segment feeds.

  11. PoE PD front-end implementation details
    Confirm the RJ45/magnetics/center-tap wiring and required bridge rectifiers / input filtering exactly match the AG9903 reference design. Layout and creepage across the isolation boundary matter.

  12. Power rail stability / brownout risk
    Relay activation + ESP32 Wi‑Fi TX can cause droop. Add/verify bulk capacitance near PoE output and local decoupling near ESP32; validate with scope under worst-case switching.

  13. Isolation/grounding architecture not fully defined
    Decide explicitly: keep 24V load domain isolated from logic (recommended) vs tie grounds. Ensure layout doesn’t accidentally bridge the isolation and that measurement references remain valid.

  14. Thermal design at sustained duty
    Worst-case heat sources: relay coils (multi-watt total), driver IC, PoE module. Validate temps in enclosure with no airflow; adjust spacing/copper/heatsinking/duty-cycle assumptions.

  15. Current measurement accuracy plan (cal + noise)
    ESP32 ADC nonlinearity + Hall sensor offset/noise requires a calibration approach per channel (offset at 0A, scale at known load) and filtering (RC and/or ESPHome filters).

  16. Contact protection expectations need stronger enforcement
    You rely on external flyback diodes/snubbing. Ensure documentation is explicit (and consider optional footprints/test points) because inductive loads without suppression will shorten relay life fast.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment