ESP32 DevKit v1: Uso de dos puertos seriales por hardware - U0UXD y U2UXD


Saludos! En ocasiones y dependiendo del proyecto es indispensable hacer uso de dos puertos seriales, por ejemplo en uno tener conectado algun modulo bluetooth/GSM/GPS etc y en el otro conectar un adaptador USB para tener datos en alcun puerto COM de la computadora o simplemente conectar dos modulos seriales a nuestro ESP32, bueno en este ejemplo vamos ver la forma de usar dos de los tres puertos serialres por hardware (UART) con los que cuenta y para esto lo haremos con ESP32 DevKit v1 board.

Importante decir que el ESP cuenta con tres puertos seriales por hardware "U0UXD, U1UXD y U2UXD", pero solo dos estan disponibles para el usuario ya que un tercer puerto esta ocupado por una memoria SPI Flash inteno en el ESP32-WROOM.


Todos estos pines funcionan a niveles de 3.3 volts asi que debemos de cuidar esto cuando conectemos otros dispositivos.
  • U0UXD (UART0), sus pines TXD0 y RXD0 estan en GPIO1 y GPIO3 respectivamente. Este puerto es el que se usa para propgramar el ESP32 pero tambien es posible usarlo de proposito general.
  • U1UXD (UART1), sus pines TXD1 y RXD1 estan en GPIO10 y GPIO9 respectivamente. Pero si leemos en el datasheet dice esto "Pins SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 and SCS/CMD, namely, GPIO6 to GPIO11 are connected to the integrated SPI flash integrated on the module and are not recommended for other uses" asi que basicamente no lo podemos usar.
  • U2UXD (UART2), sus pines TXD2 y RXD2 estan en GPIO17 y GPIO16 respectivamente. Este puerto es de proposito general por lo tanto esta completamente disponible para nuestro uso.

Circuito:
Por un lado tenemos el puente USB-Serial que incorpora la ESP32 DevKit que esta conectado al UART0 y por el otro lado he usado un modulo USB-Serial externo(basado en el CH340G, pero puedes usar otro), el cual lo he conectado al UART2 (esta claro que las coneciones de TX y RX deben de ser cruzadas para que se comuniquen adecuadamente). No dejare un circuito como tal, pero si un intento de diagrama a bloques con las tres conexiones que hacen falta hacer.


Importante mencionar que los pines de TX y RX de las UARTs son remapeables, lo que quiere decir que se pueden cambiar a otros pines, aunque esto aun me falta probarlo fisicamente (probablemente lo veamos en otro post). 

Código:
Con respecto al codigo, la funcion que realizara sera "Mandar un dato por un puerto UART y verlo reflejado en el otro puerto UART".

Lo primero, quiero suponer que ya has usado alguna vez la UART0 y sabes como inicializalo, ademas de enviar/recibir datos, bueno ahora a configurar la UART2 ya que se hace algo distinto. Para ello usamos "Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2)", donde RXD2 y TXD2 son los pines de datos definidos al inicio del codigo. 

Si en lugar de usar la etiqueta Serial2 quieras usar otra, tendras que definirlo al inicio del programa de la siguiente forma "HardwareSerial NameMySoftwareSerial(2)" como se pueden encontrar en "HardwareSerial.h".

Resultados:
Para ver que esto este funcionando he abierto arduino en dos lugares diferentes, por el puerto COM3 tengo conectado el ESP32 y por el puerto COM5 tengo conectado el modulo del CH340G, en los monitores de arduino de cada uno puedo ver lo que se esta revibiendo, claro no es automatico asi que deves escribir en uno y ver lo que recibe en el otro. 

Datos recibidos en UART0:


Datos recibidos en UART2:


Creo que mas adelante veremos un ejemplo mas util sobre este tema, de momento el proceso de configurar y usar dos puertos ya se tiene comprendido.

Bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible. Puedes revisar el listado de material disponible sobre ESP32 en el blog.


Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí.

Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.

    Publicar un comentario

    0 Comentarios