Tecnología e Ingeniería I • Bachillerato

Estación Meteorológica IoT

Diseño, Programación y Ética en la Cultura Maker

ESP8266 BMP280 MQTT / JSON Node-RED
Logotipo Universidad del Atlántico Medio
📡 Fase: Prototipado y Comunicaciones
💡 Metodología: ABP
RECURSO EDUCATIVO ABIERTO (REA)

Saltar la navegación

Fase 3. IoT, WiFi, MQTT y JSON

🌐 Fase 3 · 2 sesiones

IoT, WiFi, MQTT y JSON

En esta fase conocerás la arquitectura general del proyecto y comprenderás cómo un sensor físico puede enviar información a través de la red para ser visualizada posteriormente en un panel de datos. El objetivo no es solo programar, sino entender cómo viajan los datos desde el dispositivo hasta la interfaz final.

IoT WiFi MQTT Broker JSON Payload

🔗Arquitectura general del sistema

El proyecto sigue una estructura típica de Internet de las Cosas: un sensor mide una variable física, el microcontrolador la procesa, la red permite transmitirla, un servidor intermedio organiza los mensajes y una herramienta final los visualiza. Esta lógica ya aparece planteada en la secuencia didáctica de tu REA y servirá como base para las fases prácticas siguientes. 

Sensor BMP280 mide temperatura y presión.
Microcontrolador El ESP8266 procesa los datos.
WiFi Conecta el dispositivo a la red local.
Broker MQTT Recibe y distribuye los mensajes.
Dashboard Node-RED muestra los datos en tiempo real.

📡¿Qué es IoT?

El IoTInternet of Things o Internet de las Cosas. Se refiere a objetos físicos conectados a la red que pueden medir, intercambiar y procesar datos. permite que dispositivos cotidianos recojan información del entorno y la compartan automáticamente a través de Internet o de una red local. En este proyecto, la estación meteorológica actúa como un pequeño sistema IoT porque mide variables físicas y las envía a otro entorno para su visualización. 

Esta fase te ayuda a entender que el proyecto no se limita a leer un sensor, sino que forma parte de una cadena completa de adquisición, transmisión y uso de datos. 

📶WiFi y TCP/IP

El ESP8266 incorpora conectividad WiFiTecnología de red inalámbrica que permite conectar el microcontrolador a una red local sin usar cables., lo que permite que el sistema se comunique con otros equipos de la red. Una vez conectado, utiliza la lógica general de TCP/IPConjunto de protocolos que permite el envío de datos entre dispositivos conectados a una red. IP gestiona el direccionamiento y TCP garantiza la entrega correcta de los datos. para intercambiar información. 

En las fases siguientes esta conexión será fundamental para enviar las lecturas del sensor a un broker MQTT y después representarlas en Node-RED.

¿Qué es MQTT?

MQTTProtocolo de mensajería muy ligero, diseñado para dispositivos con pocos recursos y para redes donde no siempre hay mucha estabilidad o ancho de banda. es un protocolo de comunicación muy usado en IoT porque resulta simple, eficiente y ligero. En lugar de que un dispositivo pregunte continuamente por los datos, se usa un modelo de publicación y suscripción: un dispositivo publica y otro recibe solo si está suscrito al canal adecuado. 

Protocolo MQTT

Ese canal se llama tópicoRuta o nombre jerárquico que organiza los mensajes en MQTT. Permite separar y clasificar la información transmitida. y el servidor intermedio se llama brokerServidor que recibe los mensajes MQTT enviados por los publicadores y los distribuye a los clientes suscritos a cada tópico.. Así, el ESP8266 puede actuar como publicador y Node-RED como suscriptor. 

🧩¿Qué es JSON?

JSONFormato de texto ligero para intercambiar datos estructurados. Organiza la información en pares clave-valor y puede incluir objetos dentro de otros objetos. es un formato de texto muy cómodo para representar datos estructurados. Permite agrupar la información en claves y valores, lo que resulta muy útil para enviar varias medidas del sensor en un único mensaje. 

Formato JSON

En este proyecto, el contenido del mensaje MQTT o payloadContenido útil del mensaje enviado por MQTT. En este caso contiene los datos del sensor en formato JSON. incluye la información del ESP8266 y los valores leídos del BMP280. Esta estructura hará más fácil extraer datos concretos cuando trabajes después con Node-RED. 

Idea clave: en esta fase no se trata todavía de enviar datos de verdad, sino de comprender la lógica de comunicación que hará posible esa transmisión en la fase práctica siguiente. Primero entiendes la arquitectura; después la implementas. 
Fragmento del proyecto · Construcción del JSON antes de publicarlo
// Construcción del documento JSON
DynamicJsonDocument doc(1024);

// Objeto con información del ESP8266
JsonObject esp = doc.createNestedObject("esp");
esp["ip"] = WiFi.localIP().toString();
esp["rssi"] = WiFi.RSSI();
esp["timestamp"] = millis();

// Objeto con datos del sensor
JsonObject values = doc.createNestedObject("sensor");
values["name"] = "BMP280";
values["temperatura_c"] = tempC;
values["presion_hpa"] = pressHP;
values["altitud_m"] = altM;

// Serialización del JSON para enviarlo por MQTT
char payload[1024];
serializeJson(doc, payload, sizeof(payload));
client.publish(send_topic, payload);

➡️Preparación para la Fase 4

En el repositorio base del proyecto, el sketch completo ya integra la conexión WiFi, la configuración del cliente MQTT, la construcción del JSON y la publicación periódica de mensajes con los datos del BMP280. Esta fase te prepara conceptualmente para entender esa parte del código cuando llegue el momento de probarla en la práctica. 

En la siguiente fase trabajarás con el envío real de datos hacia el broker y comprobarás cómo aparece el mensaje en el tópico correspondiente. 

Relaciona los conceptos de IoT, MQTT y JSON.

Relaciona cada concepto con su definición correcta. Este juego te ayudará a comprender el vocabulario básico de la comunicación en sistemas IoT antes de pasar al envío real de datos mediante MQTT.

{"typeGame":"Relaciona","author":"Daniel Rodríguez Carrión.","randomCards":true,"instructions":"

Relaciona cada concepto con su definición correcta. Este juego te ayudará a comprender el vocabulario básico de la comunicación en sistemas IoT antes de pasar al envío real de datos mediante MQTT.

","showMinimize":false,"itinerary":{"showClue":false,"clueGame":"","percentageClue":40,"showCodeAccess":false,"codeAccess":"","messageCodeAccess":""},"cardsGame":[{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"MQTT","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Protocolo%20de%20mensajer%C3%ADa%20ligero%20muy%20usado%20en%20IoT%20para%20intercambiar%20datos%20entre%20dispositivos."},{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"Broker","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Servidor%20que%20recibe%20mensajes%20MQTT%20y%20los%20distribuye%20a%20los%20clientes%20suscritos."},{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"T%C3%B3pico","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Ruta%20o%20canal%20donde%20se%20publica%20un%20mensaje%20MQTT%2C%20por%20ejemplo%20cabrerapinto%2Fmeteorologia%2Fnodo%2Fbmp280."},{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"Payload","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Contenido%20%C3%BAtil%20del%20mensaje%20que%20se%20transmite%2C%20en%20este%20proyecto%20con%20datos%20del%20sensor%20en%20formato%20JSON."},{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"JSON","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Formato%20de%20texto%20estructurado%20que%20organiza%20la%20informaci%C3%B3n%20en%20pares%20clave-valor."},{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"Publicador","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Dispositivo%20o%20programa%20que%20env%C3%ADa%20mensajes%20a%20un%20t%C3%B3pico%20MQTT."},{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"Suscriptor","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Dispositivo%20o%20programa%20que%20recibe%20mensajes%20de%20un%20t%C3%B3pico%20porque%20est%C3%A1%20suscrito%20a%20%C3%A9l."},{"url":"","x":0,"y":0,"author":"","alt":"","audio":"","color":"#000000","backcolor":"#ffffff","eText":"WiFi","urlBk":"","xBk":0,"yBk":0,"authorBk":"","altBk":"","audioBk":"","colorBk":"#000000","backcolorBk":"#ffffff","eTextBk":"Tecnolog%C3%ADa%20inal%C3%A1mbrica%20que%20permite%20conectar%20el%20ESP8266%20a%20la%20red%20local."}],"isScorm":0,"textButtonScorm":"Guardar la puntuación","repeatActivity":false,"textAfter":"","version":1.3,"percentajeCards":100,"type":0,"showSolution":true,"timeShowSolution":3,"time":3,"evaluation":false,"evaluationID":"","id":"202651215024-60","msgs":{"msgSubmit":"Enviar","msgClue":"¡Genial! La pista es:","msgCodeAccess":"Código de acceso","msgPlayStart":"Pulse aquí para jugar","msgScore":"Puntuación","msgErrors":"Errores","msgHits":"Aciertos","msgMinimize":"Minimizar","msgMaximize":"Maximizar","msgFullScreen":"Pantalla Completa","msgExitFullScreen":"Salir del modo pantalla completa","msgNoImage":"Pregunta sin imágenes","msgEndGameScore":"Antes de guardar la puntuación comience la partida.","msgScoreScorm":"La puntuación no se puede guardar porque esta página no forma parte de un paquete SCORM.","msgOnlySaveScore":"¡Sólo puede guardar la puntuación una vez!","msgOnlySave":"Sólo puede guardar una vez","msgInformation":"Información","msgYouScore":"Su puntuación","msgAuthor":"Autoría","msgOnlySaveAuto":"Su puntuación se guardará después de cada pregunta. Sólo puede jugar una vez.","msgSaveAuto":"Su puntuación se guardará automáticamente después de cada pregunta.","msgSeveralScore":"Puede guardar la puntuación tantas veces como quiera","msgYouLastScore":"La última puntuación guardada es","msgActityComply":"Ya ha realizado esta actividad.","msgPlaySeveralTimes":"Puede realizar esta actividad cuantas veces quiera","msgClose":"Cerrar","msgAudio":"Audio","msgNumQuestions":"Número de tarjetas","msgTryAgain":"Necesita al menos un %s% de respuestas correctas para conseguir la información. Vuelva a intentarlo.","msgEndGameM":"Has completado el juego. Tu puntuación es %s.","msgUncompletedActivity":"Actividad no completada","msgSuccessfulActivity":"Actividad superada. Puntuación: %s","msgUnsuccessfulActivity":"Actividad no superada. Puntuación: %s","msgTypeGame":"Relaciona","msgCheck":"Comprobar","msgRestart":"Reiniciar"}}
Su navegador no es compatible con esta herramienta.

Creado con eXeLearning (Ventana nueva)