Projekt "automat zalévání rostlin" se skládá z desky Arduino UNO (ATmega 328), LCD shieldu, čidla osvětlení, čidla vlhkosti půdy, čidla teploty půdy, čidel hladiny nádrže (V1.0, ultrazvuk V2.0), obvodu reálného času, desky zdroje a desky relé. Jedná se o komerční projekt, proto v článku nebude uveden zdrojový kód pro Arduino...
Verze 2 - snímání hladiny pomocí ultrazvukového snímače
LCD (a rozšířené menu o ultrazvuk)
V menu se nastaví rozměr nádrže x,y,z a vzdálenost snímače pro min a max hladinu vody v nádrži. Na LCD se při provozním stavu zobrazuje výška hladiny ode dna a litry vody v nádrži. Při hodnotě min spíná ventil na doplnění vody a při hodnotě max ventil vypíná...
Poznatky:
- ultr. snímač musí být naprosto kolmo k vodní hladině
- při doplňování vody nesmí hladina čeřit, bublat atd...
- při zalévání to samé...
- rozsah měření HC snímače je 2-450cm, proto je v menu všude omezení na max hodnotu 4,5metru. při větší vzdálenosti (nad 1m není měření přesné)
Deska (shield) pro periferie
Ultrazvukový snímač HC-SR04
Připojení periferií k desce Arduino verze 2
Periferie | Arduino UNO pin (digital/analog) | Poznámka |
LCD displej: | pin 8, 9, 4, 5, 6, 7 (Rs,E,DB4,DB5,DB6,DB7) | |
LCD podsvícení: | pin 10 | LED dioda podsvícení |
LCD tlačítka: | pin 14 | vstup A0 (0-5V) |
Snímač vlhkosti půdy VIRRIB LP V: | pin 15 | vstup A1 (0-5V) |
Snímač hladiny HC-SR04: | pin 16 | A2 Trig |
Snímač hladiny HC-SR04: | pin 17 | A3 Echo |
Snímač teploty půdy DS18B20 (DS18S20, DS1822): | pin 2 | vodiče od čidla = rudá +5V, černá GND, modrá (bílá) data |
Sériová komunikace RS232 (pro fw updater): | pin 0 (rx), 1 (tx) | upgrade fw |
Snímač osvětlení místnosti BH1750-GY-302: | I2C sběrnice na pinech pin 18 (A4 SDA), 19 (A5 SCL) | adresa I2C 0x23 |
Obvod reálného času DS1307: | I2C sběrnice na pinech pin 18 (A4 SDA), 19 (A5 SCL) | adresa I2C 0x68 |
Výstup relé - čerpadlo | pin 12 | kontakt relé 230V |
Výstup relé - el. magnetický ventil doplňování vody | pin 11 | kontakt relé 230V |
Výstup relé - osvětlení rostlin | pin 3 | kontakt relé 230V |
Verze 1 - snímání hladiny pomocí kontaktů min a max
Propojení periferií (prototypové desky)
Připojení periferií k desce Arduino
Periferie | Arduino UNO pin (digital/analog) | Poznámka |
LCD displej: | pin 8, 9, 4, 5, 6, 7 (Rs,E,DB4,DB5,DB6,DB7) | |
LCD podsvícení: | pin 10 | LED dioda podsvícení |
LCD tlačítka: | pin 14 | vstup A0 (0-5V) |
Snímač vlhkosti půdy VIRRIB LP V: | pin 15 | vstup A1 (0-5V) |
Snímač kontakt hladiny nádrže minimum: | pin 16 | vstup A2 aktivní na gnd (0/1) |
Snímač kontakt hladiny nádrže maximum: | pin 17 | vstup A3 aktivní na gnd (0/1) |
Snímač teploty půdy DS18B20 (DS18S20, DS1822): | pin 2 | vodiče od čidla = rudá +5V, černá GND, modrá (bílá) data |
Sériová komunikace RS232 (pro fw updater): | pin 0 (rx), 1 (tx) | upgrade fw |
Snímač osvětlení místnosti BH1750-GY-302: | I2C sběrnice na pinech pin 18 (A4 SDA), 19 (A5 SCL) | adresa I2C 0x23 |
Obvod reálného času DS1307: | I2C sběrnice na pinech pin 18 (A4 SDA), 19 (A5 SCL) | adresa I2C 0x68 |
Výstup relé - čerpadlo | pin 12 | kontakt relé 230V |
Výstup relé - el. magnetický ventil doplňování vody | pin 11 | kontakt relé 230V |
Výstup relé - osvětlení rostlin | pin 3 | kontakt relé 230V |
Parametry a popis automatu
******************* info a ovládání sériovou linkou *******************
Sériová linka slouží pouze pro ladění programu - již se nevejde do paměti procesoru (mohlo by docházet k horší stabilitě programu...)
// #define DEBUG neni aktivní serial linka
#define DEBUG je aktivni serial linka
je nutné v terminálu nastavit NL a CR!
rychlost 57600 Bd
---------------------------------------------------------------------
dostupné příkazy ovládání ABCDEFG na lince Rx:
A = spustí hned čas1 na dobu1 a poté odpočet na doplnění nádrže a doplnění nádrže
B = spustí hned čas2 na dobu2 a poté odpočet na doplnění nádrže a doplnění nádrže
C = spustí hned čas3 na dobu3 a poté odpočet na doplnění nádrže a doplnění nádrže
bez ohledu vlhkosti, nebo teploty
D = nastavení datumu a času ve formátu (RDMhms):
rok (R) 15-99,
den (D) 1-31,
měsíc (M) 1-12,
hodina (h) 0-23,
minuta (m) 0-59,
vteřina (s) 0-59
E = zakázat zalevání do konce aktuálního dne (23:59:00 každý den před půlnocí resetuje periodu tj 1-7 den
F = smazat eeprom a nastavit výhozí hodnoty, smazat RTC na 1.1.2015 12:00:00
G = vypsat eeprom (DEN = 1-7, T1 = cas1 hod1 min1 doba1, T2 = cas2 hod2 min2 doba2, T3 cas3 hod3 min3 doba3,
CON = čerpadlo zap, COFF = čerpadlo vyp, UT = používat teplotu, LT = poslední teplota na konci programu (př 2456 = 24.56C)
UV = používat vlhkost, LV = poslední vlhkost na konci programu, VE = ventil zap za dobu, SV = nast. hodnota světla v Lx
př: po stisknutí "G"
INITOK (načtení z eeprom)
DEN:1 (perioda je jeden den)
T1:10305 (čas 1 v 10 hod 30 min doba 5 min)
T2:1105 (čas 2 v 11 hod 0 min doba 5 min)
T3:12015 (čas 3 v 12 hod 0 min doba 15 min)
CON:1 (čerpadlo bude vypínat po 1 min)
COFF:1 (čerpadlo bude vypínat na dobu 1 min)
UT:1 (nepoužívat teplotu 1=ne, 2=ano)
LT:0 (poslední teplota na konci zalévání)
UV:2 (používat měření vlhkosti 1=ne, 2=ano)
LV:0 (poslední vlhkost na konci zalévání)
VE:30 (plnit nádrž 30 minut po zalévání)
SV:510 (min hodnota osvětlení 510 Lux poté sepne relé světel)
Verze 2.0
PX:100 (nádrž ma rozměr x 100 cm)
PY:50 (nádrž ma rozměr y 50 cm)
PZ:50 (nádrž ma rozměr z 50 cm)
PMi:80 (hladina minimum je 80 cm od snímače)
PMa:20 (hladina maximum je 20 cm od snímače
---------------------------------------------------------------------
výpisy na lince Tx:
EEPROM:
INITOK = proběhla inicializace paměti eeprom, tj. načtení z paměti a případně uložení vých. hodnot, pokud jsou mimo rozsah
CLREE = proběhlo smazání paměti eeprom (uložilo se do všech buněk 255) a tím se vyvolalo nastavení defaultních parametrů (příkaz serial F, nebo v LCD menu smazat nastavení)
SAVE = došlo k uložení změn do paměti eeprom (někdo v LCD menu měnil a pak dal uložit. Na LCD text Ulozeno...)
VLHKOST:
VLxx = hodnota vlhkosti na stupnici od 0 do 10 (0 = 0V, 10 = 5V). Měří se po 20 sec (pokud běží program čas 1 - 3 je měření blokované)
OSVĚTLENÍ:
OSxxxx = hodnota z čidla osvětlení 0-3000 Lux. Měří se po 20 sec. Ovládá relé RE3 spínání osvětlení
OS? = hodnota z čidla je mimo rozsah (nebo čidlo nenalezeno), bude bráno jako 0 Lux
TEPLOTA:
Txx.xx = hodnota teploty ve stupních Celsia (př: 25.75 C). Měří se po 20 sec (pokud běží program čas 1 - 3 je měření blokované)
T? = hodnota z čidla je mimo rozsah (nebo čidlo nenalezeno), bude bráno jako 0 stupňů
ČASOVACE:
DEN = začal x-tý den (1-7) tedy bude povolen čas 1-3 a doba 1-3 pro zalévání
CAS1 = právě je vyvolán čas 1 na dobu 1 (v závislosti na teplotě nebo vlhkosti se přidává +50%)
CAS2 = právě je vyvolán čas 2 na dobu 2 (v závislosti na teplotě nebo vlhkosti se přidává +50%)
CAS3 = právě je vyvolán čas 3 na dobu 3 (v závislosti na teplotě nebo vlhkosti se přidává +50%)
RE3 1= právě bylo sepnuto osvětlení (změřená hodnota je < než nastavená) provádí se v 9:00 a 14:00
RE3 0= právě bylo zhasnuto osvětlení (bez ohledu na hodnotu) provádí se v 17:00
RE2 1= právě sepnul ventil doplňování vody do nádrže (aktivuje se xx minut po skončení zalévání pokud je kontak min a max rozepnutý)
RE2 0= právě vypnul ventil doplňování vody do nádrže (dosažena hladina - kontakt max hladiny sepnul, kontakt min hladiny je také sepnutý)
RE1 1= právě seplo relé čerpadla (je ovládané časem 1-3 na dobu 1-3 a je blokované kontaktem min hladiny pokud je rozepnutý) - cykluje on/of dle menu LCD
RE1 0= právě vyplo relé čerpadla (je ovládané časem 1-3 na dobu 1-3 a je blokované kontaktem min hladiny) - cykluje on/of dle menu LCD
END = právě skoncil čas 1 - 3 (skončilo zalévání, aktivuje se odpočet na doplnění nádrže ventilem). Povolí se opět měření teploty a vlhkosti
OSTATNÍ:
RTC? = chyba reálného času, RTC DS1307 nikdy nebyl nastaven (po výměně baterie CR2032). Rovnou se skočí do menu LCD nastavení času a datumu
RBT = uložení datumu a času do RTC (případně smazání RTC na 1.1.2015 12:00:00), nebo po uložení hodnot do eeprom z LCD menu (nebo seriálu).
MENUxx = xx je číslo dle LCD menu 0-15, je právě aktivní menu na LCD
DOWN = stisk tlačítka dolu
UP = stisk tlačítka nahoru
LEFT = stisk tlačítka vlevo
RIGHT = stisk tlačítka vpravo
******************* parametry a výchozí hodnoty *******************
PARAMETRY:
teplota, vlhkost a osvětlení se měří po 20 sec, výpis na LCD se mění po 3 sec
Výchozí Povolené hodnoty Vysvětlivka
1.1.2015 12:00 Datum Čas (hodina,minuta,vterina,den,mesic,rok)
---------------
Perioda (Interval spínání zavlažování ve dnech)
1 1-7 Sepnout každý x-tý den
(eeprom -> perioda_den)
---------------
Čas1
6:00 0:00 – 23:30 Zavlažovat vždy v tt:tt (krokovat po 30 min)
(eeprom -> cas1_hod, cas1_min)
Doba 1
10 min 5-60 Zavlažovat po dobu ii (krokovat po 5 min)
(eeprom -> doba1)Čas2 (spínač)
18:00 0:00 – 23:30 Zavlažovat vždy v tt:tt (krokovat po 30 min)
(eeprom -> cas2_hod, cas2_min)
Doba 2
10 min 5-60 Zavlažovat po dobu ii (krokovat po 5 min)
(eeprom -> doba2)Čas3 (spínač)
9:00 0:00 – 23:30 Zavlažovat vždy v tt:tt (krokovat po 30 min)
(eeprom -> cas3_hod, cas3_min)
Doba 3
10 min 5-60 Zavlažovat po dobu ii (krokovat po 5 min)
(eeprom -> doba3)
---------------
Přerušení závlahy každé
2 min 0-10 min Čerpdalo se po této době vypne
(eeprom -> cerpadlo_on)
Přerušení po dobu
1 min 0-5 min Čerpdalo se po této době opět zapne
(eeprom -> pauza_cerpadlo_off)
---------------
Upravit zavlažování podle teploty
FALSE TRUE/FALSE
(eeprom -> use_teplota)
Aktuální teplota je:
>=40° zavlažit v čase 1,2,3 zavlažit v čase 1, zavlažit v čase 1,2, zavlažit v čase 1,2,3, prodloužit intervaly o 50%
>=30° a <40° zavlažit v čase 1,2,3
>=20° a <30° zavlažit v čase 1,2
>=5° a <20° zavlažit v čase 1
(eeprom -> last_teplota na konci zalévání se uloží teplota x1000 př. 24.58C bude v EE číslo 2458)
---------------
Upravit zavlažování podle vlhkosti půdy
TRUE TRUE/FALSE
(eeprom -> use_vlhkost)
Aktuální vlhkost (na stupnici 0-10)
>=2 a <4 zavlažit v čase 1,2,3 zavlažit v čase 1, zavlažit v čase 1,2, zavlažit v čase 1,2,3, prodloužit intervaly o 50%
>=4 a <6 zavlažit v čase 1,2,3
>=6 a <8 zavlažit v čase 1,2
>8 zavlažit v čase 1
(eeprom -> last_vlhkost cislo 0-10 v ee)
---------------
Načerpat vodu do nádrže za x minut po zavlažování (krok 5 min)
60 min 5-360 min
(eeprom -> pln_nadrz)
---------------
Verze 2.0
Měření intenzity světla v časech
V 9:00:00 sepnout osvětlení pokud intenzita světla je menší (krok 10 lux)
V 13:59:50 vypnout osvětlení
V 14:00:00 sepnout osvětlení pokud intenzita světla je menší (krok 10 lux)
V 17:00:00 vypnout osvětlení
300 lux 0-1000 lx
(eeprom -> svetlo_on_lux)
---------------
Verze 2.0
měření hladiny vody v nádrži s vodou
nádrž rozměr x v cm (krok 1cm)
100cm 10-450 cm
(eeprom -> ping_x)
nádrž rozměr y v cm (krok 1cm)
50cm 10-450 cm
(eeprom -> ping_y)
nádrž rozměr z v cm (krok 1cm)
50cm 10-450 cm
(eeprom -> ping_z)
výška vody pro min v cm (krok 1 cm)
80 cm 2 - 450 cm
(eeprom -> ping_min)
výška vody pro max v cm (krok 1 cm)
20 cm 2 - 450 cm
(eeprom -> ping_max)
Upozornění:
a) pokud je sepnutý spínač min hladiny nebude se dopouštět nádrž! (pokud je z ultrazvuku info že je minimální hladina tj min)
b) pokud je vlhkost < 2 nebude se zalévat
c) pokud je teplota < 5°C nebude se zalévat
d) při použití obou režimů (tj. měření vlhkosti a teploty najednou) má přednost měření vlhkosti, tedy pokud se zpracovala část s vlhkostí přeskočí se část s teplotou. Pokud byla vlhkost < 2 přeskočí se vlhkost a zpracuje se teplota.
Video - pohled na hotové zařízení (stav 4.6.15 - přidané info na LCD)
Video - pohled na hotové zařízení (sepne časovač 1)
Foto použité moduly
Foto LCD (provozní údaje a nastavení v menu)
Seznam použitých dílů pro zalévač verze V1+V2
Zboží: Napájecí adaptér 9V, 1A - Mega, Uno.
Kód: SA0174
Množství: 1 bal (149,00 Kč / bal)
Cena celkem: 149,00 Kč
http://www.santy.cz/arduino-c2/zdroj-9v-1a-i119/
Zboží: Omezovač napětí (1.5V - 35V) lm2596
Kód: SA0087
Množství: 1 bal (99,00 Kč / bal)
Cena celkem: 99,00 Kč
http://www.santy.cz/moduly-c22/dc-dc-lm2596-i112/
Zboží: Digitální čidlo teploty DS18B20 vodotěsné + 1m kabel
Kód: SA0030
Množství: 1 bal (129,00 Kč / bal)
Cena celkem: 129,00 Kč
Zapojení konektorů:
Červená - VCC (+5v)
Černá - GND (GND)
Modrá / bílá - Data (barva dle výrobce)
http://www.santy.cz/senzory-c24/ds18b20-waterproof-vodotesne-1m-kabel-digitalni-cidlo-teploty-dallas-i37/
Zboží: Digitání senzor intenzity světla (GY-302)
Kód: SA0151
Množství: 1 bal (149,00 Kč / bal)
Cena celkem: 149,00 Kč
Model: GY-302
Rozměry: 13,9 mm x 18,5 mm
Originální čip BH1750FVI - požívá ROHM
Napájení: 3 až 5v
Rozsah údajů 0 až 65535
Senzor postavený na 16bitAD převodníku
Přímý digitální výstup.
Spektrální vlastnosti v blízkosti vizuální citlivosti.
Široká škála jasu - lze měřit s vysokou přesností na 1 lux
http://www.santy.cz/moduly-cidel-a-senzoru-c35/senzor-intenzity-svetla-digi-i181/
Zboží: LCD modul 16x2 pro Arduino
Kód: SA0093
Množství: 1 bal (260,00 Kč / bal)
Cena celkem: 260,00 Kč
http://www.santy.cz/shieldy-pro-arduino-c23/arduino-lcd-1602-16x2-modul-shield-mega-nano-button-i7/
Zboží: Arduino UNO R3 - CLON 100% + USB kabel
Kód: SA0167
Množství: 1 bal (399,00 Kč / bal)
Cena celkem: 399,00 Kč
http://www.santy.cz/arduino-c2/arduino-uno-r3-nano-shield-atmel-328p-i47/
Zboží: 4x Relé modul 5V pro Arduino
Kód: SA0129
Množství: 1 bal (220,00 Kč / bal)
Cena celkem: 220,00 Kč
http://www.santy.cz/moduly-c22/arduino-rele-4x-5v-220v-10a-deska-modul-i12/
Zboží: Modul reálného data a času se záložní baterií (DS1307)
Kód: SA0139
Množství: 1 bal (159,00 Kč / bal)
Cena celkem: 159,00 Kč
http://www.santy.cz/moduly-c22/arduino-nano-mega-cas-time-datum-date-modul-baterie-mereni-i26/
Zboží: Ultrazvukový senzor vzdálenosti HC-SR04.
Pracovní rozsah: 2cm - 450cm
Vysoká přesnost: až 3mm
Pracovní úhel: <15 stupňů
Klidový proud:< 2mA
Vcc: napájecí napětí 5V DC
Trigger: spouštěcí signál impuls TTL(5V) >10us
Echo: výstupní signál TTL(5V) -> vzdálenost[cm] = doba_Echo[us] / 58
Velikost senzoru: 45 x 20 x 1,6 mm
Průměr otvorů: cca. 1mm
Zapojení konektoru:
1. 5V Supply
2. Trigger Pulse Input
3. Echo Pulse Output
4. GND
http://www.santy.cz/moduly-c22/arduino-hc-sr04-modul-shield-mega-nano-vzdalenost-mereni-i23/
Arduino IDE pro tento zalévač arduino-1.6.3-windows.zip (bez instalace)