Arduino UNO - automat pro zalévání rostlin (deluxe)

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)

DSC 0001

DSC 0002

DSC 0004

DSC 0005

DSC 0008

DSC 0009

DSC 0010

DSC 0012

DSC 0013

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

schema

spoje

osazovak

IMG 20151002 121845

IMG 20151002 121904

IMG 20151002 121945

IMG 20151002 122012

IMG 20151002 122020

IMG 20151002 122030

IMG 20151002 122057

IMG 20151002 122106

IMG 20151002 122106

IMG 20151002 125007

IMG 20151004 162907

IMG 20151004 170147

 

Ultrazvukový snímač HC-SR04

23 89

 

 

 

 

 

IMG 20150721 203857

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)

IMG 20150525 080309

IMG 20150525 080248

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

IMG 20150522 063905

 

IMG 20150522 063935

IMG 20150522 063948

IMG 20150522 064008

IMG 20150522 064017

IMG 20150522 064030

IMG 20150522 064038

IMG 20150522 064050

IMG 20150522 064058

IMG 20150522 064109

IMG 20150522 064118

IMG 20150522 112032

IMG 20150522 112048

IMG 20150522 134847

IMG 20150522 134854

IMG 20150522 134921

Foto LCD (provozní údaje a nastavení v menu)

IMG 20150601 063822

IMG 20150601 063825

IMG 20150601 063827

IMG 20150601 063830

IMG 20150601 063845

IMG 20150604 081307

IMG 20150601 063854

IMG 20150601 063906

IMG 20150601 063913

IMG 20150601 063919

IMG 20150601 063924

IMG 20150601 063930

IMG 20150601 063936

IMG 20150601 063943

IMG 20150601 063949

IMG 20150601 063956

IMG 20150601 064003

IMG 20150601 064009

IMG 20150601 064015

IMG 20150601 064021

IMG 20150601 064027

IMG 20150601 064036

IMG 20150603 085217

IMG 20150603 085226

IMG 20150603 085235

IMG 20150603 134424

IMG 20150603 134427

IMG 20150603 134436

IMG 20150603 134438

IMG 20150604 085733

IMG 20150604 103457

IMG 20150604 110549

IMG 20150604 110613

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)