El desarrollador smlcrft publicó Upline, un protocolo serial que ocupa 4.060 bytes de flash en un ATmega328P y deja a cualquier microcontrolador funcionando como nodo IoT. La implementación completa para Arduino entra en un solo archivo de cabecera. El proyecto apunta a los chips de 8 bits con muy pocos recursos libres.

El protocolo trabaja con registros ASCII separados por saltos de línea. El flujo de bytes se corta en líneas con terminadores LF o CR, y se ignoran las vacías y las que no empiezan con el carácter de acento circunflejo (^). Cada línea es una lista de entradas independientes, delimitadas por ese mismo carácter, y cada entrada representa una operación sobre una clave.

¿Cómo funciona el protocolo Upline?

Una entrada se procesa solo si viene delimitada por dos acentos circunflejos. Así nunca se aplican datos parciales, y una comunicación interrumpida no deja al dispositivo en un estado inconsistente. Las escrituras se confirman con un eco del valor que quedó realmente en uso, y ese eco permite distinguir un rechazo de una caída del enlace.

Un latido periódico muestra que el dispositivo sigue vivo y que habla Upline. Con eso el receptor acota su tiempo de espera y sabe de inmediato si el nodo está operativo. El protocolo también admite escapar caracteres especiales con seis secuencias simbólicas y no necesita números de punto flotante, porque usa el formato fixN para los decimales.

¿Cuánta memoria consume?

La ficha del proyecto entrega el presupuesto de memoria que midió el autor para cada configuración.

  • 4.060 bytes de flash y 358 bytes de SRAM en un ATmega328P
  • 3.168 bytes de flash y 253 bytes de SRAM en un ATtiny85
  • 2.100 bytes de flash en un ATtiny85 en modo solo transmisión
  • 98 bytes para un lector universal de líneas en ATmega328P

Son cifras bajas para un protocolo completo. En el ATtiny85 el consumo cae a 3.168 bytes de flash, y en modo solo transmisión llega a 2.100. La ficha del proyecto agrega los 98 bytes que pide un lector universal de líneas sobre ATmega328P. Para los proyectos más chicos, ese modo de solo transmisión en el ATtiny85 necesita 112 bytes de SRAM.

¿Qué gana un maker con esto?

La filosofía es la contraria a la de los frameworks pesados. Acá todo entra en una cabecera y corre incluso en chips de 8 bits que tienen unos pocos cientos de bytes libres. Una placa Arduino Nano ESP32 puede usar el mismo protocolo que un ATtiny85, y eso simplifica la comunicación entre nodos distintos dentro de una misma red.

Le sirve sobre todo a quien arma sensores distribuidos, actuadores remotos o nodos chicos de monitoreo. La confirmación por eco hace al sistema confiable incluso sobre enlaces de radio ruidosos. Para conectar un nodo al computador y leer el flujo de registros basta un conversor USB a serial, porque Upline habla sobre cualquier UART.

¿Cómo se parte?

Se descarga la cabecera upline-arduino y se incluye en un proyecto de Arduino. La ficha lista soporte para ATmega328P, ATtiny85, SAMD21, ESP32 y RP2040, entre otros. Un Uno R3 con ATmega328 es un buen banco de pruebas para aprender el protocolo sin soldar nada, y es justo donde el autor midió los 4.060 bytes de flash.

El código fuente es un único archivo de cabecera, así que la integración es inmediata. No hacen falta librerías externas ni herramientas de compilación complicadas. Una placa ATtiny85 por USB es el caso extremo del proyecto, con 3.168 bytes de flash y 253 de SRAM, y el protocolo cabe entero ahí adentro.

La documentación publica números precisos para cada configuración. Eso ayuda a elegir el microcontrolador según el presupuesto de flash y de SRAM que tenga el diseño.