www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Avtomatsko zalivanje

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Zbirka projektov
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Čet Feb 22, 2024 8:28 pm    Naslov sporočila:  Avtomatsko zalivanje Odgovori s citatom

Projekt ni nov. Je že 4. leta v uporabi in se dobro obnese.
V prvem delu bom predstavil tiskanino.

Pravzaprav vse izhaja in univerzalne tiskanine, ki sem jo izdelal in (čeprav je sedaj ESP32 bolj smiselna rešitev) jo še danes uporabljam za majhno IoT napravo.
Procesor je ESP8266. Smiselno je izbrati enega, ki ima možnost priklopiti zunanjo anteno, da bo domet boljši.
Nanj se lahko priklopi 2x DS18B20 senzorja in/ali SHT31 za merjenje temperature in vlage zraka.
Na ADC imam priključeno kapacitivno sondo za merjenje vlažnosti zemlje.
Vezje ime tudi 2. tranzostorska izhoda. Z tem bi lahko direkt krmilil tuljavo solanoid ventila, ampak vseeno priporočam uporabo relejske ploščise, saj se pri kitajcih dobijo za smešno ceno.
Sama tiskanina ima še nekaj prostih pinov, ki se jih lahko porabi za drugega
Napajanje je 12V iz vzroka, ker imam 12V relejsko ploščo in ventile. Lahko se napaja z nižjo napetostijo nikakor pa ne z višjo!
Tudi izbira napajalnika ni kritična. Paziti je potrebno, da zmore tokovne zahteve ventila.

Komponente ki ga uporabljam jaz:
12V El. ventil
senzor za vlažnost prsti
relejka plošča

Pozor! ESP8266 ADC meri v območju 0-1V zato je tudi na vhodu kar močan uporovni delilnik. Pa tudi 10bit resolucija ni ravno za hvalit, ampak za ta projekt je čisto dovolj.



njiva_2.jpg
 Opis:
PCB
 Velikost datoteke:  113.77 KB
 Pogledana:  19 krat

njiva_2.jpg



GERBER-njiva_2.zip
 Opis:
Gerber datoteke

Download
 Ime datoteke:  GERBER-njiva_2.zip
 Velikost datoteke:  102.04 KB
 Downloadano:  8 krat


njiva_2.pdf
 Opis:
Shema

Download
 Ime datoteke:  njiva_2.pdf
 Velikost datoteke:  46.21 KB
 Downloadano:  15 krat


_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Pet Feb 23, 2024 8:48 pm    Naslov sporočila:   Odgovori s citatom

Programiranje

Upravljanje je "oblačno" z razlogom, da je doseglivo iz kjerkoli. V prvi verziji sem upravljal z cayenne, ampak le tega so v jeseni ugasnili.
Ob iskanju alternative sem preiskusil par ponudnikov in se nakoncu odločil za Blynk. V brezplačni verziji je sicer omejen, ampak se da.
Ker za razliko od arduinovega cloud omogoča OTA (over the air) programiranje lastnih naprav sem seveda to izkoristil. Pri tem je potrebno paziti, da je program dovolj majhen (manj kot 50% flash), da ga lahko sploh nalagamo.
Za programiranje uporabljam arduino. Pri tem je potrebno naložiti par knjižnic.
za dallasove senzorje in blynk. Kdor pozna arduino ve kako se to napravi in ne bom tu razlagal.
Preden se lotimo česarkoli pa se je potrebno registrirati na Blynk.
Po uspešni registraciji v Developer Zone kliknemo na New template
Pod NAME si nekaj izmislimo. Naprimer "njiva in vrt". HARDWARE izberemo ESP8266, CONNECTION TYPE pustimo WiFi, DESCRIPTION lahko pustimo prazno.
Potrdimo z Done.
Sedaj na "Datastreams" kreiramo virtal pine, s katerimi prenašamo podatke iz serverja na naš board in obratno.
Kliknemo na "+ New Datastream" in "virtual pin".
Tu pod NAME upišemo kaj je. Naprimer "temp 1", ALIAS pustimo kot je, PIN kateri virtualni port uporabimo.
V programu imam definirano tako:
- V10 temperatura 1
- V11 temperatura 2
- V12 Vlažnost prsti
- V13 rele 1
- V14 rele 2
- V15 podatki iz ADC (o tem več pozneje)
DATA TYPE kakšni podatki. (Integer - cela števila, Double - števila z decimalkami in String - za tekst). UNITS kaj prikaže zraven. naprimer Celsius za stopinje... MIN, MAX minimalna in maksimalna vrednost in (če izberemo Double) DECIMALS kako izgleda prikaz.
Sedaj pride prva omejitev. Dovoljeno je le 5. virtual pinov. Enega od teh izpusti.
S klikom na "Home" na desni strani v čnemu oknu vidimo TEMPLATE_ID in TEMPLATE_NAME. To bomo rabili zelo kmalu v arduino programu. Skopiramo si z klikom na črno okno.

Sedaj poženemo arduino in new project. Potem odpremo template, ki se nahaja pod File/examples/Blynk/Blynk.Edgent/Edgent_ESP8266
Kompletno vsebino prve strani zamenjaj z spodnjim tekstom.
Ampak pozor. Zamenjati je potrebno vrsti:
#define BLYNK_TEMPLATE_ID
#define BLYNK_TEMPLATE_NAME
z vrstama, ki smo jih prej skopirali iz Blynk webstrani

Koda:
/*
 *  Program za zalivanje vrta 
 *  2.2024 V1.0 Simon Skočir
 */
 
#define BLYNK_TEMPLATE_ID "*** zamenjaj z svojo****"
#define BLYNK_TEMPLATE_NAME "*** zamenjaj z svojo***"

#define BLYNK_FIRMWARE_VERSION        "0.1.0"

#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG

#define APP_DEBUG

#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "BlynkEdgent.h"

#define limit_1 7200000                                      // absolutna omeitev časa zalivanja rele 1 3600000 = 1 ura
#define limit_2 7200000                                      // absolutna omeitev časa zalivanja rele 2
#define pri_100 1012                                         // vrednost ADC pri 100% vlage
#define pri_0   666                                          // vrednost ADC pri 0% vlage

unsigned long cas_rele_1 = 0, cas_rele_2 = 0 ;            // timerji za absolutno omejitev časa zalivanja na 3 ure
float temperature_1, temperature_2, zajem_adc, vlaga_z;
const int beri_senzor = A0;                               // ESP8266 Analog Pin ADC0 = A0
const int oneWireBus1 = 4;                                 // DS18b20 1 temperaturni senzor
const int oneWireBus2 = 5;                                 // DS18b20 2 temperaturni senzor
int rele_1 = 12;                                            // rele 1
int rele_2 = 13;                                            // rele 2

OneWire oneWire1(oneWireBus1);
DallasTemperature sensors_1(&oneWire1);
OneWire oneWire2(oneWireBus2);
DallasTemperature sensors_2(&oneWire2);
BlynkTimer timer;


void setup()
{
  Serial.begin(9600);
 
  pinMode(rele_1, OUTPUT);
  pinMode(rele_2, OUTPUT);
 
  ESP.wdtDisable();                                   // vklop WatchDoga
  delay(100);
  timer.setInterval(1000L, poslji);
  BlynkEdgent.begin();
}

void omeitev() {
  unsigned long trenutno = millis();
  if (trenutno - cas_rele_1 > limit_1) {
    digitalWrite(rele_1, LOW);
    Blynk.virtualWrite(V13, LOW);
  }
  if (trenutno - cas_rele_2 > limit_2) {
    digitalWrite(rele_2, LOW);
    Blynk.virtualWrite(V14, LOW);
  }
}
void poslji(){
  sensors_1.requestTemperatures();
  sensors_2.requestTemperatures();
  temperature_1 = sensors_1.getTempCByIndex(0);                // temperatura senzor 1
  temperature_2 = sensors_2.getTempCByIndex(0);                // temperatura senzor 2
  zajem_adc= analogRead(beri_senzor);                          // beremo analogno vrednost iz ADC
  vlaga_z = map(zajem_adc, pri_100, pri_0, 0 ,100);            // pretvozba vlage na 0-100% glede na ADC

  Blynk.virtualWrite(V10, temperature_1);
  Blynk.virtualWrite(V11, temperature_2);
  Blynk.virtualWrite(V12, vlaga_z);
  Blynk.virtualWrite(V15, zajem_adc);
}

void loop() {
  BlynkEdgent.run();
  timer.run();
  omeitev(); 
  ESP.wdtFeed();             // nafutraj WD
}

BLYNK_WRITE(V13)   
{
  bool prozi = param.asInt(); // prožimo zalivanje
  if (prozi)digitalWrite(rele_1, HIGH);
  else digitalWrite(rele_1, LOW);
  cas_rele_1= millis();               // timer koliko časa je vklopljen
}

BLYNK_WRITE(V14)   
{
  bool prozi = param.asInt();
  if (prozi)digitalWrite(rele_2, HIGH);
  else digitalWrite(rele_2, LOW);
  cas_rele_2= millis();                // timer koliko časa je vklopljen
}


Kot je videti je program skrajno enostaven in ni potrebno dosti komentarja.
Omenim edino definicije
- limit_1, limit_2 ki je limit, koliko časa je maksimalno zalivanje, če pozabimo izklopiti
- pri_100 je vrednost, ki jo dobimo na ADCju (virtual port 15), ko pomočimo senzor v vodo
- pri_0 je vrednost, ki jo dobimo na ADC, ko je senzor suh.
Kaj točno to pomeni in kako definiramo te številke več pri kalibraciji in zgonu

Program sedaj pripravljen za nalaganje.
Postopek: Na PCB postavimo jumper FLASH pina, povežemo USB <-> UART konverter RX, TX in GND na PROG pine. Vklopimo napajanje
V arduinu pod Tools/Board izberemo "generic ESP8266 module" in kliknemo na "upload"

Toliko za danes



bly1.JPG
 Opis:
Blynk - Datastreams
 Velikost datoteke:  91.65 KB
 Pogledana:  2 krat

bly1.JPG



ardu_nast.JPG
 Opis:
blynk template
 Velikost datoteke:  112.05 KB
 Pogledana:  4 krat

ardu_nast.JPG



ardu_prog.JPG
 Opis:
nastavitve za programiranje
 Velikost datoteke:  145 KB
 Pogledana:  3 krat

ardu_prog.JPG



_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Sob Feb 24, 2024 6:15 pm    Naslov sporočila:   Odgovori s citatom

Prvi zagon

Program je naložen, template kreiran. Vse je pripravljeno na prvi zagon.
Na krmilno elektroniko povežemo senzorje (pač kar rabimo). Recimo da povežemo en DS18b20 in sondo za vlažnost prsti.
Ker smo elektroniki mislim, da je razvidno z sheme in ne bom podrobno opisoval.

Napravo lahko upravljamo preko web dashboarda, ampak bolj enostavno je upravljanje z aplikacijo telefona. Blynk ponuja brezplačno aplikacijo za Android in Apple. Opisal bom za Android, ampak verjetno za Apple ni nič drugače.
V trgovini play poiščemo Blynk IoT aplikacijo in jo naložimo. Ko jo poženemo se prijavimo z istimi podatki kot na Blynk.io
Priklopimo napajalno napetost na vezje.
Na Blynke app kliknemo zgoraj desno na "..." in izberemo "+ Add new device"
izberemo "Find devices nearby" in sledimo navodilom. Tu se tudi vpiše SSID in geslo za WiFi mreže na katero bo naprava povezana.
Ko smo uspešno registrirali napravo kliknemo na njeno ikono.
Kliknemo na ključ zgoraj desno tako, da lahko urejamo dashboard.
s klikom na "+" izberemo Widget. S klikom nanj izberemo še kateri virtual pin bomo uporabili zanj. Tu je seveda še ogromno možnosti od barv, velikosti pisave, .....
obvezno še izberemo en prikaz za V15.
Ko smo z prikazom zadovolni gremo iz editorja (puščica nazaj levo zgoraj) in že bi morala biti prikazana temperatura in neka nerealna vrednost vlažnosti prsti.

Postopek kalibracije vlažnosti prsti sem si zamislil tako.
Ko je sonda suha preberemo vrednost ADC (ki je na V15) in v arduino program vnesemo to pod
Koda:
#define pri_0   

sondo potopimo v kozarec vode in ponovno odčitamo vrednost ADC.
To vrednost vnesemo pod
Koda:
#define pri_100

Tu, da ne pozabim omeniti, je potrebno tudi popraviti verzijo na višji, kicer jo ne bo preneslo.
Koda:
#define BLYNK_FIRMWARE_VERSION        "0.1.1"

Program prevedemo in kreiramo BIN file. To se napravi z klikom na Sketch/Export compiled Bineary. Odpremo direktorij z klikom Sketch/Show Sketch Folder
Tu je sedaj generirana datoteka, ki jo lahko naložimo preko aplikacije (ni potreben programator!)
Opdpremo na PCju Blynk web dashboard in pod developer zone izberemo Blynk.Air (OTA)
Izberemo "new Shipping" izberemo TEMPLATE (če jih je več) in označimo katero DEVICE bomo nadgradili (če jih je več) potem samo že izberemo BIN datoteko iz arduina in "Start Shipping)
To je to. Počakati je potrebno cca minuto da se program naloži in pobere.

Naša naprava je skalibrirana in pripravljena za delo.



blynk_ota.JPG
 Opis:
 Velikost datoteke:  70.69 KB
 Pogledana:  5 krat

blynk_ota.JPG



blynk_ota1.JPG
 Opis:
 Velikost datoteke:  82.02 KB
 Pogledana:  2 krat

blynk_ota1.JPG



app.png
 Opis:
 Velikost datoteke:  103.78 KB
 Pogledana:  6 krat

app.png



app1.png
 Opis:
 Velikost datoteke:  80.83 KB
 Pogledana:  2 krat

app1.png



_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Pon Feb 26, 2024 7:46 pm    Naslov sporočila:   Odgovori s citatom

Avtomatizcija

Tako kot je sicer deluje, ampak mi bi želeli, da se zaliva avtomatsko.
Blynk je zelo močan pri tem. Ampak, če hočemo avomatizacijo, moramo prvo povedati katere virtual porte bomo uporabljali in kaj je na njih.
To se lahko nastavi preko aplikacije ali preko web vmesnika. Popolnoma enakovredno je. Jaz zaradi lažje demonstracije uporabil web vmesnik.
V "Developer Zone" izberemo željen template in kliknemo na "Automations" in zgoraj desno na "Edit"
Potem pri vlaga, rele1, rele2 omogočimo "Condition" in "Action". Pogledamo tudi če so releji označeni kot "Switch" in vlaga kot "Sensor". Potem shranimo.

Kliknemo na Automations (če tega ne vidite obnovite stran -> F5) in desno "+ Create Automation"
Izberemo "Schedule"
Potem uro začetka dogodka in katere dni v tednu.
Spodaj izberemo "Control Device" in ime naprave (jaz imam njiva) To potem označimo rele1 in klik na drsnik, kar pomeni da ob tej uri vklopi rele, ki odpre ventil vode. Lahko seveda izbereš oba releja
Da ne bo zalivalo vrta v nedogled gremo na naslednji korak.
"Add next action" in izberemo "Wait, Then Do Something"
Tu je najbolj enostavno izbrati timer in izbrati koliko časa bo trajalo zalivanje.
"Add next action" -> "Control Device" in isto izberemo njiva in rele1 ampak tokrat pustimo drsnik v izključenem načinu

To je to. Naprava so ob nastavljeni uri odprla ventil in zalivala določen čas in zaprla ventil.

Ampak dobro bi bilo pa, da ob previsoki vlažnosti zemlje sploh nebi zalivalo.
Za to bo potrebno spisati novo avtomatizacijo
Tokrat izberemo "Device State
Zopet napravo (njiva) in potem vlaga.
Ker nima opcije (če je večje) izberemo "is between" in vrednosti pri kateri vlagi bi želeli, da se izklopi ter 100.
Sledi "What you can do" -> "Control Device" in označimo rele1 in drsnik za izključitev.
Ta avtomatizacija pomeni, ko je vlažnost zemlje več kot 50% izklopi rele1



bly_set.JPG
 Opis:
nastavitev parametrov za avtomatizacijo
 Velikost datoteke:  88.72 KB
 Pogledana:  1 krat

bly_set.JPG



bly_auto1.JPG
 Opis:
 Velikost datoteke:  57.01 KB
 Pogledana:  0 krat

bly_auto1.JPG



bly_auto2.JPG
 Opis:
omejitev zalivanja
 Velikost datoteke:  58.31 KB
 Pogledana:  0 krat

bly_auto2.JPG



_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Pon Feb 26, 2024 8:01 pm    Naslov sporočila:   Odgovori s citatom

Pozabil sem omeniti, da ime naprave, ki ga kreira Bynk lahko spremenimo.
Pod "Devices" izberemo napravo in zgoraj zraven imena kliknemo na "..." in "rename".

Dodajanje več zalivalnih enot je super enostavno.
Program je identičen. Ni potrebno nič spreminjati, saj mu Blynk dodeli unikatno ime (ki ga po zgornjem postopku preimenujemo)
Kar je še bolj lepo je, da template ostaja enak in je že ready to use. Edino avtomatizacijo je potrebno ročno urediti.
Koliko naprav lahko dodamo pa je že omejitev plana. Jaz sem kupil "Maker" plan in za onih par EUR na mesec se mi odpira veliko več opcij, kot sicer v brezplačni verziji.
Moja zalivalna naprava tudi nadzira količino vode v štirni in ob niskem nivoju ne zaliva.

Sicer Blyn še spoznavam in verjetno je še kup bolj enostavnih korakov

Naslednjič še par slik izdelanega sistema



bly_rename.JPG
 Opis:
preimenovanje
 Velikost datoteke:  72.68 KB
 Pogledana:  7 krat

bly_rename.JPG



_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Čet Feb 29, 2024 8:26 pm    Naslov sporočila:   Odgovori s citatom

Seveda, opcij je polno. Dandanes se dobijo razni moduli po smešnih cenah.
Ampak za nas hobiste je DIY posebno veselje.
Blynk je v free ferziji res omejen. Ampak za 3x kavico na mesec dobiš ogromno in tu res lahko rečeš "only the sky is the limit"
Še obljubljene slike mojega sistema. Jih je več na različnih lokacijah.
Preden me boste pluvali. To je bilo narejeno že dosti let nazaj in še to iz ostankov. Namensko je bil kupljen le ventil in sonda za vlago.
Zaščito za sondo, ki pride zakopana v zemljo sem naprintal. Notranjost pa sem zalil z namenskim silikonom za zaščito vezji. Verjetno bi klasični brezkislinski silikon enako dobro služil namenu.



mont1.jpg
 Opis:
 Velikost datoteke:  108.44 KB
 Pogledana:  30 krat

mont1.jpg



mont2.jpg
 Opis:
 Velikost datoteke:  173.65 KB
 Pogledana:  19 krat

mont2.jpg



mont_sonda.jpg
 Opis:
 Velikost datoteke:  38.66 KB
 Pogledana:  6 krat

mont_sonda.jpg



zascita_v2.zip
 Opis:

Download
 Ime datoteke:  zascita_v2.zip
 Velikost datoteke:  546 Bytov
 Downloadano:  3 krat


_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Profesor Einstein
Član
Član



Pridružen-a: Ned 24 Sep 2006 0:13
Prispevkov: 1423
Aktiv.: 6.64
Kraj: Rogaška Sl.

PrispevekObjavljeno: Ned Mar 03, 2024 11:31 pm    Naslov sporočila:   Odgovori s citatom

Sem si naročil merilnike vlage... potestiram ko pridejo.

lp.

_________________
--
"Če bi volitve kaj pomagale, bi jih prepovedali." (Mark Twain)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
fricky
Član
Član



Pridružen-a: Pon 22 Sep 2003 15:37
Prispevkov: 258
Aktiv.: 1.16
Kraj: Ribniško Pohorje

PrispevekObjavljeno: Sre Apr 24, 2024 9:27 pm    Naslov sporočila:   Odgovori s citatom

Uporaben projekt.

Če bi se nabralo nekaj kandidatov za naročilo PCB bi si lahko malo porazdelili stroške.
Bi še kdo izdelal zalivanje?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Član
Član



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.59
Kraj: Kobarid

PrispevekObjavljeno: Sre Apr 24, 2024 10:10 pm    Naslov sporočila:   Odgovori s citatom

Imam nekak tiskanin viška. Če rabiš napisi pod ZS. Cena 10€
_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Zbirka projektov Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 78 dni


Powered by phpBB © 2001, 2005 phpBB Group