Computing">
Manual Starter Kit Unitelectronics
Manual Starter Kit Unitelectronics
Manual Starter Kit Unitelectronics
GUÍA DE APRENDIZAJE
UNIT ELECTRONICS
ÍNDICE
INTRODUCCIÓN 1
Lección 0 2
Lección 7 Fotorresistor 30
ÍNDICE
Lección 13 Sensor de Sonido y Relevador 5V 49
LECCIÓN 0
¿Quiénes somos?
UNIT ELECTRONICS es un distribuidor de componentes electrónicos en línea. Ofrecemos una
amplia variedad de módulos, tarjetas de desarrollo y semiconductores con presencia en
México. Nuestro objetivo es proveer componentes electrónicos y productos de ingeniería a
estudiantes, escuelas, empresas e instituciones de forma ágil y sencilla. Así como tener
contenido de apoyo, como tutoriales, especificaciones e información adicional que facilite
la creación de proyectos, prototipos y prácticas de electrónica, robótica, mecatrónica y
más.
1
UNIT ELECTRONICS
LECCIÓN 0
Lista de materiales:
Tarjeta de desarrollo: UNO R3 con Cable USB
Lector RFID RC522 Buzzer Zumbador 5V Motor a pasos 28BYJ-48 Leds Amarillo,Rojo y Verde
con llavero y tarjeta Activo con controlador de 5mm
SN74HC595N Registro
Sensor de Sonido 65 cables para Protoboard
de Desplazamiento
2
UNIT ELECTRONICS
LECCIÓN 0
LECCIÓN 0
Para comenzar a utilizar el UNIT Starter Kit es necesario tener instalado el software de
programación Arduino IDE, así como tener conocimientos y manejo de la tarjeta de
desarrollo UNO R3, ya que este software y placa son la parte fundamental del kit.
En esta lección se explica qué es Arduino IDE, instalación, abrir ejemplo de pruebas, cargar
código Blink, importación de librerías, así como mencionar que es la tarjeta de desarrollo
UNO R3, especificaciones, pines y cómo emplear con Arduino IDE.
3
UNIT ELECTRONICS
LECCIÓN 0
PUERTOS DE ALIMENTACIÓN
Hay 3 formas de alimentar el UNO R3:
Power Jack: Con este puerto puede ser usado para alimentar la tarjeta UNO R3, con un
adaptador DC de pared. La tarjeta puede ser alimentada por 5 a 12V. Por encima de 12
voltios, los reguladores podrían sobrecalentarse, y por debajo de 7 voltios, podrían no
ser suficiente.
Pin VIN: Este pin se utiliza para alimentar la placa UNO R3 utilizando una fuente de
alimentación externa. El voltaje debe estar dentro del rango mencionado
anteriormente.
Puerto USB: Se utiliza para alimentar y programar la tarjeta UNO R3.
3V, 5V y GND: Son salidas que sirven para alimentar sensores y otros dispositivos. Evitar
conectar voltaje de alimentación a estos pines , ya que , son pines de salida que
suministran voltaje.
PINES ANALÓGICOS
La tarjeta UNO R3 tiene 6 pines analógicos, que utilizan ADC (Convertidor de Analógico a
Digital). Estos pines sirven como entradas analógicas, pero también pueden funcionar
como entradas o salidas digitales. Los pines A4 y A5 sirven para realizar una comunicación
I2C (SDA y SCL respectivamente) con diferentes dispositivos que tengan esta misma
interfaz.
Los pines Arduino A0-A5 son capaces de leer tensiones analógicas. En UNO R3 el ADC tiene una resolución de
10 bits, lo que significa que puede representar una tensión analógica de 1,024 niveles digitales. El ADC
convierte el voltaje en bits que el MCU puede entender.
4
UNIT ELECTRONICS
LECCIÓN 0
PINES DIGITALES
¿QUÉ SIGNIFICA DIGITAL?
Digital es una forma de representar la tensión en 1 bit: 0 o 1. Los pines digitales del UNO R3
son pines diseñados para ser configurados como entradas o salidas según las
necesidades del usuario. Los pines digitales están activados o desactivados. Cuando están
en ON se encuentran en un estado de ALTO tensión de 5V y cuando están en OFF se
encuentran en un estado de BAJO tensión de 0V. En el UNO R3, cuando los pines digitales
están configurados como salida, se ajustan de 0 o 5 voltios.
Cuando los pines digitales se configuran como entrada, la tensión se suministra desde un
dispositivo externo. Este voltaje puede variar entre 0-5 voltios, que se convierte en
representación digital (0 o 1). Para determinar esto, hay dos umbrales:
PROTOCOLOS DE COMUNICACIÓN
Serial (TTL) – Los pines digitales 0 y 1 son los pines seriales del UNO R3.
5
UNIT ELECTRONICS
LECCIÓN 0
¿QUÉ ES SPI?
La Interfaz Periférica Serial (SPI) es un protocolo de datos en serie utilizado por los
microcontroladores para comunicarse con uno o más dispositivos externos en una
conexión tipo bus. El SPI también se puede utilizar para conectar 2 microcontroladores. En
el bus SPI, siempre hay un dispositivo que se denomina Maestro, Master, y todos los demás
Esclavos, Slaves. En la mayoría de los casos, el microcontrolador es el dispositivo maestro.
El pin SS (Slave Select) determina con qué dispositivo se está comunicando actualmente el
Maestro.
Los dispositivos habilitados para SPI siempre tienen los siguientes pines:
MISO (Master In Slave Out) –Una línea para enviar datos al dispositivo Maestro.
MOSI (Master Out Slave In) –La línea Master para el envío de datos a dispositivos periféricos
SCK (Serial Clock) –Una señal de reloj generada por el dispositivo Master para sincronizar la transmisión
de datos.
¿QUÉ ES I2C?
I2C (Inter Integrated Circuit) es un protocolo de comunicación comúnmente conocido como
«bus I2C». El protocolo I2C fue diseñado para permitir la comunicación entre componentes en
una sola tarjeta de circuito. Con I2C hay 2 cables denominados SCL y SDA.
SCL es la línea de reloj que está diseñada para sincronizar las transferencias de datos.
SDA es la línea utilizada para transmitir datos.
Los pines I2C – SCL/SDA son los pines dedicados para la comunicación I2C.
En la tarjeta de desarrollo UNO R3 se encuentran en los pines analógicos A4 y A5.
En la siguiente imagen se especifican los pines y las interfaces de comunicación de la tarjeta
UNO R3.
6
UNIT ELECTRONICS
LECCIÓN 0
https://www.arduino.cc/en/software
Si ya tienes instalado Arduino IDE puedes omitir estos pasos, de lo contrario descargarlo de
acuerdo con tu sistema operativo, por ejemplo, si tienes Windows selecciona la siguiente
opción:
Se descarga un .EXE que tendrás que ejecutar como administrador y seguir todos los
pasos de instalación, así como aceptar todos los permisos que requiera la instalación
para que el entorno de programación se instale correctamente.
7
UNIT ELECTRONICS
LECCIÓN 0
http://www.wch.cn/download/CH341SER_EXE.html
Y listo ya tendrás instalado el controlador para comenzar a utilizar la tarjeta UNO R3 con
Arduino IDE.
8
UNIT ELECTRONICS
LECCIÓN 0
Se abrirá una ventana nueva con el código. Después conecta la tarjeta UNO R3 a tu PC
con la ayuda del cable USB. Dirígete a la pestaña de herramientas y asegúrate que
tengas seleccionada la tarjeta “Arduino Uno” y tener seleccionado el puerto COM que le
asigno tu PC a la tarjeta UNO R3.
9
UNIT ELECTRONICS
LECCIÓN 0
Por último, carga el código a la tarjeta UNO R3, para hacer esto da clic en el siguiente
símbolo y comenzará a cargar el código a la tarjeta.
10
UNIT ELECTRONICS
LECCIÓN 0
3 Abrir la librería descargada y esperar a que se importe. Cuando se importe en la parte inferior
mostrará un mensaje que la librería importó correctamente.
11
UNIT ELECTRONICS
Lección 1
LED Parpadeante
Introducción
En esta lección, aprenderemos a utilizar la tarjeta UNO R3 mediante la activación de un LED
que parpadea una vez por segundo.
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Led de 5mm rojo x 1
4 Resistencia de 220 Ohms x 1
5 Cables Macho – Macho x 2
Conocimientos previos
PROTOBOARD (PLACA DE PRUEBAS)
Una placa de pruebas o también llamada protoboard es un pequeño tablero lleno de
agujeros unidos electrónicamente y sirve para interconectar diferentes componentes, así
como realizar diferentes circuitos de forma práctica, rápida y sencilla.
1 Canal central: Es la región localizada en medio del Protoboard, se utiliza para colocar de manera
adecuada circuitos integrados.
2 Buses: Los buses se localizan en ambos extremos del Protoboard, se representan por las líneas rojas
(buses positivos o de voltaje) y azules (buses negativos o de tierra) y conducen de acuerdo con
estas, no existe conexión física entre ellas. La fuente de alimentación generalmente se conecta aquí.
3 Pistas de conexión: Las pistas se localizan en la parte central del protoboard aquí puedes conectar
tu circuito considerando que son columnas verticales de manera lineal.
12
UNIT ELECTRONICS
2)Pistas de conexión
columnas verdes
1)Canal central
separador de
componentes
LED
Led es un diodo emisor de luz, es un dispositivo óptico, convierte energía eléctrica en
energía luminosa, además tiene 2 terminales. La terminal más larga es positiva (+) y la
terminal más corta es negativa (-). Otra forma de diferenciar la terminal negativa, el led
tiene un lado plano para indicar que esa es la terminal negativa.
Para utilizar el led debe polarizarse de manera correcta, no invertir su polaridad y su voltaje
de funcionamiento ya que se dañará.
Polaridad Símbolo
13
UNIT ELECTRONICS
RESISTENCIA
Una resistencia es un pequeño componente electrónico pasivo que sirve para limitar la
corriente en un circuito eléctrico o ayudar al correcto funcionamiento de otros
componentes electrónicos. La unidad de medida es Ohmio que se representa con la letra
griega omega (Ω).
Símbolo
A diferencia de los LEDs, las resistencias no tienen polaridad. Pueden ser conectadas de
cualquier manera. Las resistencias incorporan bandas de colores que indican cuál es su
valor. Para saber el valor de una resistencia se utiliza el código de colores, que facilita la
identificación y el valor de las resistencias de acuerdo con el color que incorporan en sus
bandas. En la siguiente imagen se muestra el código de colores:
14
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión del led al protoboard y a la tarjeta UNO R3.
Código de Funcionamiento
Realizaremos un código para encender y apagar un led cada segundo ubicado en el pin 8
de la tarjeta UNO R3.
void setup()
void loop()
digitalWrite(ledPin, LOW); //Apagado del Led (LOW marca el nivel de voltaje bajo)
15
UNIT ELECTRONICS
Lección 2
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Led de 5mm rojo x 1
4 Resistencia de 220 Ohms
5 Push Button 4 pines Grande 12x12mm x 2
Conocimientos previos
Push Botton 4 pines o también conocido como MicroSwitch, botón o pulsador es un
dispositivo táctil que sirve como interruptor ya que puede ser activado, al ser pulsado con
el dedo y permiten el flujo de corriente mientras es accionado. Los pulsadores son de
diversas formas y tamaños y se encuentran en todo tipo de dispositivos, aunque
principalmente en aparatos eléctricos y electrónicos.
Para esta lección se utilizará un botón de 4 pines. A continuación de muestra los pines del
botón de 4 pines, así como su el símbolo del botón, esto ayudará a identificar
correctamente los pines y como está conformado internamente el botón para después
realizar las conexiones al protoboard.
Pinout Símbolo
Para realizar el circuito en el protoboard se utilizará 2 botones, 1 para encender el led y otro
para apagarlo, también se utilizará una resistencia de 220 Ohms para proteger al led.
16
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión de los pulsadores y el led a la tarjeta UNO
R3.
17
UNIT ELECTRONICS
Código de Funcionamiento
Realizaremos un código para encender y apagar un led mediante 2 pulsadores.
int //Asignación del Pin 9 para el push button que nos ayudará a encender el Led
int offBpin = 8; //Asignación del Pin 8 para el push button que nos ayudará a apagar el Led
byte leds = 0; //Se declara una variable leds para controlar en estado, actual del led (on/off)
void setup()
pinMode(onApin, INPUT_PULLUP);
pinMode(offBpin, INPUT_PULLUP);
void loop()
//Realizaremos lectura de la entrada digital del pin 9 / pin 8 y realizando acciones dependiendo
if (digitalRead(onApin) == LOW) //Si se presiona el botón del pin 9 que se encuentra en nivel
18
UNIT ELECTRONICS
Lección 3
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Sensor Led RGB x 1
4 Cables Hembra - Macho x 4
Conocimientos previos
LED RGB
RGB es un sistema de color basado en tres colores primarios Rojo, Verde y Azul (por sus
siglas en inglés (R) Red, (G) Green, (B) Blue), el cual en base a la combinación de estos 3
colores podemos representar otros colores como se muestra a continuación.
Por lo tanto, un Led RGB está formado internamente por tres diodos emisores de luz, uno
rojo, uno verde y por último uno azul, con el propósito de poder crear, gran variedad de
colores mediante la combinación de cada color con intensidades distintas.
Los Led´s RGB tiene 4 terminales y es común utilizar el encapsulado de 5mm y hay 2 tipos
de cátodo o ánodo común, que define cómo está conformado internamente el led RGB,
(como se muestra a continuación), aunque en esta lección vamos a trabajar con un LED
RGB de cátodo común.
19
UNIT ELECTRONICS
El control se recomienda que se haga por medio de PWM, de tal forma que, la resolución del
PWM en cada color es de 8 bits, tendremos la posibilidad de generar más de 16 millones de
colores distintos. De esta manera el led RGB brillará con una intensidad de color
determinada en base al voltaje que se le suministre a cada diodo led interno, pudiéndose
representar cualquier color derivado de los primarios.
20
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión del sensor led RGB con la tarjeta UNO R3.
21
UNIT ELECTRONICS
Código de Funcionamiento
Realizaremos un código para emitir los colores Rojo, Verde, Azul, Blanco, Morado y
cambiarlos cada segundo. Se creara una función llamada setColor en el programa para
que sea más limpia la forma en que se estará realizando el cambio de color en el led RGB.
//Uso de un Led RGB y cambio de algunos colores cada segundo
void setup() {
pinMode(rojoPin, OUTPUT);
pinMode(verdePin, OUTPUT);
pinMode(azulPin, OUTPUT);
void loop() {
// Valor del ciclo de trabajo PWM (0 a 255), que nos ayudará a tener control de la intensidad de
//brillo por cada uno de los colores (rojo, verde, azul), con ayuda de la función "setColor"
//Si realizamos combinación de los valores podremos obtener más gama de colores
22
UNIT ELECTRONICS
Lección 4
Zumbador Activo
Introducción
En esta lección aprenderemos a utilizar un buzzer activo para generar un tono mediante un
pin digital de la tarjeta desarrollo UNO R3.
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Zumbador activo x 1
4 Cables Macho – Macho x 2
Conocimientos previos
Buzzer activo es un pequeño dispositivo que puede producir un sonido cuando se aplica
una corriente directa DC. Por ejemplo, si se conecta directamente a los 5V de la tarjeta UNO
R3 este genera un tono fijo con una frecuencia ya predeterminada debido a que incorpora
un oscilador interno. El buzzer activo tiene 2 terminales, negativo y positivo, comúnmente
incorporan una etiqueta que nos indica cual es la terminal positiva mediante el símbolo
(+), la terminal que se encuentre más cerca a esta referencia será la terminal positiva.
Hay 2 tipos de buzzer el activo y el pasivo, en la siguiente tabla se detallan las diferencias:
Para esta lección se utilizará un buzzer activo para demostrar su funcionamiento y a través
de programación se variará el tiempo de encendido y pagado para generar tonos básicos.
23
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión entre el buzzer y la tarjeta UNO R3.
Código de Funcionamiento
Realizaremos un código para controlar el buzzer activo y generar diferentes pitidos por
50ms.
//Encendido y control de tono por medio de la tarjeta Uno R3
void setup()
void loop(){
unsigned char i; //Variable tipo carácter sin signo llamada "i" para simular una frecuencia
24
UNIT ELECTRONICS
Lección 5
Zumbador Pasivo
En esta lección aprenderemos a utilizar el buzzer pasivo y la tarjeta UNO R3 para generar
ocho sonidos diferentes, cada sonido durará 1 segundos desde Do (262Hz), Re (294Hz), Mi
(330Hz), Fa (349Hz), Sol (392Hz), La (440Hz), Si (494Hz) hasta Do Agudo (524Hz).
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Zumbador pasivo x 1
4 Cables Macho – Macho x 2
Conocimientos previos
Buzzer pasivo es un pequeño dispositivo capaz de generar tonos a diferente frecuencia
cuando se aplica una señal o corriente alterna AC. Por ejemplo, si se aplica una señal
analógica PWM desde la tarjeta UNO R3 el buzzer producirá un tono con diferente volumen
que varía dependiendo del ciclo de trabajo del PWM.
Para cambiar la frecuencia del tono y generar diferentes melodías se recomienda aplicar
una señal de onda cuadrada con una frecuencia específica, para este caso se recomienda
utilizar en programación la función Tone () la cual permitirá definir 3 parámetros, el pin del
buzzer la frecuencia y la duración de la nota. El buzzer pasivo tiene 2 terminales, negativo y
positivo, para identificar la terminal positiva el buzzer comúnmente incorpora en la parte
superior una referencia con el símbolo (+), la terminal que se encuentre más cerca a esta
referencia será la terminal positiva.
Diagrama de Conexión
A continuación, se muestra cuál será la conexión entre el buzzer pasivo y la tarjeta UNO R3.
25
UNIT ELECTRONICS
Código de Funcionamiento
Realizaremos un código para demostrar el funcionamiento del buzzer pasivo el cual
permite generar 8 notas básicas Do, Re, Mi, Fa, So, La y Si.
//Se usará el buzzer pasivo para generar 8 notas básicas: Do (262Hz), Re (294Hz),
//Se declaran las variables de las notas, con los valores de frecuencia
int Do = 262, Re = 294, Mi = 330, Fa = 349, Sol = 392, La = 440, Si = 494, Do2 = 524;
void setup()
void loop()
wait = 500; //Duración de cada una de las notas será de 500ms / .5 segundos
tone(buzz, Do, wait); //Generación de onda cuadrada en el pin 12, con valor de DO
delay(1000); //Espera 1s
tone(buzz, Re, wait); //Generación de onda cuadrada en el pin 12, con valor de RE
delay(1000); //Espera 1s
tone(buzz, Mi, wait); //Generación de onda cuadrada en el pin 12, con valor de MI
delay(1000); //Espera 1s
tone(buzz, Fa, wait); //Generación de onda cuadrada en el pin 12, con valor de FA
delay(1000); //Espera 1s
tone(buzz, Sol, wait); //Generación de onda cuadrada en el pin 12, con valor de SOL
delay(1000); //Espera 1s
tone(buzz, La, wait); //Generación de onda cuadrada en el pin 12, con valor de LA
delay(1000); //Espera 1s
tone(buzz, Si, wait); //Generación de onda cuadrada en el pin 12, con valor de SI y una
delay(1000); // Espera 1s
tone(buzz, Do2, wait); //Generación de onda cuadrada en el pin 12, con valor de DO sostenido
delay(1000); //Espera 1s
26
UNIT ELECTRONICS
Lección 6
Conocimientos previos
El circuito integrado CI 74HC59 o SN74HC595N consta de un registro
de desplazamiento de 8 bits y de un registro de almacenamiento
con salidas paralelas en tres estados.
Convierte la entrada serie en salida paralela para que usted pueda guardar los puertos IO
de un MCU. El chip contiene ocho pines que podemos utilizar como salida, cada uno de
ellos está asociado con un bit en el registro. En el caso del CI 74HC595, nos referimos a ellos
desde QA hasta QH. Para escribir estas salidas con la tarjeta UNO R3, tenemos que enviar
un valor binario al registro de desplazamiento y con ese número el registro de
desplazamiento puede comprender qué salidas utilizar.
Por ejemplo, si enviamos el valor binario 10100010, los pines destacados en verde en la
imagen siguiente estarán activos y los destacados en rojo permanecerán inactivos.
27
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión de 8 led´s conectados al IC 74HC59 y a la
tarjeta UNO R3.
28
UNIT ELECTRONICS
Código de Funcionamiento
Realizaremos un código para demostrar el funcionamiento del IC 74HC59 para encender y
apagar 8 led´s utilizando 3 pines de la tarjeta UNO R3.
int RCLKPin = 4; //Usaremos el Pin 4 de la tarjeta UNO R3 para el manejo del Reloj de
int SRCLKPin = 5; //Usaremos el Pin 5 de la tarjeta UNO R3 para el manejo del Reloj
int datoPin = 2; //Usaremos el Pin 2 de la tarjeta UNO R3 para entrada Serial del Dato
pinMode(RCLKPin, OUTPUT);
pinMode(datoPin, OUTPUT);
pinMode(SRCLKPin, OUTPUT);
}
void loop()
leds = 0; //Limpieza del bucle de la variable byte en 0, para que el led encienda una vez
bitSet(leds, nextLED); //Usará la función bitSet para el control de c/led dependiendo el avance del bit
//Función shiftOut para desplazar indicando por que pin sale el bit (dataPin), cambio del pin una vez que //dataPin
tenga el valor adecuado(clockPin), dirección de desplazamiento (LSBFIRST o MSBFIRST) los //datos que se
desplazaran
digitalWrite(RCLKPin, HIGH); // Devuelve el latchpin a nivel alto
29
UNIT ELECTRONICS
Lección 7
Fotorresistor
Introducción
En esta lección aprenderás a medir la intensidad de la luz mediante una fotorresistencia, se
utilizará el circuito de la lección 6 para que cuando haya oscuridad se prendan los leds y si
hay iluminación se apaguen uno a uno los leds con la ayuda del IC 74HC595 y la utilizando
de una entrada analógica de la tarjeta UNO R3.
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Led´s de 5mm x 8
4 Resistencia de 220 Ohms x 8
5 IC 74HC595 x 1
6 Fotorresistencia LDR x 1
7 Resistencia de 1k x 1
8 Cables Macho – Macho x 20
Conocimientos previos
Una fotorresistencia o LDR (por sus siglas en inglés “light-dependent resistor”)
es un componente electrónico cuya resistencia varía en función de la luz. Se
trata de un sensor que actúa como una resistencia variable en función de la luz
que capta. A mayor intensidad de luz, menor resistencia.
Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir
la tensión de salida de este. Para lograr esto se debe realizar un divisor de tensión
colocando una resistencia en serie. Hay dos formas básicas para conectar una LDR:
30
UNIT ELECTRONICS
Lección 7 Fotoresistor
Para esta lección se utilizará la conexión 1 “Mayor luz, mayor voltaje”, donde R1
conectaremos una resistencia de 1K, +V lo conectaremos a 5V de la tarjeta UNO R3 y por
último Vout a un pin analógico para esta práctica utilizaremos el pin A0.
Diagrama de Conexión
A continuación, se muestra cuál será la conexión de la LDR con la tarjeta UNO R3 y con el
circuito de la práctica 6.
31
UNIT ELECTRONICS
Lección 7 Fotoresistor
32
UNIT ELECTRONICS
Lección 7 Fotoresistor
Código de Funcionamiento
Realizaremos un código para que cuando haya oscuridad se prendan los leds y si hay
iluminación se apagaran uno a uno los leds con la ayuda del IC 74HC595 y la utilizando de
una entrada analógica de la tarjeta UNO R3.
int latchPin = 11; //Usaremos el Pin 11 para el manejo del Reloj de Registro (Pin 12 RCLK del 74HCC595).
int clockPin = 12; //Usaremos el Pin 12 para el manejo del Reloj de Registro de Desplazamiento
int dataPin = 9; //Usaremos el Pin 9 para entrada Serial del Dato (Pin 14 SER del //74HCC595)
void setup()
{
//Declaración de variables, como de salida digital
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
void loop()
{
int reading = analogRead(lightPin); //Lectura del valor analógico del fotorresistor
if (numLEDSLit > 8) numLEDSLit = 8; //Si el valor del led es mayor que 8, el valor será igual a 8
for (int i = 0; i < numLEDSLit; i++) //tendremos un incremento de la variable i, hasta que
// sea menor a numLEDSLit
{
leds = leds + (1 << i); // Establece el i-décimo bit
}
actualizaRegistro(); //Se ejecuta la función
}
void actualizaRegistro() //Función para realizar el encendido de los leds a partir del Reloj de Registro
{
33
UNIT ELECTRONICS
Lección 8
Conocimientos previos
El display 7 Segmentos es un dispositivo optoelectrónico que permite visualizar números
del 0 al 9. Está compuesto por 8 led´s, 7 son para segmentos de un dígito (mostrados como
A a G) y el otro LED es para el punto decimal (mostrado cómo DP). En la siguiente imagen
se muestra los pines del display:
Hay dos tipos de display, de cátodo común y de ánodo común. Para esta lección
utilizaremos display de cátodo común el cual internamente está conectado de la siguiente
manera:
34
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión del display de 7 segmentos con el IC
74HC595 y la tarjeta UNO R3. Se utilizará una resistencia de 220 ohms la cual estará
conectada al pin común del display y al GND de la tarjeta UNO R3.
35
UNIT ELECTRONICS
Código de Funcionamiento
Realizaremos un código para controlar un display de 7 segmentos de forma que podamos
contar del 0 al 9 mostrar letras A, B y C, con ayuda del IC 74HC595 y la tarjeta UNO R3.
};
void setup() {
Serial.begin(9600);
//Declaración de variables, como de salida digital
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
for (i = 0; i < 14; i++) { //repetición de la secuencia de encendido y apagado de byte del 1 al 14
//anteriormente declarada en la función números
digitalWrite(latchPin, LOW); //desactiva a Reloj de Registro de Desplazamiento
36
UNIT ELECTRONICS
Lección 9
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Resistencia de 220 Ohms x 4
4 IC 74HC595 x 1
5 Display 4 Dígitos 7 Segmentos cátodo común x 1
6 Cables Macho – Macho x 30
Conocimientos previos
El display 4 dígitos 7 Segmentos es un dispositivo optoelectrónico que permite visualizar
números del 0 al 9. Se utiliza para representar visualmente números y algunos caracteres.
El display está compuesto por 4 dígitos, cada dígito tiene 7 segmentos y un punto decimal
que pueden encender o apagar individualmente.
Hay dos tipos de display de 4 dígitos, de cátodo y ánodo común. Para esta lección
utilizaremos display de cátodo común el cual internamente está conectado de la siguiente
manera:
37
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión del display de 4 dígitos con el IC 74HC595
y la tarjeta UNO R3. Se utilizarán 4 resistencias de 220 ohms, que se conectarán a los pines
de cátodo común del display y al GND de la tarjeta UNO R3.
38
UNIT ELECTRONICS
Código de Funcionamiento
Realizaremos un código para controlar el display 4 dígitos 7 segmentos de forma que
pueda mostrar y cambiar caracteres como HALO a 0000 o EEEE, por ejemplo. Utilizando el IC
74HC595 y la tarjeta UNO R3.
int latch=9; //Pin 9 al 12 (STCP) del 74HC595
int clockPin=10; //Pin 10 al 11 (SHCP) del 74HC595
int data=8; //Pin 8 al 14 (DS) del 74HC595
//Matriz de codificación del display de 7 segmentos - hexadecimal
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c
,0x39,0x5e,0x79,0x71,0x00};
void setup() { //inicializa pines de salida
pinMode(latch, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(data, OUTPUT);}
39
UNIT ELECTRONICS
Lección 10
Sensor de Inclinación
Introducción
En esta lección aprenderás cómo usar un sensor de inclinación para detectar pequeños
ángulos de inclinación.
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Led de 5mm rojo x 1
4 Resistencia de 220 Ohms x 2
5 SW-520D Sensor de inclinación x 1
6 Cables Macho – Macho x 5
Conocimientos previos
El SW-520D sensor de inclinación es un dispositivo que proporciona una señal en caso de
que su inclinación supere un umbral. Este tipo de sensor no permite saber el grado de
inclinación, simplemente actúa como un sensor que se cierra a partir de una cierta
inclinación. Está constituido por un cilindro que en su interior tiene un par de esferas
metálicas que al inclinarse cierran un circuito el cual será detectado en el interior, por lo
que es usado para detectar vibraciones y/o inclinaciones.
40
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión con el sensor de inclinación con la tarjeta
UNO R3 y el led que encenderá o se apagará dependiendo a la inclinación del sensor.
Código de Funcionamiento
Realizaremos un código para leer el estado del sensor de inclinación para encender o
apagar un led dependiendo de la inclinación del sensor.
const int LedPin=8; //Variable para el Pin 8 que se conectará con el Led
void setup()
{
pinMode(LedPin,OUTPUT);
}
void loop() //Función Loop
{
int i;
while(1) //While para tener una instrucción bucle sin fin
{
i=analogRead(5); //La variable i tendrá lectura de los valores provenientes del pin 5 analógico
if(i > 512) //rango ajustable de o a 1023, 512 tendremos una sensibilidad media en el sensor
{
digitalWrite(LedPin, LOW); //El led apagará, en posición vertical del sensor
}
else
{
digitalWrite(LedPin, HIGH); //El led se encenderá, en posición horizontal del sensor
}
}
}
41
UNIT ELECTRONICS
Lección 11
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Cables Macho – Macho
4 Sensor HC-SR04
5 Buzzer Activo
Conocimientos previos
El sensor HC-SR04 cuenta con un rango de medición de 2cm a 400 cm, mide el tiempo
entre el envío y recepción del pulso. Conformado por un Trigger y Echo, el primero efectuara
el disparo del ultrasonico y el segundo la recepción. Usando el Trigger para al menos 10 µs
de señal de alto nivel, envía automáticamente 8 pulsos a una frecuencia de 40kHz y
detecta si hay una señal de pulso de regreso.
Si la señal regresa, a través de un nivel alto, el tiempo de salida del Trigger de salida alta es
el tiempo desde el envío de ultrasonidos hasta el retorno y captado en Echo.
42
UNIT ELECTRONICS
Diagrama de Conexión
A continuación, se muestra cuál será la conexión del módulo HC-SR04 en la tarjeta UNO R3
y el buzzer activo, para que, a cierta distancia, se active una alarma de detección de
presencia.
43
UNIT ELECTRONICS
Código de Funcionamiento
Realizaremos un código para detectar objetos a 50 cm, cuando los objetos y/o personas se
encuentren en un rango menor a esta distancia se activará el buzzer, emitiendo un pitido.
Para este programa no se requiere alguna librería en especial.
44
UNIT ELECTRONICS
Lección 12
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 4 Led de diferentes colores 5mm
4 Resistencia de 220 Ohms x 4
5 Cables Macho – Macho
6 Módulo Joystick
7 Buzzer Activo
Conocimientos previos
El módulo Joystick cuenta con un posicionamiento de eje dado por valores entre 0 a 1023 y
conforme se mueve, varía su valor dando las coordenadas de cada eje.
45
UNIT ELECTRONICS
Diagrama de Conexión
La conexión entre los componentes y la tarjeta de desarrollo UNO R3 es el siguiente:
46
UNIT ELECTRONICS
Código de Funcionamiento
Para cada dirección que tome el mando del joystick, encenderá un led correspondiente. En
caso de presionar el Joystick el buzzer activo emitirá un sonido.
47
UNIT ELECTRONICS
Serial.print("\n\n");
delay(50);
//Dependiendo los valores que el joystick, habrá condiciones para controlar los leds y buzzer
if (digitalRead(SW_pin) == LOW) { //si es presionado el botón del joystick dará un valor 0
digitalWrite(buzz, HIGH); //por lo tanto el buzz emitirá un pitido
} else { digitalWrite(buzz, LOW); //de lo contrario estará en silencio
}
if (analogRead(X_pin) == 0) { //inicialmente el eje x está en un valor de 523(aprox), si se
//va a la extrema derecha..
digitalWrite(ledG, HIGH); //dará un valor 0 encendiendo el led verde
} else { digitalWrite(ledG, LOW);
} if (analogRead(X_pin) >= 600) { //cuando sea mayor a 600 , indica que se está moviendo
//a la izquierda..
digitalWrite(ledR, HIGH); //el led rojo encenderá
} else {
digitalWrite(ledR, LOW);
}
if (analogRead(Y_pin) == 0) { //inicialmente el eje y está en un valor de 523(aprox), si se
//mueve hacia arriba..
digitalWrite(ledW, HIGH); //enciende el led ROJO
} else {
digitalWrite(ledW, LOW);
}
if (analogRead(Y_pin) >= 600) { //cuando sea mayor a 600 , indica que se está moviendo
//hacia arriba...
digitalWrite(ledY, HIGH); //se encendera el led amarillo
} else {
digitalWrite(ledY, LOW);
}
}
48
UNIT ELECTRONICS
Lección 13
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Led de 5mm x 1
4 Módulo Sensor de Sonido
5 Resistencia de 220 Ohms x 1
6 Cables Macho – Macho y Hembra-Macho
7 Módulo Relevador 5V
Conocimientos previos
Sensor de Sonido
El sensor de sonido, también conocido como KY-037 nos ayuda en la detección de sonidos
por medio del micrófono. Este módulo tiene la ventaja de poder ajustar la sensibilidad por
medio del potenciómetro además de poder trabajar con señal digital o analógica.
Reduce Aumenta
sensibilidad sensibilidad
R6
L2
104 102
W104
S
+
A0
+
VR1
13 151
R3
S
G +
R2
91M
G
LM393
H1418
D0 104
+
R5
R1
+
G
L1
102 103
49
UNIT ELECTRONICS
Relevador 5V
Adicional el relevador de 5V es un módulo de un canal que ayuda a la conmutación de
estados, pudiendo controlar cargas en DC y AC.
El módulo provee la electrónica necesaria para manejar la bobina del relevador y la señal
de control puede provenir de cualquier circuito de control (tarjeta de desarrollo, CMOS).
Para esta lección lo usaremos para una carga en DC (led de 5mm).
La activación de este dispositivo depende que salida es la que se ocupe: 常 (NO o NA),
contacto normalmente abierto o 常闭 NC, contacto normalmente cerrado.
50
UNIT ELECTRONICS
Diagrama de Conexión
La conexión que se utilizara en el relé de 5V será de Normalmente Cerrado, este nos dará
un valor BAJO, sin tener ninguna activación y el relevador cambiará cuando detecte una
señal en ALTO.
51
UNIT ELECTRONICS
Código de Funcionamiento
La detección del sonido se da por flancos de subida en la señal digital de salida del módulo
de sonido. El siguiente programa tiene como finalidad detectar un sonido para poder
activar la conmutación del relevador.
Si los flancos de subida son igual a 4 activará al relevador para poder hacer la
conmutación de nivel BAJO a ALTO y poder mandar una señal al led y encenderlo, cuando
la detección de sonido sea igual a 8 flancos daremos la orden para apagar el led.
52
UNIT ELECTRONICS
Lección 14
Para poder visualizar esta medición nos apoyaremos de la Pantalla LCD que ya cuenta con
comunicación I2C, la cual será conveniente para reducir las conexiones entre la tarjeta de
desarrollo y este módulo.
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Cables Macho – Macho y Hembra-Macho
4 Sensor de Lluvia
5 Pantalla LCD 16X2 I2C
Conocimientos previos
El sensor de Nivel de Lluvia es un dispositivo analógico, para poder obtener los valores se
trabaja con una tarjeta de desarrollo, que por medio de la entrada de pines analógicos
podremos obtener valores entre 0 a 1023, ya que la resolución de este módulo es de 10 bit.
En su circuito incluye un arreglo de resistencias, una en especial de 1MΩ; que aumenta en
caso de que el agua entre en contacto con sus bandas conductoras. Cuanto mayor sea la
cantidad de agua, mayor resistencia se genera.
R
OUT
R
R
VCC
53
UNIT ELECTRONICS
Comunicación I2C
Para lograr este tipo de comunicación se requiere de un Maestro y un Esclavo, además de
un bus que incluye dos líneas llamadas SDA (Serial Data) y SCL (Serial Clock), estas líneas
son bidireccionales conectadas por resistencias físicas pull-up. Si ambas líneas están
libres se encontrarán en un nivel alto.
El Maestro se encarga de controlar a SCL, además de iniciar y parar la comunicación.
Mientras tanto el envío de información serial enviada por SDA. El Esclavo normalmente es el
sensor y dará al Maestro información en paquetes de 8 bits y enviar confirmaciones de
recepción, llamadas ACK.
Como se puede visualizar hay toda una trama de bit que son necesarios para enviar y
recibir información, entre ellos están:
Star, Inicio
Stop, Parada
ACK, Confirmación
NACK, No Confirmación
R/W, Read/Write, Lectura/Escritura
7 bits para la dirección del dispositivo Esclavo/Maestro
8 bits de dirección y datos
Pareciera complejo, pero este protocolo nos facilita la conexión y transferencia de datos
entre la tarjeta de desarrollo UNO R3 y la pantalla LCD 16X2.
54
UNIT ELECTRONICS
Diagrama de Conexión
55
UNIT ELECTRONICS
Código de Funcionamiento
Para trabajar con el siguiente código, será necesario que en el IDE de Arduino se descargue
la librería para poder trabajar con la pantalla LCD , la cual se encuentra en el siguiente link:
https://github.com/ELECTROALL/Codigos-arduino/blob/master/LiquidCrystal_I2C.zip
56
UNIT ELECTRONICS
Lección 15
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Cables Macho – Macho y Hembra-Macho
4 Sensor de temperatura LM35
5 Pantalla LCD 16X2 I2C
Conocimientos previos
El LM35 entrega la lectura de datos por medio de una salida analógica directamente en
grados centígrados, pero por cada grado centígrado medido, entregará en su salida un
valor de voltaje de 10 mV.
Por ejemplo: una lectura de 150ºC equivale a 1500mV y -55ºC equivale a -550mV.
El pinout del IC es el siguiente:
57
UNIT ELECTRONICS
Diagrama de Conexión
58
UNIT ELECTRONICS
Código de funcionamiento
Para trabajar con el siguiente código, será necesario que en el IDE de Arduino se descargue
la libreria para poder trabajar con la pantalla LCD , la cual se encuentra en el siguiente link:
https://github.com/ELECTROALL/Codigos-arduino/blob/master/LiquidCrystal_I2C.zip
Sabiendo que los valores que obtendremos del sensor en la temperatura en orden de mV,
tendremos que preparar los datos para tener valores en grados Celsius. Y posteriormente
se mostrará esta información en la pantalla LCD 16X2.
59
UNIT ELECTRONICS
Lección 16
Conocimientos previos
El DHT11 no utiliza una interfaz serial estándar como I2C, SPI o 1Wire. En cambio, requiere su
propio protocolo para comunicarse a través de un solo hilo: Single bus.
El microcontrolador debe iniciar la comunicación con el DHT11 manteniendo la línea de
datos en estado bajo durante al menos 18 ms. Luego el DHT11 envía una respuesta con un
pulso a nivel bajo de 80 uS y luego deja “flotar” la línea de datos por otros 80 uS.
Los datos binarios se codifican según la longitud del pulso alto. Todos los bits comienzan
con un pulso bajo de 50 uS. En nuestra librería aprovechamos el pulso bajo en cada bit para
sincronizar con la señal del DHT11. Luego viene un pulso alto que varía según el estado
lógico o el valor del bit que el DHT11 desea transmitir. Se utilizan pulsos de 26-28
microsegundos para un “0” y pulsos de 70 microsegundos para un “1”. Los pulsos se repiten
hasta un total de 40 bits (5 Bytes).
60
UNIT ELECTRONICS
Diagrama de Conexión
61
UNIT ELECTRONICS
Código de Funcionamiento
Para trabajar con el siguiente código, será necesario que en el IDE de Arduino se descargue
la librería para poder trabajar con la pantalla LCD, la cual se encuentra en el siguiente link:
https://github.com/ELECTROALL/Codigos-arduino/blob/master/LiquidCrystal_I2C.zip
A diferencia de los dos dispositivos anteriores, en donde se tenía que realizar un cálculo
previo para poder desplegar los valores en la pantalla LCD, aquí el sensor DHT11 nos arroja
los valores ya procesados en grados celsius y un rango de humedad.
62
UNIT ELECTRONICS
Lección 17
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Led RGB
4 Cables Macho – Macho
5 Teclado de Membrana 4x4
Conocimientos previos
El teclado matricial 4×4 está constituido por filas (A, B, C, D) y columnas (1, 2, 3, 4). Las 16
teclas necesitan sólo 8 pines del microcontrolador, en lugar de los 16 pines que se
requerirían para la conexión de 16 teclas independientes.
63
UNIT ELECTRONICS
Diagrama de Conexión
64
UNIT ELECTRONICS
Código de Funcionamiento
Para trabajar con el siguiente código, será necesario que en el IDE de Arduino se descargue
la librería para poder trabajar con el teclado de membrana 4x4, la cual se encuentra en el
siguiente link:
https://github.com/Chris--A/Keypad
65
UNIT ELECTRONICS
lcd.init();
lcd.backlight(); //Encender la luz de fondo.
lcd.print("Abre y Cierra"); // Escribimos el Mensaje en el LCD.
delay(1000);
lcd.clear(); //limpiamos la pantalla para agregar nuevo mensaje
}
void loop() {
TECLA = teclado.getKey(); //dígitos que se presionen en el teclado, serán guardados en la //variable TECLADO
if (TECLA) { // Dependiendo la cantidad de Teclas presionadas se realizará un //conteo
CONTROL[INDICE] = TECLA; //que ayudará a limitar los caracteres requeridos
INDICE++; //incremento de ese índice dependiendo las teclas presionadas
}
lcd.setCursor(0, 0); //colocamos el cursor en la posición columna, fila (0,0)
lcd.print("Inserta Clave..."); //se visualiza el texto
66
UNIT ELECTRONICS
Lección 18
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Led 5mm x 1
4 Resistencia de 220 Ohms x 1
5 Módulo de Tiempo Real DS1302
6 Cables Macho – Macho
Conocimientos previos
El módulo de tiempo real basa su funcionamiento en el circuito integrado DS1302 y con la
alimentación de una batería de pastilla (3V), el cual registrará fecha (DD/MM/AAAA) y hora
(HH:MM:SS), incluyendo una RAM estática de 31 bytes y trabaja con un cristal de 32.768 kHz.
La comunicación que utiliza es por medio de I2C.
CR2032
VCC
(3.3-5V) VCC
GND GND
1302
+
3V
CLK
DS
CLK
DAT DAT
RESET RST
MH-REALTIME
67
UNIT ELECTRONICS
Diagrama de Conexión
El siguiente diagrama muestra la conexión entre el módulo de tiempo real y un led que nos
ayudará, para saber cuándo la alarma programada esté o haya ocurrido.
Código de Funcionamiento
Para realizar el siguiente código será necesario contar con las siguientes librerías en
Arduino:
Para fines didácticos sólo se maneja en el código la hora, para que puedas modificarla al
momento que realices la práctica prescindiendo del día que realices este programa.
68
UNIT ELECTRONICS
{
char datestring[20];
snprintf_P(datestring, countof(datestring), PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
dt.Month(),
dt.Day(),
dt.Year(),
dt.Hour(),
dt.Minute(),
dt.Second() );
//configuración de activación de alarma a las 14hr y 47 min
if (dt.Hour() == 14 && dt.Minute() == 47) { if (alarma = true) {
Serial.println("Alarma");
analogWrite(led, HIGH);
alarma = false; //desactiva alarma
}
}
Serial.println(datestring);
delay(1000);
//configuración desactivación de alarma a las 14hr y 49 min
if (dt.Hour() == 14 && dt.Minute() == 49) analogWrite(led, LOW);
alarma = true;
}
69
UNIT ELECTRONICS
Lección 19
Materiales necesarios
1 Tarjeta UNO R3 x 1
2 Protoboard (Placa de pruebas) x 1
3 Módulo de control de motor de pasos ULN2003
4 Motor de pasos
5 Módulo de alimentación para placas de circuitos
6 Receptor Infrarrojo VS1838B IR
7 Control inalámbrico con batería 3V
8 Cables Macho – Macho, Hembra-Hembra
Conocimientos previos
El control del motor 28BYJ-48 por medio del ULN2003 es muy fácil de implementar con
ayuda del UNO R3, ya que internamente el motor 28BYJ-48 cuenta con 4 bobinas, como se
estará realizando un control mecánico a través de un sistema digital, es la justificación
para usar el controlador ULN2003. Por medio de programación podremos realizar la
modificación del movimiento de las bobinas.
70
UNIT ELECTRONICS
Transmisor y receptor IR
El módulo VS1838B es un dispositivo optoelectrónico teniendo la capacidad de recibir
señales vía infrarrojo, convenientemente detecta pulsos a 38kHz, esta frecuencia es
utilizada en la mayoría de los controles transmisores de TV, DVD, Sonido, etc. Y detectando
señales en un ángulo de 45°. El funcionamiento del control remoto se basa en la emisión de
secuencias de pulsos de luz IR, con un código que identifica la tecla pulsada.
Por lo cual, la dupla que tiene con el control nos ayudará a que solo nos ocupemos en
identificar qué señal es la que emite en este caso el transmisor (Control Remoto), lectura
que interpretaremos gracias a la conexión con la tarjeta UNO R3.
Comunicación IR
Un mando a distancia IR funciona conmutando el LED encendido y apagado en una
secuencia particular. Alternando en dos estados ALTO y BAJO, cuando esté enviando una
señal modulada (1) y apagada (0).
El mecanismo de funcionamiento de una transmisión por infrarrojos es por medio de un
haz de luz, de alta frecuencia (en nuestro caso de 38kHz) se proyecta frente a un receptor.
Este haz de luz no es más que una secuencia de bits (0 y 1) que son codificados por el
receptor, a través de la polarización del fototransistor.
71
UNIT ELECTRONICS
Diagrama de Conexión
En esta ocasión nos apoyaremos de una batería para alimentar al motor de pasos, ya que
por la corriente de carga que el motor tendrá al ser activado es posible dañar nuestra
tarjeta de desarrollo si lo conectamos directamente a ella.
72
UNIT ELECTRONICS
Código de Funcionamiento
Para la realización del programa requerimos de 2 librerías, la primera Stepper que nos
ayudará a trabajar con el motor a pasos e IRremote.
En el caso de la librería IRremote nos permite enviar y recibir códigos con los que podremos
manejar cualquier circuito con un control remoto de TV. La biblioteca referida, es
compatible con Philips RC5, RC6 Philips, NEC, Sony SIRC y protocolos en bruto, se puede
utilizar incluso para copiar los códigos de su mando a distancia y volver a transmitirlos,
como un control remoto universal
73
UNIT ELECTRONICS
#include <Stepper.h>
#include <IRremote.h>
//Declaración de variables
#define PASOS 32 // # de pasos por revolución en el eje
int AVANCE; // 2048 = 1 revolución
int IR = 7; // Pin 7 donde recibirá la información del IR
//Declaración de objetos para el motor e IR
//Declaración de pines que tendrán conexión al motor
Stepper small_stepper(PASOS, 11,10,9,8);
IRrecv irrecv(IR); // creación de instancia 'irrecv'
decode_results datos; // creación de instancia 'decode_datos'
void setup()
{
Serial.begin(9600); //Iniciando puerto serial en 9600 bauds
irrecv.enableIRIn(); //Se habilita recepción de datos IR
}
void loop()
{
Serial.println(datos.value, HEX); //Impresión de valor recibido por IR
delay(2000); //espera de 2 seg
if (irrecv.decode(&datos)) //se ha recibido
{
switch (datos.value) //operación switch/case para realizar una acción
{
case 0xFFA857: // Si se presiona el botón VOL+
small_stepper.setSpeed(500); //Velocidad a la que rotara el motor
AVANCE = 2048; // Rotara el motor en sentido de las manecillas del reloj
small_stepper.step(AVANCE);
delay(2000);
break;
case 0xFFE01F: // Si se presiona el botón VOL-
small_stepper.setSpeed(500); //Velocidad a la que rotara el motor girara el motor en
//sentido contrario de las manecillas del reloj
AVANCE = -2048;
small_stepper.step(AVANCE);
delay(2000);
break;
case 0xFF6897: // Si se presiona el botón "0" cero
digitalWrite(8, LOW); //se apagaran todos los motores
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(11, LOW);
break;
}
irrecv.resume(); // recepción de nuevo valor IR
}
}
74
UNIT ELECTRONICS
Lección 20
Conocimientos previos
Servomotor SG90
El SG90 es un pequeño actuador rotativo con especialidad de mantenerse fijo en una
posición. Componiendo la parte mecánica, eléctrica y electrónica. Ya que se puede tener
control preciso en posición angular, este servomotor puede rotar de 0° hasta 180°.
Caja de negranes
(Parte Mecánica)
Motor
Controlador (Parte Eléctrica)
(Parte Eléctronica)
Para poder controlar cada ángulo del servomotor es necesario aplicar una señal PWM. Esta
señal tiene la forma de una onda cuadrada. Dependiendo del ancho del pulso, el motor
adoptará una posición fija.
Las señales que vemos en la imagen son las que permiten que el eje del motor adquiera
determinada posición. Estas señales deben repetirse en el tiempo para que el motor
mantenga una posición fija. La duración del ciclo de trabajo varía entre 15 y 25
milisegundos.
75
UNIT ELECTRONICS
MOSI (Master Out Slave In): Línea utilizada para llevar los bits que provienen del maestro
hacia el esclavo.
MISO (Master In Slave Out): Línea utilizada para llevar los bits que provienen del esclavo
hacia el maestro.
CLK (Clock): Línea proveniente del maestro se encarga de enviar la señal de reloj para
sincronizar los dispositivos.
MAESTRO ESCLAVO
Memory Memory
SCLK
MOSI
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
MISO
76
UNIT ELECTRONICS
Diagrama de Conexión
La siguiente conexión, busca que cuando sea detectado el TAG en forma de llavero el servo
gire en 90° para la derecha y en caso de detectar el TAG de Tarjeta, girara 90° en sentido
contrario, esto para simular dos entradas de una posible puerta.
77
UNIT ELECTRONICS
Código de Funcionamiento
Para el siguiente programa requerimos de 3 librerías, SPI para la comunicación, MFRC522
para el módulo RDFI-RC55 y finalmente SERVO para usar el servomotor SG90.
//Librerías para poder utilizar el RDFI-RC522, ServoMotor SG90 y protocolo de comunicación SPI
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define RST_PIN 5 // Pin del RDFI-RC522 a Pin 5
#define SS_PIN 10 // Pin del RDFI-RC522 a Pin 10
Servo sg90;
MFRC522 mfrc522(SS_PIN, RST_PIN); // Creando instancia para RFID
byte i; //variable , elemento de matriz de lectura de datos por el lector
byte datoUID[4]; //matriz para guardar valores arrojados por el detector
//Valor hexadecimal al usar el llavero <previamente comprobado>, puede variar
byte llavero[4]={0xBC,0x73,0x9F,0x63};
//Valor hexadecimal al usar la tarjeta <previamente comprobado>, puede variar
byte tag[4]={0x33,0xF0,0x20,0x0D};
void setup() {
Serial.begin(9600); // Inicializa comunicación serial
SPI.begin(); // Iniciación de comunicación por bus SPI
sg90.attach(3); //Pin para la señal al servo-Pin 3
sg90.write(0); //Siempre que se inicie el programa el servo tendrá un valor de 0°
mfrc522.PCD_Init(); // inicialización de MFRC522
Serial.println(F("Coloque tarjeta para realizar escaner")); //mensaje para usuario
78
UNIT ELECTRONICS
}
void loop() {
//Reinicia el ciclo si no hay detección de tarjeta
if ( ! mfrc522.PICC_IsNewCardPresent())
return;
// Lee el valor del ID presentado
if ( ! mfrc522.PICC_ReadCardSerial())
return;
Serial.println("UID:");
//Se guarda los datos del ID
for (byte i = 0; i < mfrc522.uid.size; i++) {
//limitando la lectura de los valores en la matriz hexadecimal a 10 dígitos
if (mfrc522.uid.uidByte[i] < 0x10) {
Serial.print("0");
} else {
Serial.print("");
}
//imprime en Monitor Serial, el valor leído por el detector
Serial.print(mfrc522.uid.uidByte[i], HEX);
datoUID[i]= mfrc522.uid.uidByte[i]; //Se guardan los valores en la variable dato UID
}
mfrc522.PICC_HaltA();
if (datoUID[i] != llavero[i]){ //Si la lectura corresponde a los valores de la matriz tarjeta[]
Serial.println("Tarjeta");
for (int j = 0; j <= 180; j++) { //sentido antihorario abre
sg90.write(j); //se dará el valor del ángulo de 0 a 180 incrementando
delay(5); //realiza el movimiento más rápido 5 milisegundo
}}
79
UNIT ELECTRONICS
https://uelectronics.com/
ELABORADO POR EL EQUIPO DE UNIT