ESP32 – Sterownik podlewania – ESPHOME v1
Sterownik oparty o ESP32, MCP23017 oraz LAN8720.
Sterownik może komunikować się poprzez sieć LAN lub WiFi.
Elementem wykonawczym jest 8 przekaźników ze stykiem NO. Istnieje możliwość mostkowania wyjść w celu podłączenia np. plusa zasilania jednym przewodem.
Jako wejścia mamy do dyspozycji 8 wejść z optoizolacją (dodana jest też zworka do wyboru zasilania, wewnętrzne lub zewnętrzne 3,3V). Dodatkowo możemy monitorować wiele parametrów czujnikami o komunikacji I2C lub 1Wire. Wyprowadzone są również 4 piny analogowe oraz 6 pinów GPIO, przewidziane jest tam miejsce na rezystor pull-up/pull-down w zależności od potrzeby.
W zależności od wersji mamy do wyboru jedno z trzech źródeł zasilania:
- 230V – podłączane do złącza ZASILANIE
- DC – podłączane do złącza ZASILANIE 5V – 30V (minus z lewej strony, plus z prawej strony)
- PoE – zasilanie poprzez skrętkę ethernet 18V – 72 V
Opis PCB góra:
W górnej części od lewej:
- 8 wejść z optoizolacją 3,3V
- I2C oraz 1Wire
- GPIO oraz ADC
W dolnej części od lewej:
- zasilanie
- 8 wyjść NO
- led zasilania oraz Status
- wejście LAN
- złącze programowania ESP32
Zworka Z9 gdy jest zwarta podane jest zasilanie 3,3V do optoizolatorów. Można wtedy wysterowywać wejścia zwykłymi przyciskami/przełącznikami.
Rezystory nad złączem wejść GPIO/ADC to rezystory pull-down.
Zasilanie

Opis PCB dół:
Rezystory nad złączem wejść GPIO/ADC to rezystory pull-up.
Z1-Z8 służą do mostkowania wyjść z przekaźników

Aby zaprogramować sterownik poprzez złącze dostępne na PCB, należy podłączyć 1.TX, 2.RX oraz 6.GND do programatora. Następnie połączyć przewodem pin 4.IO0 z GND (np. pierwszym lewym pinem złącza CN6). Podłączyć zasilanie sterownika i mamy ESP w trybie flashowania.
Skrypt YAML ESPHOME:
esphome: name: podlewanie-lan friendly_name: Podlewanie_LANesp32: board: esp32dev framework: type: arduinologger:api: encryption: key: "API KLUCZ"ota: password: "OTA PASS"ethernet: id: eth type: LAN8720 mdc_pin: GPIO14 mdio_pin: GPIO15 clk_mode: GPIO0_IN phy_addr: 1 power_pin: GPIO12web_server: port: 80 auth: username: admin password: a1234status_led: pin: number: GPIO2 inverted: truesensor: - platform: uptime name: "Uptime" filters: - lambda: return x;text_sensor: - platform: ethernet_info ip_address: name: IPi2c: sda: 33 scl: 32 scan: true id: bus_amcp23017: - id: 'hub' address: 0x20switch: - platform: gpio name: "R_1" pin: mcp23xxx: hub number: 0 mode: output: true inverted: false - platform: gpio name: "R_2" pin: mcp23xxx: hub number: 1 mode: output: true inverted: false - platform: gpio name: "R_3" pin: mcp23xxx: hub number: 2 mode: output: true inverted: false - platform: gpio name: "R_4" pin: mcp23xxx: hub number: 3 mode: output: true inverted: false - platform: gpio name: "R_5" pin: mcp23xxx: hub number: 4 mode: output: true inverted: false - platform: gpio name: "R_6" pin: mcp23xxx: hub number: 5 mode: output: true inverted: false - platform: gpio name: "R_7" pin: mcp23xxx: hub number: 6 mode: output: true inverted: false - platform: gpio name: "R_8" pin: mcp23xxx: hub number: 7 mode: output: true inverted: falsebinary_sensor: - platform: gpio name: "IN_1" pin: mcp23xxx: hub number: 8 mode: input: true inverted: false - platform: gpio name: "IN_2" pin: mcp23xxx: hub number: 9 mode: input: true inverted: false - platform: gpio name: "IN_3" pin: mcp23xxx: hub number: 10 mode: input: true inverted: false - platform: gpio name: "IN_4" pin: mcp23xxx: hub number: 11 mode: input: true inverted: false - platform: gpio name: "IN_5" pin: mcp23xxx: hub number: 12 mode: input: true inverted: false - platform: gpio name: "IN_6" pin: mcp23xxx: hub number: 13 mode: input: true inverted: false - platform: gpio name: "IN_7" pin: mcp23xxx: hub number: 14 mode: input: true inverted: false - platform: gpio name: "IN_8" pin: mcp23xxx: hub number: 15 mode: input: true inverted: false


