Progetto Domotica

Da Linux User Group Scandiano.
Crystal kedit.png
Questa pagina ha bisogno di aiuto.

Questa sezione è soltanto un abbozzo e necessita di essere sviluppata. Se vuoi contribuire allo sviluppo di questa sezione clicca sul pulsante modifica e inserisci i tuoi contenuti.

Scopo del progetto

Il progetto è nato dalla necessità di poter attivare un circuito elettrico manualmente da remoto, a qualsiasi orario, il che rende inefficienti i normali dispositivi timer. Nel nostro caso vogliamo poter accendere o spegnere, con un semplice comando da remoto via SSH, uno scaldabagno elettrico ed una caldaia. Per la caldaia, visto che è a gas, agiremo sull'alimentazione della pompa che fa circolare l'acqua.

Ingredienti

  • scheda Arduino UNO
  • un pc con GNU/Linux
  • cavo USB per collegare il pc ad Arduino
  • componenti elettrici costituiti da:
    • una basetta millefori
    • due relè SPCO da 16A, 12V-DC
    • filo elettrico
    • ...

Questa strumentazione è quella minima per provare il funzionamento corretto del progetto: una volta funzionante si potrà provare da remoto ma questa parte e cioè la configurazione dei vari dispositivi per l'accesso da remoto, ad esempio via SSH, non verrà curata visto che si tratta di un aspetto secondario e fruibile in rete e perché differente a seconda dei casi (provider internet, forwarding porte router, configurazione DNS, ecc).

Perché abbiamo scelto Arduino?

Abbiamo scelto Arduino perché si tratta di un progetto Italiano particolarmente attento all'Open Source. Gli schemi hardware di Arduino sono distribuiti in modo da poter essere utilizzati nei termini legali di una licenza Creative Commons Attribution Share-Alike 2.5, e sono disponibili sul sito ufficiale di Arduino[1]. Per alcune versioni della scheda sono disponibili anche il layout e i file di produzione. Il codice sorgente per l'Ambiente di sviluppo integrato e la libreria residente sono disponibili, e concessi in uso, secondo i termini legali contenuti nella licenza GPLv2 [2].

Parte riguardante lo script

Questo è il codice nel linguaggio processing del programma che utilizzeremo per comandare la nostra scheda Arduino. L'ambiente di sviluppo Arduino è scaricabile dal sito ufficiale[3]


#define SCALDABAGNOON 12        // LED collegato al pin digitale 12
#define SCALDABAGNOOFF 11       // LED collegato al pin digitale 11
#define CALDAIAON 13            // LED collegato al pin digitale 13
#define CALDAIAOFF 10           // LED collegato al pin digitale 10


int usbnumber = 0;
void setup() 
{  
  pinMode(CALDAIAON, OUTPUT);     // imposta il pin digitale 13 come output
  pinMode(SCALDABAGNOON, OUTPUT);     // imposta il pin digitale 11 come output
  pinMode(SCALDABAGNOOFF, OUTPUT);     // imposta il pin digitale 12 come output
  pinMode(CALDAIAOFF, OUTPUT);     // imposta il pin digitale 10 come output
  Serial.begin(9600);

}

void loop() {
  if (Serial.available() > 0) {
    usbnumber = Serial.read();
    int value= usbnumber-'0';  //Trasforma usbnumber in un valore

    if(value==2)
    {
      digitalWrite(SCALDABAGNOON, HIGH);  // accende lo scaldabagno
      delay(1000);
      digitalWrite(SCALDABAGNOON, LOW);  // spegne il segnale
     
      
      Serial.write(usbnumber);
    }  

    else if(value==1)
    {
      digitalWrite(SCALDABAGNOOFF, HIGH);  // spegne lo scaldabagno
      delay(1000);
      digitalWrite(SCALDABAGNOOFF, LOW);  // spegne il segnale
      
      
      Serial.write(usbnumber);
    }

    else if(value==4)
    {
      digitalWrite(CALDAIAON, HIGH);  // accende la caldaia
      delay(1000);
      digitalWrite(CALDAIAON, LOW);  // spegne il segnale
      
      
      Serial.write(usbnumber);
    }
    
    else if(value==3)
    {
      digitalWrite(CALDAIAOFF, HIGH);  // spegne la caldaia
      delay(1000);
      digitalWrite(CALDAIAOFF, LOW);  // spegne il segnale
      
      
      Serial.write(usbnumber);
    }
    
    else{
      Serial.write("Inserimento sbagliato");
      Serial.write(usbnumber);  
    }
  }
}

In questo modo collegandoci in seriale (ad esempio utilizzando minicom) digitando i valori da 1 a 4 avremo diversi impulsi, per la precisione assegnati ai seguenti pin:

digitando 1 ==> accensione led 11
digitando 2 ==> accensione led 12
digitando 3 ==> accensione led 13
digitando 4 ==> accensione led 10
digitando qualsiasi altro valore ==> output "Inserimento sbagliato"

Per comodità è stata assegnata ai numeri dispari la funzione OFF mentre a quelli pari la funzione ON (vedere lo script), per cui collegando un relè ai pin 11 e 12 ed un altro ai pin 13 e 10 ed eccitandoli potremo aprire e chiudere i circuiti collegati ai nostri dispositivi elettrici.

Note

  1. Sito ufficiale di Arduino
  2. Vedi Wikipedia: Arduino_(hardware)
  3. Scarica l'ambiente di sviluppo di Arduino