nasiona marihuany

Arduino - Pomiar wilgotności gleby w 4 doniczkach i monitor temperatury i wilgotności powietrza w box'ie.

Wyszukiwarka Forumowa:

Caine78

Well-known member
Rejestracja
Lip 24, 2018
Postów
48
Buchów
0
Wreszcie udało mi się zrobić projekt o którym myślałem od dawna. (!!!Post w trakcie edycji!!!-prototyp skończony).

Mam jakis problem po złożeniu prototypu. Nie wiem czy nie zrobiłem błedu w kodzie, czy nie daje za mało napięcia.

Pomiar wilgotności gleby w paru doniczkach oraz pomiar temperatury i wilgotności powietrza. Koszt projektu około 60zł. 4 pomiary ziemi, 1 pomiar temperatury. Przedział w którym roślina ma sucho lub mokro (H->N->L) (High-Normal-Low) (narazie, niedługo przerobię na %). Przycisk do włączania/wyłączania podświetlenia. Uwielbiam Arduino. Coś takiego w sklepie, to z 600zł. Prototyp zrobiłem na Uno, ale oddziele prąd od sensorów, dam im osobne zasilanie i jak zwykle przerzucę projekt na mój ulubiony sprzęt, podróbka Nano za 8zł sztuka.

Edycja: Zmieniłem kod i dodałem '%', zamiast sygnału z sensora. Muszę jeszcze oczyścić kod z niepotrzebnych loop'ow i smieci.

Wersja 16x2
normal_IMG_20180824_223017.jpg


Wersja 20x4 (kod na dole)
normal_Screen20x4.JPG


Wersja prototypowa. Parę rzeczy do poprawienia. To jest wersja kompaktowa na wyświetlacz 16x2. Wyświetlacz 20x4 kosztuje o 7zł wiecej. Ja sobie taki będę montował, ale to jest łatwe do przerobienia w kodzie, a wtedy można zamontować więcej sensorów od temperatury powietrza. Dodam również komentarze, ale dopiero dzisiaj skończyłem to pisać. W sumie zacząłęm i skończyłem. Tak się jakoś samo zrobiło. Nie nazwał bym tego "pisać kod", bo to bardziej było kopiuj, wklej. W sumie to jest to gotowe do samopodlewania. Wystarczy tylko określić kiedy jest sucho (na razie przedział jest na oko), jak jest sucho, właczyć pompę. Tam gdzie jest funkcja wyświetlić literę "L" na ekranie, dodać loop'a, żeby też właczyć silnik i podlać. Ja to zrobię trochę inaczej, bo dodam tylko jedną pompę i wstawie 4 zawory, które sa zamkniete jak nie ma prądu. Podajesz sygnał, zawór sie otwiera i pompa zaczyna pracować. Taki miałem pomysł od samego początku, jak wymyśliłem sobie, że chcę roślinki. Po mału składam to wszystko razem. Chcę zrobić auto-box'a.

Linki z których zaczerpnąłem pomysł powyżej:

Blue IIC I2C TWI 1602 16x2 Serial LCD Module Display for Arduino
https://www.ebay.co.uk/itm/New-Blue-IIC-I2C-TWI-1602-16x2-Serial-LCD-Module-Display-for-Arduino-Hot-RASK

LCD I2C 16x2 Display - tutorial - code
https://forum.arduino.cc/index.php?topic=128635.0

I2C Scanner - Bardzo przydatna rzecz, do określania jakie urządzenie się tak naprawdę ma. Jedna rzecz to opis na "Chińskim" eBay'u, a druga, to co tak naprawdę przychodzi w paczce.
http://playground.arduino.cc/Main/I2cScanner

LCD I2C 16x2 Display - Library (uzyte biblioteki do wyswietlacza 16x2 'LiquidCrystal_V1.2.1.zip')
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/

normal_Arduino_I2C_LCD_Display.JPG


Soil Moisture Sensor
https://www.ebay.co.uk/itm/5pcs-Soil-Moisture-Hygrometer-Module-for-Moisture-Arduino-Wire-Water-Sensor-S5V1

Soil Moisture Sensor - tutorial - code
https://www.instructables.com/id/Arduino-Soil-Moisture-Sensor/

normal_s-l1600~1.jpg


DHT11 humidity and temperature sensor (Te biblioteki umożliwiają podłaczenie tylko jednego sensora. Wersja bibliotek która umożliwia podłączenie większej liczby sensorów DHT11 na dole post'u.)
https://www.ebay.co.uk/itm/1X-DHT11-Temperature-and-Relative-Humidity-Sensor-Module-for-arduino-XB

DHT11 humidity and temperature sensor - tutorial - code
http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-an-arduino/

DHT11 - Library
http://www.circuitbasics.com/wp-content/uploads/2015/10/DHTLib.zip

normal_s-l1600_28129~0.jpg


Wersja na wyświetlacz 16x2 i 1 sensor DHT11:
Kod:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <dht.h>

#define I2C_ADDR    0x27      // Define I2C Address using I2C scanner
#define BACKLIGHT_PIN     3   // Do not change these values for I2C Screen
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

dht DHT;                      // DHT Sensor
#define DHT11_PIN 6           // choose the input pin (for a DHT Sensor)

int n = 1;
int min = 300;                // drowned in water
int max = 720;               // dry soil
int Btn1Pin = 7;              // choose the input pin (for a Button 1)
int Backlight = LOW;          // variable for reading the backlight pin status (LED off)
int buttonState = LOW;        // the current input for backlight (button not pressed)
int lastButtonState = HIGH;   // the previous reading from the input pin (button)
int LED_backlight;            // variable for LED_backlight button
long lastDebounceTime = 0;    // the last time the output pin was toggled
long debounceDelay = 10;      // the debounce time; increase if the output flickers


LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
  pinMode(Btn1Pin, INPUT);    // declare Button 1 input
  lcd.begin (16,2);           // Set LCD to 16x2 characters
  
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); // Switch on the backlight
  
  lcd.home ();                  // go home
  lcd.setCursor ( 0, 0 );       // go to the column 1, line 1
  lcd.print("a");               // Display "1"
  lcd.setCursor ( 6, 0 );       // go to the column 7, line 1
  lcd.print("b");               // Display "2"
  lcd.setCursor ( 0, 1 );       // go to the column 1, line 2
  lcd.print("c");               // Display "3"
  lcd.setCursor ( 6, 1 );       // go to the column 7, line 2
  lcd.print("d");               // Display "4"
}

void loop()
{
  char percentage1a[80];
  char percentage2a[80];
  char percentage3a[80];
  char percentage4a[80];
  int chk = DHT.read11(DHT11_PIN);      // declare DHT Sensor input
  int sensor1Value = analogRead(A0);    // declare Analog Sensor 1 input
  int sensor2Value = analogRead(A1);    // declare Analog Sensor 2 input
  int sensor3Value = analogRead(A2);    // declare Analog Sensor 3 input
  int sensor4Value = analogRead(A3);    // declare Analog Sensor 4 input
  int percentage1 = map(sensor1Value, max, min, 0, 100);
  sensor1Value = map(sensor1Value, 300, 720, min, max);
  sprintf(percentage1a, "%02d", percentage1);
  int percentage2 = map(sensor2Value, max, min, 0, 100);
  sensor2Value = map(sensor2Value, 300, 720, min, max);
  sprintf(percentage2a, "%02d", percentage2);
  int percentage3 = map(sensor3Value, max, min, 0, 100);
  sensor3Value = map(sensor3Value, 300, 720, min, max);
  sprintf(percentage3a, "%02d", percentage3);
  int percentage4 = map(sensor4Value, max, min, 0, 100);
  sensor4Value = map(sensor4Value, 300, 720, min, max);
  sprintf(percentage4a, "%02d", percentage4);
//  float percentage = (sensorValue - max)/(min - max);
//  double temperature = (double) tempData * (5/10.24);

//  float percentage = (float)((sensorValue - min) * 100) / (max - min)
//  sensorValue = map(sensorValue, 0, 1023, min, max);
//  float percentage = map(sensorValue, max, min, 0, 100);

LED_backlight = digitalRead(Btn1Pin);             // if LED On/Off button is pressed perform action
//       if (buttonState != lastButtonState) {
//           buttonState = lastButtonState;
//           if (buttonState == HIGH) {
//                 Backlight = !Backlight;
//                 lcd.setBacklight(Backlight);
//           }
//       }

   if (LED_backlight != lastButtonState) {
      lastDebounceTime = millis();
      lastButtonState = LED_backlight;
   } 

   if ((millis() - lastDebounceTime) > debounceDelay) {
       if (buttonState != lastButtonState) {
           buttonState = lastButtonState;
           if (buttonState == HIGH) {
                 Backlight = !Backlight;
                 lcd.setBacklight(Backlight);
           }
       }
   }

  lcd.setCursor ( 1, 0 );                           // go to the column 2, line 1
  lcd.print(percentage1a);                          // Display Sensor 1 Value
  if (sensor1Value > 400 && sensor1Value < 550)     // Check if the Value is higher than 300 or lower than 400
  {
    lcd.setCursor ( 3, 0 );                         // go to the column 5, line 1
    lcd.print("%N");                                 // Display letter "N" - Neutral moisture
  } else if (sensor1Value >= 550) {                 
    lcd.setCursor ( 3, 0 );                         // go to the column 5, line 1
    lcd.print("%L");                                 // Display letter "L" - Low moisture
  } else if (sensor1Value <= 400) {
    lcd.setCursor ( 3, 0 );                         // go to the column 5, line 1
    lcd.print("%H");                                 // Display letter "H" - High moisture
  }
  
  lcd.setCursor ( 7, 0 );
  lcd.print(percentage2a);
  if (sensor2Value > 400 && sensor2Value < 550)
  {
    lcd.setCursor ( 9, 0 );
    lcd.print("%N");
  } else if (sensor2Value >= 550) {
    lcd.setCursor ( 9, 0 );
    lcd.print("%L");
  } else if (sensor2Value <= 400) {
    lcd.setCursor ( 9, 0 );
    lcd.print("%H");
  }

  lcd.setCursor ( 1, 1 );
  lcd.print(percentage3a);
  if (sensor3Value > 400 && sensor3Value < 550)
  {
    lcd.setCursor ( 3, 1 );
    lcd.print("%N");
  } else if (sensor3Value >= 550) {
    lcd.setCursor ( 3, 1 );
    lcd.print("%L");
  } else if (sensor3Value <= 400) {
    lcd.setCursor ( 3, 1 );
    lcd.print("%H");
  }
  
  lcd.setCursor ( 7, 1 );
  lcd.print(percentage4a);
  if (sensor4Value > 400 && sensor4Value < 550)
  {
    lcd.setCursor ( 9, 1 );
    lcd.print("%N");
  } else if (sensor4Value >= 500) {
    lcd.setCursor ( 9, 1 );
    lcd.print("%L");
  } else if (sensor4Value <= 500) {
    lcd.setCursor ( 9, 1 );
    lcd.print("%H");
  }
  
  lcd.setCursor ( 13, 0 );                              // go to the column 14, line 1
  lcd.print(DHT.temperature);                           // Display DHT Sensor Temperature
  lcd.setCursor ( 15, 0 );                              // go to the column 16, line 1
  lcd.print("C");                                       // Display letter "C"

  lcd.setCursor ( 13, 1 );                              // go to the column 14, line 2
  lcd.print(DHT.humidity);                              // Display DHT Sensor Humidity
  lcd.setCursor ( 15, 1 );                              // go to the column 16, line 2
  lcd.print("%");                                       // Display symbol "%"
  
  delay(1000);
}

Wersja na wyświetlacz 20x4. Uzyłem innych bibliotek.

normal_Screen20x4.JPG


LCD I2C 20x4 Display - Library (uzyte biblioteki do wyswietlacza 20x4 'Newliquidcrystal_1.3.5.zip')
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/

DHT11 - tutorial (Wersja bibliotek dla wiecej niż jednego sensora DHT11.)
https://learn.adafruit.com/dht/overview

DHT11 - Library
https://github.com/adafruit/DHT-sensor-library

Adadruit Sensor - Error przy kompilowaniu programu 'Missing file Adafruit_Sensor.h'. Dodaj do folderu "DHT-sensor-library-master"
https://github.com/adafruit/Adafruit_Sensor

Wersja na wyświetlacz 20x4 i 2 sensory DHT11:
Kod:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

#define I2C_ADDR    0x27      // Define I2C Address using I2C scanner
#define BACKLIGHT_PIN     3   // Do not change these values for I2C Screen
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7

#define DHTPIN1 6     // what digital pin we're connected to
#define DHTPIN2 7     // what digital pin we're connected to
#define DHTTYPE DHT11   // DHT 11

DHT dht1(DHTPIN1, DHTTYPE);                      // DHT Sensor 1
DHT dht2(DHTPIN2, DHTTYPE);                      // DHT Sensor 2

char buff_h1[2];
char buff_t1[2];
char buff_h2[2];
char buff_t2[2];

String h1_string;
String t1_string;
String h2_string;
String t2_string;
String dht_string;

int n = 1;
int min = 280;                // drowned in water
int max = 720;                // dry soil
int Btn1Pin = 7;              // choose the input pin (for a Button 1)
int Backlight = LOW;          // variable for reading the backlight pin status (LED off)
int buttonState = LOW;        // the current input for backlight (button not pressed)
int lastButtonState = HIGH;   // the previous reading from the input pin (button)
int LED_backlight;            // variable for LED_backlight button
long lastDebounceTime = 0;    // the last time the output pin was toggled
long debounceDelay = 10;      // the debounce time; increase if the output flickers


LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
  Serial.begin(9600);
  pinMode(Btn1Pin, INPUT);    // declare Button 1 input
  lcd.begin (20,4);           // Set LCD to 16x2 characters
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); // Switch on the backlight
  
  lcd.home ();                  // go home
  lcd.setCursor ( 0, 0 );       // go to the column 1, line 1
  lcd.print("WW:");             // Display "1"
  lcd.setCursor ( 0, 1 );       // go to the column 1, line 2
  lcd.print("SS:");             // Display "2"
  lcd.setCursor ( 0, 2 );       // go to the column 1, line 3
  lcd.print("CB:");              // Display "3"
  lcd.setCursor ( 0, 3 );       // go to the column 1, line 4
  lcd.print("SQ:");              // Display "4"
}

void loop()
{
  char percentage1a[80];
  char percentage2a[80];
  char percentage3a[80];
  char percentage4a[80];
  int sensor1Value = analogRead(A0);    // declare Analog Sensor 1 input
  int sensor2Value = analogRead(A1);    // declare Analog Sensor 2 input
  int sensor3Value = analogRead(A2);    // declare Analog Sensor 3 input
  int sensor4Value = analogRead(A3);    // declare Analog Sensor 4 input
  int percentage1 = map(sensor1Value, max, min, 0, 100);
  sprintf(percentage1a, "%02d", percentage1);
  int percentage2 = map(sensor2Value, max, min, 0, 100);
  sprintf(percentage2a, "%02d", percentage2);
  int percentage3 = map(sensor3Value, max, min, 0, 100);
  sprintf(percentage3a, "%02d", percentage3);
  int percentage4 = constrain(percentage4, max, min);
  percentage4 = map(sensor4Value, max, min, 0, 100);
  sprintf(percentage4a, "%02d", percentage4);


LED_backlight = digitalRead(Btn1Pin);             // if LED On/Off button is pressed perform action

   if (LED_backlight != lastButtonState) {
      lastDebounceTime = millis();
      lastButtonState = LED_backlight;
   } 

   if ((millis() - lastDebounceTime) > debounceDelay) {
       if (buttonState != lastButtonState) {
           buttonState = lastButtonState;
           if (buttonState == HIGH) {
                 Backlight = !Backlight;
                 lcd.setBacklight(Backlight);
           }
       }
   }
  lcd.setCursor ( 4, 0 );                           // go to the column 2, line 1
  lcd.print(percentage1a);                          // Display Sensor 1 Value
  if (sensor1Value > 400 && sensor1Value < 550)     // Check if the Value is higher than 300 or lower than 400
  {
    lcd.setCursor ( 6, 0 );                         // go to the column 5, line 1
    lcd.print("% Normal");                                 // Display letter "N" - Neutral moisture
  } else if (sensor1Value >= 550) {                 
    lcd.setCursor ( 6, 0 );                         // go to the column 5, line 1
    lcd.print("% Low   ");                                 // Display letter "L" - Low moisture
  } else if (sensor1Value <= 400) {
    lcd.setCursor ( 6, 0 );                         // go to the column 5, line 1
    lcd.print("% High  ");                                 // Display letter "H" - High moisture
  }
  
  lcd.setCursor ( 4, 1 );
  lcd.print(percentage2a);
  if (sensor2Value > 400 && sensor2Value < 550)
  {
    lcd.setCursor ( 6, 1 );
    lcd.print("% Normal");
  } else if (sensor2Value >= 550) {
    lcd.setCursor ( 6, 1 );
    lcd.print("% Low   ");
  } else if (sensor2Value <= 400) {
    lcd.setCursor ( 6, 1 );
    lcd.print("% High  ");
  }

  lcd.setCursor ( 4, 2 );
  lcd.print(percentage3a);
  if (sensor3Value > 400 && sensor3Value < 550)
  {
    lcd.setCursor ( 6, 2 );
    lcd.print("% Normal");
  } else if (sensor3Value >= 550) {
    lcd.setCursor ( 6, 2 );
    lcd.print("% Low   ");
  } else if (sensor3Value <= 400) {
    lcd.setCursor ( 6, 2 );
    lcd.print("% High  ");
  }

  lcd.setCursor ( 4, 3 );
  lcd.print(percentage4a);
  if (sensor4Value > 400 && sensor4Value < 550)
  {
    lcd.setCursor ( 6, 3 );
    lcd.print("% Normal");
  } else if (sensor4Value >= 550) {
    lcd.setCursor ( 6, 3 );
    lcd.print("% Low   ");
  } else if (sensor4Value <= 400) {
    lcd.setCursor ( 6, 3 );
    lcd.print("% High  ");
  }

  int t1 = dht1.readTemperature();
  int h1 = dht1.readHumidity();
    
  lcd.setCursor ( 15, 0 );                              // go to the column 16, line 1
  lcd.print("T:");
  lcd.setCursor ( 17, 0 );                              // go to the column 14, line 1
  lcd.print(round(t1));                               // Display DHT Sensor Temperature
  lcd.setCursor ( 19, 0 );                              // go to the column 16, line 1
  lcd.print("C");                                       // Display letter "C"
  lcd.setCursor ( 15, 1 );                              // go to the column 16, line 1
  lcd.print("H:");
  lcd.setCursor ( 17, 1 );                              // go to the column 14, line 2
  lcd.print(round(h1));                                  // Display DHT Sensor Humidity
  lcd.setCursor ( 19, 1 );                              // go to the column 16, line 2
  lcd.print("%");                                       // Display symbol "%"

int t2 = dht2.readTemperature();
int h2 = dht2.readHumidity();

  lcd.setCursor ( 15, 2 );                              // go to the column 16, line 1
  lcd.print("T:");
  lcd.setCursor ( 17, 2 );                              // go to the column 14, line 1
  lcd.print(round(t2));                               // Display DHT Sensor Temperature
  lcd.setCursor ( 19, 2 );                              // go to the column 16, line 1
  lcd.print("C");                                       // Display letter "C"
  lcd.setCursor ( 15, 3 );                              // go to the column 16, line 1
  lcd.print("H:");
  lcd.setCursor ( 17, 3 );                              // go to the column 14, line 2
  lcd.print(round(h2));                                  // Display DHT Sensor Humidity
  lcd.setCursor ( 19, 3 );                              // go to the column 16, line 2
  lcd.print("%");                                       // Display symbol "%"
  
  delay(1000);
}
 
Ostatnia edycja:
E

eldom

Guest
Spoko , ale być może nawet niższym kosztem możnaby to zrobić ciekawiej - NodeMCU - od razu wbudowane wifi , nie musisz montowac monitorka (odpada jego koszt) i masz dostepne to online jako prosta stronke internetowa - gotowce w sieci (z laptopa czy telefonu w sieci domowej , przy odrobinie walki z routerem nawet przez internet). W tej chwili mam pomiar wilgotnosci i temperatury , juz dolozylem przekaznik ktory zmieni bieg wentylatora gdy wilgotność będzie za duża ( jeszcze tylko nie oprogramowane , ale dzisiaj sprobuje opedzic). Mam tez te czujniki gleby jak ty , dojda w kolejnym kroku , a potem moze nawilzacz on/off w zaleznosci od wilgotnosci - ale tutaj trzeba to zgrac z wentylacja , an razie testuje. NodeMCU troszke drozszy niz arduino - ok 27 pln. Tak czy inaczej fajna sprawa , powodzenia.
 

Caine78

Well-known member
Rejestracja
Lip 24, 2018
Postów
48
Buchów
0
Dzieki za podrzucenie pomyslu. Bede musial sobie kupic NodeMCU z ciekawosci. Z tego co czytałem, to tam programujesz w Lua. Ja jestem bardziej w C+/C#. Probuje pisac apliacje w Visual Studio.

Modul do WiFi, kosztuje 8zl do Arduino. Dzieki za podrzucenie pomyslu, bo lezy u mnie w pudelku. Nastepne pare nocy nie przespanych.

No ja wlasnie to buduje. Pelen system, pelna kontrola. Nie tylko do uprawy marychy, ale dla innych ludzi do uprawy pomidorow, czy ziol takich jak oregano czy majeranek. Mocno sie wkrecilem w ogrodnictwo, ale jak mieszkasz w miescie, to nie masz dostepu do swojej ziemi. Ja juz probowalem sadzic pomidory, ogorki i salate w boxie (bylo troche wolnego miejsca), z duzym skutkiem. Byly bardzo smaczne. Wystarczy zrobic box'a 40x40 na 1,8 wysokosci, swiatla po bokach LED i mocne z gory (bo maly box) i jedziesz pomidory czy ogorki. W czyms wielkosci malego akwarium, mozesz miec salate, ziola, czy rzodkiewke.

Co do kontroli temperatury w box'ie, to robie "climatronic". Tzn, probuje go zrobic. Czekam tylko na zbiornik na plyn chlodzacy. Powinien dojsc w przyszlym tygodniu. Za duzo ciepla sie wydziela. Chce to jakos wmontowac we wlot powietrza. Jak lezy na biurku to dziala, czujesz zimne powietrze. Na box'a, moze byc za male urzadzenie. Moze 2 albo 3 takie? Porobie testy na jednym. Mozesz kontrolowac temperature, poprzez regulacje napiecia. Zobaczymy co bedzie.

https://www.forum.haszysz.com/showthread.php?137250-Klimatyzacja-do-box-a
 
E

eldom

Guest
Normalnie piszesz w Arduino IDE czyli niby C, także nie musisz się uczyć czegoś nowego. Trzeba tylko sciagnac biblioteki do obslugi tej plytki ale oczywiscie jest to w necie. Ja tez mialem plytke wifi z chin ale okazala sie felerna , to wkurzylem sie pojechalem do sklepu i kupilem NodeMCU. Z plytka wifi jest tez taka kwestia ze teoria mowi ze nie zasilisz jej z arduino ze styków 3.3V bo mają za małą wydajność prądową - potrzebujesz albo regulator napięcia albo zewnętrzne 3.3V. Wybralem NodeMCU tez troche z wygody - zawsze to jeden moduł mniej , mniej kabli ,czyściej.

Okazało się że przełączanie wenta pomiędzy 75m3/h a 100m3/h nie daje wielkiej różnicy. Dlatego zrobiłem przedłużacz z przekaźnikiem po środku i do niego podłączyłem nawilżacz - jest normalnie włączony. Jeśli wilgotność przekroczy 80% nawilżacz się wyłącza (ma to miejsce w nocy póki co tylko) i włącza się z powrotem - to jeszcze do ustalenia 65 albo 70 % i mniej. Dane mam dostępne w sieci domowe na stronce - dane obecne plus historyczne zapisywane co 15 minutj Wszystko prosty tekst bez fajerwerków graficznych. Następny krok to czujnik wilgotności gleby, automatyczne podlewanie to dla mnie chyba za dużo - to jest ejdnak woda i nie chciałbym żeby wymknęło się spod kontroli ...

Co do ogniwa peltiera - bawiłem się tym kiedyś chciałem zrobić coś ala samochodową lodówkę (tam podejrzewam że ejst podobne rozwiązanie). Ale wydajność średnia była - owszem bez radiatora część zimna zamarza , ale jak już złożyłem dwa radiatory od kompa po obu stronach i umieściłem to w pudełku wyłożonym steropianem to teemperatura spadła o kilka stopni raptem. Jeśli weźmiesz to do boxa gdzie masz bardzo dużą wymianę powietrza to chyba zbyt iwle nie zbijesz - ale oczywiście mogę się mylić.

Trzymanie normalnych warzyw w Boxie to wg mnie marnotrastwo prądu - i nie chodzi tlyko o kasę ale o produkcję CO2 do atmosfery. Efekt cieplarniany już wkrótce nas wykończy ...
 

Caine78

Well-known member
Rejestracja
Lip 24, 2018
Postów
48
Buchów
0
Produkcja warzyw w boxie, ma nie być zasilana z gniazdka.

A te co kupujesz w supermarkecie, to myslisz, ze pod lampami nie byly?

Co do samego peltiera w box'ie, to masz absolutna racje. Dokladnie to samo zaobserwowalem. Za mala wydajnosc. Dlatego podbijam napiecie i daje wieksze chlodzenie. Jeden to raczej nic nie da. Pewnie z 5 albo 10 trzeba bedzie dac na box'a, a 10 to juz pobor mocy 12V 50Amp (Jeden uklad 12V 5Amp). Duzo, bo to 600W. O ile ta stronka sie nie pomylila (sprawdzilem, nie pomylila sie - power = current × voltage). Uwielbiam ja. To oczywiscie, nigdy nie bedzie dzialalo na max'ie mocy.

http://www.wolframalpha.com/input/?i=12V+50amp

Szukam kompromisu. Ja potrzebuje zrzucic 2-3 stopnie tylko. Moj kolega mi mowil cos o nowych panelach slonecznych, duzo bardziej wydajnych. Maja wyjsc w 2020. Jeszcze o nich nie czytalem. Ja sam nie zrobie w domu lepszego Peltier'a. Moge tylko bawic sie tym co jest i czekac, az zrobia bardziej wydajnego. A napewno zrobia, bo napedzaja nim wszstkie sondy kosmiczne, ktore maja reaktor nuklearny.

Jeszcze tez pytanie jakiego masz dostawce energii. Moj twierdzi ze jest 100% ekologiczny, pod wzgledem CO2. Dlatego tez go wybralem. Mieszkam w kraju gdzie rozni dostawcy doprowadzaja prad do sieci. Moj podobno ma tylko umowy z wiatrakami, panelami, przyplywami i biomass (???). Jezeli chodzi o energie, to nad tym tez pracuje. To inna bajka. Raczej prawdziwi naukowcy mnie wyprzedza, ale mam pare pomyslow, ktorych nie rozumiem dlaczego nie sa zastosowane. Peltier.

Swieci słońce i ogrzewa jedna strone. Musisz schłodzić druga strone i masz prąd. Zima odwracasz.

Wlasnie buduje ten klimatyzator na tym z kontrolerami napiecia, zeby komputer (Arduino i sensor od temperatury) mogl regulowac napiecie a przy tym temperature. Powinienem na nim ogarnac co jeszcze z tego Peltier'a mozna wyciagnac. Mam pare pomyslow w glowie, tylko musze ich pare dokupic.

Ja robie tyle roznych rzeczy pod tym katem, ze nie pytaj. Tak sie zaczela moja przygoda z elektronika w sumie. Wymyslilem silnik magnetyczny. Taki bez paliwa. Zbudowalem prototyp i juz wiem, ze nie wymyslilem silnika. Mam swietny hamulec. Ale jest w tym jakis potencjal, tylko moja wiedza na temat magnetyzmu jest zbyt mala. Szukam, jak moge to zrobic, zeby moc zadzwonic do firmy ktora dostarcza prad i powidziec im, ze juz nie potrzebuje ich uslug. Z tymi od gazu tez.

Oczywiscie, ze sadzenie warzyw i placenie za prad 1000zl, nie ma sensu. Baterie sloneczne, peltier, bateria, czy cholera wie co jeszcze.

Dzisiaj w domu, niechcacy wyprodukowalem wodór. Bawie sie Gal'em, bo chcialem zrobic krysztaly. Sprobowalem i nie mam cierpliwosci. Juz buduje sprzet do tego. Chodzi o wolne podnoszenie kawalka Gal'u do gory. Nie wazne. Smieje sie, ze to moj kot, wyprodukowal wodor.

Gal niszczy aluminium. Rozwalilem blok aluminium galem i probowalem go polamac w rekach. Gal nie byl plynny, wiec postanowilem go uplynnic (30C). Do tej pory robilem to w goracej wodzie, bo najszybciej. Zagotowalem wode i wlalem do miski. Ten blok lezy na takiej grubej foli i wlozylem to tak do srodka. A ze robie to w kuchni, moj kot myslal, ze chyba robie jesc. Wdrapal sie mojej nodze i zaczepil pazurem. Nie mogl sie odczepic i musialem puscic ta folie. Troche wody sie dostalo i zaczelo skwierczec i gaz sie jakis wydobywal (ale nie czulem nic). Tak sie robi wodor. Tylko sie nie oplaca. 10kg aluminium, zeby zrobic 1kg wodoru. Dzieki kocie.

https://www1.eere.energy.gov/hydrogenandfuelcells/pdfs/aluminum_water_hydrogen.pdf
 
Ostatnia edycja:
E

eldom

Guest
Najłatwiej zbić temperature podnosząc wilgotność - idzie zejść o kilka stopni. Oczywiście kwestia tego na jakim jestes etapie , ale idzie jesien u mnie juz chlodniej , nawet wywalilem szybe i chlodzenie lampy. Jesli nie masz szyby i chlodzenia to rowniez jest kwestia ugrania kilku stopni.

Co do peltierow w kosmosie - pamietaj ze tam jest jednak troche chlodniej ;) Przynajmniej jak slonce nie swieci. Poza tym to technika za miliardy dolarow rzeczy o jakich nam sie nie snilo , no i setki wykształconych mózgów. Ogolnie to nie wiem czy nie brniesz za daleko i czy nie namnozysz sobie koszow. JEsli wilgotnosc / szyba / chlodzenie lampy nie pomoga , to moze taki pokojowy klimatyzator ? Ale to tez koszta...

Szczerze powiedziawszy to nie wiem czy peltiera mozna uzyc do produkcji pradu - to jest pompa ciepla , tzn przenosi cieplo z jednej strony na druga (nie wczytywalem sie w to jak to sie odbywa wiec moze sie myle)

Od dawna nie kupuje warzyw w markecie , nie maja smaku. Staram sie jesc sezonowki a zima to co jest bardziej przechowywalne/ Kiszonki. Robie co sie da ;) Swoja drogowa to ciekawe co znaczy 100% ekologiczny na CO2 ? Czyli ze w ogole nie pordukuja ? Wiatr ?

JA ostatecznie dotarlem do takiego etapu : NodeMCU steruje serwomotorem ktory jest zapiety na potencjometr nawilzacza (wiem troche druciarstwo ale dziala) , jestem w stanie wiec regulowac wilgotnosc w 2/3 skali nawilzacza , kiedy wilgotnosc mimo maksymalmnego skrecenia serwo przekracza zadany prog , przekaznik odlacza nawilzacz od pradu. Wiecej nie potrzebuje robic na te chwile , ten czujnik wilgotnosci ziemi testowalem chwile ale chyba to odpuszcze malo to dokladne.

Pozdr
 

Ż**l

Ye
Rejestracja
Lis 1, 2010
Postów
10,954
Buchów
19,653
ku**a, Panowie, chciałbym zrozumieć w jakimś stopniu Wasz dialekt. Moglibyście zapodać jakiś tutorial? Może to czas, żeby nauczyć się jakiegoś wirtualnego języka? <coolpalacz>
 

Chory Królik

Well-known member
Rejestracja
Kwi 29, 2017
Postów
609
Buchów
4
Mnie zastanawia w ogole do czego prowadzi ten watek? Co wprowadza innego to urzedzenie niz zwykla stacja pogody za 30zl i po co w ogole mierzyc wilgotnosc gleby w kazdej donicy osobno?
 

Ż**l

Ye
Rejestracja
Lis 1, 2010
Postów
10,954
Buchów
19,653
Mnie zastanawia w ogole do czego prowadzi ten watek? Co wprowadza innego to urzedzenie niz zwykla stacja pogody za 30zl i po co w ogole mierzyc wilgotnosc gleby w kazdej donicy osobno?

Bo można? Bo koszt jest mniejszy, niż stacja za 30 pln? Bo masz wszystko na kompie, ustawiasz sobie alerty i ch*j wie co tam chcesz. Zamysł jest dobry, przydałby mi się taki sprzęt do warzenia, już widzę te sterowane przerwy podczas zacierania, mmm...
 

Caine78

Well-known member
Rejestracja
Lip 24, 2018
Postów
48
Buchów
0
Mnie zastanawia w ogole do czego prowadzi ten watek? Co wprowadza innego to urzedzenie niz zwykla stacja pogody za 30zl i po co w ogole mierzyc wilgotnosc gleby w kazdej donicy osobno?

Bo kazdy kwiatek, bierze wode inaczej. 5 sensorów kosztuje 10zl. To wszystko co jest na gorze, kosztowalo mnie 30zl. Tyle to ja wypalam dziennie. Mam fajna zabawe przy tym.

Niestety nie jestem w stanie przeslac tutoriala do jezyka w jakim sie poruszam. Generalnie :smokee: i duzo Brian'a Cox'a. Ten projekt jest czyms co dziala. Klima to box'a na peltier'ze, to eksperyment. Mam wszystkie czesci w domu. Dokupilem tylko chlodzenie wodne za 40zl. Traktuje to jako zabawe.

Odlaczenie sie od sieci, to inna bajka. To moje marzenie. Miliardy dolarow to ida na badania, a dzieki nim robimy lepsze podzespoly. To przyjdzie. Prad po kablu, to nie jest najlepsze rozwiazanie. Ktos musi go dostarczac i kabel musi nie byc uszkodzony. Ale tutaj juz odchodzimy troche w kosmos. (Ja w nim jestem, robie nocki, mam dzien wolny i pale o 6 rano).
 
E

eldom

Guest
Może to czas, żeby nauczyć się jakiegoś wirtualnego języka? <coolpalacz>

Spróbuj pogadać z dzisiejszymi nastolatkami , to jest dopiero inna rzeczywistość ;)

Mnie zastanawia w ogole do czego prowadzi ten watek? Co wprowadza innego to urzedzenie niz zwykla stacja pogody za 30zl i po co w ogole mierzyc wilgotnosc gleby w kazdej donicy osobno?

Przede wszystki mdo wymiany doświadczeń.

To co opisal kolega Caine to poczatek , jak mozesz poczytac na moim przykladzie mozna to rozwinac o sterowanie nawilzaczem , wentylatorem , mozesz automatycznie podlewac jak sie nie boisz. Światłem też możesz sterować (odchodzi kolejne urzadzenie za 30 pln). Plus to co wspomnial Zulisco.

Ja pewnie troche za bardzo sie przejmuje ale moge sobie nawet na spacerze sprawdzic warunki. Odkrylem tez jak bardzo zmieniaja sie warunki w nocy - w dzien nawilzacz chodzi na ~75% mocy i ledwo 60-65% wilgotnosci w boxie utrzyma , noca teraz na skraju jesieni zdarzaly sie dni , ze na 25% nawilzacza wilgotnosc dochodzi do 90%. Wiele osob moze o tym nie wiedziec bo nie ma informacji z calej nocy. Wiele tez stwierdzi pewnie ze to nie ma znaczenia , ja to wiem i udalo mi sie to ujazmic. Teraz mam cala dobe 60-75%. Tutaj przyklad z ostatniej doby jak korekcja mocy nawilżacza (pomarańczowa kreska) pozwala utrzymać w miarę stałą wilgotność a w konsekwencji temperature. Skok do 90% wywołany sztucznie żeby sprawdzić jak to sobie poradzi.



W teorii powinno być trochę więcej wilgoci , ale to kompromis miedzy dniem a noca, tak duże teraz sa roznice w powietrzu.

No i satysfakcja , zrobiles sam i dziala.
 

Caine78

Well-known member
Rejestracja
Lip 24, 2018
Postów
48
Buchów
0
Spróbuj pogadać z dzisiejszymi nastolatkami , to jest dopiero inna rzeczywistość ;)

Przede wszystki mdo wymiany doświadczeń.

normal_Selection_001.png
[/url]

No i satysfakcja , zrobiles sam i dziala.

Postawilbym Ci bucha, ale nie mam takiej mozliwosci. Bardzo dobrze opisane i bardzo fajny projekt zrobiles. Co to za filozofia pojsc do sklepu i kupic. Ja mam zabawe w rozkminianiu jak to dziala.

Narazie, nie dziala. Chyba cos w kodzie pochrzanilem. Ale czekam tez na zaciskarke do kabli, zeby je lepiej zrobic. Cos jest nie tak i nie mierzy wilgoci w doniczkach.
 
E

eldom

Guest
Dzieki , dodam tylko co w necie przeczytalem - warto aby te mierniki wilgoci byly tylko od pradem w momencie pomiaru , inaczej dosc szybko koroduja. Takze warto moze dodac moze przekaznik lub tranzystor sterowany jednym z pinow ktory daje prad tuz przed pomiarem i odcina tuz po.
 

Caine78

Well-known member
Rejestracja
Lip 24, 2018
Postów
48
Buchów
0
Dzieki. Wlasnie przez przypadek wpadlem na taki kod w sieci. Wlasnie o tym gosc pisal.

Fajny zbior projektow.
http://www.theorycircuit.com/wp-content/uploads/2016/10/unbelievable-arduino-projects.pdf

Kod:
int sensorPin = 0; // select the input pin for the Soil moisture sensor
int sensorValue = 0; // variable to store the value coming from the sensor
int sensorVCC = 10;
void setup() {
// declare the ledPin as an OUTPUT:
Serial.begin(9600);
pinMode(sensorVCC, OUTPUT);
digitalWrite(sensorVCC, LOW);
}
void loop() {
// power the sensor
digitalWrite(sensorVCC, HIGH);
delay(100); //make sure the sensor is powered
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
//stop power
digitalWrite(sensorVCC, LOW);
//wait
delay(60*1000);//delay time change according to your need
Serial.print("sensor = " );
Serial.println(sensorValue);
}
 

DeepX

A fu!
Rejestracja
Gru 19, 2019
Postów
330
Buchów
38
Istotna informacja w tym wszystkim, której zabrakło - te czujniki wilgotności gleby bardzo szybko zaczynają przekłamywać.
 



Z kodem HASZYSZ dostajesz 20% zniżki w sklepie Growbox.pl na wszystko!

nasiona marihuany
Góra Dół