ESPHome mit ESP32 und ES32A08 Erweiterungsboard
Teilen
Dieses Repository enthält Beispiele zur Integration des ESP32-Mikrocontrollers mit dem ES32A08-Erweiterungsboard von eletechsup unter Verwendung von ESPHome. Diese Kombination ermöglicht vielseitige Anwendungen mit Sensoreingängen und Ausgabeverwaltung, die sich für DIY-Elektronikprojekte eignen.
- 8x optokoppelte Eingänge: Low-Level-Trigger, NPN-Typ.
- 8x 10A-Relaisausgänge
- 4x 0-5V/10V-Spannungseingänge
- 4x 0/4-20mA-Stromeingänge
- 4x Tasten
- 1x 4-Bit-Digital-VFD-Anzeige
- RS485-Schnittstelle: (defekt, siehe unten)
Nachfolgend finden Sie Beispiele, die zeigen, wie jede Funktion des ES32A08-Boards genutzt werden kann.
Einige der Funktionen des Boards sind dank Komponenten wie Shift-Registern möglich, daher müssen wir diese zunächst definieren.
Für die Ausgänge gibt es 3 SN74HC595 E/A-Expander (Shift-Register).
sn74hc595: - id: 'output_hub' data_pin: GPIO13 clock_pin: GPIO27 latch_pin: GPIO14 oe_pin: GPIO4 sr_count: 3
Für die Eingänge gibt es 1 SN74HC165 E/A-Expander (Shift-Register).
sn74hc165: - id: 'input_hub' data_pin: GPIO5 clock_pin: GPIO17 load_pin: GPIO16
KEY1 - GPIO18KEY2 - GPIO19KEY3 - GPIO21KEY4 - GPIO23
binary_sensor: - platform: gpio id: key_1 name: "Taste 1" internal: true pin: number: GPIO18 inverted: true mode: input: true pullup: true on_press: then: ...
Die optokoppelten Eingänge sind über das SN74HC165-Shift-Register verfügbar und verwenden die Pins 0 bis 7.
binary_sensor: - platform: gpio id: input_1 name: "Eingang 1" pin: sn74hc165: 'input_hub' number: 0 inverted: true on_press: then: ...
Hinweis: Stellen Sie sicher, dass Sie die Basiskonfigurationen definieren, die für die Funktion erforderlich sind.
Die Relais sind über das SN74HC595-Shift-Register verfügbar und verwenden die Pins 16 bis 23.
switch: - platform: gpio id: relay_1 name: "Relais 1" pin: sn74hc595: 'output_hub' number: 16
Hinweis: Stellen Sie sicher, dass Sie die Basiskonfigurationen definieren, die für die Funktion erforderlich sind.
Ich empfehle die Verwendung der Status-LED-Licht Komponente, da sie es ermöglicht, eine einzige LED zur Anzeige des Gerätestatus (im Fehler-/Warnzustand) oder als binäres Licht zu verwenden.
light: - platform: status_led id: board_led name: "Board-LED" pin: GPIO15 internal: true
V1 - GPIO32V2 - GPIO33V3 - GPIO25V4 - GPIO26
Hinweis
Die Eingänge V3 (GPIO25) und V4 (GPIO26) können nicht verwendet werden, wenn wifi: verwendet wird.
sensor: - platform: adc id: voltage_1 name: "Spannung 1" update_interval: 30s attenuation: auto pin: number: GPIO32 mode: input: true filters: # Umrechnung dessen, was der ESP sieht, in den tatsächlichen Wert basierend auf den auf dem Board verwendeten Widerständen - lambda: return x / 10.0 * (10.0 + 43.0); # Rundung auf 2 Dezimalstellen, aber Sie können dies gerne ändern, wenn Sie mehr/weniger Präzision benötigen - round: 2 - delta: 0.01
I1 - GPIO36I2 - GPIO39I3 - GPIO34I4 - GPIO35
Hier ist ein Beispiel mit einem 10-bar 4-20mA Drucksensor:
sensor: - platform: adc id: pressure name: "Druck" device_class: pressure state_class: measurement unit_of_measurement: bar accuracy_decimals: 2 attenuation: 0db samples: 64 pin: number: GPIO36 mode: input: true filters: - lambda: !lambda |- if (isnan(x)) return NAN; float min_v = 0.364; // 4mA x 91R float max_v = 1.82; // 20mA x 91R float max_bar = 10.0; float bar = (x - min_v) * max_bar / (max_v - min_v); if (bar < 0.0) bar = 0.0; if (bar > max_bar) bar = max_bar; return bar; - round: 2 - delta: 0.015
Nach vielen Stunden des Debuggens habe ich herausgefunden, dass die integrierte RS485-Schnittstelle auf dem ES32A08-Board ein Hardwareproblem aufweist, das eine Signalloopback verursacht. Dies stört die ordnungsgemäße Gerätekommunikation und macht die integrierte RS485-Schnittstelle unbrauchbar.
Für diejenigen, die eine RS485-Funktionalität benötigen, sehen Sie sich #2 an, wo ich einen möglichen Workaround bespreche, bei dem ein externes RS485-Modul an die integrierten Tasten-Pins gelötet wird.
- ESPHome-Bewässerungssystem – Mein eigener Anwendungsfall für dieses Board.
