Solarny system nawadniania

Re: Solarny system nawadniania

Postprzez SCRUBBY » 18 sie 2016, o 01:35

Co tu pisać... Graty przyjechały wczoraj rano, więc korzystając z urlopu usiadłem i zaprogramowałem bazę.

Użyte:
WeMos D1 R2 z ESP80266EX
5 channel relay
DHT22
DS3232
LCD 4x20

czeka na uruchomienie płytka z czytnikiem SD by był logger :)

Działanie:
weryfikacja temperatury i:
...
Kod: Zaznacz cały
temp= dht.readTemperature();    //pobór wartości temperatury
   if (temp >= 25.00)   
      {
      digitalWrite(RELAY1,LOW);           //Wiatrak 1 - ON
      if(temp >=27.00)   
        {
        digitalWrite(RELAY2,LOW);           //Wiatrak 2 - ON
        }
        else
        {
        digitalWrite(RELAY2,HIGH);          // Wiatrak 2 - OFF
        Serial.println("RELAY2 OFF | ");
        }
      }
   else                       
      {
      digitalWrite(RELAY1,HIGH);          // Wiatrak 1 - OFF
      digitalWrite(RELAY2,HIGH);          // Wiatrak 2 - OFF (choć wiadomo, że jest off z wyższych linijek ale nie testowałem bez tej linijki ,więc nie wiem
      }
...

No i wodotryski, które uwielbiam, jak latające kropki, bym wiedział, że program działa. Generalnie, jak to z softem. Zawsze na ekranie coś się musi dziać, bo inaczej user uzna, że zwiecha ;-)
np. kropki progressu dla zdefiniowanych delay'i pomiarowych:

for (int c = 0; c<20; c++)       //pasek, kropki "postępu"
   {
    lcd.setCursor(c,3);             //działanie na c++ w kolumnach w wierszu numer3, czyli w czwartym :)
    lcd.print("."); 
    delay(100); 
   }

...
Dzięki za zmotywowanie do roboty, bo to prościzna była i szkoda by czekać aż "się zrobi" :)

Jeżeli mogę jakoś pomóc, to chętnie., No i bardzo chciałbym zobaczyć Twój kod dla wypluwania danych na LCD (mamy chyba ten sam 2004A na i2C) . Fajnie podzieliłeś ekran i chciałbym to "spapugować" :-) W zamian proponuję działanie zegara bo trochę ch... słabo opisane w sieci, no i niebawem napiszę scheduler dla planowanych diagnoz całego systemu.

P.S. Nie moge znaleźć schematu podłączenia i bibliotek dla obsługi karty SD ( A total of six pins (GND, VCC, MISO, MOSI, SCK, CS), GND to ground, VCC is the power supply, MISO, MOSI, SCK is the SPI bus, CS is the chip select signal pin ) może coś gdzieś widziałeś?

Obrazek Obrazek

Obrazek
Avatar użytkownika
SCRUBBY

ROZKRĘCA SIĘ
 
Posty: 118
Dołączył(a): 22 lip 2016, o 14:26
Pochwały: 2
Papryki: Różne chinense'y i kilka ozdobnych :)

Udostępnij:

Udostępnij dla Facebook Facebook Udostępnij dla Twitter Twitter Udostępnij dla MySpace MySpace

Re: Solarny system nawadniania

Postprzez Pi0tR » 18 sie 2016, o 11:29

łap

Kod: Zaznacz cały
  lcd.setCursor(5, 0);
  lcd.print("| T | W | G |");
  lcd.setCursor(0, 1);
  lcd.print("Tunel|");
  lcd.setCursor(6, 1);
  lcd.print(ttunel);
  lcd.print("*|");
  lcd.setCursor(10, 1);
  lcd.print(wtunel);
  lcd.print("%|");
  lcd.setCursor(14, 1);
  lcd.print(glebaproc);
  lcd.print("%|");

  lcd.setCursor(0, 2);
  lcd.print("Otoc.|");
  lcd.setCursor(6, 2);
  lcd.print(ttunel);
  lcd.print("*|");
  lcd.setCursor(10, 2);
  lcd.print(wtunel);
  lcd.print("%|");
  lcd.setCursor(14, 2);
  lcd.print(glebaproc);
  lcd.print("%|");


Jaki to modul SD ?

ja natomiast mam problem z przyciskami o ile menu ustawien udało sie zrealizaowac to jesli chciałbym juz kontrolować np % wilgotnosci przy której ma sie odpalac pompka to juz nie bardzo nie moge na to "wpaść" poprostu

2 rzecz to sfajczyłem sobie przez nieuwage modul wifi ;/
3 z racji mnogosci funkcji jaka chciałbym obluzyć musze chyba przeniesc wszystko na Arduino Mega
"Patrz na orła w koronie, mógł być cały czerwony
Jakby w połowie napełnił się krwią traconą przez naszych
Ciągle biały i dumny niech mocniej wbija te szpony."
Avatar użytkownika
Pi0tR

ROZKRĘCA SIĘ
 
Posty: 124
Images: 47
Dołączył(a): 10 mar 2016, o 13:16
Lokalizacja: Lublin
Papryki:

Re: Solarny system nawadniania

Postprzez SCRUBBY » 19 sie 2016, o 17:15

No to po kolei:
1) Mój czytnik SD na foto i ni chu-chu nie wiem gdzie zapiąć pin CS a SCK to chyba CLOCK...?:

Obrazek

Obrazek

2) Dziękuje za kod. Myślałem, że zrobiłeś to jakoś "dynamicznie" - za pomocą pętelek ;-)

3) Chętnie Ci pomogę z przyciskami itp. tyle, że nie wiem co chcesz uzyskać.

P.S. A może do Twojej funkcjonalności: "włącz coś, jeśli POMIAR <>= jakiejś wartości z FLOAT'a? Tak jak u mnie w kodzie zapętlenie na dwóch IF'ach?

P.S.2. A może przeniesiemy się z dyskusją o Andruino na inne forum? Zawsze ktoś pomoże :)
Avatar użytkownika
SCRUBBY

ROZKRĘCA SIĘ
 
Posty: 118
Dołączył(a): 22 lip 2016, o 14:26
Pochwały: 2
Papryki: Różne chinense'y i kilka ozdobnych :)

Re: Solarny system nawadniania

Postprzez Pi0tR » 19 sie 2016, o 18:35

A wiec tak

popełniłem proste menu na switch-ach wyglada mniej wiecej tak:

Kod: Zaznacz cały
void menu()
{
  Serial.print("Poziom 1 opcja >");

  Serial.print(wybor);
  Serial.println();
  Serial.print("Poziom 2 opcja >");
  Serial.print(wyborlvl8);

  if (digitalRead(PRZYCISK_PLUS) == HIGH)
  {
    delay(500);
    wybor++;
    if (wybor > 5) {
      wybor = 1;
    }
  }
  if (digitalRead(PRZYCISK_MINUS) == HIGH)
  {
    delay(500);
    wybor--;
    if (wybor < 1) {
      wybor = 5;
    }
  }
  switch (wybor) {
    case 1: {


        lcd.setCursor(0, 0);
        lcd.print(">Podlej teraz");
        lcd.setCursor(1, 1);
        lcd.print("Tryb pracy");
        lcd.setCursor(1, 2);
        lcd.print("Ustawienia");
        if (digitalRead(PRZYCISK_OK) == HIGH) {
          podlewanie();
        }


        delay(200);
        lcd.clear();


        break;
      }
    case 2: {


        lcd.setCursor(1, 0);
        lcd.print("Podlej teraz");
        lcd.setCursor(0, 1);
        lcd.print(">Tryb pracy");
        lcd.setCursor(1, 2);
        lcd.print("Ustawienia");
        if (digitalRead(PRZYCISK_OK) == HIGH) {
          delay(1000);
          if (digitalRead(PRZYCISK_PLUS) == HIGH)
          {
            delay(500);
            wyborlvl8++;
            if (wyborlvl8 > 5) {
              wyborlvl8 = 1;
            }
          }
          if (digitalRead(PRZYCISK_MINUS) == HIGH)
          {
            delay(500);
            wyborlvl8--;
            if (wyborlvl8 < 1) {
              wyborlvl8 = 5;
            }
          }
          lcd.clear();
          switch (wyborlvl8) {
            case 1: {
                lcd.setCursor(0, 0);
                lcd.print(">12");
                lcd.setCursor(1, 1);
                lcd.print("24");
                lcd.setCursor(1, 2);
                lcd.print("Procentowy");
                delay(200);
                lcd.clear();
              }
              break;
            case 2: {
                lcd.setCursor(1, 0);
                lcd.print("12");
                lcd.setCursor(0, 1);
                lcd.print(">24");
                lcd.setCursor(1, 2);
                lcd.print("Procentowy");
                delay(200);
                lcd.clear();
              }
              break;
            case 3: {
                lcd.setCursor(1, 0);
                lcd.print("12");
                lcd.setCursor(1, 1);
                lcd.print("24");
                lcd.setCursor(0, 2);
                lcd.print(">Procentowy");
              }
              break;
          }
          break;

          delay(200);
          lcd.clear();


        }
      }
      break;
  }
}


i co jest nie tak o ile w samo głowne menu działa to wejście np w podmenu ustawienia jest nie mozliwe gdyz pojawia sie tylko przez ułamek sekundy i znika.

co do pinu CS w czytniku jest to pin SS w arduino jeśli używasz UNO to jest to na pinie 10
"Patrz na orła w koronie, mógł być cały czerwony
Jakby w połowie napełnił się krwią traconą przez naszych
Ciągle biały i dumny niech mocniej wbija te szpony."
Avatar użytkownika
Pi0tR

ROZKRĘCA SIĘ
 
Posty: 124
Images: 47
Dołączył(a): 10 mar 2016, o 13:16
Lokalizacja: Lublin
Papryki:

Re: Solarny system nawadniania

Postprzez SCRUBBY » 20 sie 2016, o 00:52

Co do pod menu, to możesz mieć problem pisząc na CASE'ach. Spróbuj na IF.
P.S. Pamiętam, że CASE to było moje ulubione wariantowanie pod INPUTy ale Borland C++ miał problemy właśnie z CASE. Zwłaszcza musisz zwrócić uwagę na użycie BREAK'ów, bo pewnie to one Ci dają wyskok do menu wyżej.

P.S. Dziękuję bardzo za info o SD Card a przy okazji:

ARDUINO 4 RELAYS SHIELD - I2C - transfer from Wemos D14/SDA/D4 + D15/SCL/D3 to shield A4 + A5, it not used by Wemos D1.
SD CARD - D13/SCK + D12/MISO + D11/MOSI + D10/SS on the right places, but D10/SS is a GPIO15, and must be LOW on startup. solder addon resistor to the GND.

Mam WeMos D1 R2 z oryginalnym ESP 8266 :) Więc mam też na PIN10 to SS/CS, co potwierdził godzinę temu ktoś na forum. (treść powyżej).

Padłem dziś ze śmiechu czekając na mecz POL-DAN, programując mojego Arduino.

Napisałem kilka wodotrysków... Jeżdzące po LCD napisy no i wsteczny pasek postepu (z prawej do lewej strony).

Kod: Zaznacz cały
void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
     ArduinoOTA.handle();           // opis https://github.com/krzychb/OnlineHumidifier/tree/master/9-Maintain#update-the-sketch

    /* --------- odczyt wilgotnosci i temperatury -----------*/
    hum = dht.readHumidity();       //Read data and store it to variables hum
    temp = dht.readTemperature();    //Read data and store it to variables temp


    /* --------- Odczytujemy i wyswietlamy date i czas na SERIAL MONITOR -----------*/
   
    dt = clock.getDateTime();       //odczyt daty,czasu
 
    Serial.print(dt.year);   Serial.print("-");
    Serial.print(dt.month);  Serial.print("-");
    Serial.print(dt.day);    Serial.print(" ");
    Serial.print(dt.hour);   Serial.print(":");
    Serial.print(dt.minute); Serial.print(":");
    Serial.print(dt.second); Serial.println("");
    /* --------- koniec odczytujemy i wyswietlamy date i czas na SERIAL MONITOR -----------*/
   
    /* --------- wyswietlanie na SERIAL MONITOR -----------*/
    Serial.print("Temperature:  ");
    Serial.print(temp);
    Serial.print(" C | ");
    Serial.print("Humidity: ");
    Serial.print(hum);
    Serial.println(" %");       //println() to wyświetl z EOL
    /* --------- koniec wyswietlania na SERIAL MONITOR -----------*/

   
    /* --------- Wyswietlanie na LCD -----------*/
   
    lcd.clear();                        // czyszczenie ekranu, by było widać, że coś się dzieje
    delay(1000);                   
    lcd.setCursor(0,0);                // kursor LCD na 0,0
   
    /* --------- Odczytujemy i wyswietlamy date i czas na LCD -----------*/

    dt = clock.getDateTime();       //odczyt daty,czasu
   
    lcd.print(dt.year);   lcd.print("-");
    lcd.print(dt.month);  lcd.print("-");
    lcd.print(dt.day);    lcd.print(" ");
    lcd.print(dt.hour);   lcd.print(":");
    lcd.print(dt.minute); lcd.print(":");
    lcd.print(dt.second); lcd.print("");
  /* --------- koniec oczytujemy i wyswietlamy date i czas na LCD -----------*/
   
    delay(500);       

/*---------- Kroki chodzacej po ekranie temperatury  ---------------*/
   {
    int t=10;
    for (int n=0; n<10; n++)
     {
      lcd.setCursor(t,1);
      lcd.print("T: ");
      lcd.print(temp);
      lcd.print(" C");
      delay(100);
      lcd.setCursor(t,1);
      lcd.print("             ");
      delay(25);
      t=10-n;
     }
     t=0;
     int n=0;

     lcd.setCursor(0,1);
     lcd.print("T: ");
     lcd.print(temp);
     lcd.print(" C");
     delay(1000);
    }
  /*---------- koniec chodzacej po ekranie temperatury ---------------*/


     
  /*---------- chodzenie po ekranie wilgotnosci ----------------*/
  {
   int u=10;
      for (int p=0; p<10; p++)
     {
      lcd.setCursor(u,2);
      lcd.print("H: ");
      lcd.print(hum);
      lcd.print(" %");
      delay(100);
      lcd.setCursor(u,2);
      lcd.print("          ");
      delay(25);
      u=10-p;
     }
     u=0;
     int p=0;
     
     lcd.setCursor(0,2);
     lcd.print("H: ");
     lcd.print(hum);
     lcd.print(" %");
     delay(500);
  }
/*  ---------- koniec chodzenia po ekranie wilgotnosci ----------------*/

/*  ---------- wsteczny pasek postepu ----------------*/
 {
  int v = 20;
    for (int x = 0; x<22; x++)       //wsteczny pasek postepu
   {
    lcd.setCursor(v,3);             //działanie na v++ w kolumnach w wierszu numer3, czyli w czwartym :)
    lcd.print("."); 
    delay(100);
    v = 20 - x ;
   }
    v=0;
    int x=0;
    delay(100);
}
/*  ---------- koniec wsteczny pasek postepu ----------------*/

/*  ---------- czyszczenie wstecznego paska postepu ----------------*/
 {
  int v = 20;
    for (int x = 0; x<22; x++)       //wsteczny pasek postepu
   {
    lcd.setCursor(v,3);             //działanie na v++ w kolumnach w wierszu numer3, czyli w czwartym :)
    lcd.print(" "); 
    delay(100);
    v = 20 - x ;
   }
    v=0;
    int x=0;
    delay(100);
}
/*  ---------- koniec wsteczny pasek postepu ----------------*/

/* --(end main loop )-- */
Avatar użytkownika
SCRUBBY

ROZKRĘCA SIĘ
 
Posty: 118
Dołączył(a): 22 lip 2016, o 14:26
Pochwały: 2
Papryki: Różne chinense'y i kilka ozdobnych :)

Re: Solarny system nawadniania

Postprzez SCRUBBY » 7 wrz 2016, o 21:22

Cześć,
Jak tam Twój kodzik? Ogarnąłeś juz te CASE'y ?
Avatar użytkownika
SCRUBBY

ROZKRĘCA SIĘ
 
Posty: 118
Dołączył(a): 22 lip 2016, o 14:26
Pochwały: 2
Papryki: Różne chinense'y i kilka ozdobnych :)

Re: Solarny system nawadniania

Postprzez Pi0tR » 8 wrz 2016, o 18:05

"Patrz na orła w koronie, mógł być cały czerwony
Jakby w połowie napełnił się krwią traconą przez naszych
Ciągle biały i dumny niech mocniej wbija te szpony."
Avatar użytkownika
Pi0tR

ROZKRĘCA SIĘ
 
Posty: 124
Images: 47
Dołączył(a): 10 mar 2016, o 13:16
Lokalizacja: Lublin
Papryki:

Re: Solarny system nawadniania

Postprzez Pi0tR » 12 wrz 2016, o 18:02

W zasadzie zastanawiam się zę i tak chce przecież sterować tym wszystmim zdalnie wiec nie musze robić klawiaturki lokalnie, a co za tym idzie moge użyć np Node-Red
"Patrz na orła w koronie, mógł być cały czerwony
Jakby w połowie napełnił się krwią traconą przez naszych
Ciągle biały i dumny niech mocniej wbija te szpony."
Avatar użytkownika
Pi0tR

ROZKRĘCA SIĘ
 
Posty: 124
Images: 47
Dołączył(a): 10 mar 2016, o 13:16
Lokalizacja: Lublin
Papryki:

Re: Solarny system nawadniania

Postprzez SCRUBBY » 13 wrz 2016, o 08:00

cześć,

1) panel solarny - jeżeli coś kosztuje 9 USD, to zapewniam Cię, że jest to tylko imitacja fotowoltaiki.

2) brak klawiatury - słusznie. Bez sensu dla zdalnej pracy.
Avatar użytkownika
SCRUBBY

ROZKRĘCA SIĘ
 
Posty: 118
Dołączył(a): 22 lip 2016, o 14:26
Pochwały: 2
Papryki: Różne chinense'y i kilka ozdobnych :)

Re: Solarny system nawadniania

Postprzez ooryginall » 13 wrz 2016, o 19:47


Tak jak kolega wyżej sugerował, również radziłbym przemyśleć zakup tego "panelu" gdyż ta zabawka nie wyrobi w tym systemie podlewania. 7V i 1,2W to za dużo energii nie uzyskasz jeśli masz w planach jej magazynowanie...
Avatar użytkownika
ooryginall

ROZGADANY
 
Posty: 205
Dołączył(a): 20 kwi 2015, o 15:25
Lokalizacja: Oława k. Wrocławia
Pochwały: 5
Papryki: 21 odmian - sezon 2019

Poprzednia stronaNastępna strona

Powrót do Szklarnia i tunel

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości