0% encontró este documento útil (0 votos)
320 vistas66 páginas

Cuadernillo Sistemas Programables

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)
320 vistas66 páginas

Cuadernillo Sistemas Programables

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/ 66

CUADERNILLO

DE
ACTIVIDADES

“SISTEMAS
PROGRAMABLES”

“Ingeniería en Sistemas
Computacionales”

Martín Contreras de la Cruz


Zongolica, Ver a 7 de Agosto de 2020

1
CONTENIDO
Introducción
UNIDAD 1. SENSORES

Práctica 1. Encendiendo un foco


Práctica 2. Presionando un botón
Práctica 3. Leyendo la intensidad de luz
Práctica 4. Modificando la intensidad de la iluminación

UNIDAD 2. Actuadores

Práctica 5. Encendiendo un motor DC 5v


Práctica 6. Controlando un servomotor

UNIDAD 3. Microcontroladores

Práctica 7. RGB en la iluminación

UNIDAD 4. Programación de microcontroladores

Práctica 8. Usando el control de mi TV


Práctica 9. Controlando mi TV
Práctica 10. Apagando focos desde mi computadora
Práctica 11. Medidor de intensidad de luz C#

UNIDAD 5. Puertos y buses

Práctica 12. Mi control de juegos (<-- -->)

UNIDAD 6. Interfaces

Práctica 13. Un dato que viaja por Wifi

2
INTRODUCCIÓN
La tecnología ha avanzado de forma rápida y considerable, existen muchos procesos
automatizados programados para resolver necesidades específicas o que forman parte de
otros procesos, la diversidad de productos de sistemas de automatización para hogares ofrece
soluciones como la reducción y optimización del consumo energético.

El hombre desarrolla y adapta avances tecnológicos que antes no eran alcanzables en su


hogar: aumentar la seguridad y hacer un lugar más cómoda y de la mejora de la salud han
sido factores que han motivado este avance.

El presente cuadernillo tiene como finalidad mostrar un conjunto de prácticas con el hardware
Arduino que guíen al lector a la comprensión y fabricación de distintos sistemas programables
para su aplicación en las diferentes necesidades cotidianas. Se hace empleo de sensores en la
unidad 1, y de actuadores como el motor y el servomotor en la unidad 2, en la unidad 3 se
programan diversos ejemplos de circuitos que emplean microcontrolador, en la unidad 4 se
hacen uso de las estructuras de control que permite el lenguaje C++, en la unidad 5 se conoce
el funcionamiento de los puertos de comunicación particularmente USB, y en la 6 se hacen
prototipos que ofrecen interfaz de comunicación.

3
COMPETENCIA DE LA ASIGNATURA:
Aplica microcontroladores en el diseño de interfaces hombre—máquina y máquina - máquina de
sistemas programables

COMPETENCIAS ESPECÍFICAS POR UNIDAD:

UNIDAD I

• Aplica principios físicos y comprende transductores y sensores


• Analiza y sintetiza la función de los sensores
• diversos y sus aplicaciones.
• Aplica sensores de luz, temperatura y su relación con la variable
mensurable.
• Organiza y clasifica información proveniente de fuentes diversas.

UNIDAD II

• Aplica principios teóricos de electromagnetismo para analizar actuadores.


• Identifica y diferencia los actuadores eléctricos, mecánicos e hidráulicos.
• Explica con propiedad la función de los actuadores y el papel de estos en la
industria.
• Ensambla los circuitos respectivos empleando sensores y actuadores.

UNIDAD III

• Identifica las características eléctricas de un microcontrolador.


• Conoce la arquitectura interna del microcontrolador.
• Comprende la estructura de registros del microcontrolador.
• Analiza dispositivos de entrada/salida y puertos del microcontrolador.

UNIDAD IV

4
• Utiliza lenguajes ensambladores en la programación del microcontrolador.
• Programa microcontroladores utilizando puertos de E/S.
• Construye y comprueba circuitos con microcontrolador.

UNIDAD V

• Identifica y analiza los elementos esenciales de los puertos y buses de comunicación.


• Implementa aplicaciones que impliquen el manejo de puertos y buses de comunicación.

UNIDAD VI

• Conoce los diferentes módulos de adquisición de datos para su aplicación en el diseño


de interfaces de sistemas programables.
• Diseña y aplica interfaces hombre-máquina y máquina-máquina
• Propone y/o explica soluciones y procedimientos de diseño de interfaces.

5
Primeros pasos
Para entender el funcionamiento del hardware Arduino es necesario, realizar algunas prácticas que
permiten su manipulación.

1. Instalar IDE Arduino, descargable desde: https://www.arduino.cc/en/Main/Software


2. Conectar el Arduino a la computadora mediante el cable USB correspondiente

3. Abrir el IDE Arduino, ingresar al menú “Herramientas”->Placa->Arduino NANO o Arduino UNO


según la placa que poseas

4. Selecciona el puerto correspondiente en el mismo menú de herramientas.

6
NOTA: En caso de no detecta el puerto, desconectar y volver a conectar el Arduino.

Opciones Arduino
Son básicamente 2 botones los más utilizados en el IDE Arduino:

El primer botón permite compilar y revisar el código fuente, y el segundo permite subir el programa a
la placa arduino.
Es muy común utilizar solo el segundo botón que compila y sube a la placa al mismo tiempo.

7
“SENSORES” Práctica 1.
Encendiendo un foco

Objetivo

Se aprenderá el encendido y apagado de un foco led mediante la placa Arduino.

Materiales:
• 1 Arduino nano/uno
• 2 cables macho - hembra
• 1 Resistencia 330 Ohms (algunos proveedores escriben 330 R)
• 1 foco led

Diagrama de conexión:

GND Arduino – Cable negro se conecta a la pata corta del foco (cátodo - negativo)
Pin 13 Arduino – Cable rojo se conecta a una resistencia de 330ohms (la resistencias no tiene
polaridad por lo cual puede conectase en cualquier dirección) y el otro extremo de la resistencia
va a la pata larga del foco (ánodo - positivo).

Nota: Tanto el Arduino UNO y NANO cuentan con la misma cantidad de puertos de entrada y
salida digitales (13 en total) y analógicas (6); la ubicación de ellos cambia, solo es cuestión de
localizarlos.

8
Explicación teórica
Los focos led mas comunes son de 5mm, pero existen mas pequeños de 3 mm y mas grandes de
10mm. Estos focos son desde el punto de vista electrónico DIODOS emisores de LUZ.

Cuenta con 2 pines, uno mas lardo que otro. El más largo es POSITIVO (ánodo) y el corto es
negativo (cátodo). Si realizas la conexión de forma inversa, no encenderá.

La corriente normal que requieren esta entre 20 a 30 mA, y su consumo de voltaje es de 1.8 a
2.4V dependiente del color. Para más detalle puedes consultar el datasheet correspondiente.
https://components101.com/diodes/5mm-round-led

Una vez armado el circuito eléctrico mediante el protoboard y el arduino. Debemos ahora escribir
las instrucciones necesarias para que el foco realice la funcionalidad deseada, esta actividad se
realiza en el IDE Arduino.

Al ser esta la primera práctica es necesario explicar la estructura de un programa Arduino:

int led1; // antes de la función setup() podemos utilizar esta zona para
//declarar variables
int led2;

void setup()
{
// aquí realizamos la configuración inicial de variables
}
void loop()
{
//el código que se va a repetir de forma indefinida
}

Donde setup permite la configuración de carga del programa; el código dentro de esta función se
9
ejecutará UNA SOLA VEZ cada vez que se encienda el dispositivo Arduino.

Y la función loop es aquella función que se repetirá indefinidamente miles o millones de veces
según la velocidad del procesador. Es por ello importante codificar adecuadamente los programas
para aprovechar dicha funcionalidad.

El lenguaje de programación utilizado por Arduino es: C++

Las funciones utilizadas en esta práctica son:


pinMode()
digitalWrite()
delay ()

Ver explicación detallada: https://www.prometec.net/funciones1/

Código

int led = 13; // Declaramos una variable que indica que puerto arduino usaremos
void setup() {
// Indicamos que el puerto 13 será salida de voltaje
pinMode(led, OUTPUT);
}

void loop() {
digitalWrite(led, HIGH); // Mandamos voltaje al puerto 13 (ENCENDEMOS)
delay(1000); // detenemos el loop por 1000 milisegundos (1 segundo)
digitalWrite(led, LOW); // Quitamos el voltaje al puerto 13 (APAGAMOS)
delay(1000); // detenemos el loop por 1 segundo
}

Resultado
- Un foco que enciende y apaga cada segundo, si por la función delay el funcionamiento del
loop es tan rápido que el foco nunca se vería encendido.

10
Prácticas propuestas

1. Conectar 2 focos LED que mientras el primero enciende el segundo apaga.


2. Conectar 3 focos LED y simular el funcionamiento de un semáforo.
3. Conectar 5 focos led para ir encendido uno a uno hasta encender todos y después ir
apagando uno a uno hasta apagar todos (el efecto se muestra en los primeros 10 segundo del
video https://www.youtube.com/watch?v=5-glxB2-hFM )
4. Conectar 7 focos led para crear un display de 7 segmentos, un buen video es el siguiente
https://www.youtube.com/watch?v=xwL4EoiB8II

11
“SENSORES” Práctica 2.
Presionando un botón

Objetivo
Probar el funcionamiento de un botón y realizar la lectura cuanto éste es presionado, para realizar
alguna operación especifica.

Materiales:
• 1 Arduino nano/uno
• Cables dupont Macho-hembra
• 1 Resistencia 4.7 KiloOhms (4k7)
• 1 botón

Diagrama de conexión:

DIAGRAMA 1. Probando el botón sin código ( el pulsador o botón funciona como un apagador que
permite el paso de corriente mientras esta presionado)

12
DIAGRAMA 2. Lectura del bóton mediante Arduino

GND Arduino – Cable negro se conecta a la resistencia


5V Arduino – Cable Rojo se conecta a una pata del botón según el diagrama
Pin 2 Arduino – Cable amarillo se conecta entre la resistencia y la pata del botón

Explicación teórica
Existen dos formas de conectar el botón para la lectura del valor, a continuación se muestra el
diagrama eléctrico correspondiente, para más detalle del funcionamiento consulta la siguiente
página: https://www.luisllamas.es/leer-un-pulsador-con-arduino/

13
Dependiendo de la conexión se leerá el valor de HIGH (presionado) y de LOW (sin presionar) o la
Inversa.

El comportamiento del botón y sus características técnicas puedes verlas en:


https://components101.com/switches/push-button

La función Serial.begin (permite visualizar en pantalla mediante el monitor serial los valores
escritos por Serial.println() )

Código
int inputPin = 2;
int value = 0;

void setup() {
Serial.begin(9600);
pinMode(inputPin, INPUT);
}
void loop(){
value = digitalRead(inputPin); //lectura digital de pin
//mandar mensaje a puerto serie en función del valor leido
if (value == HIGH) {

14
Serial.println("Encendido");
}
else {
Serial.println("Apagado");
}
delay(1000);
}

Resultado

Mensajes dependiendo si se presionó o se dejo de presionar el botón.

15
Prácticas propuestas

1. Encender un foco LED cuando el botón este presionado


2. Encender y mantener encendido un foco LED hasta presionar el botón, y apagar y mantener
apagado el LED hasta que se vuelva a presionar el botón (funcionando como un interruptor
digital)
3. Realizar un contador de pulsaciones del botón
4. Conectar 2 botones y 4 focos LED: el primer botón deberá ir encendiendo focos y el segundo
deberá ir apagando focos
5. Crear una contraseña digital BINARIA (donde el primer botón vale 0 y el segundo 1), así si la
contraseña es 00100 para encender un foco LED se deberá presionar dos veces el primer
botón una vez el segundo y dos veces nuevamente el primero.

16
“SENSORES” Práctica 3.
Leyendo la intensidad de luz

Objetivo
Realizar la lectura del valor de la intensidad de la iluminación mediante una fotoresistencia

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de entre 10 a 22 KiloOhms (10k a 22k)
• 1 foco led
• 1 botón

Diagrama de conexión:

La lectura se realiza mediante el Puerto A0.

Explicación teórica
Puedes consultar en estas páginas el funcionamiento:
https://www.luisllamas.es/medir-nivel-luz-con-arduino-y-fotoresistencia-ldr/
https://aprendiendoarduino.wordpress.com/tag/fotoresistencia/
17
Es importante recordar que no es recomendable esta tocando con los dedos la parte superior de
la fotoresistencia pues va perdiendo sensibilidad, para hacer pruebas cubrirlo con ropa o algún
material oscuro.
El sensor no tiene polaridad es indistinto su forma de conexión.
El rango de valores va de 100 ohms a 1MegaOmh o más dependiendo del modelo.

Cuando los datos son leídos por el arduino, el valor devuelto siempre ira de 1 a 1024, para obtener
el valor de resistencia tendría que aplicarse una regla de 3.

1024 es a 1000 Ohms


Valor es a _________

Código

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

void loop() {
int valor = analogRead(A0);
Serial.println(valor);
delay(500);
}

Resultado
Se deberá mostrar el valor devuelto por sensor en el monitor serie

18
Prácticas propuestas

1. Encender un foco led cuando haya oscuridad (poner una barrera o distancia entre el led y la
fotoresistencia para no ciclar la lectura)
2. Conectar 4 focos LED, realizar la lectura de la intensidad de luz (valor):
a. Apagar todos los focos cuando haya mucha luz (valor mayor a 900)
b. Encender 1 foco cuando el valor sea mayor a 600
c. Encender 2 focos cuando el valor sea mayor a 400
d. Encender 3 focos cuando el valor no superé los 400
Haciendo el efecto de ir encendiendo o apagando según la luz
3. Medir la intensidad de luz de:
a. Un cerillo
b. El brillo del dia a las 1 pm
c. El brillo del dia a la 8 pm
d. El brillo de la noche a las 10 pm
e. El brillo de los focos dentro de tu casa
4. Conectar 1 foco led que de noche debe estar parpadeante y de día debería estar encendido
constante.

19
“SENSORES” Práctica 4.
Modificando la intensidad de la iluminación

Objetivo
Que el alumno aprenda el funcionamiento de un potenciómetro, la lectura de su valor desde
Arduino y controle la iluminación de un foco led mediante PWM.

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de 330 Ohms
• 1 foco led
• 1 potenciometro

Diagrama de conexión:

DIAGRAMA 1. Prueba del funcionamiento de un potenciometro sin Código (girar para ver el
resultado)

DIAGRAMA 2. Lectura del valor de un potenciometro mediante Arduino y empleo para modificar
intensidad de un foco LED

20
Explicación teórica
Un potenciómetro es también conocido como resistencia variable (siendo esta su principal
función), está compuesto de 3 pines y una perilla que puedes girar en ambas direcciones, existen
de diversos tipos algunos y tamaños. Un potenciómetro tiene un valor asignado en Ohms y al
girar la perilla se incremente o decrementa el valor entre 0 y el valor máximo.

Es utilizado mayormente para el control de volumen, para moverse a través de un menú de


opciones en un autoestéreo o para subir o bajar velocidad de un motor eléctrico.
Para conocer mas a detalle https://www.luisllamas.es/lectura-de-un-potenciometro-con-arduino/

Para realizar la lectura utilizamos el puerto analógico A0 mediante la función “analogRead()”

Controlar la intensidad de un foco LED requiere indicar valores intermedios al momento de enviar
salida a un puerto de arduino, hasta el momento solo hemos utilizado HIGH y LOW (máximo y
mínimo o 255 y 0). Arduino posee algunos puertos que tienen la capacidad de recibir valores
intermedios de salida, éstos están indicados por un ~

21
Código

const int analogPin = A0;


int value; //variable que almacena la lectura analógica raw
int led= 6; // puerto arduino PWM

void setup() {
pinMode(led, OUTPUT);
}

void loop() {
value = analogRead(analogPin); // realizar la lectura analógica raw

if (value<200) { // Apagar completamente


digitalWrite(led,0);
}
else if (value<500) { // encender al 30%
digitalWrite(led, 85); // Como el máximo es 255 lo dividimos entre 3
}
22
else if (value<700) { // encender al 60%
digitalWrite(led,170);
}
else { // Encendido al 100%
digitalWrite(led,255); // Máximo
}
delay(10);
}

Resultado
Al ir girando la perilla se podrá observar de forma clara el cambio de intensidad de luminosa del foco LED.

Prácticas propuestas

1. Mediante la conexión de 5 focos, ir encendiendo o apagando cada uno de ellos dependiendo


de la posición del potenciómetro.
2. Mostrar diversos mensajes através del monitor serie dependiendo de la posición del
potenciómetro. Por ejemplo los días de la semana.

23
“ACTUADORES” Práctica 5.
Encendiendo un motor DC 5v
Objetivo
Conocer el funcionamiento básico de un motor de DC y su operación mediante arduino con apoyo
de un transistor NPN

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de 100 Ohms
• 1 motor de 5V
• 1 relevador DC de 5V
• 1 transistor NPN 2N2222
• Fuente de alimentación externa de 5 a 9 V 8 (Cuatro pilas AA o un de 9V)

Diagrama de conexión:

Explicación teórica
De acuerdo a la siguiente página: https://tostatronic.com/store/es/motores/101-motor-corriente-
directa-cd-a-5v.html

Un motor de corriente continua convierte la energía eléctrica en mecánica. Se compone de


dos partes: el estator y el rotor.

El estator es la parte mecánica del motor donde están los polos del imán.

24
El rotor es la parte móvil del motor con devanado y un núcleo, al que llega la corriente a
través de las escobillas.

Si queremos cambiar el sentido de giro del rotor, tenemos que cambiar el sentido de la
corriente que le proporcionamos al rotor; basta con invertir la polaridad de la pila o batería.

Para controlar un motor con arduino es necesario contar con la corriente de energía necesario
para moverlo, lamentablemente arduino por si solo ofrece máximo 40 mA. Por ello es necesario
tener una fuente de alimentación externa que ofrezca dicha energía.

Es importante, MUY IMPORTANTE, cuando utilices una fuente externa más la energía del arduino
es necesario UNIR GND o TIERRA para evitar QUEMAR nuestro arduino.

Para controlar el encendido y apagado de un motor vamos a utilizar un transistor NPN 2N2222 y
un relevador de energía eléctrica de 5V DC. El primero permite el paso de GND al relevador para
abrir el circuito y el relevador a su VEZ permite el paso de energía de la fuente externa al motor.

Para mover al sentido contrario el motor es necesario invertir la polaridad, para ello será
necesario utilizar otro componente llamado PUENTE H o bien adquirir un modulo de este tipo
https://electrocrea.com/products/puente-h-l298n

Como funciona el transistor, puedes verlo aquí:


https://www.taringa.net/+ciencia_educacion/como-funciona-un-transistor-completo_hwnxr

Como funciona un relevador


https://cdmxelectronica.com/producto/relevador-5v-dc-srd-5vdc-sl-c/

Código

int motor=6;

void setup() {
pinMode(motor, OUTPUT);
}

void loop() {
digitalWrite(motor,HIGH);
delay(4000);
digitalWrite(motor,LOW);

25
delay(4000);
}

Resultado
El motor electrico funcionará por 4 segundas y se detendra el mismo tiempo.

Prácticas propuestas

1. Mover un cochecito hacia adelante


2. Ventilador programable

26
“ACTUADORES” Práctica 6.
Controlando un servomotor
Objetivo
El alumno utiliza el hardware arduino para realizar movimientos mediante un servomotor SG90

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 servomotor SG90

Diagrama de conexión:

Explicación teórica
Un servomotor está compuesto por un mecanismo giratorio muy preciso, que permite maniobrar
el componente a una cierta cantidad de grados, logrando levantar cosas, empujar o dibujar según l
aplicación que quiera darle. Existen de diferentes tamaños siendo su principal diferencia la
cantidad de fuerza o peso que pueden ofrecer o soportar.
https://www.zonamaker.com/arduino/modulos-sensores-y-shields/control-de-servomotores-con-
arduino

Son controlados por el arduino de forma directa, y se usa la librería “Servo.h”


27
El ángulo soportado por el SG90 es de 0 a 180º indicados por los valores -90 a 90, es importante
siempre observarlos en las especificaciones del hardware.
http://www.ee.ic.ac.uk/pcheung/teaching/DE1_EE/stores/sg90_datasheet.pdf

Código

#include <Servo.h> //Librería para usar sevos

Servo servo1; //Crea un objeto servo que se llama servo1

void setup()
{
servo1.attach(11); //Asociamos el servo al puerto 11 de Arduino PWM
}

void loop()
{
servo1.write(-90);
delay(2000);
servo1.write(0);
delay(2000);
servo1.write(90);
delay(2000);
servo1.write(0);
delay(2000);
}

Resultado
El servo motor se moverá de izquierda derecha y viceversa.

Prácticas propuestas

3. Un sistema de movimiento de un detector de luz


4. Un sistema de apertura de garaje (para un prototipo en cartón)
5. Un brazo de entrada y salida de vehículos

28
“MICROCONTROLADORES” Práctica 7.
RGB en la iluminación
Objetivo
Mediante el uso de un led RGB imprimir colores utilizando arduino

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 3 Resistencia de 220 ohms
• 1 foco led RGB

Diagrama de conexión ánodo común:

Explicación teórica
29
Existen dos tipos de led RGB: de ánodo común y de cátodo común

De allí es importante, identificar cual es el que posees en tus manos, para realizar dicha
comprobación conecta de la siguiente forma:

En caso de encender tienes un RGB de ánodo común, en caso contrario tienes un RGB de cátodo
común.

Para el caso de cátodo común, el único cambio que debe realizarse es conectar el común a GND. Y
en el código para dar soporte a ambos LEDs en la página
http://arduinocostarica.blogspot.com/2015/01/ejemplo-20-led-rgb-de-anodo-comun.html
Se crea una función llamada:

void definirColor(int rojo, int verde, int azul, boolean anodoComun)

pasando como parámetros el valor de cada color (entre 0 y 255), y si es anodoComún mediante
30
false o true.

Código

int pinRojo = 11;


int pinVerde = 10;
int pinAzul = 9;

void setup()
{
pinMode(pinRojo, OUTPUT);
pinMode(pinVerde, OUTPUT);
pinMode(pinAzul, OUTPUT);
}

void loop()
{
definirColor(255, 0, 0,true); // rojo
delay(1000);
definirColor(0, 255, 0,true); // verde
delay(1000);
definirColor(0, 0, 255,true); // azul
delay(1000);
definirColor(255, 255, 0,true); // amarillo
delay(1000);
definirColor(80, 0, 80,true); // purpura
delay(1000);
}

void definirColor(int rojo, int verde, int azul, boolean anodoComun)


{
if(anodoComun == true)
{
rojo = 255 - rojo;
verde = 255 - verde;
azul = 255 - azul;
}

31
analogWrite(pinRojo, rojo);
analogWrite(pinVerde, verde);
analogWrite(pinAzul, azul);
}

Resultado
Diversos colores definidos desde código

Prácticas propuestas

1. Imprimir 5 colores de la siguiente tabla https://www.cdmon.com/es/tabla-colores


2. Simular el funcionamiento de un semáforo
3. Imprimir todos los colores posibles mediante ciclos FOR
4. Mediante potenciómetros modificar el valor de cada color y crear nuevos colores.

32
“Programación de microcontroladores”
Práctica 8.
Usando el control de mi TV. PARTE I Leyendo
valores infrarrojos

Objetivo
Mediante el sensor Receptor De Infrarrojos 1838b se pueda realizar la detección de un control
remoto ordinario de TV para realizar acciones especificar con Arduino.

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de 100 ohms o valor cercano.
• 1 sensor de infrarrojos 1838b

Diagrama de conexión:

Los pines del sensor de infrarrojos pueden verse en este diagrama.


Y la forma de conexión con arduino es el siguiente:

33
Explicación teórica
La explicación completa del sensor la pueden encontrar en esta página:
https://naylampmechatronics.com/blog/36_Tutorial-Arduino-y-control-remoto-Infrarrojo.html
y además ejemplos y código del uso del sensor.

Este sensor permite la lectura de diversos dispositivos infrarrojos, como controles de TV,
componentes de audio, DVDs, etc.

El objetivo principal, es que mediante la lectura de valores de los botones de tu control remoto
puedas COPIARLOS para que después realices alguna acción con Arduino.

Los códigos dependiendo del tipo de control pueden venir con un valor en BIT diferente ( 16 y 32
bits son lo más común ). También podrás ver el código en HEXADECIMAL y BINARIO. Los dos
valores que debes GUARDAR para usarlos mas adelante son los bits y el HEXADECIMAL

Código (tomado de naylampmechatronics.com)

#include <IRremote.h>
int RECV_PIN = 3;

IRrecv irrecv(RECV_PIN);

decode_results results;

34
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Empezamos la recepción por IR
}

void dump(decode_results *results) {


// Dumps out the decode_results structure.
// Call this after IRrecv::decode()

Serial.print("(");
Serial.print(results->bits, DEC);
Serial.print(" bits)");

if (results->decode_type == UNKNOWN) {
Serial.print("Unknown encoding: ");
}
else if (results->decode_type == NEC) {
Serial.print("Decoded NEC: ");

}
else if (results->decode_type == SONY) {
Serial.print("Decoded SONY: ");
}
else if (results->decode_type == RC5) {
Serial.print("Decoded RC5: ");
}
else if (results->decode_type == RC6) {
Serial.print("Decoded RC6: ");
}
else if (results->decode_type == PANASONIC) {
Serial.print("Decoded PANASONIC - Address: ");
Serial.print(results->address, HEX);
Serial.print(" Value: ");
}
else if (results->decode_type == LG) {
35
Serial.print("Decoded LG ");
}
else if (results->decode_type == JVC) {
Serial.print("Decoded JVC ");
}
else if (results->decode_type == AIWA_RC_T501) {
Serial.print("Decoded AIWA RC T501 ");
}
else if (results->decode_type == WHYNTER) {
Serial.print("Decoded Whynter ");
}
Serial.print(results->value, HEX);
Serial.print(" (HEX) , ");
Serial.print(results->value, BIN);
Serial.println(" (BIN)");

void loop() {
if (irrecv.decode(&results)) {
dump(&results);
irrecv.resume(); // empezamos una nueva recepción
}
delay(300);
}

Resultado
Se deberá mostrar el valor devuelto por sensor en el monitor serie

36
Usando el control de mi TV. PARTE II.
Encendiendo un foco con mi control remoto
Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de 100 ohms o valor cercano.
• 1 sensor de infrarrojos 1838b
• 1 foco led
• 1 resistencia entre 100 a 500 ohms para el led

Diagrama de conexión

37
Se agrega un led al Arduino conectado al PIN 4, y al GND con una resistencia.

Código
En el código se encuentran marcados en amarillo los códigos HEXADECIMALES utilizados por mis
pruebas, reemplazarlos por los que ustedes copiaron o guardaron de la actividad de lecturas de
valores.

#include "IRremote.h"
int receiver = 3;

IRrecv irrecv(receiver);
decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(4, OUTPUT);
}

void loop()
{
38
if (irrecv.decode(&results))

{
switch(results.value)
{
case 0x05FF00E6:
digitalWrite(4, !digitalRead(4));
Serial.println("Tecla 1 presionada");
break;
case 0x00FF11AA:
Serial.println("Tecla 2 presionada");
break;
}
irrecv.resume();
}
delay(300);
}

Resultado
El foco debería encender presionando el botón del control remoto de tu TV, y en el monitor serie
aparecería Tecla 1 presionada, en el caso del segundo valor solo aparecería Tecla 2 presionada.

Ejercicios propuestos
1. Encender varios focos a la vez con un solo botón
2. Controlar el color de un foco RGB enviando números desde el control remoto
3. Controlar la velocidad de un motorreductor

39
“Programación de microcontroladores”
Práctica 9.
Controlando mi televisor

Objetivo
Mediante un LED infrarrojo enviar mensajes infrarrojos a un televisor mediante códigos
HEXADECIMALES anteriormente leídos/definidos/capturados.

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de 100 ohms o valor cercano.
• 1 LED INFRARROJO

Diagrama de conexión:

40
Explicación teórica
Una vez contando con los códigos HEXADECIMALES y NUMERO DE BITS del control remoto.
Mediante IRremote es posible enviar dichas codificaciones mediante un LED infrarrojo hacia
cualquier aparato que cuente con esta tecnología.

Es importante aprender a distinguir el LED INFRARROJO de un LED COMÚN, casi siempre el


infrarrojo tiene los PINES mas largos que el led común. Debes observar ese detalle, pues al hacer
funcionar el circuito el infrarrojo emite una luz que no es visible por el ojo humano y parecerá que
no funciona.

Esto se logra utilizando la misma librería utilizada en la práctica 8.


#include <IRremote.h>

Se declara una variable de envío


IRsend irsend;

y se envía el código indicando el hexadecimal, y el número de bits


irsend.sendNEC(0xA90FA, 32);

IMPORTANTE, EL POSITIVO DEL INFRARROJO DEBE IR CONECTADO AL PIN 3, ESTO ESTA


DECLARADO DE FORMA PREDETERMINADA POR LA LIBRERÍA.

Código
LO QUE HACE ESTE CODIGO ES: Enviar cada 5 segundos una señal 3 veces separados por 40
milisegundos para asegurar que el receptor lea la señal.
41
/*
* IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
* An IR LED must be connected to Arduino PWM pin 3.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/

#include <IRremote.h>

IRsend irsend;

void setup()
{
}

void loop() {
for (int i = 0; i < 3; i++) {
irsend.sendNEC(0xA90, 32);
delay(40);
}
delay(5000); //5 second delay between each signal burst
}

Resultado
Basado en el código hexadecimal indicado en “sendNEC” esta señal se enviará y si el aparato
electrónico lo reconoce ejecutará una acción. Por ejemplo: encender TV, subir volumen, cambiar
canal, etc.

42
“Programación de microcontroladores”
Práctica 10.
Apagando focos desde mi computadora

Objetivo
Mediante un lenguaje de programación y la conexión USB desarrollar una interfaz para apagar y
encender focos LED.

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de 100 ohms o valor cercano.
• 1 led

Diagrama de conexión:

43
Explicación teórica
La comunicación entre el ARDUINO y EL LENGUAJE DE PROGRAMACIÓN C# será a través del
puerto SERIE (conexión USB), dicha conexión dentro de la placa Arduino esta controlado usando
los pines 0 (RX - Receptor) y 1 (TX - Transmisor). Es por eso que pocos tutoriales utilizan dichos
PINES, y si los asignas a otro fin, no podrás conectarte por este puerto.

El lenguaje C# viene incluido dentro de paquete de herramientas de Microsoft Visual Studio, y


permite desarrollar aplicaciones de escritorio (desktop).

El código en Arduino es muy simple. Pero es importante observar que se inicializa la comunicación
serial igual que lo hacemos para cuando deseamos imprimir al monitor serie (de allí el nombre), es
importante anotar y recordar la taza de transferencia indicada, comúnmente 9600.

En el loop se pregunta constantemente si hay datos en el puerto serie


Serial.available()

En dicho caso, se pueden leer letra por letra mediante


Serial.read(); // Devuelve un carácter

Si el carácter es igual a ‘a’ entonces apagar FOCO


Si el carácter es igual a ‘b’ entonces encender FOCO

En la sección de procedimiento en C# observar claramente la siguiente línea


ArduinoPort.PortName = "COM4"; //sustituir por nuestro
Donde debemos poner el nombre del puerto donde está conectado Arduino, puedes revisarlo en
el IDE Arduino.

Y podremos ver que para mandar información al puerto serie se usa


ArduinoPort.Write("a");
Enviando “a”o “b” según el botón.

Código

const int pinLED = 9;

void setup()
{

44
Serial.begin(9600);
pinMode(pinLED, OUTPUT);
}

void loop() {
if (Serial.available() > 0)
{
int option = Serial.read();
if (option == 'a')
{
digitalWrite(pinLED, LOW);
}
if (option == 'b')
{
digitalWrite(pinLED, HIGH);
}
}
}

Procedimiento en C#

Tomado de: https://www.luisllamas.es/comunicar-arduino-con-c/

En este ejemplo vamos a hacer un formulario simple con dos botones de ON y OFF, que nos
permitirán encender el LED integrado en la placa de Arduino, conectado al Pin9.

En primer lugar arrancamos Visual Studio, y creamos un nuevo proyecto de C#. Para ello pulsamos
en File/New/Project.

Elegimos el template "Windows Form Application", la ubicación en la que queremos guardarlo en


nuestro disco duro y como nombre del proyecto "BasicSerialPort".

45
Se abrirá un formulario vació, que será la ventana principal de nuestro ejemplo. Arrastramos
desde el Toolbox dos botones hasta nuestro formulario, y los ponemos uno encima del otro.

Ahora empleamos la barra de propiedades para cambiar el texto y el nombre tanto de los botones
como del formulario.

46
Dejamos los valores como muestra la siguiente tabla.

Elemento Name Text


Formulario frmMain Basic C#
Boton ON btOn ON
Boton OFF btOff OFF

Ahora, pulsamos F7 encima del formulario para acceder al código (o pulsamos con el botón
derecho y elegimos "View code").

47
Reemplazamos todo el código por el siguiente.

using System;
using System.Windows.Forms;

namespace BasicSerialPort
{
public partial class frmMain : Form
{
System.IO.Ports.SerialPort ArduinoPort;

public frmMain()
{
InitializeComponent();

//crear Serial Port


ArduinoPort = new System.IO.Ports.SerialPort();
ArduinoPort.PortName = "COM4"; //sustituir por nuestro
ArduinoPort.BaudRate = 9600;
ArduinoPort.Open();

48
//vincular eventos
this.FormClosing += FrmMain_FormClosing;
this.btOFF.Click += BtOFF_Click;
this.btON.Click += BtON_Click;
}

private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)


{
//cerrar puerto
if (ArduinoPort.IsOpen) ArduinoPort.Close();
}

private void BtOFF_Click(object sender, EventArgs e)


{
ArduinoPort.Write("a");
}

private void BtON_Click(object sender, EventArgs e)


{
ArduinoPort.Write("b");
}
}
}

Recuerda sustituir el puerto serie del código, en el ejemplo "COM4", por el puerto serie en el que
tengas conectado Arduino.

Resultado
Una aplicación de escritorio con 2 botones, que al ser presionados apagan o prenden un LED
conectado al Arduino.

49
“Programación de microcontroladores”
Práctica 11.
Medidor de intensidad de luz C#

Objetivo
Mediante una interfaz gráfica con C# mostrar la intensidad de luz detectada por una fotoresistencia
con Arduino.

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Resistencia de 10 Kohms o valor cercano.
• 1 fotoresistencia

Diagrama de conexión:

Explicación teórica
En esta práctica se demuestra que mediante la instrucción Serial.println (que hasta ahora hemos
50
utilizado para mandar mensajes a la computadora y observarlos mediante el “famoso” monitor
serie) podemos leer dichos mensajes pero ahora a través de un lenguaje de programación y
modificarlos al gusto.

El código y funcionamiento en el Arduino no requiere mucha explicación pues es idéntico al


utilizado en prácticas iniciales.

En C# se hace uso de la clase “SerialPort” que viene incluida en el espacio de nombres:


System.IO.Ports; la cual permite crear un objeto que es capaz de entablar una comunicación
directa con una conexión serial. Los parámetros a configurar son los ya conocidos:
- Nombre del puerto - PortName: COM1, COM2, etc. Lo que te indique tu arduino
- Velocidad de transferencia – BaudRate: 9600

Es importante revisar que coinciden con los datos en el IDE de Arduino.

En C# se utilizan dos controles específicos: un Timer que permite realizar una acción cada cierto
tiempo (configurado por la propiedad Interval) y un ProgressBar para mostrar visualmente la
cantidad de luz u oscuridad de un sensor de luminosidad.

Los links que puedes consultar para más información son:


https://www.estadofinito.com/arduino-logger/
https://nomadaselectronicos.wordpress.com/2013/01/11/puerto-serial-en-c-para-no-
programadores/

Código Arduino

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

void loop() {
int valor = analogRead(A0);
Serial.println(valor);
delay(330);
}

Código C#

using System;

51
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace LeerFotoresistencia
{
public partial class Form1 : Form
{
SerialPort ArduinoPort;

public Form1()
{
InitializeComponent();

String[] Puertos = SerialPort.GetPortNames();


foreach (String Mostrar in Puertos)
{
comboBox1.Items.Add(Mostrar);
}
}

private void button1_Click(object sender, EventArgs e)


{
timer1.Enabled = false;

ArduinoPort.Close();
ArduinoPort.Dispose();
//crear Serial Port
ArduinoPort = new System.IO.Ports.SerialPort();
ArduinoPort.PortName = comboBox1.Text;

52
ArduinoPort.BaudRate = 9600;
ArduinoPort.Open();
CheckForIllegalCrossThreadCalls = false;
if (ArduinoPort.IsOpen == true)
{
MessageBox.Show("Conectado a arduino!");
timer1.Enabled = true;
}
else
{
MessageBox.Show("El puerto seleccionado NO ES de Arduino");
return;
}
}

private void timer1_Tick(object sender, EventArgs e)


{
string dato = ArduinoPort.ReadExisting();
int valor = Int32.Parse(dato);
progressBar1.Value = valor;
}
}
}

Procedimiento C#
Paso 1. Debes crear un nuevo proyecto de Windows Forms en C#

|
53
Paso 2. Deberás crear la siguiente interfaz en el formulario, con los siguientes controles:

• Dos etiquetas (label) una para el texto “Puerto” y otra para “Nivel de luz”
• Una lista desplegable (Combobox) para mostrar los puertos activos de la computadora
• Un botón (Button) para realizar la conexión
• Una barra de progreso (ProgressBar) para mostrar la cantidad de luz, modificar las
propiedades: Minimum a 0 y Maximun a 1024
• Un control de tiempo (Timer) para monitorear cada cierto tiempo la conexión serial,
modificar el valor de la propiedad Interval a 330 (son milisegundos).

Paso 3. Copiar el código anexo C#

Resultado
Una aplicación tipo escritorio que se conecta a un Arduino y que lee cada 330 milisegundos el
valor de la fotoresistencia, mostrando gráficamente mediante un control tipo barra la cantidad de
luz existente.

54
“Puertos y buses”
Práctica 12.
Mi control de juegos (<-- -->)
Objetivo
Que el alumno mediante el empleo de botones push button pueda crear una control personalizado
para jugar video juegos en la computadora utilizando la interfaz serial.

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 2 resistencias de 220 Kohms.
• 2 Push button

Diagrama de conexión:

55
Explicación teórica
En este ejercicio se hace uso de la conexión serial para el envió de datos de Arduino a la
computadora.
Se utilizan las instrucciones:
Serial.begin(9600); // Para la inicialización de la comunicación

Serial.println(“a”); // Para el envío de la información que representa a la tecla presionada

Y desde el otro lado, mediante C# recibimos dicha información mediante la librería


System.IO.Ports; que permite el uso de los puertos y la librería “SendKeys” para emular el teclado
desde código.
https://docs.microsoft.com/es-es/dotnet/api/system.windows.forms.sendkeys.send?view=net-5.0
por ejemplo para pulsar “a” se debe escribir:
SendKeys.Send("a");

Una vez realizada la conexión entre la aplicación C# con el puerto donde esta instalado el Arduino,
puede abrirse el juego en primer plano y podremos presionar los push button haciendo las
acciones que haría la tecla física en el teclado.

Código Arduino

const int boton1 = 2;


const int boton2 = 4;

void setup()
{
pinMode(boton1, INPUT);
pinMode(boton2,INPUT);
}

void loop()
{
if (digitalRead(boton1) == HIGH) {
Serial.println(“a”);
delay(200);
}
if (digitalRead(boton2) == HIGH) {
Serial.println(“b”);
56
delay(200);
}
delay(5);
}

Código C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace ControlJuego
{
public partial class Form1 : Form
{
SerialPort ArduinoPort;

public Form1()
{
InitializeComponent();

String[] Puertos = SerialPort.GetPortNames();


foreach (String Mostrar in Puertos)
{
comboBox1.Items.Add(Mostrar);
}
}

57
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = false;

ArduinoPort.Close();
ArduinoPort.Dispose();
//crear Serial Port
ArduinoPort = new System.IO.Ports.SerialPort();
ArduinoPort.PortName = comboBox1.Text;
ArduinoPort.BaudRate = 9600;
ArduinoPort.Open();
CheckForIllegalCrossThreadCalls = false;
if (ArduinoPort.IsOpen == true)
{
MessageBox.Show("Conectado a arduino!");
timer1.Enabled = true;
}
else
{
MessageBox.Show("El puerto seleccionado NO ES de Arduino");
return;
}
}

private void timer1_Tick(object sender, EventArgs e)


{
string dato = ArduinoPort.ReadLine();
if (dato==”a”) {
SendKeys.Send("a");
}
if (dato==”b”) {
SendKeys.Send("b");
}

}
}

58
}

Procedimiento C#
Paso 1. Debes crear un nuevo proyecto de Windows Forms en C# con el nombre que desees

|
Paso 2. Deberás crear la siguiente interfaz en el formulario, con los siguientes controles:

• Una etiqueta (label) una para el texto “Puerto”


• Una lista desplegable (Combobox) para mostrar los puertos activos de la computadora
• Un botón (Button) para realizar la conexión
• Un control de tiempo (Timer) para monitorear cada cierto tiempo la conexión serial,
modificar el valor de la propiedad Interval a 220 (son milisegundos).

Paso 3. Copiar el código anexo C#

Resultado
Una aplicación C# que una vez abierta y conectada podrás minizar y e iniciar a jugar el juego que
mas te guste, en este caso, solo se muestra el uso de 2 botones por ejemplo para saltar o disparar.
59
Para hacerlo mas completo, agregar mas botones al Arduino, y agregar las condiciones necesarias
al código.

60
“Interfaces”
Práctica 13.
Un dato que viaja por Wifi
Objetivo
Que los alumnos mediante el componente electrónico Wifi ESP8266 (Nodemcu V2) puedan enviar el
valor de la temperatura del sensor DHT11 a una base de datos en Internet.

Materiales:
• 1 Arduino nano/uno
• Cables dupont
• 1 Nodemcu V2.
• 1 DHT11

Diagrama de conexión:

Explicación teórica
Una de las grandes ventajas del modulo ESP8266 es que es en si mismo un componente
altamente configurable, desde ser un simple cliente Web hasta convertirse en un servidor de red.
Ver https://esp8266-arduino-spanish.readthedocs.io/es/latest/esp8266wifi/readme.html

En este caso dicho modulo viene integrado en el Nodemcu que incluye puertos de E/S para realizar
diversas actividades.

61
El sensor DHT11 nos permite realizar la lectura de temperatura y humedad del ambiente, siendo
esta lectura DIGITAL.

Debe realizarse la instalación de una librería para el DHT11 (ver tutorial “Installing DHT Sensor
Library” en https://lastminuteengineers.com/esp8266-dht11-dht22-web-server-tutorial/)

Código Arduino (Tomado de https://lastminuteengineers.com/)

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "DHT.h"

// Uncomment one of the lines below for whatever DHT sensor type you're using!
//#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321

/*Put your SSID & Password*/


const char* ssid = "YourNetworkName"; // Enter SSID here
const char* password = "YourPassword"; //Enter Password here

ESP8266WebServer server(80);

// DHT Sensor
uint8_t DHTPin = D8;

// Initialize DHT sensor.


DHT dht(DHTPin, DHTTYPE);

float Temperature;
float Humidity;

void setup() {
Serial.begin(115200);
delay(100);

62
pinMode(DHTPin, INPUT);

dht.begin();

Serial.println("Connecting to ");
Serial.println(ssid);

//connect to your local wi-fi network


WiFi.begin(ssid, password);

//check wi-fi is connected to wi-fi network


while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: "); Serial.println(WiFi.localIP());

server.on("/", handle_OnConnect);
server.onNotFound(handle_NotFound);

server.begin();
Serial.println("HTTP server started");

}
void loop() {

server.handleClient();

void handle_OnConnect() {

Temperature = dht.readTemperature(); // Gets the values of the temperature


Humidity = dht.readHumidity(); // Gets the values of the humidity

63
server.send(200, "text/html", SendHTML(Temperature,Humidity));
}

void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}

String SendHTML(float Temperaturestat,float Humiditystat){


String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-
scale=1.0, user-scalable=no\">\n";
ptr +="<title>ESP8266 Weather Report</title>\n";
ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto;
text-align: center;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
ptr +="</style>\n";
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<div id=\"webpage\">\n";
ptr +="<h1>ESP8266 NodeMCU Weather Report</h1>\n";

ptr +="<p>Temperature: ";


ptr +=(int)Temperaturestat;
ptr +="°C</p>";
ptr +="<p>Humidity: ";
ptr +=(int)Humiditystat;
ptr +="%</p>";

ptr +="</div>\n";
ptr +="</body>\n";
ptr +="</html>\n";
return ptr;
}

64
Procedimiento C#
Es importante indicar que se debe reemplazar en el código siguiente los datos de SSID y
PASSWORD para que correspondan a tu modem o dispositivo de acceso a la red. Una vez en la red
la información de temperatura estará disponible en ella por medio de la dirección IP asignada al
ESP8266 y que puede verse desde el monitor serial.

Desde cualquier dispositivo en la red podrá accesarse a dicha IP y obtener la información del
sensor leído desde Arduino.

Resultado
Se espera que desde cualquier dispositivo conectado a la red que cuente con un navegador Web y
mediante la dirección IP se pueda acceder a la información de temperatura y humedad leídos
desde el modulo ESP8266.

65
“EJERCICIOS Y/O ACTIVIDADES PARA EVALUAR
CON FECHAS DE ENTREGA”

No Nombre de la actividad o ejercicio evaluable Fecha de entrega

66

También podría gustarte