Kdo provozuje rostlinné akvárium zajisté ví že stejně jako rostliny na zahrádce tak i ty akvarijní potřebují živiny
jako stavební kameny ke svému růstu.
K tomu účelu se zrodilo chytré dávkovací čerpadlo za zlomek ceny originálu, který je hloupý a pracuje na stejném principu.
Moje představa byla zakomponovat ho do Home Assistant, který to bude ovládat jak mu určíte a možnost i manuálního spuštění čerpadla v případě potřeb.
Podařilo se splnit všechny požadavky s možností dávkovat nezávisle dva roztoky.
Co jsem použil:
Krabičku https://www.hadex.cz/o220-krabicka-plas ... mi-panely/
Motor Shield L293D https://www.laskarduino.cz/doit-motor-s ... cu-lua-v3/
ESP8266 Lua NodeMcu V2 WIFI modul https://www.laskarduino.cz/iot-esp8266- ... l--tcp-ip/
Nízkoodběrové LED diody = 2x
Tlačítka = 2x
Odpory 4K7 = 2x
Peristaltické čerpadlo 12V = 2x https://www.laskarduino.cz/intllab-dp-3 ... padlo-12v/
Napájecí modul, step-down měnič 3A s LM2596 https://www.hadex.cz/m406-napajeci-modu ... -s-lm2596/
Napájecí zdroj 12V/5A (našel jsem ho doma)
Napájecí konektor DC do panelu
Pár mechanických drobností: distanční sloupky, šroubky a pár drátů
Vše nakoupeno v českém eshopu, pokud chcete čekat můžete objednat v Číně a pravděpodobně se cenově dostanete na polovinu.
Nebudu popisovat mechanickou montáž protože to záleží na každém kdo si to chce postavit, kam to umístí a jak to bude finálně vypadat.
A teď ta zábavnější část, když už je vše sestaveno.
Motor Shield L293D má dvě části:
řídící část kde je do patice na desce vložen ESP8266 Lua NodeMcu V2 WIFI modul
tato část je napájena 4,5 - 9V
druhá část je vlastní řízení motorů a je napájena 4,5 - 36V /600mA trvale na motor, nárazově 1,2A
při použití jednoho zdroje 12V byl instalován step-down měnič 3A s LM2596 kterým snížuji napětí pro nodemcu na 6V
Při dodávce čerpadel jsem zjistil že na štítku je 12V/5W a to zviklalo mou jistotu že to modul řízení dá a proto jsem provedl měření, které mě uklidnilo. Motor odebírá z 12V zdroje 180 mA.
Jen pro zajímavost: na výstupu z desky pro motor je snížené napětí na 10,5V, ale motorky makají v pohodě.
LED kontrolky zapnutí čerpadla jsou jen přes omezovací odpor paralerně ke každému motoru jedna.
Původní myšlenka byla že je budu řídit přes GPIO desky, ale tím bych se připravil do budoucna například o připojení zapouzdřeného Dallasu k měření teploty a něco dalšího(málo pinů)
Dvě tlačítka na zařízení jsou připojena na GPIO D5 a D6 a umožňují manuální dávkování.
K řízení motorků deska využíva piny D1 a D3 motor A, D2 a D4 motor B.
Nepotřebuji řídit směr a rychlost motoru proto jsem použil pouze D1 a D2 ke spuštění motorů.
V jednoduchosti je krása a zde je kód který jsem se snažil maximálně zjednodušit.
Vlastní motory:
Kód: Vybrat vše
output:
- platform: gpio
pin: D1
id: pwm_output_a
- platform: gpio
pin: D2
id: pwm_output_b
switch:
- platform: output
name: "Hnojivo motor A"
output: pwm_output_a
id: sw_pump_a
- platform: output
name: "Hnojivo motor B"
output: pwm_output_b
id: sw_pump_b
Kód: Vybrat vše
binary_sensor:
- platform: gpio
pin:
number: D6
mode: INPUT_PULLUP
inverted: True
name: "Tlačítko pumpa A"
on_state:
then:
- switch.toggle: sw_pump_a
- platform: gpio
pin:
number: D5
mode: INPUT_PULLUP
inverted: True
name: "Tlačítko pumpa B"
on_state:
then:
- switch.toggle: sw_pump_b
Kód: Vybrat vše
output:
- platform: gpio
pin: D1
id: pwm_output_a
- platform: gpio
pin: D2
id: pwm_output_b
switch:
- platform: output
name: "Hnojivo motor A"
output: pwm_output_a
id: sw_pump_a
- platform: output
name: "Hnojivo motor B"
output: pwm_output_b
id: sw_pump_b
binary_sensor:
- platform: gpio
pin:
number: D6
mode: INPUT_PULLUP
inverted: True
name: "Tlačítko pumpa A"
on_state:
then:
- switch.toggle: sw_pump_a
- platform: gpio
pin:
number: D5
mode: INPUT_PULLUP
inverted: True
name: "Tlačítko pumpa B"
on_state:
then:
- switch.toggle: sw_pump_b
Pro dvě čerpadla vytvořte dva pomocníky číslo pojmenujte si je jak chcete a měrná jednotka ml, rozsah dávkování jak chcete(já dal 20 ml):
Kód: Vybrat vše
input_number.davkovani_a
input_number.davkovani_b
Vytvořte šablonu kterou použijete v automatizaci a ta vám zajistí převod času na ml:
Kód: Vybrat vše
{{ states('input_number.davkovani_a') | round * 0.75 }}
Jak vidíte v šabloně je číslo 0.75 a to zajišťuje správné dávkování v ml.
Pro kalibraci jsem použil číslo 1 = 10 vteřin je 10 ml teorie
Skutečnost: 10 vteřin = 13,5 ml proto jsem vzal 10s : 13,5 ml cca = 0,74 a použil hodnotu v šabloně 0,75 a výsledek dávkování 10s = 10 ml
to jen pro vysvětlení
Potom vytvoříte automatizaci:
Kód: Vybrat vše
alias: Ovládání pumpa A čas/ ml
description: ''
trigger:
- platform: state
entity_id: switch.hnojivo_motor_a
to: 'on'
for: '{{ states(''input_number.davkovani_a'') | round * 0.75 }}'
condition:
- condition: state
entity_id: binary_sensor.tlacitko_pumpa_a
state: 'off'
action:
- service: switch.turn_off
target:
entity_id:
- switch.hnojivo_motor_a
mode: single
Tato automatizace vám zajistí, aby čerpadlo nadávkovalo nastavené množství ml roztoku nastavené běžcem na kartě a vypnulo.
Podmínka v automatizaci je tlačítko na zařízení a zajišťuje pokud dávkujete manuálně, aby se čerpadlo nevypnulo na nastavené hodnotě, prostě to dávkuje dokud držíte tlačítko Teď už jen zbývá vytvořit automatizaci čím to chcete spustit, například časem, úrovní osvětlení, to už je na každém jakou má představu, proto jí zde neuvádím (mám to řízené časem a testuji ).
Časová náročnost na stavbu pokud máte vše potřebné je jedno klidné odpoledne a máte hotovo
Pár náhledů:
pohled na vnitřnosti Finální produkt: Ať vám to roste: