Skip to content

Instantly share code, notes, and snippets.

@askpatrickw
Created September 29, 2024 06:00
Show Gist options
  • Save askpatrickw/c79399870e2c0495a869ea8b6b033884 to your computer and use it in GitHub Desktop.
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.

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