Arduino Uno + Sensor de humedad resistivo
Código completo y diagrama de conexión para enviar lecturas a Bloomit vía Serial USB desde el navegador, sin necesidad de WiFi en la placa.
Hardware necesario
- Arduino Uno, Nano o Mega
- Sensor de humedad resistivo YL-69 o FC-28
- LED de 5mm (cualquier color)
- Resistencia de 220Ω
- Protoboard y cables jumper
- Cable USB tipo A-B (Arduino)
- PC con Chrome 89+ o Edge 89+
Cómo funciona
Arduino Uno no tiene WiFi, así que no puede enviar datos directamente a internet. En cambio, usa el puerto Serial USB para comunicarse con la PC. Bloomit tiene un proxy Serial integrado en el panel: abrís bloomit.app/devices/test en Chrome o Edge, conectás al puerto USB del Arduino, y el navegador actúa de puente entre la placa y la API.
El Arduino imprime JSON por Serial. Bloomit lo lee en tiempo real y reenvía los datos a la API automáticamente. Sin drivers adicionales, sin configuración de red en la placa.
El LED indica cada ciclo de lectura y envío, igual que en el tutorial de ESP32.
Diagrama de conexión
| Arduino | Componente | Pin | Cable |
|---|---|---|---|
| 5V | Sensor YL-69 | VCC | Rojo |
| GND | Sensor YL-69 | GND | Negro |
| A0 | Sensor YL-69 | AO (Analog Out) | Amarillo |
| Pin 9 | Resistencia 220Ω → | Ánodo LED (+) | Azul |
| GND | Cátodo LED (−) | — | Negro |
Nota: el Arduino usa 5V lógico. El sensor YL-69 funciona bien a 5V. El pin DO (salida digital del sensor) no se usa en este tutorial.
Obtener el device token
Antes de cargar el código, registrá el dispositivo desde bloomit.app y copiá el deviceToken. Podés hacerlo desde el panel web o via curl:
# 1. Login → userToken
curl -X POST https://user.api.bloomit.app/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"tu@email.com","password":"tupassword"}'
# 2. Registrar dispositivo → deviceToken
curl -X POST https://device.api.bloomit.app/register \
-H "Authorization: Bearer <userToken>" \
-H "Content-Type: application/json" \
-d '{"name":"Arduino Nano Laboratorio"}'
# → { "deviceToken": "eyJhbGci...", "deviceId": "abc123" }
# Pegá el deviceToken en DEVICE_TOKEN del sketchCódigo completo
No requiere librerías externas. El JSON se arma manualmente con concatenación de strings, lo que lo hace compatible con cualquier versión de Arduino IDE.
// ── Configuración ──────────────────────────────────────
const char* DEVICE_TOKEN = "eyJhbGci..."; // tu deviceToken de bloomit.app
const int LED_PIN = 9; // PWM pin — cualquier pin digital sirve
const int SENSOR_PIN = A0; // pin analógico
// Calibración del sensor resistivo
// Arduino tiene ADC de 10 bits: valores de 0 a 1023
const int SENSOR_DRY = 1023; // valor en aire → 0% humedad
const int SENSOR_WET = 300; // valor en agua → 100% humedad
// ── Helpers para enviar datos por Serial ───────────────
void sendSensorReading(const char* sensorType, int value) {
// El panel de Bloomit en bloomit.app/devices/test
// lee estas líneas JSON y las reenvía a la API
Serial.print(F("{"token":""));
Serial.print(DEVICE_TOKEN);
Serial.print(F("","cmd":"sense","sensorType":""));
Serial.print(sensorType);
Serial.print(F("","value":"));
Serial.print(value);
Serial.println(F("}"));
}
void sendLog(const char* type, const String& message) {
Serial.print(F("{"token":""));
Serial.print(DEVICE_TOKEN);
Serial.print(F("","cmd":"log","type":""));
Serial.print(type);
Serial.print(F("","message":""));
Serial.print(message);
Serial.println(F(""}"));
}
// ── Lectura del sensor ─────────────────────────────────
int readHumidity() {
// Promediamos 5 lecturas para estabilizar
long sum = 0;
for (int i = 0; i < 5; i++) {
sum += analogRead(SENSOR_PIN);
delay(10);
}
int raw = sum / 5;
int humidity = map(raw, SENSOR_DRY, SENSOR_WET, 0, 100);
return constrain(humidity, 0, 100);
}
// ── Setup ──────────────────────────────────────────────
void setup() {
Serial.begin(9600); // Bloomit espera 9600 baud por defecto
pinMode(LED_PIN, OUTPUT);
// Señal de inicio: 2 parpadeos largos
for (int i = 0; i < 2; i++) {
digitalWrite(LED_PIN, HIGH); delay(500);
digitalWrite(LED_PIN, LOW); delay(300);
}
sendLog("info", "Arduino iniciado — conectá el panel en bloomit.app/devices/test");
}
// ── Loop ───────────────────────────────────────────────
void loop() {
// Parpadeo simple: iniciando lectura
digitalWrite(LED_PIN, HIGH); delay(200);
digitalWrite(LED_PIN, LOW);
int humidity = readHumidity();
// Enviar lectura por Serial → el panel web lo recibe y lo reenvía a la API
sendSensorReading("soil_humidity", humidity);
// Log de debug visible en la consola del panel
sendLog("info", "Humedad: " + String(humidity) + "%");
// 3 parpadeos rápidos: dato enviado
for (int i = 0; i < 3; i++) {
digitalWrite(LED_PIN, HIGH); delay(100);
digitalWrite(LED_PIN, LOW); delay(100);
}
// Esperar 1 hora
// Con plan free (25 lecturas/dispositivo/día) una por hora es ideal
delay(3600000UL);
}Conectar el panel Serial en Bloomit
Con el código cargado y el Arduino conectado por USB, seguí estos pasos:
- Abrí Chrome o Edge (Firefox y Safari no soportan Web Serial API todavía).
- Ingresá a bloomit.app/devices/test (requiere login).
- Hacé click en Conectar dispositivo, seleccioná el puerto COM del Arduino en el popup que abre el navegador.
- Elegí el baud rate 9600 (igual que el código).
- Cuando el Arduino imprima el JSON, lo vas a ver aparecer en la consola del panel. Si el token es válido, el dato también aparece en el dashboard del dispositivo.
Importante: el proxy Serial funciona solo mientras la pestaña de bloomit.app esté abierta y conectada. Para monitoreo desatendido 24/7 sin PC, migrá al tutorial de ESP32 con WiFi directo.
Señales del LED
2 parpadeos lentos (500ms)Inicio — El programa arrancó correctamente1 parpadeo (200ms)Leyendo sensor — Capturando la lectura analógica3 parpadeos rápidos (100ms)Dato enviado — El JSON fue escrito por Serial al panel
Calibrar el sensor
El Arduino usa un ADC de 10 bits (0–1023), diferente al ESP32 (0–4095). Para calibrar:
- Cargá el sketch y abrí el Monitor Serial o la consola del panel de Bloomit.
- Dejá el sensor en el aire y anotá el valor
rawque imprime →SENSOR_DRY. - Sumergí las sondas en agua y anotá el nuevo
raw→SENSOR_WET. - Actualizá las constantes y recargá el sketch.
Para ver el raw, agregá esta línea al final de readHumidity() antes del return:
sendLog("info", "raw: " + String(raw) + " humedad: " + String(humidity) + "%");Cargar a la placa
- En Arduino IDE, seleccioná Tools → Board → Arduino AVR Boards → Arduino Uno.
- Seleccioná el puerto COM en Tools → Port.
- No se necesitan librerías externas — el código es Arduino puro.
- Hacé click en Upload (→).
- Al terminar, el LED parpadea 2 veces y el Arduino empieza a imprimir JSON por Serial.
¿Te trabaste en algún paso?
Sumate al grupo de Telegram de Bloomit: ahí te ayudamos a resolver errores de cableado, compilación o conexión. Hay gente armando los mismos proyectos que vos.
Unirme al grupoBloomit
¿Todo funcionando? Abrí el panel
Registrá tu cuenta gratis, conectá el dispositivo y los datos aparecen en tiempo real. Hardware Bloomit listo para usar en bloomit.com.ar.