Está en la página 1de 6

INFORME DE PRÁCTICA DE LABORATORIO Versión 1.

0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2022-2

Niño Juan Sebastian y González Laura Catalina.


{est.juans.nino y est.laura.gonzalez2}@unimilitar.edu.co
Profesor: Amaya Dario.

Resumen— Los protocolos de comunicación son una serie de instrucciones que se dan de forma organizada para transmitir una
información, es decir permite que uno o varios dispositivos establezcan conexiones entre sí para intercambiar datos. En la actualidad
los protocolos de comunicación se implementan en hardware y software, tanto en comunicaciones analógicas como digitales. Existen
una serie de protocolos con los cuales se realiza la comunicación entre dispositivos, algunas de estas configuraciones reciben el nombre
de I2C, SPI, Bluetooth, RS485, entre otros. Los protocolos mencionados anteriormente fueron desarrollados y programados a lo largo
del documento, para realizar la comunicación entre dos tarjetas de la referencia “ESP32 Devkit V1”, con esto se busca identificar las
habilidades y técnicas que se tienen para realizar la comunicación entre un computador y un sistema embebido. Para desarrollar la
programación se comenzó por entender que significan los diferentes protocolos de comunicación para así poderlos programar.
Además, se realizó la selección de la ESP32, esto por medio de análisis y observación, esto con el fin de encontrar la tarjeta con mayor
cantidad de características y sobre todo que fuera capaz de realizar los 4 tipos de protocolos de comunicación. Al realizar los
diferentes modos de comunicación se verificó que tanto la velocidad, como el tiempo de respuesta juegan un papel importante dentro
de la comunicación, ya que si el maestro o el esclavo, no envía los datos en el momento justo, los datos podrían arrojar valores
erróneos. También se entendió que es importante verificar las características de los dispositivos antes de realizar la compra de los
mismos, ya que si se llegase a seleccionar un componente de forma errónea, se generaría pérdidas de dinero y tiempo invertido al
intentar programar el dispositivo.

Palabras clave—Comunicación serial, I2C, UART, para asimilar e implementar ese proyecto.Con la finalidad
Bluetooth . de realizar esto se especificaron ciertas tareas las cuales
dieron cumplimiento al desarrollo integral del proyecto, una
I. INTRODUCCIÓN de las más importantes es conocer el dispositivo a manejar,
es decir la ESP32 contiene una hoja de datos las cuales se
L a tarjeta de programación ESP32 cuenta con múltiples
debe verificar y analizar antes de ponerla en
funcionamiento.[1]
tecnologías de comunicación como lo son WiFi, Bluetooth,
SPI, I2C, I2S, entre otros. Con ayuda de este tipo de Por otro lado también se analiza el proyecto llevado a
comunicaciones incluidas en el dispositivo se pueden lograr cabo por Joselyn Stafania Quimis que igualmente está
programaciones avanzadas relacionadas con la desarrollado con la tarjeta ESP32, en esta ocasión la autora
intercomunicación entre dispositivos ya sea de manera decidió tomar como problemática la contaminación
física o inalámbrica. ambiental que genera el ruido de diversos factores en el aula
de clase de una universidad en México, ya que según la
Gracias a este chip, se han logrado avances en el área OMS el nivel máximo de decibeles en un aula de clase debe
previamente mencionada, ya que favorece al uso del IoT, el ser 35dB. [2]
cual hoy en dia es muy utilizado, no solamente para
aparatos inteligentes de los hogares, sino también es muy Para este diseño el objetivo principal es determinar los
utilizado actualmente por las empresas e industrias con el ruidos que causan contaminación auditiva en las aulas de
fin de automatizar y sincronizar los diferentes tipos de clase para así poder implementar un sistema de
dispositivos y maquinarias que se utilizan. notificaciones que indicará cuando el nivel de ruido se
encuentre por encima de lo recomendado y así mismo este
A. Estado del arte sensor indicará el lugar de la institución del cual proviene
dicha contaminación, de esta manera será más fácil
En primer lugar se hablará del trabajo realizado por encontrar las principales raíces del problema y sus posibles
Raynel Moreno Hernandez, este se trata de una adaptación soluciones.
domótica de una casa por medio del internet de las cosas
(IoT), para esto controlaron múltiples sensores mediante el Así mismo, para la metodología del desarrollo de este
estandarizado protocolo de comunicación MQTT. proyecto, se utilizaron módulos GPS, conversores
análogo-digital (ADC), sensores de ruido, un botón y unos
El objetivo principal será el diseño de una aplicación con leds. El sensor GPS es utilizado para que al momento en el
Node-Red que permite controlar varios sensores mediante que el sensor detecte un ruido con una frecuencia por
el protocolo de comunicación MQTT, para esto dichos encima de lo recomendada, este enviará por medio de
brokers recibirán los mensajes, filtrarlos y después publicar Bluetooth la posición en la cual se encuentra dicha
o entregar a los clientes. adaptación, además el ADC es utilizado para poder
La metodología utilizada en este trabajo parte de una convertir y manejar los datos del ruido en la programación
extensa investigación y una recolección de datos y análisis, respectiva y con ayuda de esta encender los leds a manera
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2022-2

de alarma, todo con la finalidad de poder reducir el


problema previamente expuesto.

Por otra parte se analizó el funcionamiento autónomo de


un robot, para el almacenaje y clasificación de las piezas,
mediante la ESP32 Y ESP32-CAM. Según Martín Osuna
Juan José, fue una programación mediante openCV en
lenguaje python. El funcionamiento y control del robot se
hará mediante una placa y código basada en Arduino e
implementando un sistema de comunicación serie entre
ambos periféricos, se aplicó detección de color,
procesamiento de imagen y comunicación serire. Ilustración 1. Planeador de actividades.
Se pone en funcionamiento los sistema embebidos
mediante la traslación lógica de los algoritmos de la imagen En esta imagen se puede observar la planeación que tuvo el
de la ESP32-CAM, se cumplieron unas etapas donde se grupo para poder desarrollar la guía de laboratorio, en los
hizo el control no embebido mediante webcam, la segunda tiempos estipulados y cumpliendo con los requisitos. Cabe
etapa a fue el control no embebido mediante ESP32-CAM y aclarar que siempre hubo uno que otro percance, ya que al
la última etapa fue el control embebido mediante la comprar mal la tarjeta que se va a implementar, eso atrasó
ESP32-CAM. [3] todo el desarrollo ya que se debía buscar una que fuera
compatible tanto con los sensores y demás sino que fuera
Finalmente, se habla del proyecto desarrollado por Juan amigable con los diferentes componentes que interactúan
Carlos Alarcón, el cual se basa en la maquinaria utilizada con la misma.
por distintas industrias y su falta de monitoreo, por esta
causa, según el autor, dicha maquinaria suele sufrir daños
que afectan directamente a la empresa en cuestión como lo II. DESARROLLO DE LA PRÁCTICA
pueden ser deterioro prematuro de las máquinas o el paro La tarjeta utilizada para este laboratorio es la “ESP32
repentino de producción el cual puede ocasionar pérdidas DEVKIT V1”, esta tarjeta tiene dos núcleos es decir tiene 2
monetarias inesperadas. procesadores lo cual aumenta su velocidad. También tiene
wifi incluido y dos tipos de bluetooth, a uno se le denomina
Para poder solucionar dicha problemática, el autor se BLE( Bluetooth de baja energía ), este se refiere a el
propone un principal objetivo, implementar un sistema de bluetooth que se emplea cuando los dispositivos no están
monitoreo eléctrico remoto de los motores trifásicos lejanos entre sí y cuándo volumen de datos es muy poco.
utilizados para las maquinarias, esto se hizo por medio de la Por el contrario, cuando se quiere enviar datos pesados, se
programación de la ESP32 implementando dicho módulo usa el bluetooth tradicional. En su arquitectura manejan 32
que ayudaría a múltiples empresas a evitar los daños y bits. También tiene una amplia variedad de periféricos
pérdidas inesperadas. disponibles, como: táctil capacitivo, ADC, DAC, UART,
SPI, I2C y mucho más, además esta placa tiene integrado
Al implementar la metodología que hizo este proyecto dos sensores, uno correspondiente al sensor hall y el otro es
posible, se utilizaron distintos sensores como los sensores de temperatura.
de corriente ASC712-30 y SCT-013-030, igualmente se El Flash Layout es un módulo organizado en una sola zona
hizo uso del sensor de voltaje ZMPT101B, con la medición de flash con 4095 bits.
de dichos sensores y ciertos cálculos dependiendo del motor
utilizado que se realizaron en la programación, se logró
verificar el correcto y permanente funcionamiento del
motor transmitiendo esta información por medio de WiFi a
una base de datos que permitirá controlar periódicamente
los parámetros de funcionamiento para así evitar fallas
inesperadas. [4]

Ilustración 2. Esp32 devkit.


INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2022-2

Otras especificaciones:
● Voltaje de funcionamiento 3.3V
● Voltaje de entrada 7-12V
● Pines de E/S digitales (DIO):25
● Pines de entrada analogica(ADC): 6
● Pines de salidas analogicas (DAC): 2
● UART:3
● SPI:2
● I2C:3
● Memoria flash: 4 MB
● SRAM: 520 KB
● Velocidad de reloj 240 MHz
Ilustración 4. Primera parte código interfaz.

A Continuación se muestra el diagrama de clases Para hacer de manera correcta la interfaz se utilizó el
implementado en el laboratorio, teniendo en cuenta todas programa Visual Studio Code con la extensión de python,
las variables encontradas para cada bloque, sabiendo que la por lo tanto se programó bajo el lenguaje de Python, en el
señal análoga recibida por el ESP32, es enviada a cual se declararon las ventanas de las diferentes
cualquiera de los 4 botones los cuales grafican, transmiten y comunicaciones que se realizaron, es decir una ventana par
envían los datos recopilados de acuerdo a la opción que se I2C, otra ventana SPI, y así sucesivamente, así mismo se le
escoja utilizar para realizar la comunicación serial entre las designó un color específico a cada ventana con el fin de no
ESP32 de ambos grupos y los computadores de cada uno confundir e identificar de manera más rápida cada proceso.
También se determinó el tamaño de la ventana con el fin de
A partir del funcionamiento de la práctica se realizó un que sea cómoda para visualizar y utilizar.
diagrama de flujo de acuerdo al inicio/final del proceso en
la práctica.

Ilustración 3 Diagrama de flujo

En la ilustración 3 se evidencia el diagrama de flujo que Ilustración 4.1 Segunda parte del código interfaz.
describe el comportamiento que debe ejecutar el programa,
inicialmente se inicia la programación y la Esp32 captura En la ilustración anterior se evidencia la programación de
los valores enviados a los pines 32,33 y 25. Estos valores los botones enlazados a su respectiva función que ejecuta la
son los que se van a transmitir, en la interfaz se debe programación de los diferentes protocolos de comunicación,
seleccionar un botón para seleccionar el tipo de por ejemplo al oprimir el botón de Bluetooth se transmiten
comunicación que se va a usar. Una vez seleccionado el tipo los datos del potenciómetro por medio de Bluetooth y así
de protocolo, los datos de los potenciómetros se envían a la con el resto de protocolos.
otra Esp32.
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2022-2

Ilustración 7. Programación de Maestro I2C


Ilustración 5. Interfaz.
En la ilustración 7 se configuró la Esp32 como Maestro, es
En la ilustración 5 se puede observar el diseño de la decir que se le configuró la dirección del esclavo, para que
interfaz, en la cual al momento de presionar el botón el este pueda buscarla y conectarse con el esclavo. Además,
fondo de la ventana cambia como se mencionó se configuraron varios if, en dado caso que se llegue a
anteriormente y en el recuadro de color blanco se muestra conectar con el esclavo, en la interfaz de arduino se muestra
los datos obtenidos de la comunicación entre las dos un mensaje que indica conexión exitosa, en dado caso que
ESP32. esto no ocurra, el mensaje en pantalla será “ error no
encuentro dispositivos I2C”, esto tiene un delay para
esperar que regrese la confirmación que envía la Esp32 al
establecer conexión.

Ilustración 8. Bluetooth

Para la configuración del bluetooth se asignó la dirección y


el nombre que tiene la Esp32 para que el otro dispositivo
Ilustración 6. configuración de los potenciómetros
logre conectarse, en este caso se programó la Esp32 como
maestro en donde, a pesar del nombre que recibe la Esp32,
Para la configuración de los potenciómetros, se configuran
se configuró el nombre del otro dispositivo con el que va a
los pines 33,32 y 25 con ADC para que estos reciban el
establecer conexión. A parte de eso se configuró la
voltaje de entrada y dicho dato pueda después enviarse por
velocidad de transmisión de datos que debe ser igual a la
medio de algún protocolo de comunicación a otra Esp32.
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2022-2

velocidad del otro dispositivo para evitar errores de


comunicación entre los dispositivos. ANEXOS

III. CONCLUSIONES
Luego de realizar la práctica de laboratorio y analizar los
resultados obtenidos, se demuestra que es posible realizar la
comunicación entre ESP32 en diferentes dispositivos, cabe
aclarar que para llevar a cabo este resultado se modificaron
los códigos y parámetros con el fin de cumplir el objetivo,
de la misma manera se implementaron conocimientos
adquiridos en clase y se reforzaron otros que ya se habían
en asignaturas de semestres anteriores.
Es algo novedoso, porque son los primeros pasos en la
codificación y manipulación de comunicaciones entre
dispositivos y en sistemas como Bluetooth, RS485 entre
otros y genera curiosidad e ideas de implementación a gran
escala.
Por último se identificó y se conoció un nuevo dispositivo
como lo es ESP32, sus componentes y sus conexiones para
llevar a cabo la práctica, de la misma manera se amplió el
manejo de lenguaje de programación en distintos CÓDIGO:
programas.
#INCLUDE <ARDUINO.H>
#INCLUDE <BLUETOOTHSERIAL.H>
#INCLUDE <WIRE.H>

// BLUETOOTH
BLUETOOTHSERIAL SERIALBT;
INT I = 0;

STRING MACADD = "AA:BB:CC:11:22:33";


UINT8_T ADDRESS[6] = {0XAA, 0XBB, 0XCC, 0X11, 0X22,
Ilustración 9. Montaje Físico 0X33};
La ilustración 9 muestra las conexiones en los respectivos //UINT8_T ADDRESS[6] = {0X00, 0X1D, 0XA5, 0X02, 0XC3,
pines mencionados a lo largo del documento. Además, se 0X22};
muestran los tres potenciómetros conectados a la Esp32 con STRING NAME = "ESP32JUANCAT"; // <------- SET
los cuales se varió el voltaje en los pines para obtener el THIS TO BE THE NAME OF THE OTHER ESP32!!!!!!!!!
respectivo valor a enviar. CHAR *PIN = "1234"; //<- STANDARD PIN WOULD BE PROVIDED BY
DEFAULT
BOOL CONNECTED;
REFERENCIAS
[1] Moreno Hernández, R. (2020). Desarrollo de una aplicación IoT /*ONST UINT8_T LED=2;
para la gestión de un hogar inteligente mediante el protocolo MQTT CONST STRING DEVICENAME="JUANCAT_LAB";
y Sistemas en chip (SoC) ESP32 (Doctoral dissertation, Universitat
BYTE DATARX;
Politècnica de València).
[2] Quimis Suárez, J. E. (2021). Diseño de un prototipo experimental de */
medición de señales de ambientes de contaminación acústica CONST INT POTENCIOMETRO1 =32; // ADC1_4 GPIO 32
(Doctoral dissertation, Universidad de Guayaquil. Facultad de INT LECTURA1;
Ciencias Matemáticas y Físicas. Carrera de Ingeniería en Networking
CONST INT POTENCIOMETRO2 =33; // ADC1_5 GPIO 33
y Telecomunicaciones).
[3] Martín Osuna, JJ. (2022). Diseño y Programación de un Sistema de INT LECTURA2;
Bajo Coste basado en la ESP 32-CAM para el Control de un Brazo CONST INT POTENCIOMETRO3 =25; // ADC2_8 GPIO 35
Robótico. Universitat Politècnica de València. INT LECTURA3;
http://hdl.handle.net/10251/184354 VOID SETUP() {
[4] Alarcón Pupiales, J. C. (2022). Implementación de un sistema de
monitoreo remoto de variables eléctricas para un motor trifásico de
// PUT YOUR SETUP CODE HERE, TO RUN ONCE:
inducción en el laboratorio de máquinas eléctricas de la carrera de SERIAL.BEGIN(115200);
Electricidad (Bachelor's thesis) WIRE.BEGIN();
INFORME DE PRÁCTICA DE LABORATORIO Versión 1.0
PROGRAMA DE INGENIERÍA MECATRÓNICA Periodo 2022-2

SERIAL.PRINTLN("\NI2C SCANNER"); IF (ADDRESS<16) {


/*PINMODE(LED,OUTPUT); SERIAL.PRINT("0");
DIGITALWRITE(LED,HIGH); }
SERIALBT.BEGIN(DEVICENAME); SERIAL.PRINTLN(ADDRESS,HEX);
SERIAL.PRINTLN(DEVICENAME+" LISTO !..."); NDEVICES++;
*/ }
//*******************BLUETOOTH ELSE IF (ERROR==4) {
SERIALBT.BEGIN("ESP32JUANNICO", TRUE); SERIAL.PRINT("UNKNOW ERROR AT ADDRESS 0X");
//SERIALBT.SETPIN(PIN) IF (ADDRESS<16) {
SERIAL.PRINT("0");
; }
SERIAL.PRINTLN("THE DEVICE STARTED IN MASTER MODE, MAKE SERIAL.PRINTLN(ADDRESS,HEX);
SURE REMOTE BT DEVICE IS ON!"); }
}
// CONNECT(ADDRESS)FAST (UPTO 10 SECS MAX),
IS IF (NDEVICES == 0) {
CONNECT(NAME) IS SLOW (UPTO 30 SECS MAX) AS IT NEEDS SERIAL.PRINTLN("NO I2C DEVICES FOUND\N");
// TO RESOLVE NAME TO ADDRESS FIRST, BUT IT ALLOWS TO }
CONNECT TO DIFFERENT DEVICES WITH THE SAME NAME. ELSE {
// SET COREDEBUGLEVEL TO INFO TO VIEW DEVICES BLUETOOTH SERIAL.PRINTLN("DONE\N");
ADDRESS AND DEVICE NAMES }
CONNECTED = SERIALBT.CONNECT(NAME); DELAY(5000);
//CONNECTED = SERIALBT.CONNECT(ADDRESS); LECTURA1=ANALOGREAD(POTENCIOMETRO1);
SERIAL.PRINTLN(LECTURA1);
IF(CONNECTED) { DELAY(50);
SERIAL.PRINTLN("CONNECTED SUCCESFULLY!"); LECTURA2=ANALOGREAD(POTENCIOMETRO2);
} ELSE { SERIAL.PRINTLN(LECTURA2);
WHILE(!SERIALBT.CONNECTED(10000)) { DELAY(50);
SERIAL.PRINTLN("FAILED TO CONNECT. MAKE SURE REMOTE LECTURA3=ANALOGREAD(POTENCIOMETRO3);
DEVICE IS AVAILABLE AND IN RANGE, THEN RESTART APP."); SERIAL.PRINTLN(LECTURA3);
} DELAY(50);
} /*IF(SERIALBT.AVAILABLE())
// DISCONNECT() MAY TAKE UPTO 10 SECS MAX {
IF (SERIALBT.DISCONNECT()) { DATARX=SERIALBT.READ();
SERIAL.PRINTLN("DISCONNECTED SUCCESFULLY!"); SERIAL.WRITE(DATARX);
} }
// THIS WOULD RECONNECT TO THE NAME(WILL USE ADDRESS, IF IF(DATARX=='1')
RESOLVED) OR ADDRESS USED WITH CONNECT(NAME/ADDRESS). DIGITALWRITE(LED,LOW);
SERIALBT.CONNECT(); ELSE IF(DATARX=='0')
} DIGITALWRITE(LED,HIGH); */
// **************** BLUETOOHT
VOID LOOP() { IF (SERIAL.AVAILABLE()) {
// PUT YOUR MAIN CODE HERE, TO RUN REPEATEDLY: SERIALBT.WRITE(SERIAL.READ());
BYTE ERROR, ADDRESS; }
INT NDEVICES; IF (SERIALBT.AVAILABLE()) {
SERIAL.WRITE(SERIALBT.READ());
SERIAL.PRINTLN("SCANNING..."); }
DELAY(20);
NDEVICES = 0;
FOR(ADDRESS = 1; ADDRESS < 127; ADDRESS++ )
{ }
// THE I2C_SCANNER USES THE RETURN VALUE OF
// THE WRITE.ENDTRANSMISSTION TO SEE IF
// A DEVICE DID ACKNOWLEDGE TO THE ADDRESS.
WIRE.BEGINTRANSMISSION(ADDRESS);
ERROR = WIRE.ENDTRANSMISSION();
IF (ERROR == 0) {
SERIAL.PRINT("I2C DEVICE FOUND AT ADDRESS 0X");

También podría gustarte