segunda-feira, 2 de abril de 2012

Projeto Arduíno : "No Light Home"

Descrição:

Nosso projeto consiste no desenvolvimento de uma casa de repouso para deficientes.
A casa permite que deficientes visuais possam andar sem a utilização de 'bengalas', pois a casa possui sensores que informam o deficiente sua localização e o alerta sobre possíveis objetos em seu caminho. Como dito anteriormente, a casa tem um sistemas de sensores que ajudarão a economizar energia, ou seja, ao passar ou ao permanecer em um cômodo, a luz se acenderá e ao sair, ela se apagará. Como a movimentação é grande, devido aos deficientes, não só visuais, como mudo e surdo e até mesmo os familiares e auxiliares que andam pela casa.

Materiais necessários para a realização do projeto:

- Arduino
- Protoboard
- LEDs
- LDRs
- Resistência de 10k
- Maquete

Etapas do projeto:

Apresentação do projeto em sala de aula:


Primeira semana(02/04-06/04): Análise para a compra dos materiais necessários para o desenvolvimento do projeto e da maquete.






Segunda semana(09/04-13/04): Preparação inicial do desenvolvimento da maquete e do protoboard.


Terceira semana(16/04-20/04): Pausa para a revisão e a P1 de Física.

Quarta semana(24/04-27/04): Etapa final para o desenvolvimento da maquete e do protoboard.

Quinta semana(30/04-04/05): Desenvolvimento inicial do código.

Sexta semana(07/05-11/05): Desenvolvimento intermediário do código, dúvidas sobre o projeto(em sala) e ajustes.

Sétima semana(14/05-18/05): Desenvolvimento final do código.

Oitava semana(21/05-25/05): Etapa INTERMEDIÁRIA do projeto.

                                                                   Protótipo

Apresentação do projeto em sala de aula:
http://www.4shared.com/office/irtNGqLY/No_Light_Home1.html


- Entrega do pôster e do artigo

Artigo : clique aqui

Pôster : clique aqui





Nona semana(28/05-01/06): Aprimoramento final da maquete e do código.







Código :


int s0,s1,s2;
int L0=0, L1=0,L2=0, L3=0,L4=0,L5 =0,L6 = 0;
int ledPin = 1,ledPin1 = 13,ledPin2 = 12;
int ctl_1 = 0,ctl_2 = 0;
int A=0;
int calibL4 = 400, calibL5=200,calibL6=300;//valores de base para sensores da porta
int calibD0=1000,calibD1=800, calibD2=800,calibD3=600;//valores de base para disparo de sensores da parede
void setup()
{
  //4051 digital control pins
  pinMode(8, OUTPUT);    // s0
  pinMode(9, OUTPUT);    // s1
  pinMode(10, OUTPUT);    // s2
  Serial.begin(9600);
}
int binario(int n, int b){
    int r[3],a[3];
    int m10=1;
    int z=0;
    
    int q=n,c=2;
    for(int i=0;i<3;i++) r[i] = 0;
    
    do{
             r[c] = q%2;
             q = q /2;
             z = (r[c]*m10)+z;
             m10 = m10 * 10;
             c = c - 1;
        }while(q!= 0);


    return (r[b]);    
          
    }
    
void comodo(float LDR0,float LDR1,float LDR2,float LDR3,float LDR4, float LDR6) {    
    int media, desvio0, desvio1, desvio2, desvio3,desvio4;
    
    media = (LDR0 + LDR1 + LDR2 + LDR3)/4;
    
    
    Serial.print("   "); 
    Serial.print(" media: "); 
    Serial.print(media); 
    
    desvio0 = (LDR0/media)*1000;
    desvio1 = (LDR1/media)*1000;
    desvio2 = (LDR2/media)*1000;
    desvio3 = (LDR3/media)*1000;
    desvio4 = (LDR4/media)*1000;
    
    Serial.print("  "); 
    Serial.print(" D0: "); 
    Serial.print(desvio0); 
    Serial.print(" D1: "); 
    Serial.print(desvio1); 
    Serial.print(" D2: "); 
    Serial.print(desvio2); 
    Serial.print(" D3: "); 
    Serial.print(desvio3); 
    
    
         if ((desvio0 < calibD0) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,261.626);
    
        }else if ((desvio1 < calibD1) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,329.628);
    
        } 
         else if ((desvio2 < calibD2) ) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,391.995);
    
        } 
            else if ((desvio3 < calibD3)) { 
    
            digitalWrite(ledPin, HIGH); 
            tone(5,440);
    
        }else if(LDR6<calibL6){
          tone(5,220);
          tone(5,440); 
        }
            else {
          digitalWrite(ledPin, LOW);
          tone(5,LOW);
        }
        
      
    
}   

int luz(int a){
    
    int n1,n2,c1,c2;
    ////////////////////
    
    if (a==0){


     n1 =  analogRead(A4); //le L5  
             

             if(n1<calibL5){
                        c1= 1;
                        
                        }
             if(c1==1){
                
                          
  n2 =  analogRead(A5);//le L6

                          if(n2<calibL6){
                                     c2 =1;
                                     }else c2 = 0;
                          if (c2 == 1){
                                       
      digitalWrite(ledPin1, HIGH); //ascende a luz  
                             digitalWrite(ledPin, HIGH); //ascende a luz
                                      c2=0;
                                      c1 = 0;
                                      a=1;
                                      }  
                          
                          }
    }
             

/////////////
    if(a==1){
     n2 =  analogRead(A5);//le L6

             if(n2<calibL6){
                        
                        c2= 1;          
                        }
             if(c2==1){
                          //c2=0;

  n1 =  analogRead(A4); //le L5
  

                          if(n1<calibL5){
                                     c1 =1;                             
                                     }else c1=0;
                          if (c1 == 1){
                                      digitalWrite(ledPin1, LOW);//desliga a luz
      digitalWrite(ledPin, LOW);//desliga a luz
                                      c1=0;
                                      c2=0;
                                      a=0;
                                      }  
                          
                          }
    }
/////////
    return a;
    
    
    
}

    
void loop()
   
{
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  
  int readInZero = analogRead(0);  // read the input pin
  //Serial.print(readInZero); //use the result
   for(int j=0; j<=7;j++){
     
     s0 = binario(j,0);
     s1 = binario(j,1);
     s2 = binario(j,2);
     
     digitalWrite(8, s0);//s0
     digitalWrite(9, s1);//s1
     digitalWrite(10, s2);//s2
     
     
     
     int readInTwo= analogRead(0);
     
     switch(j){
      case 0: 
        L0 = readInTwo;
        break;
      case 4: 
        L1 = readInTwo;
        break;
      case 2: 
        L2 = readInTwo;
        break;
      case 6: 
        L3 = readInTwo;
        break;
      default:
        break;
        
        
      }
      
    L4 = analogRead(A3);
    L5 =  analogRead(A4);//n1
    L6 =  analogRead(A5);//n2

    if(L4<calibL4){
      A = luz(A);
       
    }
    
    comodo(L0,L1,L2,L3,L4,L6);//controla sinais sonoros no comodo
    
    Serial.print("\n  L0 ");
    Serial.print(L0);
    Serial.print("  L1 ");
    Serial.print(L1);
    Serial.print("  L2 ");
    Serial.print(L2);
    Serial.print("  L3 ");
    Serial.print(L3);
    Serial.print("  L4 ");
    Serial.print(L4);
    Serial.print("  L5 ");
    Serial.print(L5);
    Serial.print("  L6 ");
    Serial.print(L6);
    
    
     
   }

}
//luz
//som




Décima semana(04/06-08/06): Testes.




Décima primeira semana(11/06-12/06): P2 - Apresentação FINAL do projeto.

Apresentação FINAL:
Clique aqui para download

Um comentário:

  1. Falta postar a apresentação utilizada em sala. Falta tb adicionar lista de blogs com links para os demais projetos e para a disciplina. O blog deve refletir o ritmo das pesquisas que estão sendo realizadas. Como o blog está parado, suponho que a pesquisa tb. Vamos agilizar, afinal este projeto representará nota de P2!

    ResponderExcluir