1. Colegio de EstudiosCientíficosy
TecnológicosPlantel Tecámac
Asignatura:
Instala y Configura AplicacionesMóviles
Alumno:Noe AldairFrancisco Cruz
Profesor: René DomínguezEscalona
Mini Proyecto con (sin) Arduino
2. Introducción.
Realizareste 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 equipoestá utilizándolootra persona
decidí crear este documento con lo necesario para yo poder
realizar mi proyecto según como lo haría y en que
beneficiaríao que resultaría afectado.
Espero al no tener el material ni la documentación
suficiente que este trabajo vaya a valer menos de lo
indicadopero la verdad es que no quiero reprobar la
materia por eso es que lo hago además de conocer otras
formas de cómo utilizarel Arduino UNO.
Este documentoNO posee ningún video tutorial ya que,
como mencioné anteriormente no cuento con Arduino UNO
para realizarlo y en su lugar he reemplazadolo que sería la
evidenciapor imágenes y diagramas del cómo debería ser
armado y realizadoel proyecto.
Sin nadamás que decir y esperando acepte el trabajo
comienzo.
3. Objetivo.
El objetivode este proyecto con (sin) Arduino es el de crear
un elevadorcomo se ha intentadoanteriormente pero ésta
vez controladopor 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 intentarnadaque no pueda hacer y al creer que este
proyecto es sencillopor eso es por lo que me arriesgo a
intentarloy antesde una calificaciónde cero esperar alguna
décima extra o alguna calificaciónpara el proyecto y no
dejarlo como no entregado.
A pesar de haberloentregado fuera de tiempo me dispongo
a realizarlo para que si es que tengo una calificación
aprobatoriaen 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 posiblementeno cueste mucho
trabajo;incluyendolos 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.
4. Componentesy 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 ArduinoUNO
- Cable USB
- Un Protoboard y en caso de ser pequeña:dos.
- Motor a pasos bipolar
- Potenciómetro
- 4 Resistenciasde 10k
- 5 Resistenciasde 2k
- 1 Resistencia de 50k
- 2 Botones
- Luces LED
- LED Negro
- LED RGB
- Sensor de humedad DHT22
- PantallaLCD 1602ª
- Hilo resistente
- Poleas realizadasmanualmente
Al no poseer el material adecuadohe optadopor 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.
5. 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:
6. 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
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. 20
// Ponemos nombre al motor, el número de pasos y los pins de control
Stepper stepper(STEPS, 8, 9, 10, 11); //Stepper nombre motor (número de pasos por v
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.
7. 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.
8. Una vez realizado lo anterior paso a mostrar el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 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;
key[5] = 0xC738;
10. 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 paraled rojo
int bled = 10; // Pin PWM 10 para led azul
int gled = 9; // Pin PWM 9 para led verde
/*----Declaracion de variables auxiliares-----*/
int i; // Variable para ciclos repetitivos
int repeat = 5; // Variables paracantidad limite de repeticiones
void setup() {
/*----- Se inicializan pines PWM como salida*/
pinMode(rled, OUTPUT);
11. pinMode(bled, OUTPUT);
pinMode(gled, OUTPUT);
}
void loop() {
for(i=0; i<repeat; i++) //Se repitela 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 paramostrar 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.
12. 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
10
11
12
13
14
15
16
17
18
#include "DHT.h" //cargamos la librería DHT
#define DHTPIN 2 //Seleccionamos el pin en el que se conectará el sensor
#define DHTTYPEDHT22 //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
}
13. 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() {
lcd.begin(16, 2);
lcd.setCursor(0,1);
lcd.write("Suben ");
}
lcd.begin(16, 2);
lcd.setCursor(0,1);
lcd.write("Bajan");
void loop() { }
14. Evidencia.
Al carecer del material suficiente como he indicadoal
principiodel 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 terminadoy ensambladocomo le
señalé anteriormente.
Conclusión.
El proyecto ha quedado“terminado” y al “realizarlo” pude ir
imaginandoel como quería, que agregaría o que quitaría ya
que como puede notarse no todoslos 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 cualidadeses el motivo
por el que escribo un poco entendiblementepara poder ser
evaluadoel día 9 de enero del 2015 si es que consigo una
calificaciónaprobatoria.
Sin nadamás que decir me despido con un cordial saludo.