HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

  • Travis.CG: Annyiban én is hibás vagyok, hogy könnyen előjönnek belőlem negatív posztok, ezt akartam ellensúly... (2025.05.22. 19:34) Ne csak a rosszat halljátok
  • sdani: Oh... néha eszembe jut, hogy az EBI után esetleg vissza kellene menni valamennyire az akadémiai vo... (2025.03.18. 16:58) Pontos, jól behatárolt célok
  • legyen úgy: Szia, Értem és köszönöm a válaszodat! T. (2025.02.24. 18:23) Expose CTF
  • sdani: Sajnos nekem is hasonló érzéseim vannak az R kiszorulásával kapcsolatban. Remélem jobban fogja tar... (2024.04.29. 10:48) R meetup
  • sdani: Nagyon jók ezek a bejegyzések! Feszültséggel teli, fordulatos, mint egy jobb krimi. :D Abba ne hag... (2024.04.29. 10:35) Wgel CTF

Öntözőberendezés (2. rész)

2025.07.10. 15:28 Travis.CG

Az öntöző kisebb gyermekbetegségekkel kűzdött, ezeket kezdtem el javítani. Szerencsére volt még egy festékes doboz, úgyhogy azt is kifúrtam, de már magasabban, hogy a víz ne folyjon ki, ha a szivattyúk nem működnek.

ontozo2.jpg

Az eltelt ídő alatt sajnos a Gumiám szigetelés szép lassan elvált a doboz falától, ezért ezt a fajta szigetelést többet nem fogom használni. A másik gondom vele, hogy minegy, mennyire alaposan kenem ki a felületeket, mindig van valami kis láthatatlan rés, amin keresztül szivárog.

A kód is sokat fejlődött, most már rendesen működik. A legnagyobb gondom az volt, hogy a neten fellelhető példakódok vagy eltérő könyvtár verzióra vonatkoztak, vagy újabb helper könyvtárak behúzására épültek. Végül a fejléc állomány forráskódja alapján építettem fel ezt a programot:

#include <DS3231.h>

RTClib myRTC;
int relaypinA = 7;
int relaypinB = 6;
time_t alarm1;
time_t alarm2;
DS3231 rtc;

void setup() {
   Serial.begin(57600);
   Wire.begin();
   pinMode(relaypinA, OUTPUT);
   pinMode(relaypinB, OUTPUT);
   digitalWrite(relaypinA, HIGH);
   digitalWrite(relaypinB, HIGH);
   alarm1 = DateTime(2025, 5, 11, 19, 10).unixtime(); // big tube alarm
   alarm2 = DateTime(2025, 5, 11, 19, 15).unixtime(); // small tube alarm
   // set the time if you need
   //rtc.setYear(25);
   //rtc.setMonth(5);
   //rtc.setDate(11);
   //rtc.setHour(18);
   //rtc.setMinute(42);
   Serial.println("Ready");
}

void loop() {
   time_t now = myRTC.now().unixtime();

   if( now >= alarm1 && now < alarm1 + 2){
     // big tube
     digitalWrite(relaypinA, LOW);
   } else {
     digitalWrite(relaypinA, HIGH);
   } if( now >= alarm2 && now < alarm2 + 2){
     // small tube
     digitalWrite(relaypinB, LOW);
   } else {
     digitalWrite(relaypinB, HIGH);
   }
}

A legjobb módszer, hogy az időt Unix timestamp-be konvertáljuk, és úgy hasonlítjuk össze az időket. Az óra beállítását kikommenteltem, azt akkor kell futtatni, ha a valós idejű órában elemet cserélünk. Ebben a példában mindkét szivattyú csak egyszer öntöz, de természetesen több időpontot is fel lehet vinni.

Lemértem mennyi vizet ad az öntöző két másodperc alatt. A kisebbik szivattyú 300 ml-t, a nagyobb 450 ml-t ad ki a csöveken. A víz még folyik a csövekből egy kis ideig, miután a szivattyúk leálltak.

A sorozatos kudarcok miatt a feleségem továbbra is szkeptikus a berendezést illetően, de szerintem már harcrakész állapotban van. Tettem is egy próbát, persze azért vigyáztam, hogy a lakás ne ázhasson el:

onotzo3.jpg

A tapasztalataim nagyon jók. Még biztos lehetne tuningolni az eszközt a végtelenségig, de a céljaimnak így már megfelel.

Szólj hozzá!

Címkék: programozás barkácsolás

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr8118897758

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása