Obiettivo

Il progetto nasce come “Tutto SuperAbile”, una casa gestita dal microcontrollore “Arduino Mega” per rendere la vita delle persone con problemi psicomotori più vivibile, tramite l’installazione di un pannello solare situato sul tetto e la creazione di un software che permette la gestione del complesso della casa, il progetto cambia direzione diventando “GreenHouse Online”, una casa alimentata a costo zero e che facilità la vita di coloro che ci vivono abitualmente.

Un banale esempio può essere quello di poter comandare un elettrodomestico, che può essere una lavatrice, chi vivrà all’interno della casa potrà impostare un timer sulla lavatrice e dimenticarsi totalmente di avviare o fermare il lavaggio, perché sarà tutto automatizzato.

Sarà possibile attivare tramite l’applicazione, la ricezione di notifiche relative al funzionamento degli apparecchi collegati alla rete elettrica.

Potrai ricevere in tempo reale lo stato di questi ultimi per facilitare la vita delle persone, soprattutto chi lavora, perché tramite il software progettato potrai anche controllare accendere o spegnere gli apparecchi collegati alla rete elettrica da tutto il mondo.

Il modello di casa da noi progettato è dotato di un citofono alla porta realizzato con un pulsante collegato ad un campanello ed uno schermo LCD, a loro volta collegati ad una porta gestita da un servomotore che si aprirà tramite un comando remoto.

Inoltre vi è un sensore di luminosità che in base alla quantità di luce presente nella casa, accenderà e spegnerà le luci presenti in ogni singola stanza.

Nel bagno vi è un sensore che monitorerà la temperatura presente nella stanza e farà azionare una ventola di aspirazione atta ad evitare vapore e creazione di umidità nella stanza.

Nel giardino abbiamo progettato un piccolo impianto di irrigazione autosufficiente e controllabile da remoto.

“Qualsiasi apparecchio collegato alla rete potrà essere controllato da ogni parte del mondo.”

Tuttavia il progetto è ancora in fase di sviluppo e ci saranno sicuramente aggiornamenti e migliorie riguardanti la struttura.

Il sito web in questione sarà aggiornato giornalmente per eventuali aggiornamenti del progetto.

Componenti


Schema elettrico


Codice sorgente Arduino

#include <LiquidCrystal.h>
#include <Servo.h>
String readString;
int statobottone = 0;
int porta=0;
String lcd1;
String lcd2;
String lcd3;
String lcd4;
LiquidCrystal lcd(53, 51, 49, 47, 45, 43);
Servo myservo1;//PORTA PRINCIPALE
Servo myservo2;//PORTA1
Servo myservo3;//PORTA2
void setup() {
Serial.begin(9600);
  lcd.begin(16, 4 );
  lcd.setCursor(0,0);
  lcd.print("Arduino");
  lcd.setCursor(0,1);
  lcd.print("Day");
  lcd.setCursor(0,2);
  lcd.print("Taranto");
  lcd.setCursor(0,3);
  lcd.print("2016");
  pinMode(31,OUTPUT);//LED 1BLU
  pinMode(30,OUTPUT);//LED 1ROSSO
  pinMode(38,OUTPUT);//LED 1VERDE
  
  pinMode(33,OUTPUT);//LED 2BLU
  pinMode(14,OUTPUT);//LED 2ROSSO
  pinMode(19,OUTPUT);//LED 2VERDE
  
  pinMode(29,OUTPUT);//LED 3VERDE
  pinMode(27,OUTPUT);//LED 3BLU
  pinMode(26,OUTPUT);//LED 3ROSSO
  
  pinMode(15,OUTPUT);//LED 4BLU
  pinMode(20,OUTPUT);//LED 4ROSSO
  pinMode(16,OUTPUT);//LED 4VERDE

  pinMode(4,INPUT);//bottone
  pinMode(40,OUTPUT); //buzzer
  pinMode(50,OUTPUT);//ventola
   
  myservo1.attach(22);//PORTA PRINCIPALE
  myservo2.attach(11); //PORTA1 
  myservo3.attach(9); //PORTA1
}

void loop() {
  //////////////////////////////////////////////////////////////////////////////////INIZIO LCD///////////////////////////////////////////////////////////////////////////////////////////////
  while (Serial.available()) {
    delay(3);  
    char c = Serial.read();
    readString += c; 
  }

  if (readString[0] == '#')     
    {
       lcd.setCursor(0, 0);
    lcd.print("               ");
   
    lcd1 = readString;
    for(int i2=0;i2<17;i2++)
    {lcd1[i2]=lcd1[i2+1];}
    lcd1[readString.length()-1]=' ';
    
    for(int indice = lcd1.length(); indice < 16; indice++){
      lcd1[indice] = ' ';
      }
    Serial.print(lcd1.length());  
//////////////////////////////////////////////////////////////////////////////////PROVA LCD1///////////////////////////////////////////////////////////////////////////////////////////////
Serial.println("PRIMA RIGA OK");
Serial.println(readString);
//////////////////////////////////////////////////////////////////////////////////PROVA LCD1///////////////////////////////////////////////////////////////////////////////////////////////
    }
   
   
     if (readString[0] == '*')     
    {
       lcd.setCursor(0, 1);
    lcd.print("               ");
   
    lcd2 = readString;
    for(int i2=0;i2<17;i2++)
    {lcd2[i2]=lcd2[i2+1];}
    lcd2[readString.length()-1]=' ';
    
    for(int indice = lcd2.length(); indice < 16; indice++){
      lcd2[indice] = ' ';
      }
    Serial.print(lcd2.length());
//////////////////////////////////////////////////////////////////////////////////PROVA LCD2///////////////////////////////////////////////////////////////////////////////////////////////
Serial.println("SECONDA RIGA OK");
Serial.println(readString);
//////////////////////////////////////////////////////////////////////////////////PROVA LCD2/////////////////////////////////////////////////////////////////////////////////////////////// 
    }
    
     if (readString[0] == '$')     
    {
       lcd.setCursor(0, 2);
    lcd.print("               ");
   
    lcd3 = readString;
    for(int i2=0;i2<17;i2++)
    {lcd3[i2]=lcd3[i2+1];}
    lcd3[readString.length()-1]=' ';
    
    for(int indice = lcd3.length(); indice < 16; indice++){
      lcd3[indice] = ' ';
      }
    Serial.print(lcd3.length()); 
//////////////////////////////////////////////////////////////////////////////////PROVA LCD3///////////////////////////////////////////////////////////////////////////////////////////////
Serial.println("TERZA RIGA OK");
Serial.println(readString);
//////////////////////////////////////////////////////////////////////////////////PROVA LCD3///////////////////////////////////////////////////////////////////////////////////////////////  
    }
    
    
    
     if (readString[0] == '%')     
    {
       lcd.setCursor(0, 3);
    lcd.print("               ");
   
    lcd4 = readString;
    for(int i2=0;i2<17;i2++)
    {lcd4[i2]=lcd4[i2+1];}
    lcd4[readString.length()-1]=' ';
    
    for(int indice = lcd4.length(); indice < 16; indice++){
      lcd4[indice] = ' ';
      }
    Serial.print(lcd4.length());  
//////////////////////////////////////////////////////////////////////////////////PROVA LCD4///////////////////////////////////////////////////////////////////////////////////////////////
Serial.println("QUARTA RIGA OK");
Serial.println(readString);
//////////////////////////////////////////////////////////////////////////////////PROVA LCD4/////////////////////////////////////////////////////////////////////////////////////////////// 
    }

//////////////////////////////////////////////////////////////////////////////////FINE LCD///////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////INIZIO CODICE///////////////////////////////////////////////////////////////////////////////////////////////
     if (readString == "apriportaprinc")
  {
   apriPortaPrincipale(); 
   Serial.println("PORTA PRINCIPALE APERTA");
  }

      if (readString == "chiudiportaprinc")
  {
   chiudiPortaPrincipale(); 
   Serial.println("PORTA PRINCIPALE CHIUSA");
  }

     if (readString == "apriporta1")
  {
   apriPorta1(); 
   Serial.println("PORTA 1 APERTA");
  }

      if (readString == "chiudiporta1")
  {
     chiudiPorta1(); 
   Serial.println("PORTA 1 CHIUSA");
  }
     if (readString == "aporta2")
  {
   apriPorta2(); 
   Serial.println("PORTA 2 APERTA");
  }

      if (readString == "chiudiporta2")
  {
     chiudiPorta2(); 
   Serial.println("PORTA 2 CHIUSA");
  }


  


       
        
        if (readString == "LUCE1ROSSO")
  {
   LUCE1ROSSO(); 
   Serial.println("LUCE1ROSSO");
  }
        if (readString == "LUCE1VERDE")
  {
   LUCE1VERDE(); 
   Serial.println("LUCE1VERDE");
  }
          if (readString == "LUCE1BLU")
  {
   LUCE1BLU(); 
   Serial.println("LUCE1BLU");
  }
            if (readString == "LUCE1SPEGNI")
  {
   LUCE1SPEGNI(); 
   Serial.println("LUCE1SPEGNI");
  }


          if (readString == "LUCE2ROSSO")
  {
   LUCE2ROSSO(); 
   Serial.println("LUCE2ROSSO");
  }
        if (readString == "LUCE2VERDE")
  {
   LUCE2VERDE(); 
   Serial.println("LUCE2VERDE");
  }
          if (readString == "LUCE2BLU")
  {
   LUCE2BLU(); 
   Serial.println("LUCE2BLU");
  }
           if (readString == "LUCE2SPEGNI")
  {
   LUCE2SPEGNI(); 
   Serial.println("LUCE2SPEGNI");
  }



          if (readString == "LLUCE3ROSSO")
  {
   LUCE3ROSSO(); 
   Serial.println("LUCE3ROSSO");
  }

        if (readString == "LUCE3VERDE")
  {
   LUCE3VERDE(); 
   Serial.println("LUCE3VERDE");
  }
          if (readString == "LUCE3BLU")
  {
   LUCE3BLU(); 
   Serial.println("LUCE3BLU");
  }
           if (readString == "LUCE3SPEGNI")
  {
   LUCE3SPEGNI(); 
   Serial.println("LUCE3SPEGNI");
  }


          if (readString == "LUCE4ROSSO")
  {
   LUCE4ROSSO(); 
   Serial.println("LUCE4ROSSO");
  }
        if (readString == "LUCE4VERDE")
  {
   LUCE4VERDE(); 
   Serial.println("LUCE4VERDE");
  }
          if (readString == "LUCE4BLU")
  {
   LUCE4BLU(); 
   Serial.println("LUCE4BLU");
  }
           if (readString == "LUCE4SPEGNI")
  {
   LUCE4SPEGNI(); 
   Serial.println("LUCE4SPEGNI");
  }

 



         if (readString == "avviaventola")
  {
   digitalWrite(50,HIGH); 
   Serial.println("VENTOLA ATTIVA");
  }

       if (readString == "spegniventola")
  {
   digitalWrite(50,HIGH); 
   Serial.println("VENTOLA SPENTA");
  }


  
    
    
/////////////////////////////////////////////////////////////////////////////////FINE CODICE///////////////////////////////////////////////////////////////////////////////////////////////    
       lcd.setCursor(0, 0);
       lcd.print(lcd1);
       lcd.setCursor(0, 1);
       lcd.print(lcd2);
       lcd.setCursor(0, 2);
       lcd.print(lcd3);
       lcd.setCursor(0, 3);
       lcd.print(lcd4);
    readString="";
/////////////////////////////////////////////////////////////////////////////////FINE CODICE///////////////////////////////////////////////////////////////////////////////////////////////

  
  statobottone = digitalRead(4);
  //Serial.println(statobottone);
  if(statobottone==1){digitalWrite(40,LOW);}
  else{ digitalWrite(40,HIGH);}
    if(porta==0)
    {chiudiPortaPrincipale(); porta=1;}

 }



//////////////////////////////////////////////////////////////////////////////////INIZIO FUNZIONI/////////////////////////////////////////////////////////////////////////////////////////////

void apriPortaPrincipale(){

myservo1.write(100);

}
void chiudiPortaPrincipale(){

myservo1.write(0);

}


void apriPorta1(){

myservo2.write(0);

}
void chiudiPorta1(){

myservo2.write(100);

}

void apriPorta2(){

myservo3.write(0);

}
void chiudiPorta2(){

myservo3.write(100);

}


void LUCE1ROSSO(){
 
    digitalWrite(31, LOW);//LED 1BLU
    digitalWrite(30, HIGH);//LED 1ROSSO
    digitalWrite(38, LOW);//LED 1VERDE
}
void LUCE1VERDE(){
   
    digitalWrite(31, LOW);//LED 1BLU
    digitalWrite(30, LOW);//LED 1ROSSO
    digitalWrite(38, HIGH);//LED 1VERDE


}
void LUCE1BLU(){
 
    digitalWrite(31, HIGH);//LED 1BLU
    digitalWrite(30, LOW);//LED 1ROSSO
    digitalWrite(38, LOW);//LED 1VERDE


}
void LUCE1SPEGNI(){
   
    digitalWrite(31, LOW);//LED 1BLU
    digitalWrite(30, LOW);//LED 1ROSSO
    digitalWrite(38, LOW);//LED 1VERDE
  


}


void LUCE2ROSSO(){
  
    digitalWrite(33, LOW);//LED 2BLU
    digitalWrite(14, HIGH);//LED 2ROSSO
    digitalWrite(19, LOW);//LED 2VERDE
}
void LUCE2VERDE(){

    digitalWrite(33, LOW);//LED 2BLU
    digitalWrite(14, LOW);//LED 2ROSSO
    digitalWrite(19, HIGH);//LED 2VERDE


}
void LUCE2BLU(){

    digitalWrite(33, HIGH);//LED 2BLU
    digitalWrite(14, LOW);//LED 2ROSSO
    digitalWrite(19, LOW);//LED 2VERDE


}
void LUCE2SPEGNI(){
   
    digitalWrite(33, LOW);//LED 2BLU
    digitalWrite(14, LOW);//LED 2ROSSO
    digitalWrite(19, LOW);//LED 2VERDE 


}


void LUCE3ROSSO(){

    digitalWrite(29, LOW);//LED 3VERDE
    digitalWrite(27, LOW);//LED 3BLU
    digitalWrite(26, HIGH);//LED 3ROSSO


}
void LUCE3VERDE(){

    digitalWrite(29, HIGH);//LED 3VERDE
    digitalWrite(27, LOW);//LED 3BLU
    digitalWrite(26, LOW);//LED 3ROSSO


}
void LUCE3BLU(){

    digitalWrite(29, LOW);//LED 3VERDE
    digitalWrite(27, HIGH);//LED 3BLU
    digitalWrite(26, LOW);//LED 3ROSSO


}
void LUCE3SPEGNI(){
   
    digitalWrite(29, LOW);//LED 3VERDE
    digitalWrite(27, LOW);//LED 3BLU
    digitalWrite(26, LOW);//LED 3ROSSO


}


void LUCE4ROSSO(){
   
    digitalWrite(15, LOW);//LED 4BLU
    digitalWrite(20, HIGH);//LED 4ROSSO
    digitalWrite(16, LOW);//LED 4VERDE


}
void LUCE4VERDE(){
   
    digitalWrite(15, LOW);//LED 4BLU
    digitalWrite(20, LOW);//LED 4ROSSO
    digitalWrite(16, HIGH);//LED 4VERDE


}
void LUCE4BLU(){
   
    digitalWrite(15, HIGH);//LED 4BLU
    digitalWrite(20, LOW);//LED 4ROSSO
    digitalWrite(16, LOW);//LED 4VERDE


}
void LUCE4SPEGNI(){
   
    digitalWrite(15, LOW);//LED 4BLU
    digitalWrite(20, LOW);//LED 4ROSSO
    digitalWrite(16, LOW);//LED 4VERDE


}

Screenshot app Android


Download app Android (clicca o scannerizza il seguente codice QR)


Video dimostrativo


Arduino Day del 01/04/2017 a Taranto


Commenti

Mario Rossi: 
Bel progetto!

Aggiungi un nuovo commento

Accedi per poter commentare.