Enviar un sensor por cable

Lee la temperatura de un TMP36 en un Arduino y muéstrala en otro Arduino conectado por un solo cable.

Qué vas a construir

Un Arduino lee la temperatura con un TMP36 y la envía con el formato de Qué es un protocolo. Otro Arduino recibe el valor y lo muestra en su monitor serial, como si fuera una estación remota.

Lo que aprendes

  • Cómo combinar un sensor con un enlace de comunicación.
  • Cómo convertir un texto recibido en un número con toFloat().
  • Por qué conviene enviar datos a intervalos fijos y no todo el tiempo.

Materiales en Tinkercad

  • Dos Arduino Uno R3
  • Sensor TMP36 (en el emisor)
  • Cables

Paso 1: Conecta el sensor al emisor

Conecta el TMP36 al emisor como en la clase 5 del curso de Arduino: 5V, salida a A0, GND.

El enlace entre los dos Arduinos es el mismo de Dos Arduinos que se hablan: pin 11 a pin 10, y las dos GND conectadas.

Paso 2: Código del emisor

#include <SoftwareSerial.h>

SoftwareSerial enlace(10, 11);
const int SENSOR = A0;

float leerCelsius() {
  int lectura = analogRead(SENSOR);
  float voltaje = lectura * 5.0 / 1024.0;
  return (voltaje - 0.5) * 100.0;
}

void setup() {
  enlace.begin(9600);
}

void loop() {
  enlace.print("<");
  enlace.print(leerCelsius(), 1);  // un decimal
  enlace.println(">");
  delay(2000);
}

Paso 3: Código del receptor

#include <SoftwareSerial.h>

SoftwareSerial enlace(10, 11);

void setup() {
  Serial.begin(9600);
  enlace.begin(9600);
}

void loop() {
  if (enlace.available()) {
    String texto = enlace.readStringUntil('>');
    texto.remove(0, 1);
    float temperatura = texto.toFloat();
    Serial.print("Temperatura remota: ");
    Serial.print(temperatura, 1);
    Serial.println(" C");
  }
}

toFloat() convierte el texto "24.6" en el número 24.6. Si el texto no es un número, devuelve 0, por eso conviene revisar el valor recibido antes de usarlo.

Paso 4: Ejecuta la simulación

Abre el monitor serial del receptor. Debe mostrar la temperatura cada 2 segundos.

Cómo sabes que lo lograste

  • El receptor muestra una temperatura en °C.
  • El valor se actualiza cada 2 segundos.
  • Puedes explicar por qué el emisor espera 2 segundos y no envía sin parar.

Qué salió mal

El receptor muestra 0.0 todo el tiempo. El texto recibido no es un número. Revisa el formato: el emisor debe enviar <24.6>, no <C24.6> ni otro carácter.

El valor sale muy diferente al del emisor. Revisa la fórmula del TMP36 en el emisor. Es la misma de la clase 5 del curso de Arduino.

Siguiente clase

En la siguiente clase vas a detectar cuándo un mensaje llega dañado, con una suma de verificación.