Je to už moja tretia verzia ako sa postupne učím novým a novým veciam tak sa tu s nimi podelím.
AKTUALIZÁCIA SW AJ HW
VERZIA 4
nakoľko nám prišla zima tak moj merač vodomeru po 1,5týždni tmy skapal takže som pristúpil k úpravám k čo najnižšej spotrebe dostal som sa pri tejto konfigurácií na 15,5mA pri standby režime.
Ak nebude ani toto riešenie priechodné budem musieť prejsť na zigbee modul a opustiť wifi moduly
ZMENY 11.2022:
hardware
- zámena modulu tcrt5000 za modul tcrt500 FC123 (nižšia spotreba oproti klasickému nastaviteľnému modulu s lm393 o 1mA) teraz spotreba modulu v standby 14,5mA
- zmena napájania a konverzie voltov na LDO Holtek H7833
- pridanie kondezátorov na stabilitu 100uF vstup od batérie 480uF výstup do ESP32
- zámena modrej led za červenu nižšia spotreba
- pripojenie vyrovnávajúceho 104 kondenzátoru pre reset a odporu 104 do VCC pre stabilitu pripojenia
software
- kratšia doba spustenia pred uspaním na polovicu, dlhšia doba v spánku oproti 2hodinám na 2dni.
ČO DOKÁŽE:
- Meranie spotreby vody v aktuálnom čase, celková spotreba,
- Hlasenie online stavu
- Pripojenie cez mqtt
- Sila signálu
- 100% pohon na batérií, zobrazenie stavu batérie (aktualizácia adc pinu iba raz za zapnutie pomocou mofsetou)
- Solárne nabíjanie
- Reset tlačidlo
- Deep Sleep a zobudenie na wakeup pin s priratanim 1l ako spotreba
ČO POTREBUJEME:
Základ:
- esp32 (ja som použil konkretne čistý modul esp32 s externým portom pre anténu, ktorý som nakoniec aj tak nepoužil),
- TCRT5000 (meranie vzdialenosti bude služiť ako pulse meter prichytený na vodomery)
Doplnkové:
- Batérie (2x18650)
- solárny panel 18V 5W
- nabíjací modul DD23CRTA (alebo akýkoľvek ktorý máte po ruke, najjednoduchšie je TP4056+5V solárny panel)
- ochranný modul pre batérie ak je potrebné 1S 1A
- step down na 3.3V (ja som mal po ruke led driver pre esp01s tak z neho som aj vychádzal)
- Spotrebne:
- 1xNPN 2N7000 (alebo, ktorýkoľvek iný podobný) pre adc switch
- 1xPNP mofset IRF5305 (alebo, ktorýkoľvek iný podobný) pre adc switch
- 1x 100k resistor pre adc switch
- 680k a 330k resistory a 0.1uf kondenzator pre citanie adc stavu baterie
- 1x 1k resistor pre reset tlačidlo
- prototypovacia dosky obojstranné
- prototypovacia doska pre esp32 čip
- gpio konektory.
- farebna kabelaz awg28 + dlhšie káble k solar panelu a k vodomeru podľa umiestnenia.
- držiak baterií 18650
- led - status
PRIPOJENIE:
Väčšinu senzorov som odkukal z internetu. Tak ak máte problem so zapojením podľa môjho návodu stači zadať do gooogle .
TCRT5000:
3vdc, gnd, a digitalny pin, na module je potrebne po umiestnení na vodomere nastaviť vdzalenosť aby správne vzopínal digitálny pin
obrazok nižšie pre spravne umiestnenie na vodomery
ADC pre stav batérie s usporou (bez uspory stači divider z resistorov) Samozrejme tlacidla, bateriu vypinace a dalšie veci nejdem rozpisovať.
FOTO: YAML KOD:
Kód: Vybrat vše
#-------------------------------------------
# SUBTITUTIONS - basic definitions and description of the device
#-------------------------------------------
substitutions:
friendly_name: ESP-Vodomer
device_name: ESP-Vodomer-V3
created_by: "StudioTiiM 2021-2022"
device_description: "Water meter whit pulse modul TCRT5000 FC-123 and battery power whit solar charging"
#-------------------------------------------
# Define pins
#-------------------------------------------
pulse_pin: GPIO25 #pulse and wakeup pin
battery_pin: GPIO32 #ADC VN pin
switch_pin: GPIO22 #adc switch whit mofset 2n70050 and irf530
status_led_pin: GPIO23 #RED led connected
#-------------------------------------------
# ESP - main settings
#-------------------------------------------
esp32:
board: esp32dev
logger:
ota:
password: !secret ota_pass
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
esphome:
name: esp-vodomer-v2
on_boot:
- priority: -400
then:
- switch.turn_on: switch_adc #adc battery status reading when boot up
- binary_sensor.template.publish:
id: status_online
state: on
on_shutdown:
priority: -500.0
then:
- logger.log:
format: "go to offline"
level: warn
- binary_sensor.template.publish:
id: status_online
state: off
#-------------------------------------------
# STATUS LED
# Red led resistor 56R
#-------------------------------------------
status_led:
pin: "$status_led_pin"
#-------------------------------------------
# MQTT
#-------------------------------------------
mqtt:
broker: '192.168.31.212'
username: !secret mqtt_username
password: !secret mqtt_password
discovery: true
# discovery_retain: false
birth_message:
topic: $device_name/status_on
payload: online
will_message:
topic: $device_name/status_off
payload: offline
#-------------------------------------------
# DEEP SLEEP
#-------------------------------------------
deep_sleep:
run_duration: 30s
sleep_duration: 48h # set sleep long time - every time you wake up, you add one liter of consumption
wakeup_pin : "$pulse_pin" # pulse pin TCRT5000
wakeup_pin_mode: INVERT_WAKEUP # low trigger wakeup (sensor in idle state = high on pin)
id: deep_sleep_component
#-------------------------------------------
# TIME COMPONENT
#-------------------------------------------
time:
- platform: sntp
id: esptime
timezone: "Europe/Bratislava"
#-------------------------------------------
# BINARY SENSORS - online status
#-------------------------------------------
binary_sensor:
- platform: template
name: "${friendly_name} Status"
id: status_online
#-------------------------------------------
# SENSORS
#-------------------------------------------
sensor:
#-------------------------------------------
# Wifi signal component
#-------------------------------------------
- platform: wifi_signal
name: "${friendly_name} Signal"
id: "signal"
update_interval: 60s
#-------------------------------------------
# Battery sensor - ADC whit divider units %
# 2x battery 18650 3.7V, 3000mAh
# divider resistor 330k and 680k whit 0.1uF
# 4.3V battery max voltage out
# Solar panel 18V 20W mono 215x155mm
#-------------------------------------------
- platform: adc
pin: "$battery_pin"
name: "${friendly_name} Battery"
accuracy_decimals: 0
unit_of_measurement: "%"
update_interval: never
filters:
- calibrate_linear:
- 2.19 -> 0 # 1.46x multiply
- 2.78 -> 100
# - 0 -> 0
# - 2.35 -> 3.44
# - filter_out: 0.0
# No value lower than 0
- lambda: 'return max((float)0.0, x);'
# No value greater than 100
- lambda: 'return min((float)100.0, x);'
attenuation: 11db
icon: mdi:battery
id: batlevel
device_class: battery
entity_category: diagnostic
#-------------------------------------------
# Water consumption sensor - Pulse meter - TCRT5000 FC-123 modul
#-------------------------------------------
- platform: pulse_meter
pin:
number: "$pulse_pin"
name: "${friendly_name} Consumption"
unit_of_measurement: "liter/min"
internal_filter: 1000ms
timeout: 60s
icon: "mdi:water"
id: water_pulse
filters:
- multiply: 0.0166666667 # 1liter / 60second
- filter_out: nan
on_value:
# automation sleep control when state
then:
- if:
condition:
lambda: "return (id(water_pulse).state > 0.0);"
then:
- deep_sleep.prevent: deep_sleep_component
- logger.log:
format: "PREVENT DEEPSLEEP"
level: warn
else:
- logger.log:
format: "ALLOW DEEPSLEEP"
level: warn
- deep_sleep.allow: deep_sleep_component
total:
id: totalwater
unit_of_measurement: "l"
on_value:
# send state to number component
then:
- number.increment: vodomer_temp
internal: True
#-------------------------------------------
# Final Water consumption sensor - Template after boot read number component
#-------------------------------------------
- platform: template
id: water_temp_total
name: "${friendly_name} Water Total"
icon: "mdi:water"
unit_of_measurement: "l"
accuracy_decimals: 0
#-------------------------------------------
# NUMBERS
# after boot send first state pulse meter is 0 this number sensor send to template sensor: water_temp_total first value 1liter -this OK wakeup pin
#-------------------------------------------
number:
- platform: template
name: "${friendly_name} Water_Temp"
id: vodomer_temp
optimistic: true
min_value: 0
max_value: 1500
step: 1
internal: True
on_value:
- then:
- sensor.template.publish:
id: water_temp_total
state: !lambda 'return id(vodomer_temp).state;'
- component.update: water_temp_total
#-------------------------------------------
# SWITCHES
#-------------------------------------------
switch:
#-------------------------------------------
# Switch - Adc battery status reading
# Wiring whit mofset 2n70050 and irf530
#-------------------------------------------
- platform: gpio
name: "${friendly_name} Switch"
restore_mode: ALWAYS_OFF
pin:
number: "$switch_pin"
id: switch_adc
on_turn_on:
- then:
- delay: 1s
- component.update: batlevel
- delay: 1s
- switch.turn_off: switch_adc