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_LAN
esp32:
board: esp32dev
framework:
type: arduino
logger:
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: GPIO12
web_server:
port: 80
auth:
username: admin
password: a1234
status_led:
pin:
number: GPIO2
inverted: true
sensor:
- platform: uptime
name: "Uptime"
filters:
- lambda: return x;
text_sensor:
- platform: ethernet_info
ip_address:
name: IP
i2c:
sda: 33
scl: 32
scan: true
id: bus_a
mcp23017:
- id: 'hub'
address: 0x20
switch:
- 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: false
binary_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