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.