← Índice del curso

Comunicación entre Dispositivos · Tema 1

Por qué se comunican los dispositivos

Un sensor, un microcontrolador, una pantalla y la nube solo forman un sistema si pueden intercambiar información. Para eso hace falta un emisor, un canal, un receptor y, sobre todo, un conjunto de acuerdos que ambos lados respeten: el protocolo.

01 · Punto de partida

Ningún chip trabaja solo

En los cursos anteriores hiciste que un microcontrolador leyera un sensor y moviera un motor. Ahora mirá cualquier placa real y contá las conversaciones que ocurren dentro de ella: el microcontrolador le pide la temperatura a un sensor, le manda a una pantalla lo que debe dibujar, guarda un dato en una memoria, recibe una orden desde la computadora por el cable USB y, quizá, publica un valor en un servidor por Wi-Fi. Cada una de esas conversaciones es una comunicación entre dispositivos.

Desde la programación, es un problema conocido. Dos procesos que se envían datos necesitan acordar un formato, saber a quién le hablan y decidir qué hacer si un mensaje se pierde. Un endpoint HTTP, una cola de mensajes o un archivo compartido resuelven eso con convenciones. La diferencia es que acá los «procesos» son chips separados y lo que los une son cables, tensiones y tiempos: hasta el último bit debe viajar por un medio físico imperfecto.

Este curso recorre los medios y protocolos más usados, desde los dos hilos de un bus I²C hasta una conexión Wi-Fi. Antes de entrar en cada uno, conviene tener el mapa conceptual común a todos.

02 · Vocabulario

Emisor, receptor, canal y mensaje

Toda comunicación, entre chips o entre personas, se describe con los mismos elementos:

  • El emisor (o transmisor) es el dispositivo que origina la información y la envía.
  • El receptor es el dispositivo que la recibe y la interpreta.
  • El canal (o medio) es el camino físico por el que viaja la señal: un par de cables, una pista del circuito impreso, una fibra, el aire.
  • El mensaje es la información que se quiere transmitir: una temperatura, una orden, un byte de configuración, un archivo.
  • El protocolo es el conjunto de reglas que emisor y receptor siguen para que el mensaje se entienda.
Los mismos elementos en tres situaciones distintas.
ElementoMicrocontrolador lee un sensorPlaca envía datos a un servidorConversación entre personas
EmisorSensor de temperaturaPlaca con ESP32Quien habla
ReceptorMicrocontroladorServidor en la nubeQuien escucha
CanalDos hilos de un bus I²CAire (Wi-Fi) y luego cables de InternetEl aire (ondas sonoras)
Mensaje«Temperatura = 25,4 °C»Un documento JSON con la lecturaUna frase
ProtocoloEspecificación I²C y mapa de registrosWi-Fi, IP, TCP y HTTPIdioma, turnos y cortesía

Un mismo dispositivo suele cumplir los dos papeles en distinto momento: el microcontrolador es receptor cuando recibe el dato del sensor y emisor cuando le manda una orden. En muchos enlaces, además, uno de los extremos es quien inicia la conversación y el otro solo responde; esos roles (maestro y esclavo, cliente y servidor) se estudian en el tema 6.

03 · El panorama completo

El modelo básico de comunicación

El mensaje no viaja como lo imagina el programador. En el camino pasa por etapas que lo transforman en señales y, del otro lado, lo reconstruyen. Cada etapa puede fallar, y saber en cuál ocurre un error es la mitad de la depuración.

Modelo básico de comunicación El emisor genera un mensaje, un codificador lo convierte en una señal eléctrica, el canal la transporta y le suma ruido, un decodificador recupera los bits y el receptor interpreta el mensaje. Una flecha de retorno indica una respuesta o confirmación. Emisor(mensaje) Codificadorbits → señal Canalcable, pista, aire Decodificadorseñal → bits Receptor(mensaje) ruido e interferencias respuesta, confirmación o petición del receptor El camino de ida puede alterar los datos; el de vuelta permite saberlo

Seguí un ejemplo concreto: un termómetro digital le informa «25,4 °C» a un microcontrolador por un bus I²C.

  1. El sensor mide y guarda el resultado en un registro interno como un número de 16 bits.
  2. Cuando el microcontrolador lo pide, el sensor divide ese número en bytes y el codificador los convierte en bits, uno por vez.
  3. Cada bit se transforma en una tensión sobre la línea de datos: nivel alto o bajo en el momento marcado por el reloj.
  4. El canal (dos cables de unos centímetros) propaga esas tensiones. En el camino, un motor cercano puede inducir ruido.
  5. El decodificador del microcontrolador muestrea la línea en cada pulso de reloj y reconstruye los bits.
  6. El programa junta los bytes, los interpreta como temperatura y, si el sensor lo permite, confirma la recepción con una señal de reconocimiento (ACK).

Los pasos 2, 3, 5 y 6 los hace casi siempre un periférico del chip (UART, SPI, I²C) y no tu código. Aun así, es tu responsabilidad configurarlo con los mismos parámetros que el otro lado, y por eso este curso se detiene en cada uno.

04 · Dónde aparece

Qué se comunica y con qué

No existe un medio de comunicación mejor que los demás: cada escenario impone distancia, velocidad, cantidad de dispositivos y condiciones eléctricas distintas, y hay una solución adaptada a cada uno. Este es el mapa del curso:

Escenarios típicos, la solución habitual y el lugar donde se estudia.
EscenarioDistancia típicaSolución habitualSe estudia en
Dentro del chip o entre chips vecinos de la placaMilímetros a centímetrosSPI, I²C, buses paralelosTemas 12 a 20
Microcontrolador con la computadora o un móduloHasta un par de metrosUART (con conversor USB-serie)Temas 7 a 11
Varios sensores baratos en un mismo cableHasta decenas de metros1-Wire, I²C con cuidadoTema 21
Equipos industriales y entornos con ruidoHasta 1,2 kmRS-485, Modbus RTUTemas 22 a 26
Vehículos y maquinariaDecenas de metrosCANTemas 27 y 28
Redes locales e Internet100 m por segmento y por encimaEthernet, TCP/IP, HTTP, MQTTTemas 29 a 33
Dispositivos móviles o sin cables posiblesMetros a kilómetrosWi-Fi, Bluetooth, LoRaTemas 34 a 40

Observá que una misma placa puede usar varios a la vez: un ESP32 que lee un sensor por I²C, muestra datos en una pantalla por SPI, depura por UART y los envía por Wi-Fi. En un sistema real, el trabajo del programador es elegir y combinar el medio adecuado para cada tramo.

05 · Reglas del juego

Los acuerdos que forman un protocolo

Dos cables conectados no bastan para que dos chips se entiendan. Si uno envía bits a un ritmo y el otro los lee a otro, o si no saben dónde empieza un mensaje, lo que llega es basura. Un protocolo es el conjunto de acuerdos que evita eso. Casi todos responden a las mismas seis preguntas:

Seis acuerdos presentes en cualquier protocolo, con un ejemplo de UART y de I²C.
PreguntaQué se acuerdaEn UARTEn I²C
¿Cómo se representa un bit?Niveles de tensión y conexionesNivel alto = 1, bajo = 0, líneas TX y RX cruzadasLíneas SDA y SCL con resistencias pull-up
¿Cuándo se lee cada bit?TemporizaciónAmbos lados usan la misma velocidad en baudiosUn reloj (SCL) lo marca el maestro
¿Dónde empieza y termina un mensaje?Delimitación (encuadre)Bit de inicio y bit de paradaCondiciones START y STOP
¿A quién va dirigido?DireccionamientoNo existe: hay un solo destinatarioDirección de 7 bits al comienzo
¿Llegó bien?Detección de errores y confirmacionesParidad opcionalBit ACK tras cada byte
¿Qué significan los datos?Formato y semánticaLo define la aplicaciónLo define el mapa de registros del chip

La tabla permite ver una diferencia importante. UART resuelve los tres primeros acuerdos y casi nada más: el resto queda a cargo del programador. I²C resuelve cinco de los seis y deja solo el significado de los datos. Cuanto más completo es el protocolo, menos tenés que programar, pero menos libertad tenés para adaptarlo.

06 · Ordenar la complejidad

El modelo de capas

Los acuerdos del apartado anterior son demasiados para tratarlos juntos, así que se organizan en capas. Cada capa resuelve un problema con la ayuda de la capa inferior y le ofrece un servicio a la superior, sin necesitar conocer los detalles de las demás. Es la misma idea de abstracción que en el software: una función usa a otra a través de su interfaz, sin mirar su implementación.

Los modelos teóricos (OSI tiene siete capas, TCP/IP cuatro) se pueden resumir en cinco niveles para fines prácticos:

Modelo de cinco capas, con ejemplos de tecnologías de este curso.
CapaProblema que resuelveEjemplos
5. AplicaciónEl significado: qué quiere decir cada datoHTTP, MQTT, Modbus, comandos AT, tu propio protocolo
4. TransporteEntrega de extremo a extremo: puertos, orden y reenvíoTCP, UDP
3. RedDirecciones lógicas y camino entre redes distintasIP
2. EnlaceTramas, direcciones locales, acceso al medio y control de erroresTrama Ethernet (MAC), trama CAN, direcciones I²C, trama de Modbus RTU
1. FísicaTensiones, tiempos, conectores, ondas de radioNiveles de UART, par diferencial de RS-485, cables Ethernet, radio de Wi-Fi

Los buses sencillos de placa se limitan a las capas 1 y 2: SPI y UART casi solo definen la parte física y una forma elemental de enviar bytes, mientras que I²C agrega direcciones y confirmaciones. Todo lo demás lo pone la aplicación. En cambio, un mensaje MQTT sobre Wi-Fi atraviesa las cinco capas y cada una de ellas la maneja un componente distinto: la radio, el controlador Wi-Fi, la pila IP, la biblioteca TCP y tu programa.

Las capas traen dos beneficios muy concretos:

  • Intercambiabilidad. Un mensaje HTTP viaja igual sobre Ethernet que sobre Wi-Fi, porque las capas superiores no dependen de la física.
  • Diagnóstico ordenado. Si algo no funciona, se revisa de abajo hacia arriba: ¿hay señal?, ¿llegan tramas?, ¿la dirección es correcta?, ¿se entiende el contenido?

07 · Cómo viaja un mensaje

Encapsulación: mensajes dentro de mensajes

Para atravesar las capas, el mensaje se va envolviendo. Cada capa recibe de la superior un bloque de datos (su carga útil), le agrega un encabezado con información propia (destinatario, longitud, tipo) y, a veces, un final con una verificación. El resultado pasa como carga útil a la capa de abajo. Del otro lado se hace lo contrario: cada capa retira su envoltorio y entrega el contenido hacia arriba.

Encapsulación de un mensaje en una trama El mensaje de aplicación OK 25C se coloca dentro de una trama que agrega al principio los campos destino, origen y longitud, y al final una suma de verificación. La trama completa se envía por la capa física como una secuencia de bytes, cada uno con su bit de inicio y de parada. Aplicación: el mensaje «OK 25C» (6 bytes) Enlace: la trama (10 bytes) DestinoOrigenLongitud Carga útil: OK 25CChecksum encabezado (3 bytes) final (1 byte) Física: bytes en el cable, uno detrás de otro

En este ejemplo, el mensaje útil ocupa seis bytes, pero la trama completa ocupa diez: cuatro bytes son sobrecarga (overhead) que no transporta información propia, pero que permite que el mensaje llegue al destinatario correcto, con la longitud correcta y verificable. Esa relación se puede calcular:

eficiencia = bytes de carga útil / bytes de la trama = 6 / 10 = 60 %

La eficiencia mejora con mensajes largos, porque el encabezado y el final son fijos. Es un compromiso clásico de las comunicaciones: cuanto más protección y direccionamiento se agregan, más datos «inútiles» viajan. Por eso un protocolo para enviar un solo byte de un sensor (como en I²C) tiene muy poca sobrecarga, y uno diseñado para atravesar Internet (Ethernet + IP + TCP + HTTP) puede superar los 50 bytes de encabezados antes de llegar al primer dato.

08 · Comparar enlaces

Qué distingue a un enlace de otro

Antes de estudiar cada tecnología conviene saber con qué criterios compararlas. Son pocos y reaparecen en todo el curso, hasta llegar al tema 50, donde los usamos para elegir el protocolo adecuado:

  • Velocidad. Cuántos bits por segundo se pueden mover.
  • Distancia. Hasta dónde se puede llegar sin perder la señal.
  • Cantidad de dispositivos. Si el enlace es entre dos o admite muchos.
  • Cableado. Cuántos hilos hacen falta, o si no hay ninguno.
  • Robustez frente al ruido. Cómo se comporta en un entorno eléctricamente hostil.
  • Consumo y costo. Importantes en equipos a batería y de producción masiva.
  • Complejidad. Cuánto software requiere y qué tan fácil es depurarlo.
Órdenes de magnitud de algunas tecnologías. Los valores reales dependen de la implementación y del cableado.
TecnologíaVelocidad típicaAlcance típicoDispositivos por bus o red
UART9,6 kbps a 1 MbpsMetros (RS-232: decenas)2
SPI1 a 50 MbpsCentímetrosUno por cada pin de selección
I²C100 kbps y 400 kbpsDecenas de centímetrosHasta 112 direcciones
RS-485Hasta 10 Mbps cerca; 100 kbps a 1200 mHasta 1200 m32 cargas estándar o más
CAN1 Mbps a 40 m; 125 kbps a 500 mDecenas a cientos de metrosDecenas
Ethernet10 Mbps a 1 Gbps100 m por segmento de cableMiles, con conmutadores
Wi-FiDecenas a cientos de MbpsDecenas de metrosDecenas por punto de acceso
Bluetooth LECientos de kbps en la prácticaDecenas de metrosPocas conexiones por dispositivo
LoRaCientos de bps a decenas de kbpsKilómetrosCientos o miles por puerta de enlace

Dos tendencias saltan a la vista: casi siempre a mayor distancia, menor velocidad, y a mayor cantidad de nodos, más reglas para compartir el medio. No hay tecnología que gane en todos los criterios, y por eso hay tantas.

09 · Analogía con programación

Una trama con verificación, en Python

El código para una UART o un bus real depende del microcontrolador, así que usamos Python para explorar las ideas del tema. El programa arma la trama de la figura (destino, origen, longitud, carga útil y checksum), simula un canal que invierte bits en posiciones elegidas y deja que el receptor la valide. Los casos prueban qué ocurre si el canal es perfecto, si cambia un bit y si cambia dos.

Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.

def checksum(datos):
    """Suma de todos los bytes, módulo 256 (cabe en un byte)."""
    return sum(datos) % 256


def armar_trama(destino, origen, texto):
    carga = texto.encode("utf-8")
    cuerpo = bytes([destino, origen, len(carga)]) + carga
    return cuerpo + bytes([checksum(cuerpo)])


def canal(trama, bits_alterados):
    """Canal con ruido: invierte los bits de las posiciones indicadas."""
    datos = bytearray(trama)
    for pos in bits_alterados:
        datos[pos // 8] ^= 1 << (pos % 8)
    return bytes(datos)


def recibir(trama, mi_direccion):
    cuerpo, recibido = trama[:-1], trama[-1]
    if checksum(cuerpo) != recibido:
        return "descartada: error de checksum"
    if cuerpo[0] != mi_direccion:
        return "ignorada: no es para mí"
    largo = cuerpo[2]
    return "entregada: " + cuerpo[3:3 + largo].decode("utf-8", errors="replace")


trama = armar_trama(0x12, 0x01, "OK 25C")
print("trama enviada:", trama.hex(" "), f"({len(trama)} bytes)")

casos = {
    "canal perfecto": [],
    "un bit alterado": [24],
    "dos bits alterados": [28, 52],
}
for nombre, alterados in casos.items():
    llegada = canal(trama, alterados)
    print(f"{nombre:20s} {llegada.hex(' ')}  -> {recibir(llegada, 0x12)}")

Resultado: sin errores, el receptor entrega «OK 25C». Con un bit alterado (el último bit del primer carácter pasa de 1 a 0, de «O» a «N»), la suma ya no coincide y la trama se descarta: el error se detecta. Con los dos bits de las posiciones 28 y 52, uno sube 16 unidades y el otro las baja, la suma queda igual y el receptor entrega «_K "5C» sin darse cuenta. Probá con otras posiciones y buscá más combinaciones que engañen al checksum.

Este último caso es una lección central: una verificación simple detecta la mayoría de los errores, pero no todos. Por eso existen métodos más fuertes, como el CRC, que vamos a implementar más adelante (tema 44). El modelo, además, supone que el canal solo invierte bits; los canales reales también pueden perder, repetir o desordenar mensajes.

10 · Exploración interactiva

Un canal con ruido, de extremo a extremo

Este laboratorio manda un mensaje por un canal imperfecto. Escribí un texto corto, elegí qué tan ruidoso es el canal (la probabilidad de que cada bit se invierta, o tasa de error de bit) y decidí si la trama lleva checksum y cuántas veces se puede reintentar. Cada envío construye la trama, la hace pasar por el canal y deja que el receptor decida si la acepta. Los bytes alterados se resaltan.

Emisor, canal con ruido y receptor

Trama enviada—
Última recibida—
Tamaño de la trama—
Eficiencia (carga útil / trama)—
Bits alterados en el último intento—
Intentos realizados—
Texto que recibe el programa—
Resultado—

Escribí un mensaje, elegí el ruido y presioná «Enviar mensaje».

Estadísticas acumuladas desde la última limpieza.
EnvíosEntregados intactosEntregados dañados (sin que nadie lo note)No entregados
0000

Limpiar estadísticas pone en cero los contadores; el mensaje y las opciones se conservan. El checksum de la simulación es la suma de los bytes módulo 256, igual que en el código Python.

Recorrido guiado

  1. Con ruido en 0 %, enviá el mensaje varias veces: siempre llega intacto en un solo intento. Anotá el tamaño de la trama y la eficiencia.
  2. Cambiá el ruido a 2 % y desmarcá el checksum. Enviá unas diez veces. Algunas veces el texto llega alterado y el receptor lo acepta igual: sin verificación, los errores pasan inadvertidos.
  3. Marcá el checksum y poné los reintentos en 0. Los mensajes dañados ahora aparecen como no entregados: el receptor detecta el error y descarta la trama. Ya no recibe datos erróneos, pero pierde algunos mensajes.
  4. Subí los reintentos a 3. La mayoría de los envíos se entrega intacta, a costa de varios intentos. Observá que el contador de intentos crece cuando el ruido aumenta.
  5. Subí el ruido a 10 % con 3 reintentos. Con 10 bytes por trama, hay 80 bits, y la probabilidad de que lleguen todos bien es 0,980, es decir, casi 0,02 %: ningún reintento alcanza. Un mensaje más largo se vuelve imposible de entregar. Este es el límite de los canales muy ruidosos.
  6. Escribí un mensaje de una sola letra y otro de 24 caracteres. Compará la eficiencia: la sobrecarga fija pesa mucho más en el mensaje corto.
  7. Con checksum y 5 % de ruido, enviá 50 mensajes y buscá si aparece algún «entregado dañado». Es poco frecuente, pero posible: un checksum no detecta todos los errores.
Desafío: la probabilidad de entrega

Con un ruido del 2 %, ¿qué probabilidad hay de que una trama de 10 bytes llegue sin ningún bit alterado? Cada bit llega bien con probabilidad 0,98, así que los 80 bits lo hacen con 0,9880 ≈ 0,20: solo uno de cada cinco envíos llega limpio. Con 3 reintentos (4 intentos en total) la probabilidad de que algún intento sea limpio es 1 − 0,804 ≈ 0,59. Los experimentos del laboratorio deberían acercarse a esos valores si repetís muchas veces.

11 · Método de trabajo

Cómo analizar un enlace de comunicación

Cada vez que debas conectar dos dispositivos, o entender por qué no se entienden, recorré estas preguntas en orden:

  1. Identificá a los participantes y sus roles. ¿Quién inicia la comunicación, quién responde, cuántos son?
  2. Definí el mensaje. ¿Qué datos viajan, de qué tamaño, con qué frecuencia y en qué sentido?
  3. Elegí el canal. Distancia, velocidad necesaria, ruido ambiental, cantidad de cables disponibles y consumo.
  4. Revisá la capa física. Niveles de tensión compatibles, masa común, resistencias requeridas y velocidad coincidente.
  5. Revisá el encuadre. ¿Cómo sabe el receptor dónde empieza y termina cada mensaje?
  6. Definí el direccionamiento. Si hay más de dos nodos, ¿cómo se identifica el destinatario?
  7. Decidí qué hacer con los errores. ¿Se detectan?, ¿se reenvía?, ¿se ignora el dato perdido?
  8. Documentá el significado. Una tabla con campos, unidades y rangos evita que los dos extremos interpreten distinto los mismos bytes.

Cuando algo falla, avanzá en sentido contrario, de abajo hacia arriba: primero la masa y las tensiones con el multímetro, luego los tiempos con el osciloscopio o el analizador lógico, después las tramas en el monitor serie y por último el significado de los datos. En la práctica, la mayoría de las fallas de comunicación se concentran en las capas más bajas: un cable cruzado, una velocidad distinta o una masa sin unir.

12 · Comprensión

Confusiones frecuentes

«Si conecté los cables, ya se comunican»

Los cables solo forman el canal. Para entenderse hacen falta además la misma velocidad o reloj, el mismo formato de trama y un significado común para los datos. Un módulo bien cableado pero configurado a otra velocidad envía «basura».

«El protocolo es lo mismo que el cable o el conector»

El conector USB, por ejemplo, puede transportar distintos protocolos. El cable y el protocolo son niveles distintos del modelo de capas: se pueden cambiar de manera independiente mientras ambos lados respeten el acuerdo.

«Los datos llegan siempre como se enviaron»

Un canal real pierde, altera y a veces repite o desordena datos. Un programa de comunicaciones sólido supone que pueden fallar y define cómo reaccionar. Todo el bloque final del curso trata este problema.

«Más velocidad siempre es mejor»

Una velocidad mayor acorta los tiempos de bit, así que el canal debe ser mejor: cables más cortos, menos capacidad y menos ruido. En entornos difíciles se baja la velocidad a propósito para ganar confiabilidad y alcance.

«Los protocolos de capas altas dependen del cable»

Justamente la ventaja de las capas es que no dependen. Tu código MQTT es el mismo sobre Wi-Fi o sobre Ethernet. Lo que cambia es la configuración de la capa inferior y su rendimiento (retardo, consumo, alcance).

«Un checksum garantiza que los datos sean correctos»

Reduce mucho la probabilidad de aceptar datos corruptos, pero no la elimina: como se vio en el código, hay combinaciones de errores que dejan la suma igual. Con mayor protección se usa CRC, y para datos críticos se agregan además comprobaciones a nivel de aplicación.

13 · Práctica guiada

Predecí antes de comprobar

1. Identificar los elementos

Un teclado inalámbrico envía las pulsaciones a una computadora por Bluetooth. Indicá el emisor, el receptor, el canal, el mensaje y el protocolo.

Ver solución

Emisor: el teclado. Receptor: la computadora (o su adaptador Bluetooth). Canal: el aire, en la banda de 2,4 GHz. Mensaje: el código de la tecla pulsada. Protocolo: Bluetooth (con un perfil de dispositivo de interfaz humana, HID). Cuando la computadora enciende un LED del teclado, los papeles se invierten.

2. ¿Qué acuerdo falta?

Dos microcontroladores se conectan por dos cables y uno envía el texto «23.5» en una línea serie. El otro lo recibe como «ÿÿ¿ñ». Todo está bien cableado. ¿Qué acuerdo probablemente no se cumple y cómo se corrige?

Ver solución

Lo más probable es que la velocidad (o el formato de trama) sea distinta en los dos lados, así que el receptor lee los bits en momentos erróneos. Se corrige configurando la misma velocidad en baudios, la misma cantidad de bits de datos y la misma paridad en ambos extremos. Otras causas posibles: masa sin unir o niveles de tensión incompatibles.

3. Eficiencia de una trama

Una trama tiene 2 bytes de encabezado, 1 byte de longitud y 2 bytes de CRC. ¿Qué eficiencia tiene al enviar una carga de 4 bytes? ¿Y con 100 bytes?

Ver solución

La sobrecarga es 2 + 1 + 2 = 5 bytes. Con 4 bytes de carga: 4 / 9 ≈ 44 %. Con 100 bytes: 100 / 105 ≈ 95 %. Para pocos datos conviene un protocolo liviano; para muchos datos, la sobrecarga pierde importancia.

4. Ubicar en capas

Ubicá cada elemento en su capa del modelo de cinco niveles: un cable de par trenzado, un mensaje MQTT, una dirección IP, una dirección MAC, el protocolo TCP.

Ver solución

Cable de par trenzado: física (1). Dirección MAC: enlace (2). Dirección IP: red (3). TCP: transporte (4). Mensaje MQTT: aplicación (5).

5. Probabilidad de una trama limpia

Una trama de 20 bytes se envía por un canal en el que cada bit falla con probabilidad 0,1 %. ¿Qué probabilidad hay de que llegue sin errores?

Ver solución

La trama tiene 160 bits, así que P = 0,999160 ≈ 0,85. Aproximadamente el 15 % de las tramas tendrá al menos un error. Si el sistema envía diez tramas por segundo, casi dos de ellas se alteran cada segundo, por lo cual una verificación de errores no es opcional.

6. Diagnóstico por capas

Un sensor I²C no responde. Ordená estas comprobaciones de la primera a la última: (a) verificar que los registros se interpretan bien; (b) comprobar que SDA y SCL tienen 3,3 V en reposo; (c) revisar que la dirección usada es la del chip; (d) confirmar que la masa de ambas placas está unida.

Ver solución

De abajo hacia arriba: (d) masa común, (b) niveles y pull-ups en reposo, (c) dirección correcta y, por último, (a) el significado de los registros. Empezar por la capa física ahorra horas de buscar errores de software que no existen.

14 · Síntesis

Ideas para recordar

  • Toda comunicación tiene un emisor, un canal, un receptor y un mensaje; el protocolo es el conjunto de acuerdos que permite entenderlo.
  • El mensaje no viaja tal cual: se codifica en bits y estos en señales eléctricas u ondas, que el canal puede alterar con ruido.
  • Un protocolo responde seis preguntas: representación de los bits, temporización, delimitación, direccionamiento, control de errores y significado de los datos.
  • Cuanto más sencillo es un protocolo (UART, SPI), más acuerdos quedan a cargo del programador.
  • El modelo de capas (física, enlace, red, transporte y aplicación) separa los problemas: cada capa usa a la inferior y ofrece un servicio a la superior.
  • La encapsulación agrega a la carga útil un encabezado y un final; esa sobrecarga baja la eficiencia, sobre todo en mensajes cortos.
  • Los enlaces se comparan por velocidad, distancia, número de nodos, cableado, robustez, consumo, costo y complejidad; casi siempre, a mayor distancia menor velocidad.
  • Un canal real altera datos: una verificación detecta la mayoría de los errores (no todos) y los reintentos recuperan los mensajes perdidos.

¿Listo para el tema 2?

Antes de avanzar, describí de memoria una comunicación de tu proyecto con sus cinco elementos, enumerá los seis acuerdos de un protocolo con un ejemplo de cada uno y explicá por qué un checksum no asegura que los datos sean correctos. Si podés justificar las tres respuestas, tenés el vocabulario del curso.

En el próximo tema estudiamos la comunicación serie y paralela: por qué mandar los bits de a uno terminó imponiéndose sobre mandarlos todos a la vez, y qué problemas de sincronización aparecen en cada caso.