0% encontró este documento útil (0 votos)
74 vistas17 páginas

Taller 1 IOT Arduino Primer Corte

Este documento presenta un trabajo final para la asignatura de Internet de las Cosas. El trabajo es presentado por dos estudiantes de Ingeniería Industrial de la Universidad de Guadalajara Buga para el profesor Andrés Garzón. El trabajo consiste en varios ejercicios prácticos utilizando Arduino para controlar LEDs y medir temperatura con sensores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
74 vistas17 páginas

Taller 1 IOT Arduino Primer Corte

Este documento presenta un trabajo final para la asignatura de Internet de las Cosas. El trabajo es presentado por dos estudiantes de Ingeniería Industrial de la Universidad de Guadalajara Buga para el profesor Andrés Garzón. El trabajo consiste en varios ejercicios prácticos utilizando Arduino para controlar LEDs y medir temperatura con sensores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

Asignatura:

Electiva CP. (internet de las cosas)

Trabajo:
Trabajo final primer corte

Presenta:
Johan Andrés Arias Cadavid – 609880
Jean Pierre Londoño - 613049

Docente:
Andres Garzón Valencia

Ingeniería Industrial.
Semestre 9no. 2021-1

Guadalajara Buga, valle del cauca 24/03/2021


Lúdica No. 1 U
Universidad Uniminuto
Taller Arduino, Entradas y Salidas.

1. Encender una luz led.


Armar el siguiente diagrama.

Puedes usar una resitencia de 100, 200, 220 o 500 ohm, mejor dicho entre 100 y 600 ohms. coloca
en el IDLE de arduino el siguiente progama:
const int ledPIN = 9; void setup() {
Serial.begin(9600); //iniciar puerto serie pinMode(ledPIN , OUTPUT); //definir pin como salida
}
void loop(){
digitalWrite(ledPIN , HIGH); // poner el Pin en HIGH delay(1000); // esperar un segundo
digitalWrite(ledPIN , LOW); // poner el Pin en LOW delay(1000); // esperar un segundo
}
Responde las siguientes preguntas:
a. que guarda la variable ledPIN.
R// guarda un valor de 9 lo cual este número indica la salida de la tarjeta arduino a la que estoy
conectando mi circuito
b. En que instrucción permanece encendido el led
R// aparece cuando escribo la variable (HIGH)
c. Cambia los números de los delay (1000) y observa qué sucede.
R// se observa que al a aumentar los números se va a un mentar nuestros tiempos de encendido ya
que este tiempo son los milisegundos que dura encendido o a pagado nuestro led
2. ¿El siguiente código que hace con el mismo circuito?

R// con esta función puedo controlar más fácil la cantidad de tiempo que yo quiero que mi led este
encendido.
3. Quiero instalar otro Led usando el código del punto 1. ¿Qué debo hacer?
a. diagrama de conexiones.
b. Código del programa
R//
int led1 = 8;
int led2 = 9;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
//SE ENCIENDEN DE IZQUIERDA A DERECHA
digitalWrite(led1, HIGH);
delay(60);
digitalWrite(led1, LOW);
delay(60);
digitalWrite(led2, HIGH);
delay(60);
digitalWrite(led2, LOW);
delay(60);
}
c. Debes de hacer un programa como en el punto 2 que desde terminal digitando una letra el
usuario pueda apagar un led 1 o el 2 o ambos leds según la instrucción desde teclado que
configure para ello.

int valor1;
int ledR = 8;
int ledV = 9;
void setup(){
Serial.begin(9600);
Serial.println("Elija una de estos numeros: ");
Serial.println("1=para prender el LED rojo ");
Serial.println("2=para apagar el LED rojo");
Serial.println("3=para prender el LED verde ");
Serial.println("4=para apagar el LED verde ");
Serial.println("5=para prender los dos ");
Serial.println("6=para apagar los dos ");
pinMode(ledR , OUTPUT);
pinMode(ledV, OUTPUT);
}
void loop(){

if(Serial.available()>0){
//leer la opcion enviada
valor1=Serial.read();
//prender el LED rojo
if(valor1=='1'){
digitalWrite(ledR, HIGH);
Serial.println("LED ROJO ENCENDIDO");
}
//apagar el LED rojo
if(valor1=='2'){
digitalWrite(ledR, LOW);
Serial.println("LED ROJO APAGADO");
}
//prender el LED verde
if(valor1=='3'){
digitalWrite(ledV, HIGH);
Serial.println("LED VERDE ENCENDIDO");
}
//apagar el LED verde
if(valor1=='4'){
digitalWrite(ledV, LOW);
Serial.println("LED VERDE APAGADO");
}
//prender los dos LEDS
if(valor1=='5'){
digitalWrite(ledR, HIGH);
digitalWrite(ledV, HIGH);
Serial.println("LEDS ROJO Y VERDE ENCENDIDOS");
}
//apagar los dos LEDS
if(valor1=='6'){
digitalWrite(ledR, LOW);
digitalWrite(ledV, LOW);
Serial.println("LEDS ROJO Y VERDE APAGADOS");
}
}
}

4. Instalar el siguiente diagrama de conexiones.


y descargar al arduino el siguiente código:

// Declaracion de variables globales


float tempC; // Variable para almacenar el valor obtenido del sensor (0 a 1023)
int pinLM35 = 0; // Variable del pin de entrada del sensor (A0)

void setup() {
// Configuramos el puerto serial a 9600 bps
Serial.begin(9600);

void loop() {
// Con analogRead leemos el sensor, recuerda que es un valor de 0 a 1023
tempC = analogRead(pinLM35);

// Calculamos la temperatura con la fórmula


tempC = (5.0 * tempC * 100.0)/1024.0;

// Envia el dato al puerto serial


Serial.print(tempC);
// Salto de línea
Serial.print("\n");

// Esperamos un tiempo para repetir el loop


delay(1000);
}
a. Donde relaciono la variable con el pin del sensor de temperatura LM35?
R// se relaciona en el void loop, en la parte que se utiliza el analogRead para leer el sensor y
guardarlo en la variable tempC.
b. donde puedo variar la variable que toma el sondeo del valor cada 1 ms?
R// se puede variar en el delay(); aumentando el tiempo de espera de los milisegundos.
5.
a. el sensor LM35 que especificaciones tiene? (buscar en internet ficha técnica.

b. El siguiente programa varía la resolución del sensor:

//declaracion de variables globales


float tempC; //variable para almacenar el valor obtenido del sensor (0 a 1023)
int pinLM35=0; //variables del pin de entrada del sensor (A0)

void setup(){
//cambiamos referencia de las entradas analogicas
analogReference(INTERNAL);

//configuramos el puerto serail a 9600


Serial.begin(9600);
}

void loop(){
//con analogRead leemos e sensor, recuerda que es un valor de 0 a 1023
tempC = analogRead(pinLM35);

//CALCULAMOS LA TEMPERATURA CON LA FORMULA


tempC = (1.1*tempC*100.0)/1024.0;

//encio el dato al puerto serial


Serial.print(tempC);

//salto de linea
Serial.print("\n");

//esperamos un tiempo para repetir el loop


delay(1000);

}
¿Qué cambió hace este programa, qué se observa en el monitor serie?
El cambio que tiene este programa es que se le agregan una nueva función para cambiar referencia
de las entradas analógicas, y para calcular la temperatura es diferente la formula.
En el monitor serie se puede observar que los dos tienen el mismo comportamiento en la
temperatura sube y baja, la diferencia es que en el ejercicio 5 los datos son más ajustados que en el
ejercicio 4.
6. Este punto es el que más vale.
a. Realizar las conexiones para realizar un sensor de temperatura, con dos alarmas leds, alarma
por alta y alarma por baja, la alarma por alta después de los 30 grados y la alarma por baja
después de los 20 grados hacia abajo.
b. Realizar el código del programa.
//trabajo guardado como: ejemplo6b
// Declaracion de variables globales
float tempC; // Variable para almacenar el valor obtenido del sensor (0 a 1023)
int pinLM35 = 0; // Variable del pin de entrada del sensor (A0)
const int ledRojo = 5;
const int ledVerde =3;

void setup() {
// Configuramos el puerto serial a 9600 bps
Serial.begin(9600);
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);

}
void loop() {
// Con analogRead leemos el sensor, recuerda que es un valor de 0 a 1023
tempC = analogRead(pinLM35);

// Calculamos la temperatura con la fórmula


tempC = (5.0 * tempC * 100.0)/1024.0;

// Envia el dato al puerto serial


Serial.print(tempC);
// Salto de línea
Serial.print("\n");

// Esperamos un tiempo para repetir el loop


delay(1000);

if(tempC>=30){
digitalWrite(5,HIGH);
delay(500);
digitalWrite(5, LOW);
delay(500);
}
if(tempC<30){
digitalWrite(3,HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
}
}

7. Del diagrama anterior conseguir dos push botom pequeños como los de la imagen:

agregarlos al circuito, y que cuando presione uno anule una


alarma y cuando lo vuelva a presionar la habilite, por eso se
necesitan dos.

R// sin sensor

//trabajo guardado como: ejemplo7b prender los bombillos con los botones, pero sin mostrarle la
temperatura

int botom1 = 2;
int botom2 = 3;
int ledRojo = 6;
int ledVerde =5;
int estado1 = LOW;
int estado2 = HIGH;
void setup() {
// Configuramos el puerto serial a 9600 bps
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(botom1, INPUT);
pinMode(botom2, INPUT);
digitalWrite(ledRojo, LOW);
digitalWrite(ledVerde, LOW);
}
void loop() {
// Esperamos un tiempo para repetir el loop
delay(1000);
//esta condicion ingresa almenos 1 vez a comparacion del while
do{
estado1 = digitalRead(botom1);
estado2 = digitalRead(botom2);
}while(estado1==LOW && estado2==LOW);
if(estado1==HIGH){
digitalWrite(ledRojo, !digitalRead(ledRojo));
}
if(estado2==HIGH){
digitalWrite(ledVerde, !digitalRead(ledVerde));
}
//parte para que cuando se tenga precionado un botom este no traiga rebotes del otro, por la
pulsacion larga
do{
estado1 = digitalRead(botom1);
estado2 = digitalRead(botom2);
}while(estado1==HIGH || estado2==LOW);
}

R// con sensor


//trabajo guardado como: ejemplo7 este toma la temperatura, pero no toma el valor del boton rojo, y
para tomarla hay que presionar el boton para que de los valores.

float tempC; // Variable para almacenar el valor obtenido del sensor (0 a 1023)
int pinLM35 = 0;
int botom1 = 2;
int botom2 = 3;
int ledRojo = 6;
int ledVerde =5;
int estado1 = LOW;
int estado2 = HIGH;
void setup() {
// Configuramos el puerto serial a 9600 bps
Serial.begin(9600);
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(botom1, INPUT);
pinMode(botom2, INPUT);
digitalWrite(ledRojo, LOW);
digitalWrite(ledVerde, LOW);
}
void loop() {
tempC = analogRead(pinLM35);
// Calculamos la temperatura con la fórmula
tempC = (5.0 * tempC * 100.0)/1024.0;
// Envia el dato al puerto serial
Serial.print(tempC);
// Salto de línea
Serial.print("\n");
// Esperamos un tiempo para repetir el loop
delay(1000);
if(tempC>=30){
digitalWrite(5,HIGH);
delay(500);
digitalWrite(5, LOW);
delay(500);
}
if(tempC<30){
digitalWrite(3,HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
}
//esta condicion ingresa almenos 1 vez a comparacion del while
do{
estado1 = digitalRead(botom1);
estado2 = digitalRead(botom2);
}while(estado1==LOW && estado2==LOW);
if(estado1==HIGH){
digitalWrite(ledRojo, !digitalRead(ledRojo));
}
if(estado2==HIGH){
digitalWrite(ledVerde, !digitalRead(ledVerde));
}
//parte para que cuando se tenga precionado un botom este no traiga rebotes del otro, por la
pulsacion larga
do{
estado1 = digitalRead(botom1);
estado2 = digitalRead(botom2);
}while(estado1==HIGH || estado2==LOW);
}
8. Proponga un circuito a realizar para taller final, con esto haremos una lluvia de ideas.
(Favor investigar).
Materiales
 Placa Arduino UNO.
 El software Arduino IDE.
 Sensor magnético de alarma para puerta o ventana (puedes encontrarlo en comercios chinos
o en tiendas de electrónica).
 Pilas para el sensor magnético.
 Resistencia de 10K ohmios.
 Cable de cobre de un solo hilo rígido.
 LED Rojo.

Procedimiento

Para montar nuestra alarma, seguiremos los siguientes pasos. Pero primero me gustaría explicarte
un poco como va el sensor. Vemos que el sensor magnético consta de dos partes, una grande donde
se encuentra el altavoz, pilas y circuito que se detona en caso de abrir la puerta o ventana y otra
parte más pequeña que es un imán. Estas partes debemos colocarlas unidas en la puerta o ventana
donde queramos poner la alarma, el fabricante dará las instrucciones de montaje oportunas, pero
básicamente se trata de colocar la parte más grande de tal forma que esté en contacto con la pequeña
y la pequeña esté pegada a la puerta o ventana de tal forma que cuando se abra, ambas partes se
separen y detonen la alarma.

Una vez entendemos como funciona el sensor, vamos a conectar dos cables (de un solo hilo con los
extremos desnudos del material aislante para que hagan contacto) con los bornes positivo y negativo
de la caja donde se alojan las baterías del sensor magnético. Para ello deberemos quitar los tornillos
de la parte más grande del sensor y conectarlo de una manera sencilla.

Dichos cables se puentean con la resistencia de 10k, es decir, se unen sus extremos utilizando la
resistencia. Y del lado negativo de la resistencia (donde hayamos conectado el cable que viene del
extermo negativo de las pilas del sensor) sacamos una conexión para conectarla al pin GND de la
placa Arduino. En la imagen he representado dicha parte del sensor con la figura de un altavoz para
simplificarlo, pero debes saber que se trata de la parte mayor del conjunto del sensor
magnético.

Como tienes abierta la carcasa del sensor magnético, veras que en el circuito hay una especie de
elemento alargado similar a una resistencia plateada (es un interruptor de lengüeta). Es
inconfundible, ya que el circuito del sensor es bastante simple. También es sencillo de verificar que
es el elemento correcto puesto que tiene uno de sus extremos conectados al borne negativo de las
baterías. Pues bien, haremos una conexión con otro cable de hilo único al extremo que no va
conectado al terminal negativo de las pilas y lo uniremos al pin digital número 2 de Arduino.

Ahora colocaremos el LED rojo con su ánodo (terminal más largo) al pin número 13 de la placa
Arduino (E/S digitales). El cátodo del LED irá a la conexión GND cercana al pin 13. El montaje es
muy sencillo. Si en vez del LED queremos conectar cualquier otro dispositivo, puedes echarle
imaginación (cámara que realice una fotografía, luz, módulo GSM para realizar una llamada, etc).

Por último solo nos queda crear el sketch para programar Arduino. Para ello, una vez instalado
Arduino IDE, escribiremos este código y una vez terminado y con la placa Arduino conectada al PC
por USB, pasaremos el sketch haciendo clic en el botón que tiene forma de flecha hacia la derecha
(Cargar). En ese momento podremos comprobar su funcionamiento.

[cpp]
//Esquema para nuestra alarma simple con Arduino
const int sensorpin = 2; //Especificamos que el sensor ira unido al pin 2
const int ledpin = 13; //El pin 13 ira destinado para el LED
int estadosensor = 0; //Especificamos el estado inicial del sensor (apagado)
void setup()
{
pinMode(ledpin, OUTPUT); //Marcamos el pin del LED como salida
pinMode(sensorpin, INPUT); //El pin del sensor debe ser una entrada
}
void loop(){
estadosensor = digitalRead(sensorpin); //Leer el estado del sensor
//Si el estado es alto, es decir, si esta activado se encendera el LED de alarma
if (estadosensor == HIGH) {
digitalWrite(ledpin, HIGH);
}
else { //Mientras el sensor este apagado el pin estara apagado
digitalWrite(ledpin, LOW);
}
}
[/cpp]

Para no depender del PC, podemos conectar la placa Arduino a una fuente de alimentación
externa o utilizar pilas. Así el prototipo seguirá funcionando sin necesidad de la conexión USB y
de forma independiente.

También podría gustarte