5 de des. 2016

Moure un servo motor

Jo i el Andrés vam fer que es mogues un servo amb el programa del arduino , nosaltres voliem que es mogues a 180º o sigui que es mogues dos vegades el servo como si fossi una porta. Desprès de això el Andrés va fer  que es mogues la porta del garatge, i jo vaig fer la construcció de la casa .

Els seus element per moure el servo motor:
       _ un MicroServo
       _ una placa
       _ cables































La contrucció de la casa

Jo i la meva compaña, Laura, vam fer la contruccio de la casa ella va fer una part i jo un altre. Primer vam fer les medides de la casa de les habitacions de la cuina de la part del jardi...etc. Jo vaig fer les finestres de les habitacions i de la cuina. despres vaig juntar les parets de la casa que es 4x4 amb uns alfilers, tambe la del garatge.Despres vam fer la parte del jardi que el vam fer com un arc i vam posar dos pilar. El garatge es on pondrem la placa per que fonciones totes les coses que pondrem per la casa inteligent.:



                    

Calefaccio de la Casa

La meva feina en aquet projecte era fe la calefaccio de la casa en la part mes de programacio i muntatge , el que voliem era que cuan mes baixes la temperatura mes LEDS s'ensenia y si pujava es pusaria en marxa la refrijeracio que es representa amb un LED de color blau.

Esquema del muntatge :





Programacio:

int LED1 = 2;
int LED2 = 3;
int LED3 = 4;
int LED4 = 5;
int LED5 = 6;
int LED = 7;



const int sensor = A0;
 long miliVolts;
 long temperatura ;


void setup()
{
  Serial.begin (9600);

  pinMode(LED1, OUTPUT) ;
  pinMode(LED2, OUTPUT) ;
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED, OUTPUT);
 
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
miliVolts =(analogRead(sensor) *5000L) /1023 ;
temperatura = miliVolts / 10;

 Serial.print("temperatura :");
 Serial.print(temperatura);
 Serial.print ("Grados");
 delay (300);


  if ((temperatura > 72) && (temperatura > 73))

 {
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
   digitalWrite(LED, LOW);
 }

 if ((temperatura > 71) && (temperatura <= 72))

 {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
   digitalWrite(LED, LOW);
 }
  if ((temperatura > 70) && (temperatura <= 71))

 {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
   digitalWrite(LED, LOW);
 }
  if ((temperatura > 69) && (temperatura <= 70))

 {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
   digitalWrite(LED, LOW);
 }
  if ((temperatura > 68) && (temperatura <= 69))

 {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, LOW);
   digitalWrite(LED, LOW);
 }
  if ((temperatura > 67) && (temperatura <= 68))

 {
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(LED4, HIGH);
  digitalWrite(LED5, HIGH);
   digitalWrite(LED, LOW);
 }

 if ((temperatura >=77) &&( temperatura <=84))
 {
  digitalWrite(LED, HIGH);
   digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  }
}



Bomba d'aigua(hardware)

L'Adrián i jo hem estat treballant en una bomba d'aigua que ha sigut la nostra aportació per la casa domòtica que estem fent tots plegant.
El nostre projecte consisteix en una aixeta que s'activaria automàticament mitjançant un sensor d'infrarojos.
A la construcció he utilitat:
-1 Arduino uno
-1 Motor DC
-1 Ld293d (xip per controlar el corrent del motor)
-1 Potenciòmetre
-1 Sensor de infrarojos
 
Una vegada construït el circuit elèctric ens vam posa a fer la construcció de la bomba d' aigua.


 
El motor que vam posar al començament no tenia la suficient força per impulsar l'aigua per al tub de plastic.
Vam agafar un altre motor encara mes potent.  

Però  el problema va persistir. Ens vam plantejar posar una bomba de succió desmuntant tot el circuit elèctric i fer dos circuits aïllats per per un relé, el circuit de la bomba portaria 12V i el de l'arduino en portaria 5V . Però l' arduino no tenia la suficient potencia per activar el relé.
Finalment vam decidir deixar-lo com un projecte teòric per que de moment no hem aconseguit moure l'aigua amb la suficient potencia per que funcioni com una aixeta.






Calefacción de la Casa

En aquesta part del treball la meva companya i jo van escullir fe la temperatura de casa, en que  consisteix  que cuan mes baixi la temperatura ,mes LEDS de la  barra senseraran que sera una representacio de la calefacción ,i si la temperatura puja d'una determinada temperatura comensa la refrigeracio  que la representa un LED de color blau.


Parlare del programa que he  utilitzat y l'esquema.







Sensor de temperatura i casa domòtica

SENSOR DE TEMPERATURA

Durant aquest trimestre a l'aula de tecnologia hem fet una casa domótica. El meu company Rodrigo i jo hem treballat amb un sensor de temperatura.
Vam monotoritzar el sensor i vam comprovar si funcionava aplicant-li fred i calor amb utensilis de la cantina.  Després, per representar que s'encenia una estufa, vam utilitzar una barra de leds i la vam monotoritzar primer sense el sensor.  A continuació vam ficar el sensor, però com que als dos no ens sortia i s'havia de contruir la casa, jo i la meva companya Romina ens vam posar a fer-la.
Primer es va fer la base de la casa i les seves parets amb finestres, vam fer les portes de cada habitació i quan ja estàvem vam fer el garatge. A la pared del pati vam fer una mena d'arc i de pilars vam utilitzar dos pals.
La casa està feta de cartò pluma, i quasi tota subjectada de filferros, la resta de cola.






BOMBA D'AIGUA (software)

En aquest apartat explicare com funciona el codi Arduino que hem utilitzat el meu company Adrián i jo per aconseguir moure un motor DC junt un potenciòmetre i un sensor d'infrarrojos.

Primer vam fer proves amb el sensor d'infrarrojos perque voliem que sigui una font com les modernes que cuan et detecten la ma funciona.
Codi sensor infrarrojos:

int const sensor = 7; //Pin del sensor
int lectura;

void setup()
   {
        Serial.begin(9600);
        pinMode(sensor,INPUT);
   }
void loop()
   {    
    lectura=digitalRead(sensor);
    Serial.print("SENSOR ="); 
    Serial.println(lectura);
    delay(100);
  }

Aquí tenim el codi del potenciòmetre que era per poder regular la força amb la que surt l'aigua del tub
Codi potenciòmetre:


int lectura;
const int PinSensor = A0; //Pin de conexion del sensor
void setup()
   {
        Serial.begin(9600);
        pinMode(sensor,INPUT);
   }
void loop()
   {    

    analogWrite(E1, analogRead(A0) / 4); //Dividimos la resistencia para el potenciometro
  }
 
Aqui el codi del motor DC ja que necessitem algun component amb força cinètica per donar moviment a l'aigua. 
Codi motor DC:

#define E1 10 // Habilitar Pin para motor 1
#define I1 8  // Control pin 1 para motor 1

void setup()
   {
        for (int i = 8 ; i<11 ; i++)  // Inicializamos los pines
        pinMode( i, OUTPUT);
        Serial.begin(9600);
        pinMode(sensor,INPUT);
   }
void loop()
   {    
    digitalWrite(I1, HIGH); // Arrancamos
    
    delay(100); //Paramos
    
    digitalWrite(I1, LOW);
    delay(100); //Paramos
  }

Codi final (utilitzant un motor DC):

#define E1 10 // Hablitar Pin para motor 1
#define I1 8  // Control pin 1 para motor 1
int const sensor = 7; //Pin del sensor
int lectura;
const int PinSensor = A0; //Pin de conexion del sensor

void setup()
   {
        for (int i = 8 ; i<11 ; i++)  // Inicializamos los pines
        pinMode( i, OUTPUT);
        Serial.begin(9600);
        pinMode(sensor,INPUT);
   }
void loop()
   {    
    lectura=digitalRead(sensor);
    
    if (lectura== 0){

    analogWrite(E1, analogRead(A0) / 4); // Dividimos la resistencia para el potenciometro
    digitalWrite(I1, HIGH);      // Arrancamos

    delay(100);
  }
  else{
    digitalWrite(E1, LOW);      // Paramos
    digitalWrite(I1, LOW);
    delay(100);
  }
  Serial.print("SENSOR ="); 
  Serial.println(lectura);
  delay(100);
  }

Codi final (utilitzant un component superior a 5v (en el nostre cas una bomba d'aigua)):
#define E1 10 // Enable Pin for motor 1
#define I1 8  // Control pin 1 for motor 1
int const sensor = 7; //pin del sensor
int lectura;
const int PinSensor = A0; //pin de conexio del sensor
int RELE = 12;

void setup()
   {
        Serial.begin(9600);
        pinMode(RELE, OUTPUT);
        pinMode(sensor,INPUT);
   }
void loop()
   {    
    lectura=digitalRead(sensor);
    
    if (lectura== 0){
    digitalWrite(RELE, HIGH);
    delay(100);
  }
  else{
    digitalWrite(RELE, LOW);
    delay(100);
  }
  Serial.print("SENSOR ="); 
  Serial.println(lectura);
  delay(100);
  }

4 de des. 2016

La porta del garatge


La Romina i jo, vam escollir fer la porta del garatge amb un servo motor. Llavors el primer que vam fer només era que funcioni el servo motor, després d'això, que el servo funciones amb un polsador, quan ja sabíem fer aquestes dues coses havíem de fer que amb dos polsadors el servo motor funciones, perquè un botó serveixi perquè la porta del garatge s'obri i l'altre perquè la porta ens tanques. Després de què funciones aquest procés vam pensar que quan la porta s'obri que hi hagui una llum que també s'encengui per a il·luminar el garatge, llavors vam haver de ficar un altre polsador per apagar la llum.

Per fer aquest projecte vam necesitar aquest materials:
  •  Un MicroServo
  • Tres pulsadors
  • Un led vermell
  • Quatre resistències
  • Cables
  • Una protoboard
  • Una placa
Llavors aquí us deixo el programa que hem fet servir:





24 de nov. 2016

Teclado matricial

La Cristina i jo, vam escollir dos camps el primer ja l'hem explicat que és sobre la llum, i el que ara explicarem és el camp del teclat matricial.
Primer vam començant provant una clau, i quan posavem la clau el led s'encenia. Ens va funcionar i vam continuar treballant.
Després vam utilitzar la pantalla LCD, que vam fer un programa molt sencill que enviarà un missatge a la pantalla. També ens va funcionar i vam continuar.
Vam decidir que ja podiem començar el treball que voliem.
Primer vam veure els materials que necessitàvem, que era:
-Teclat matricial
-Led vermell i led verd
-Pantalla LCD
-Potenciòmetre
-Brunzidor
-Servo
El que voliem era que la porta principal de la casa, s'obrís possant una clau al teclat matricial i quan la possavem que sortís en la pantalla LCD. 
Si la clau la possaves malament el led vermell s'encenia, el brunzidor sonava( que era com l'alarma de la casa) i sortia a la pantalla LCD clau errònea, i quan la possaves bé s'encenia el led verd i s'obría la porta(amb el servo, però ho faríem al final de tot).

Aquí us deixo el programa:



Després de fer el programa i comprovar-ho no ens sortia el que volíem que faci.



Després d'un temps vam aconseguir que el programa donés els resultats que volíem, amb la qual cosa el teclat matricial, quan posàvem la contrasenya correcta, la porta s'obre i un led s'encén a la mateixa vegada.

#include <Keypad.h>; // Con esta linea llamamos a la librería Keypad para que arduino reconozca el teclado
#include <Servo.h>
Servo servo1;
char contrasena[]="1234"; // En esta linea creamos la constante de cadena llamada contraseña (el numero 2222 puede ser cambiado)
char codigo[4]; // Creamos otra constante, en esta se guardaran los caracteres que presionemos en nuestro teclado matricial 4x4
int cont=0; // Esta es una variable que nos servirá más adelante
int angulo=0;

const byte FILAS = 4; //Este código se estable para definir que nuestro teclado tiene 4 filas 
const byte COLS = 4; //Este código se estable para definir que nuestro teclado tiene 4 columnas

char teclas[FILAS][COLS] = //En el siguiente matriz se agregan en orden las teclas que posee nuestro teclado
{
 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'*','0','#','D'}
};

byte pinesF[FILAS] = {4, 5, 6, 7}; // Estos son los pines de conexión de Arduino de las columnas
byte pinesC[COLS] = {8, 9, 11, 10}; //Estos son los pines de conexión de Arduino de las filas

Keypad customKeypad = Keypad(makeKeymap(teclas), pinesF, pinesC , FILAS , COLS); //En este punto el teclado se inicia y realiza el mapeo de sus teclas con respecto a la matriz colocada arriba

void setup()
{
 servo1.write(10);

 pinMode(13, OUTPUT); //El pin 13 sera nuestra salida digital (así aprovecharemos el led que pose)
 Serial.begin(9600); //Se inicia el puerto serial
}

void loop()
{
 char customKey = customKeypad.getKey(); //esta linea indica que el carácter presionado se guardara en la variable customKey
 if (customKey != NO_KEY) //Con este siclo preguntamos si se presiono una tecla, si se presiono entonce el ciclo continua
 {
 codigo[cont]=customKey; //se guardaran los caracteres presionados en codigo[cont]
 Serial.print(codigo[cont]); //Se imprime en nuestro monitor serial lo que este guardado en codigo[cont]
 cont=cont+1; //incrementamos la variable cont (esto con el fin de tener los 4 dígitos que requerimos)
 if(cont==4) //Ahora comienza otro siclo if, en el cual se pregunta si ya hay 4 datos guardados y si es así entonce el siclo continua

 {

 if(codigo[0]==contrasena[0]&&codigo[1]==contrasena[1]&&codigo[2]==contrasena[2]&&codigo[3]==contrasena[3])
 {
  digitalWrite(13, HIGH);
   servo1.attach(3);
 for(angulo  = 9; angulo  <= 101; angulo  += 1) 
 {
   servo1.write(angulo);
    delay(25);
            }
 digitalWrite(13,!digitalRead(13)); //si lo anterior es verdad entonces se encenderá el led, si se ingresa nuevamente la contraseña entonces se apagara
 Serial.println("Password correcta"); //si la contraseña es correcta entonces se imprime ""Password correcta")
 delay(3000);
 for(angulo  = 9; angulo  <= 101; angulo  -= 1) 
 {
   servo1.write(angulo);
    delay(25);
            }
   servo1.detach();
 digitalWrite(13, LOW);

 }
 else//empieza un nuevo ciclo, esta vez indicamos si el código es diferente que la contraseña siga con el siclo
 {

 Serial.println("Password incorrecta"); // se imprime que que la Password es incorrecta
 }

 cont=0; //resetear a 0 la variable cont
 }
 }
}


23 de nov. 2016

Domótica. Il·luminació

Aquest trimestre estem fent un projecte de domótica. La Cristina i jo (Eli) estem treballant la il·luminació.

El nostre programa consisteix en que els llums de casa, fets amb Leds, s'encenguin més o menys en funció del nivell de llum natural, rebut per un sensor fet amb LDR.

A partir d'un cert valor de llum mínim rebut pel sensor, que hem fixat en 200, els Leds s'encendran al màxim, i a partir d'un valor de llum màxim, que hem fixat en 900, s'apagaran.
Per a valors intermedis del sensor, els Leds s'encendran en proporció inversa a aquests valors.

Aquí us deixo el nostre programa:
int pinsensor = A0;
int pinled = 11;
int lectura, intensitat; 
int dia = 900;
int nit = 200;

void setup() 
{
  pinMode (pinled,OUTPUT);
  Serial.begin (9600); // per depuració
}

void loop() 
{
  // llegeix el valor del sensor:
  lectura = analogRead(pinsensor);

  // assigna valor a la sortida analògica:
  if (lectura < nit)
  { intensitat = 255; }
  else if (lectura > dia)
  { intensitat = 0; }
  else
  { intensitat = map (lectura, dia, nit, 0, 255); }

  // treu el senyal:
  analogWrite(pinled,intensitat);

  // monitorització per depuració:
  Serial.print ("llum natural = ");
  Serial.print (lectura_llum);
  Serial.print (" | llum artificial = ");
  Serial.println (llum_artificial);
  delay(100);
}
Al vídeo podeu veure les connexions i el funcionament:

2 de juny 2016

ROBOTS SOLARS DINS D'UN ENVÀS RECICLAT

Per a la jornada de cloenda de curs de l'Agenda 21 Escolar de L'H hem fet 4 robots "sostenibles" entre 6 alumnes de diferents cursos (1r i 2n d'ESO i 1r de Batxillerat) i els professors Carol (Tecnologia) i Aleix (Física).

Aquests robots:

* Estan alimentats amb energia solar i funcionen en qualsevol condició lumínica.
* Estan fets amb components Zum bq i programats amb Bitbloq.
* Poden interactuar amb les persones a través del mòbil amb d'una aplicació que hem fet amb App Inventor.
* La seva estructura està feta amb peces Lego Technic.
* La seva carrosseria és un envàs reciclat.

El projecte està documentat al nostre bloc Tecno-Lògic >>