0% encontró este documento útil (0 votos)
95 vistas40 páginas

Comunicación Serial con Arduino

Este documento describe una práctica sobre comunicación serial entre un microcontrolador y una computadora utilizando Arduino. El objetivo es implementar un menú serial en el microcontrolador para controlar diferentes acciones como transferir figuras ASCII, realizar cálculos matemáticos con números ingresados y más, todo a través de la comunicación serial con la computadora. Se explican conceptos como programación de microcontroladores, Arduino, comunicación serial y más para llevar a cabo correctamente la práctica.

Cargado por

ParamePID
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)
95 vistas40 páginas

Comunicación Serial con Arduino

Este documento describe una práctica sobre comunicación serial entre un microcontrolador y una computadora utilizando Arduino. El objetivo es implementar un menú serial en el microcontrolador para controlar diferentes acciones como transferir figuras ASCII, realizar cálculos matemáticos con números ingresados y más, todo a través de la comunicación serial con la computadora. Se explican conceptos como programación de microcontroladores, Arduino, comunicación serial y más para llevar a cabo correctamente la práctica.

Cargado por

ParamePID
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

Práctica Uno

Tecnológico Nacional de México


Instituto Tecnológico de Toluca
Ingeniería Mecatrónica

Comunicación Serial
Microcontroladores entre un
José Manuel García Hernández
microcontrolador y
Marzo de 2021
una Computadora
Microcontroladores José Manuel García Hernández Marzo - Julio 2021
Comunicación Serial entre un
microcontrolador y una Computadora

La comunicación serial juega un papel muy importante


para comunicar los microcontroladores con
computadoras, PLCs, sensores de proceso y diversos
dispositivos industriales. El adecuado entendimiento de
este tipo de comunicación permitirá sentar las bases
para los temas de buses I2C, SPI y redes de
comunicación. En esta práctica se pretende que el
alumno comprenda y ejercite los conocimientos sobre
UARTs y los aplique sobre la plataforma de ARDUINO.
Es importante también recordar que, de acuerdo con la
filosofía del curso en la parte práctica, esta práctica será
la base para la práctica siguiente.
Microcontroladores José Manuel García Hernández Marzo - Julio 2021
OBJETIVOS DE LA PRÁCTICA
Objetivo general
Comunicar de forma serial una computadora y un microcontrolador, ejecutando
diversas acciones en el microcontrolador desde el teclado de la computadora.

Objetivos particulares

❑ Comprender los principios básicos de la comunicación serial entre una


tarjeta ARDUINO y una computadora
❑ Implementar un protocolo SOFTWARE, para que utilizando la UART del
microcontrolador, se realice la comunicación con la computadora
❑ Implementar un menú de opciones en el microcontrolador, para la ejecución
de diferentes acciones desde la computadora
❑ Ejercitar el uso de algunas funciones relacionadas con el puerto serial de la
plataforma ARDUINO
❑ Aplicar el uso de información codificada en ASCII para la transferencia de
datos seriales entre dispositivos digitales, así como información codificada
en IEE754.
❑ Aplicar algunos de los mejores hábitos de la programación en lenguaje C,
ORIENTADOS a microcontroladores
Microcontroladores José Manuel García Hernández Marzo - Julio 2021
DESARROLLO
Para el desarrollo de esta práctica solamente es necesario contar con
una tarjeta ARDUINO (UNO, MEGA, etc.), los conceptos teóricos
necesarios acerca de comunicación serial y manejo de datos ASCII.

Funcionamiento

❑ El microcontrolador tendrá grabado en su memoria de programa el


código necesario para implementar un menú serial.
❑ El menú serial implementado en el microcontrolador se despliega en
la pantalla de la computadora.
❑ La computadora a través del monitor serial enviará al
microcontrolador las opciones correspondientes al menú
implementado.
❑ De acuerdo a las opciones seleccionadas desde la computadora, el
microcontrolador realizará diferentes acciones .

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


DESARROLLO
Acciones a realizar por el microcontrolador (opciones del
menú):

1. El microcontrolador enviará a la computadora una figura


implementada mediante códigos ASCII, la cual estará
almacenada en la memoria del propio microcontrolador.
2. El microcontrolador pedirá DOS números flotantes.
3. El microcontrolador desplegará la suma de los dos números
ingresados mediante la opción 2.
4. El microcontrolador desplegará la resta de los dos números
ingresados mediante la opción 2.
5. El microcontrolador desplegará la multiplicación de los dos
números ingresados mediante la opción 2.
6. El microcontrolador desplegará la división de los dos números
ingresados mediante la opción 2.

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


DESARROLLO

Let me
choose an
option

CABLE
USB 2.3 + 5.5
2.3 * 5.5
2.3 / 5.5
2.3 - 5.5

ARDUINO
MEGA

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


DESARROLLO ASCII TABLE

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


DESARROLLO
Conversión de imágenes a código ASCII

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


DESARROLLO
Para convertir imágenes a código ASCII, se pueden utilizar diversas herramientas
WEB, como por ejemplo:

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


DESARROLLO
Para realizar de la manera más adecuada las siguientes
opciones del menú serial, es necesario comprender algunos
aspectos teóricos que se desarrollarán a continuación :

❑ Cómo se programa un microcontrolador


❑ Breve descripción de la plataforma ARDUINO
❑ Instalación de la plataforma ARDUINO
❑ Comunicación serial mediante la plataforma ARDUINO
❑ Funciones de comunicación serial en la plataforma
ARDUINO
❑ Implementación por software de puertos seriales en la
plataforma ARDUINO

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Pasos para programar un microcontrolador
❑ Realizar el programa de usuario en un editor de texto
❑ Utilizando un compilador o un programa ensamblador, generar el archivo
en código máquina del programa de usuario para “grabar” la memoria
ROM
❑ Transferir el archivo en código máquina a un dispositivo programador
❑ Realizar la programación o “grabado de la memoria”
❑ Realizar pruebas funcionales

FORMA CLÁSICA DE PROGRAMAR UN MICROCONTROLADOR


El programador comercial “graba” la
Programador comercial memoria FLASH (ROM) del
(dispositivo programador) microcontrolador

Para transferir el archivo en código máquina desde el programador al


microcontrolador se utiliza un puerto serial (SPI) disponible en casi
todos los microcontroladores
Microcontroladores José Manuel García Hernández Marzo - Julio 2021
Programando un AVR
Para programar la memoria del uC AVR de una tarjeta ARDUINO con los
programas de usuario (en código máquina), una opción es mediante un
programador comercial (como el STK-500) y el puerto ICSP (In Chip
Serial Programmer), el cual corresponde a un puerto SPI del mismo uC.

≈38
USD

Programando una tarjeta ARDUINO (SPI)

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Entorno de Desarrollo Integrado
ARDUINO
Para NO utilizar una herramienta especial de programación, la plataforma
ARDUINO realiza la programación del AVR mediante una interfase USB
incluida en la misma tarjeta ARDUINO y el programa ARDUINO boot-loader
(pre-grabado en el mismo AVR). Esto permite que la aplicación del lado de la
PC transfiera sus programas al dispositivo y también le permite programar el
AVR a través del puerto serie, lo que significa que todo lo que se necesita para
programar la tarjeta ARDUINO es un cable USB y una computadora.

ARDUINO IDE BOOT


LOADER

USB SERIAL

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Tarjetas para la plataforma Arduino
Una tarjeta ARDUINO es básicamente un microcontrolador Atmel AVR
con los circuitos electrónicos necesarios para operar adecuadamente
SIN interfaces adicionales, excepto la interface con la PC.

Convertidor USB a serial

Tarjeta ARDUINO UNO [Link]

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


ARDUINO UNO

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


ARDUINO UNO

Esquema de conexión serial en la tarjeta ARDUINO UNO

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


ARDUINO UNO

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Microcontroladores José Manuel García Hernández Marzo - Julio 2021
Arduino IDE
Estructura de un Sketch

La función setup() es la parte encargada de REALIZAR la


configuración yla función loop() es la que contiene el programa que se
ejecuta cíclicamente (de ahí el término loop –bucle). Ambas funciones
son necesarias para que el programa FUNCIONE.
Microcontroladores José Manuel García Hernández Marzo - Julio 2021
Instalación de la IDE ARDUINO

❑ Instalar el IDE de ARDUINO C


❑ Conectar y configurar la tarjeta ARDUINO
❑ Elegir el puerto COM adecuado
❑ Probar el ejemplo “BLINK”
❑ Verificar lo recursos utilizados por las
variables definidas por el usuario

[Link]
Microcontroladores José Manuel García Hernández Marzo - Julio 2021
Configurar tarjeta a utilizar en ARDUINO

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Configurar puerto (COM) a utilizar en ARDUINO

Puerto COM virtual


asignado por el
Sistema Operativo
a la tarjeta
ARDUINO (FTDI)

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Emulador de terminal de arduino CC
La IDE de ARDUINO ofrece al usuario un emulador de terminal muy
básico, el cual se conoce en el entorno como “Monitor Serial”, con esta
aplicación integrada en la IDE es posible interaccionar con el programa
grabado en el microcontrolador a través de su puerto serial y el FTDI
incluido en la tarjeta ARDUINO.

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Algunas funciones a utilizar en la
IDE de ARDUINO

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Arduino IDE
Algunas funciones a utilizar

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Algunas
funciones a
utilizar

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Algunas funciones a utilizar

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Algunas funciones a utilizar

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Ejercicio 5
Funciones del

[Link]
puerto Serial

SerialEvent

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Comunicación
Serial
Arduino

[Link]
Ejemplo:
Programa para
prueba del
puerto Serial

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Comunicación Serial con Arduino
Cuando los recursos HARDWARE de un microcontrolador NO cuentan
con un Puerto Serial (UART), es posible la implementación por
SOFTWARE del mismo. Existen ventajas y desventajas asociadas a
este tipo de implementación:

Ventajas:
❑ Las terminales de TX y RX pueden ser definidas a conveniencia del usuario
❑ El tiempo de respuesta dependerá de la sobrecarga de sotware de la CPU

Desventajas:
❑ Se consume tiempo de la CPU

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Comunicación Serial con Arduino
Programa Prueba
puerto Serial
implementado por
Software

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Técnicas de Optimización de la memoria RAM
La memoria RAM del microcontrolador es tal vez la parte que más
debe cuidarse durante la fase de programación, también, debido a la
filosofía de operación de ARDUINO, es la fuente más común de
problemas durante la ejecución de un programa y la más dificil de
diagnosticar. Por ejemplo, ante un comportamiento inexplicable, la
causa más probable podría estar relacionada con la pila. Ante esto,
existen algunas acciones que se pueden realizar durante la fase de
desarrollo del programa.

Cuando se definen variables en


el programa de usuario, si no se
especifica otra cosa, las
mismas ocupan espacio en
memoria RAM
¿alguna recomendación inicial
para minimizar esto?

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Técnicas de Optimización de la memoria RAM
Para evitar problemas relacionados con la memoria RAM, se sugiere la
implementación de las siguientes técnicas:

❑ Evitar en la medida de los posible la utilización de variables globales y estáticas


❑ Utilización de la macro (F)
❑ Utilización del modificador de variable PROGMEM
❑ Reutilización de variables
❑ Si no se va a utilizar comunicación serial (USART), disminuir el tamaño del
buffer de recepción/transmisión.

Uso de la pila (uP)

Variables de
usuario

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Técnicas de Optimización de la memoria RAM
Utilización de la macro F()

En la IDE de ARDUINO, la macro F() se puede usar para liberar memoria


RAM, por ejemplo, en las instrucciones “[Link]”, de forma que todo el
texto a imprimir (ya sea en Serial, Ethernet u otra librería), se lea de la Flash
y no ocupe espacio en la SRAM. Esta macro está incluida en el “core” de
Arduino. Cuando en un “sketch” se tienen problemas de memoria SRAM, el
primer y más sencillo paso a aplicar es utilizar la macro F() en todos los
“[Link]” del “sketch”.

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Técnicas de Optimización de la memoria RAM
El modificador de variable PROGMEM
En muchos casos, una gran cantidad de RAM se ocupa por el uso de variables
globales (tales como cadenas, arreglos o números constantes). Si estos datos
no cambian durante la ejecución del programa, pueden ser almacenados en la
memoria de programa o flash (algunas veces llamada PROGMEM ). Esto
ocuparía un SEGMENTO de la memoria flash, que es mucho más grande que
la memoria RAM (por ejemplo, Atmega2560 tiene 8 KB de RAM y flash de 256
KB). Una desventaja de usar PROGMEM podría ser la velocidad de lectura,
que es más lenta en comparación con la lectura de los mismos datos de la
RAM, aunque dependiendo de la aplicación, esta diferencia no es significativa.

La verdadera utilidad de PROGMEM es en bloques de datos grandes que


necesitan ser almacenados. La utilización de PROGMEM se hace en dos
pasos, después de hacer que la variable se guarde en la flash, se necesitan
algunas funciones definidas en la librería <pgmspace.h>, para leer los datos de
la flash y cargarlos en la SRAM (no es sencillo utilizar la FLASH).

IMPORTANTE: para el uso de PROGMEM:


1) Las variables deben ser o bien definidas de forma global o definidas como “static”
2) Deben tener el calificador “const”

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Técnicas de Optimización de la memoria RAM
El modificador de variable PROGMEM

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Técnicas de Optimización de la
memoria RAM
El modificador de variable PROGMEM

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


Ejemplo
Utilización del
modificador de
variable
PROGMEM

Microcontroladores José Manuel García Hernández Marzo - Julio 2021


RECOMENDACIONES Y CONSIDERACIONES
Recomendaciones a seguir:

❑ Implementar el menú serial utilizando la función de ARDUINO


SerialEvent().
❑ Utilizar la función de lenguaje C switch() – case
❑ Utilizar las funciones relacionadas con la clase STRING de ARDUINO
❑ Utilizar un carácter ASCII terminador.
❑ Al enviar los números flotantes al microcontrolador desde el monitor
serial, utilizar el formato IEEE754, para esto se recomienda convertir
antes mediante una calculadora HEXADECIMAL A IEEE754.
❑ Realizar la programación para que al menú se le pueda agregar
fácilmente más opciones.

Consideraciones

❑ El microcontrolador ATMEGA328 ARDUINO UNO tiene solamente un


puerto serial hardware (UART)
❑ El microcontrolador ATMEGA2560 (ARDUINO MEGA) tiene CUATRO
puertos seriales hardware (UARTs)

Microcontroladores José Manuel García Hernández Marzo - Julio 2021

También podría gustarte