Fórumok
Sziasztok,
szeretnék egy kis segítséget kérni Arduino programozással kapcsolatban.
Amit szeretnék:
Szeretném időközönként mágnes kapcsolókat kapcsolni. Pl: minden nap 07:00 és 19:00 5 percre. Az idő függvény deklarálásában az érték kinyerésében akadtam meg, ehhez szeretnék kérni támpontot, hogy ezt hogyan is kellene deklarálni, kezelni. Itt egy kicsit lefagytam... a vezérlés már meg van csak az időket kellene hozzá tennem.
Köszi előre is!
Kalmi
Hozzászólások
A legegyszerubb, ha a millis() fuggvenyt hasznalod, ami a bekapcsolas ota eltelt millisecundumaidat adja vissza 32 bites unsigned-kent (felteve, hogy nem nyulsz hozza az orajeledhez, mert ugye a regiszterekbe bee tudsz piszkalni). Valahogy meg kell adnod, hogy mennyi az aktualis ido, innentol van egy epoch-od meg egy adott timestamphez tartozo datum-ido parosod. Mar csak a korbefordulast kell kezelned, es keszen is vagy. Reboot/aramkimaradas utan persze be kell allitanod ujra az idot.
Masik lehetoseg, ha van hardware-es modulod, ami lekezeli. Ezt peldaul szeretik.
Harmadik lehetoseg, ha van neted, es onnan le tudod kerni idonkent az idot. De ezt mar inkabb ESP alapon celszeru.
A strange game. The only winning move is not to play. How about a nice game of chess?
Én úgy olvastam, hogy a 1307-et nem szeretik, mert nem elég pontos. Saját tapasztalat sajnos alátámasztja.
A 3231-et jobban kedvelik.
https://www.ebay.com/itm/3-3V-5V-RTC-I2C-DS3231-DS3231SN-Real-Time-Cloc…
"Normális ember már nem kommentel sehol." (c) Poli
Akkor jól éreztem, hogy ez nem olyan “egyszerű” dolog. Meg oldható a net is, mert van egy wemos d1 es kutyum, amivel sikerült wi-fivel kapcsolodnom a routerhez. Így feltételezem van net is rajta. Azaz lehetne valahogy atomórát szinkronizalni is.
Az időpontok fontosak lennének, hogy beállított értéknél kapcsoljon a kapcsoló. Erről kaphatok segítséget?
van ntp library (NTPClient) amivel szinkronizálhatsz. Használata egyszerű:
const long utcOffsetInSeconds = 3600;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);
Az utcOffsetInSeconds a helyi időzóna.
Ezt követően már csak a következő kell a loopban:
void loop() {
timeClient.update();
int hours = timeClient.getHours();
int minutes = timeClient.getMinutes();
if (hours == 7 && minutes == 0) digitalWrite(RELAY_PIN, 1);
if (hours == 7 && minutes == 5) digitalWrite(RELAY_PIN, 0);
if (hours == 19 && minutes == 0) digitalWrite(RELAY_PIN, 1);
if (hours == 19 && minutes == 5) digitalWrite(RELAY_PIN, 0);
}
Lehetne szebben is, de ez szemléletesebb így ;)
Ha nem relé, hanem valami más, akkor arra figyelni kell hogy 7 óra 0 perckor 1 percen át folyamatosan 1-re fogja állítani, 5 perckor pedig 1 percig folyamatosan a nullára. Ez relénél lényegtelen
// Happy debugging, suckers
#define true (rand() > 10)
Ha e szerint kapcsolódtam a routerre: https://www.youtube.com/watch?v=VTQJQMy34fc , akkor feltételezem, hogy van net elér is és bármit meg lehet hívni? Ennek van valami egyedi logikája?
Ez tökéletes. Semmi extra, azt a pár sort bedobálod mellé amit adtam és működik minden
// Happy debugging, suckers
#define true (rand() > 10)
NTP erre valo, meg persze pontosabb.
Egyszerubb esetben webserver headerjebol is kinyerheto (vagy direkt erre irt server oldali koddal is megoldhato). Ilyen ebresztoora-szeru funkciot pl. igy csinaltam itthon, van egy raspberrym, ami mindig fut, az azon futo webserverrol kapja a parancsokat es a pontos idobelyeget, amihez szinkronizalhat.
A strange game. The only winning move is not to play. How about a nice game of chess?
Ja, kifelejtettem meg a radios oraszinkronizalos dolgokat. Van a frankfurti DCF77 rendszer, ez nem mindig veheto itthonrol. Ezen kivul - ha van ablakra ralatas - GPS-rol is lehet idot venni.
Mekkora pontossagra van szukseged? Mire szeretned hasznalni? Ez a wifisnel is erdekes.
A strange game. The only winning move is not to play. How about a nice game of chess?
Öntöző rendszert szeretném vezérelni. A nagyon nagy pontosság nem feltétel, de azért jó lenne, ha pl: 7 óra fele, reggel kapcsoljon be :), egyórakkor már kiégne a fű :).
Nagyon köszönöm a segítségeteket! Megnézem ma, hogy értem is-e ami infókat kaptam és össze tudom-e rakni egy kódba. Remélem sikerül, egyenlőre nem néz ki bonyolultnak a dolog.
XD, jaj!
Akkor miert nem a fenyerot akarod alapul venni? Ha el tudod helyezni ugy a vezerlomodulodat, egy ilyenbol es egy ellenallasbol epitett oszto kozos pontjat rakotod egy tetszoleges mikrokontroller ADC-jere, es figyeled mikor kel fel es nyugszik a Nap. Napnyugtakor beinditod az ontozorendszeredet, meg napkeltekor, es ennyi. Ha (lehetoleg kapacitiv) talajnedvesseg-erzekelod is van, nem locsolsz, ha amugy is esett.
A strange game. The only winning move is not to play. How about a nice game of chess?
lehet agyuval verebre, de ilyet inkabb egy HA-ba kotnek. mert tuti kesobb lesz majd igeny hogy manualisan is kene ontozni, vagy kiados esos napon nemkell ontozni, stb.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Öntözőrendszer: azt tudd, hogy vastagon kitaposott úton jársz, dugig van a net DIY locsolórendszer építéssel, rengeteg példát és ötletet fogsz találni ha rákeresel. A Wemos jó alap, sokan építenek rá ilyen rendszert, de azt vedd figyelembe, hogy kevés a biztonsággal használható GPIO, amik dedikáltak és tuti nem billennek át amikor nem akarod, és nem önti el a kerted e miatt az árvíz (de amúgy ettől függetlenül is célszerű egy független master szeleppel indítani az egészet, aminek az állapotát le tudod kérdezni, vagy beépíteni egy átfolyásmérőt).
https://community.blynk.cc/uploads/default/original/2X/3/32941e2c222564…
Ez alapján úgy 5 körig jó vagy, de egyébként szerintem a RX/TX is is nyugodtan használható lenne (ebbe majd kössön bele aki jobban ért hozzá nálam, biztos vannak itt ilyenek).
Néhány tipp még a plug&play -től a teljes DIY-ig:
- gyári megoldások: Hunter, Rainbird, stb... (de ezeket gondolom ismered)
- https://opensprinkler.com (raspberry alap, hackelhető, jól integrálható, opensource, szerintem egy kicsit túl van árazva)
- DIY megoldáshoz yaml alapú custom firmware kreátor ESP-hez: ESPHome (csak beleszórod a modulokat ami kell, és azt csinálja amit szeretnél, hátránya lehet, hogy a vezérelhetősége főképp Home Assistantra van kihegyezve)
- teljesen saját sw (aminek te is nekiálltál)
Az utóbbi is jó buli persze, főleg ha tanulni is szeretnél, ez esetben simán csak kövesd a topicban olvasott tippeket.
Én amúgy tavaly építettem meg a sajátom (szintén Wemos D1 mini alapon, 4 körhöz). Akkor még Espeasy volt rajta, most vacillálok a ESPHome és a saját sw között, mert van hozzá egy i2c kijelzőm is, és az Espeasy-vel elég korlátozottan tudom csak használni. Én amúgy Home Assistantból vezérlem mqtt-n, maga az eszköz buta, az egyetlen automatizmus amit önmagától tud, az a 4db relé közötti interlock funkció (egyszerre mindig csak egy kör lehet bekapcsolva).
Ezzel több baj is szokott lenni, pl. az egyik az, amit írtál is, hogy bizonytalan Magyarország területén itt-ott-amott-többfelé a vétel, így időnként vesz valamit a vevő, időnként nem, a vett adatok helyességének ellenőrzése meg annyira gagyi ebben a protokollban, hogy simán tévedhet durvákat egy ilyen óra, és téved is.
Arduino RTC? Gombelem kell bele, 1x beállítod, utána elketyeg magától. Időnként rákérdezel, hogy mennyi az annyi és végrehajtod, amit szeretnél.
Megkockáztatom, alarm funkciója is van és interruptot ad neked valahova.
Köszönöm érdekes: https://www.arduino.cc/en/Reference/RTC
Ebayen, vateran keress ra. 500-1000ft-s tétel. Arduino mellett málna PC-vel is használható. Kellemes kis modul. Egy ilyen projekthez en ilyet használnék.
Én is az RTC mellett teszem le a voksom ez esetben. Annyi, hogy ha van lehetőség mérni az RTC gombelem feszültségét, akkor arra egy riasztást rakni mielőtt elfáradna.
- Indítsd újra a gépet! - Az egészet? - Nem, a felét...
Itt melyik kütyüre gondolsz (Rasberry Pi) és annak a programozása, hogyan működik? Teljesen kezdő vagyok a témában :)
Ajánlok neked egy könyvet, hogy meglegyenek az alapok: Tavir 60 nap alatt Arduino
Én ezt csináltam végig és utána világosodtam meg :)
- Indítsd újra a gépet! - Az egészet? - Nem, a felét...
Megtaláltam, de még várom az első leckét :)
Azt hittem, 60 napig nem jössz, mert tanulsz :Đ
"Normális ember már nem kommentel sehol." (c) Poli
Az maradjon csak zárójelben. Ide ágyúval verébre esete lenne. Elég az Arduino.
(Bár a PI hamarabb felcsattan a netre, tud NTP-zni, ezért RTC sem kell mellé.)
"Normális ember már nem kommentel sehol." (c) Poli
Erre gondolok: https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=ardui…
Aztán utána kell olvasni, hogy melyik miben jobb. Van több változat.
Arduino egyébként elég a feladatra. Ha Raspberry Pi és társai irányba mennék el, akkor megnézném időképen a következő időjárást, és ha aznap esni fog, kihagyom az aznapi öntözést :) Lehet ezt szépíteni :)