2020/10/07

Adaptador USB RS-232 con display usando EDU-CIAA-NXP con un poncho

Cuando hice el regulador de velocidad de los coolers de mi ruidoso switch, elegí usar RS-232 para la comunicación una vez instalado en módulo en el switch y usé un adaptador USB-UART tambien llamado USB-TTL mientras desarrollaba.



sin rs232

En la fotico podemos ver de izquiera a derecha el cable USB proveniente de la computadora, el adaptador USB-UART y a la derecha medio escondido el controlador de velocidad de los coolers.


+---------+   +-----------+   +----------+
| compu | | +-------+ | | +------+ |
| | | | UART ---------- UART | |
| | | +---|---+ | | +------+ |
| +-----+ | | +---|---+ | | |
| | USB --------- USB | | | control |
| +-----+ | | +-------+ | | cooler |
+---------+ +-----------+ +----------+

Por decisiones tomadas y justificadas en el otro proyecto, al conectar el adaptador RS-232 al módulo de control, ese cosito con el conector DB9 que apareció a la izquierda del controlador de velocidades, necesito un adaptador RS-232 - USB, que no tengo.


con rs232


+---------+   +-----------+        +----------+  +----------+
| compu | | +-------+ | | +------+ | | control |
| | | | RS-232 ------------ RS-232| | | cooler |
| | | +---|---+ | | +---|--+ | | |
| +-----+ | | +---|---+ | | +---|--+ | | +------+ |
| | USB --------- USB | | | | UART -------- UART | |
| +-----+ | | +-------+ | | +------+ | | +------+ |
+---------+ +-----------+ +----------+ +----------+


Mientras lo consigo, puedo usar una EDU-CIAA-NXP con el poncho educativo de UNSJ que tiene RS-232 y aprovechar que tiene un display para mostrar la información de temperatura, humedad y PWM aplicado a los coolers que envía el controlador de velocidades con el siguiente formato:

# T1:18.10, H1:60.00, T2:18.90, H2:60.00, CS:84

T1: temperatura sensor 1
H1: humedad sensor 1
T2: temperatura sensor 2
H2: humedad sensor 2
CS: duty cycle del PWM, cuanto mayor, mayor la velocidad de los coolers.


Use sAPI del firmware_v3 en el tag r1.2.0 pues en r1.3.0 algo falla:

git clone https://github.com/ciaa/firmware_v3.git
git checkout r1.2.0

creé una carpeta "projects"en la cual hice un symlink a mi proyecto:

cd firmware_v3
mkdir projects
cd projects

ln -s ../../../cpantel/SerialDisplayAdapter
cd ..

luego en program.mk

PROGRAM_PATH = projects/SerialDisplayAdapter


Canibalicé un poquito de dos proyectos, este y este y le sumé una FSM:

 estado actual  
 data[0] acción
 pasa a estado
 seek     '#' lcdClearAndHome(); seekT1
 seekT1 ':'  readT1
 readT1     ',' lcdSendStringRaw(space); seekH1
 readT1 *
 lcdSendStringRaw(data); 
 seekH1 ':'  readH1
 readH1 ',' lcdGoToXY( 0, 1 ); seekT2
 readH1 * lcdSendStringRaw(data); 
 seekT2 ':'  readT2
 readT2 ',' lcdSendStringRaw(space); seekH2
 readT2 * lcdSendStringRaw(data); 
 seekH2 ':'  readH2
 readH2 ',' lcdSendStringRaw(space); seekCS
 readH2 * lcdSendStringRaw(data); 
 seekCS ':'  readCS
 readCS eol  seek
 readCS * lcdSendStringRaw(data); 


Lo que hace es descartar todo caracter hasta hallar '#' como identificador de linea de datos, es que yo puedo estar operando y no hay necesidad de que aparezca nada en el display, sólo debo tener cuidado de no ingreser ningún '#' por que si no se me va a trabar la FSM, mmmh, le pongo que si encuentra un '#' y no está en estado SEEK que se resetee a SEEK y listo, dame dos minutos... listo.

Tuve la tentación de en lugar de usar switches e ifs anidados utilizar una estructura parametrizable, pero este proyecto es sólo un accesorio para otro más grande que ya quiero terminar y si me meto en tanto detalle no voy a terminar nunca.

Lamentablemente,  mientras hacía pruebas quemé el max232n del poncho educativo y ahora estoy usando el poncho PLC con un adaptador TTL-RS-232

 
 

Mostrando los mensajes del switch
Mostrando los mensajes del switch


Abajo a la izquierda el adaptador, en el display las temperaturas, humedades y velocidad del cooler.
 

Lecturas por serial
Lecturas por serial




El código en https://github.com/cpantel/SerialDisplayAdapter, pronto progresará cuando le agregue un termómetro y registre la información para ajustar los parámetros.


No hay comentarios:

Publicar un comentario