Impianto per serra con DHT11, DS1307 I2C, LCD 20*4 I2C.

Salve a tutti, sono nuovo di questo forum, sto sviluppando un impianto per una serra che ne gestisca la temperatura, l’umidità e l’illuminazione, rispettivamente tramite una serpentina riscaldante, una ventola per pc e una lampada a led, tutto l’impianto è gestito tramite arduino e i vari sensori con i dati interfacciati allo schermo lcd 20*4 I2C, tralasciando le varie problematiche di assemblaggio che in un secondo momento provvedero a sottoporvi per avere dei consigli e delle delucidazioni(ovviamente nella categoria corretta), volevo chiedervi se il programma che vi scriverò qui sotto vi sembra corretto o se vi sono dei gravi errori, ancora non ho tutti i componenti sotto mano, dunque non posso testare il tutto, ma prima vorrei capire se sono a buon punto con la programmazione. Il sistema funziona impostando l’orario per il quale le ventole e luci debbano essere accese,ovviamente dopo aver settato l’orario attuale del DS1307, contemporaneamente l’acquisizione della temperatura mediante il DHT11 gestisce l’attivazione della serpentina. Di seguito il codice che ho scritto in questi giorni, sono grati consigli, correzioni e critiche se costruttive.

#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 4
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);
#define BACKLIGHT_PIN 6
#define LCD_ADDR 0x27
 
LiquidCrystal_I2C lcd(LCD_ADDR, 2, 1, 0, 4, 5, 6, 7,BACKLIGHT_PIN, (t_backlighPol)0) ;
//INIZIALIZZAZIONE TIMER ATTIVAZIONE
int start_ore=00; 
int start_min=00;
int start_sec=00;
int end_ore=00;
int end_min=00;
int end_sec=00;

int start_secondi = start_sec+ start_min*60 +start_ore*60*60;
int end_secondi = end_sec+ end_min*60 +end_ore*60*60;

int releacceso1=0;
int releacceso2=0;
 
void setup()
{
  lcd.begin(20,4);
  dht.begin();
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  Serial.begin(9600);
 
  Wire.begin();
 
  Wire.beginTransmission(0x68);
  Wire.write((byte)0x00);
//IMOISTAZINE DATA E ORA PRECISI
  Wire.write((byte)0x00); //SECONDI da 0 a 59
  Wire.write((byte)0x10); //MINUTI da 0 a 59
  Wire.write((byte)0x80 | 0x10); //ORE da 0x00 a 0x24
  Wire.write((byte)0x01); //GIORNO 01 a 07
  Wire.write((byte)0x21); // 5° GIORNO del mese da 0 a 31
  Wire.write((byte)0x03); // 6° MESE da 0 a 12
  Wire.write((byte)0x12); // 7° ANNO da 0 a 99
  Wire.endTransmission();
}
 
void loop()
{
//ACQUISIZIONE DATA E ORA E ATTIVAZIONE LUCI E VENTILAZIONE
  Wire.beginTransmission(0x68);
  Wire.write((byte)0x00);
  Wire.endTransmission();
  Wire.requestFrom(0x68, 7);
  byte secondi = Wire.read();
  byte minuti = Wire.read();
  byte ora = Wire.read();
  byte giorno_sett = Wire.read();
  byte giorno_mese = Wire.read();
  byte mese = Wire.read();
  byte anno = Wire.read();

  int Secondigiorno = secondi+ minuti*60 +ora*60*60;
   
if (Secondigiorno >=start_secondi &&  Secondigiorno < end_secondi)
{
digitalWrite(2, HIGH);
digitalWrite(5, HIGH);
delay(1000);
releacceso1 = 1;
}
else 
if (releacceso1 = 1)
{
digitalWrite(2, LOW);
digitalWrite(5, LOW);
delay(1000);
releacceso1 = 0;
}
//ACQUISIZIONE TEMPERATURA E UMIDITA' E ATTIVAZIONE SERPENTINA
float h = dht.readHumidity();
float t = dht.readTemperature();
if ( h < 24.9 )
{
  digitalWrite(3, HIGH);
delay(1000);
releacceso2 = 1;
}
else
if (releacceso2 = 1)
{
digitalWrite(3, LOW);
delay(1000);
releacceso2 = 0;
}
//DATA E ORA
lcd.setCursor(0,0);
lcd.print(giorno_mese);
lcd.print("/");
lcd.print(mese);
lcd.print("/");
lcd.print(anno);
lcd.print("  ");
lcd.print(ora);
lcd.print(":");
lcd.print(minuti);
lcd.setCursor(0,1);
lcd.print("Temp:");
lcd.print(t);
lcd.print("°C");
lcd.print("H:");
lcd.print(h);
lcd.print("%");
//ILLUMINAZIONE AEREAZIONE
if(releacceso1 = 1)
{
lcd.setCursor(0,2);
lcd.print("Luci:ON Aria:ON");
}
else
if(releacceso1 = 0)
{
lcd.setCursor(0,2);
lcd.print("Luci:OFF Aria:OFF");
}
//RISCALDAMENTO
if(releacceso2 = 1)
{
lcd.setCursor(0,3);
lcd.print("Riscaldamento: ON");
}
else
if(releacceso2 = 0)
{
lcd.setCursor(0,3);
lcd.print("Riscaldamento: OFF");
}

}

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

Thirtyone3199:
... Essendo la serpentina e le lampade led alimentate dalla 220 di casa, utilizzo due relè ...

... ribadisco ... leggi con MOLTA attenzione il punto 15 del suddetto regolamento, perché NON sono ammesse discussioni con collegamenti al 220V.

Guglielmo

gpb01:
Buonasera,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

mi scuso per non essermi presentato ma non trovavo dove poterlo fare, ho provveduto a presentarmi. Per quanto riguarda la 220 adesso elimino tutto ciò che la riguarda nel post, ma mi sembra di capire che l'articol riguardi la modifica dell'impianto di casa, mentre io stavo parlando si un relè collegato ad un trasformatore da 19V da pc che gestisce i due apparati eviene collegato mediante un cavo che non viene modificato alla presa di casa, comunque se questo non rispetta i canoni provvedo subito a modificare il post

Thirtyone3199:
... Per quanto riguarda la 220 adesso elimino tutto ciò che la riguarda nel post, ma mi sembra di capire che l'articol riguardi la modifica dell'impianto di casa ...

Il punto 15.3 riguarda gli impianti di casa, ma il 15 in generale si applica ai collegamenti oltre la "bassissima tensione".
Per cui, se elimini la parte che parla del 220V, siamo a posto. Grazie :slight_smile:

Guglielmo