Mini proyecto con (sin) arduino

18
Colegio de Estudios Científicos y Tecnológicos Plantel Tecámac Asignatura: Instala y Configura Aplicaciones Móviles Alumno: Noe Aldair Francisco Cruz Profesor: René Domínguez Escalona Mini Proyecto con (sin) Arduino

Transcript of Mini proyecto con (sin) arduino

Page 1: Mini proyecto con (sin) arduino

Colegio de Estudios Científicos y Tecnológicos Plantel Tecámac

Asignatura:

Instala y Configura Aplicaciones Móviles

Alumno: Noe Aldair Francisco Cruz

Profesor: René Domínguez Escalona

Mini Proyecto con (sin) Arduino

Page 2: Mini proyecto con (sin) arduino

Introducción.

Realizar este tipo de trabajo suele ser un poco complicado al no poseer el tipo de material suficiente como para presentarlo al profesor, entonces al no poseer el Arduino Uno ya que en mi equipo está utilizándolo otra persona decidí crear este documento con lo necesario para yo poder realizar mi proyecto según como lo haría y en que beneficiaría o que resultaría afectado.

Espero al no tener el material ni la documentación suficiente que este trabajo vaya a valer menos de lo indicado pero la verdad es que no quiero reprobar la materia por eso es que lo hago además de conocer otras formas de cómo utilizar el Arduino UNO.

Este documento NO posee ningún video tutorial ya que, como mencioné anteriormente no cuento con Arduino UNO para realizarlo y en su lugar he reemplazado lo que sería la evidencia por imágenes y diagramas del cómo debería ser armado y realizado el proyecto.

Sin nada más que decir y esperando acepte el trabajo comienzo.

Page 3: Mini proyecto con (sin) arduino

Objetivo.

El objetivo de este proyecto con (sin) Arduino es el de crear un elevador como se ha intentado anteriormente pero ésta vez controlado por un control remoto y sensible a la humedad. Como dije anteriormente en este proyecto intento hacer lo que de verdad haría y para ser sincero no voy a intentar nada que no pueda hacer y al creer que este proyecto es sencillo por eso es por lo que me arriesgo a intentarlo y antes de una calificación de cero esperar alguna décima extra o alguna calificación para el proyecto y no dejarlo como no entregado.

A pesar de haberlo entregado fuera de tiempo me dispongo a realizarlo para que si es que tengo una calificación aprobatoria en el examen sea posteriormente revisado en slideshare.net y pueda ser contado para evaluación.

Ahora que he tratado de realizar este proyecto pienso yo que es posible y el realizarlo posiblemente no cueste mucho trabajo; incluyendo los cinco componentes como es debido hacer el mejor esfuerzo porque salga todo bien y sin nada más que agregar doy paso a el proyecto.

Page 4: Mini proyecto con (sin) arduino

Componentes y lista del material.

Para empezar con éste proyecto es necesario agregar que necesitaremos los siguientes componentes, daré la lista de todo el material que será ocupado:

- Placa Arduino UNO- Cable USB- Un Protoboard y en caso de ser pequeña: dos.- Motor a pasos bipolar- Potenciómetro- 4 Resistencias de 10k- 5 Resistencias de 2k- 1 Resistencia de 50k- 2 Botones- Luces LED- LED Negro- LED RGB- Sensor de humedad DHT22- Pantalla LCD 1602ª- Hilo resistente- Poleas realizadas manualmente

Al no poseer el material adecuado he optado por buscar en internet el material específico para poder realizar lo que sería el proyecto entonces solo se requiere lo anterior para poder comenzar con ello.

Page 5: Mini proyecto con (sin) arduino

Motor a pasos.

El motor a pasos es ocupado para, como su nombre lo dice, ser usado como un motor que será el que eleve el ascensor o lo haga descender. Al estar enlazado con las poleas realizadas a mano o reutilizando un cartucho de tinta para impresora puede ser de utilidad para que el motor no se atore en donde no debe y siga su camino, sumado al hilo o cable que le hemos puesto no debe ser difícil la ejecución.

El diagrama de cómo debe ir cableado será el siguiente:

Page 6: Mini proyecto con (sin) arduino

Debo aclarar que no vamos a utilizar todos los pines y si en los demás diagramas vemos enchufados pines que ya hemos ocupado hay que recorrerlo y el código será modificado. Una vez comentado aquello mostraré el código:123456789101112131415161718192021222324252627282930

/*  Mover motores paso a paso con Arduino  Tutorial en: http://diymakers.es/mover-motores-paso-paso-con-arduino/*/ #include <Stepper.h> //Importamos la librería para controlar motores paso a paso #define STEPS 200 //Ponemos el número de pasos que necesita para dar una vuelta. 200 en nuestro caso // Ponemos nombre al motor, el número de pasos y los pins de controlStepper stepper(STEPS, 8, 9, 10, 11); //Stepper nombre motor (número de pasos por vuelta, pins de control) void setup(){  // Velocidad del motor en RPM  stepper.setSpeed(100);} void loop(){  //Girar una vuelta entera en un sentido  stepper.step(200);  delay(500); //Pequeña pausa   //Girar una vuelta entera en sentido contrario  stepper.step(-200);  delay(500); //Pequeña pausa}

Lo que el código logrará será hacer que el motor se mueva en una dirección dando una vuelta completa para así el ascensor ser elevado y al llegar ahí dar la misma vuelta en sentido contrario.

Page 7: Mini proyecto con (sin) arduino

Control Remoto.

Lo que logrará el control remoto será en caso de que nuestros botones se vean afectados pueda ser utilizado el control remoto o viceversa. El control podrá lograr hacer al motor a pasos dar la vuelta en el sentido en que la hemos guiado, detenerlo o hacer que haga su recorrido en sentido contrario.

El diagrama de armado es el siguiente:

En donde usaremos la luz led para indicar que el control está funcionando y a que componente está siendo utilizado, aunque para ello el código tiene que ser modificado.

Page 8: Mini proyecto con (sin) arduino

Una vez realizado lo anterior paso a mostrar el código:12345678910111213141516171819202122232425262728293031323334353637383940414243444546

// Cantidad de pulsos#define TRAIN_LENGTH 32// En microsegundos#define LOW_LIMIT 600#define HIGH_LIMIT 1800#define INIT_LIMIT 4000 #define IN 2#define LED 13 long start, delta = 0;uint32_t value;int pos = 0;boolean has_value = false;unsigned int key[10]; void inputPin() {  noInterrupts();  if (has_value) return;  if (digitalRead(IN) == HIGH) {    start = micros();  }  else {    delta = micros() - start;    if (delta < LOW_LIMIT) {      value <<= 1;      value |= 1;      ++pos;    }    else if (delta < HIGH_LIMIT) {      value <<= 1;      value |= 0;      ++pos;    }    else if (delta > INIT_LIMIT) {      value = 0;      pos = 0;    }     if (pos == TRAIN_LENGTH) {      has_value = true;    }  }  interrupts();} void setup(){  key[0] = 0x9768;  key[1] = 0xCF30;  key[2] = 0xE718;  key[3] = 0x857A;  key[4] = 0xEF10;

Page 9: Mini proyecto con (sin) arduino

47484950515253545556575859606162636465666768697071727374757677787980818283848586

  key[5] = 0xC738;  key[6] = 0xA55A;  key[7] = 0xBD42;  key[8] = 0xB54A;  key[9] = 0xAD52;   Serial.begin(115200);  pinMode(IN, INPUT);  pinMode(LED, OUTPUT);  digitalWrite(LED, LOW);   attachInterrupt(0, inputPin, CHANGE);} void loop(){  int i;  if (has_value) {    Serial.print("V: ");    Serial.println(value & 0x0000FFFF, HEX);    i = 0;    while(i<10 && (key[i] != (value & 0x0000FFFF))) ++i;    Serial.println(i);    while(i--) {      digitalWrite(LED, HIGH);      delay(400);      digitalWrite(LED, LOW);      delay(200);    }    has_value = false;    pos = 0;  }}

En donde nuestro control remoto estará funcionando como esperamos y después sea dirigida la señal al componente adecuado.

Page 10: Mini proyecto con (sin) arduino

Led RGB.

El objetivo de incluir este Led es, creo yo mero adorno y también un indicador que señalará si el ascensor está subiendo o bajando pintándose de un color al subir y otro al bajar.

El diagrama de ensamblado sería el siguiente:

En donde incluiremos resistencias y el Led para nuestro propósito, así al subir el ascensor siendo controlado por nuestro control o botones se iluminará de un color y al bajar cambiará.

Una vez realizado lo anterior procedo a mostrar el código del componente:/*-----Declaracion de variables para cada color R G B-----*/int rled = 11; // Pin PWN 11 para led rojoint bled = 10; // Pin PWM 10 para led azulint gled = 9;  // Pin PWM 9  para led verde /*----Declaracion de variables auxiliares-----*/int i; // Variable para ciclos repetitivosint repeat = 5; // Variables para cantidad limite de repeticiones  void setup() {/*----- Se inicializan pines PWM como salida*/    pinMode(rled, OUTPUT);

Page 11: Mini proyecto con (sin) arduino

  pinMode(bled, OUTPUT);  pinMode(gled, OUTPUT);}void loop() {   for(i=0; i<repeat; i++) //Se repite la ejecución de la funcion rgbon() "repeat" veces      rgbon(); delay(1000); //Se espera 1 segundo colors('y'); //Se enciende el LED en color amarillo (y de yellow) delay(1000); colors('o'); //Se enciende el LED en color naranko (o de orange)     delay(1000); } /*-----Funcion para mostrar colores principales cada 500 ms-----*/void rgbon(){  analogWrite(rled,255); // Se enciende color rojo  delay(500);            // Se esperan 500 ms  analogWrite(rled,0);   // Se apaga color rojo   analogWrite(bled,255); // Se enciende color azul  delay(500);            // Se esperan 500 ms  analogWrite(bled,0);   // Se apaga color azul  analogWrite(gled,255); // Se enciende color verde  delay(500);            // Se esperan 500 ms  analogWrite(gled,0);   // Se apaga colo verde} /*-----Funcion que permite escoger entre color amarillo, naranjo o rosado-----*/void colors(char color){ //La funcion recibe un parametro que se guarda en variable color    switch(color){ //Se compara variable color con dato guardado    case 'y': analogWrite(rled,255); // Si color == 'y' se enciende color amarillo              analogWrite(gled,255); // Mezclando r = 255 / g = 255 / b = 0              analogWrite(bled,0);    break;    case 'o': analogWrite(rled,255); // Si color == 'o' se enciende color naranjo              analogWrite(gled,180); // Mezclando r = 255 / g = 180 / b = 0              analogWrite(bled,0);    break;    case 'p': analogWrite(rled,255); // Si color == 'p' se enciende color rosado             analogWrite(gled,0);   // Mezclando r = 255 / g = 0 / b = 255              analogWrite(bled,255);    break;  } }

El objetivo del código es que el Led va a iluminarse al detectar al elevador en movimiento así de un color el cual sería el rojo y para el retroceso sería el color naranja así como hemos podido ver en el código.

Page 12: Mini proyecto con (sin) arduino

Sensor de humedad DHT22.

El objetivo de este sensor no es más que como he incluido en el anterior componente, será precisamente de adorno ya que la verdad no funcionaba como yo esperaba para que detectara la humedad y si el ascensor sea donde sea que se encontrara bajara o subiera. Aun así dejo el código a realizar y el diagrama de ensamblaje.

En donde incluimos nuestro sensor de humedad DHT22.

Una vez realizado lo anterior pasaremos a mostrar el código:

1

2

3

4

5

6

7

8

9

1

0

1

1

1

2

1

3

1

#include "DHT.h" //cargamos la librería DHT

#define DHTPIN 2 //Seleccionamos el pin en el que se conectará el sensor

#define DHTTYPE DHT22 //Se selecciona el DHT22(hay otros DHT)

DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para

comunicarse con el sensor

void setup() {

  Serial.begin(9600); //Se inicia la comunicación serial

  dht.begin(); //Se inicia el sensor

}

void loop() {

  float h = dht.readHumidity(); //Se lee la humedad

  float t = dht.readTemperature(); //Se lee la temperatura

  //Se imprimen las variables

  Serial.println("Humedad: ");

  Serial.println(h);

  Serial.println("Temperatura: ");

  Serial.println(t);

  delay(2000); //Se espera 2 segundos para seguir leyendo //datos

Page 13: Mini proyecto con (sin) arduino

4

1

5

1

6

1

7

1

8

}

Pantalla LCD.

El objetivo de nuestra pantalla LCD será el indicar cuando nuestro ascensor sube o baja mostrando un mensaje en pantalla de “Suben” o “Bajan” según sea el caso indicado como anteriormente se ha intentado realizar.

El diagrama de ensamblaje sería el siguiente:

En donde incluimos un pequeño capacitor para nuestra pantalla y resistencias. Una vez realizado lo anterior procedo al código:

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);

void setup() { 

Page 14: Mini proyecto con (sin) arduino

  lcd.begin(16, 2);  lcd.setCursor(0,1);  lcd.write("Suben ");}

  lcd.begin(16, 2);  lcd.setCursor(0,1);  lcd.write("Bajan");

void loop() { }

Evidencia.

Al carecer del material suficiente como he indicado al principio del documento me veo en la necesidad de omitir este punto ya que no cuento con la herramienta necesaria para poder mostrarle imágenes de como hubiese quedado el proyecto una vez terminado y ensamblado como le señalé anteriormente.

Conclusión.

El proyecto ha quedado “terminado” y al “realizarlo” pude ir imaginando el como quería, que agregaría o que quitaría ya que como puede notarse no todos los componentes son necesarios dentro de este proyecto con (sin) Arduino y también el cómo debería presentar mejor mis trabajos. Pero al no poseer ninguna de esas cualidades es el motivo por el que escribo un poco entendiblemente para poder ser evaluado el día 9 de enero del 2015 si es que consigo una calificación aprobatoria.

Sin nada más que decir me despido con un cordial saludo.