Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save Jahziel43/0374bca6b1ef5bdeb8e025f09191ffa5 to your computer and use it in GitHub Desktop.

Select an option

Save Jahziel43/0374bca6b1ef5bdeb8e025f09191ffa5 to your computer and use it in GitHub Desktop.

Nombre: Jahziel Amado López Angulo
Número de Control: 22211593
Correo electrónico: l22211593@tectijuana.edu.mx
GitHub: Jahziel43


🌐 Práctica IoT: micro:bit V2 como Nodo Intermedio en AWS IoT Stack

1️⃣ Conectividad IoT (AWS Core) ✅

Descripción

Se implementó un flujo de comunicación IoT utilizando un dispositivo físico BBC Micro:bit como nodo sensor.
El micro:bit recolecta temperatura y nivel de luz, los envía en formato JSON vía USB Serial a una PC con Windows 11, la cual reenvía los datos a una instancia EC2 (Ubuntu) alojada en AWS, usando el protocolo HTTP.

En el servidor EC2, un servicio Flask recibe la información y la reenvía de manera segura hacia el broker MQTT (Mosquitto) con autenticación y cifrado TLS.

Flujo general

Micro:bit → PC (Serial + HTTP) → EC2 Flask Server → Mosquitto MQTT → Telegraf → InfluxDB → Grafana

📸 Evidencias

  • Captura del código JavaScript de micro:bit generando JSON y enviándolo por serial.
    Código Microbit
  • Captura de código microbit_reader.py que recibe datos desde micro:bit y los reenvía a la EC2.
    Código microbit_reader
  • Terminal en Windows recibiendo datos desde micro:bit y reenviando a la EC2.
    Terminal Win recibiendo microbit y enviando a EC2
  • Flask recibiendo los datos correctamente en el puerto 5000.
    Flask recibiendo
  • Mosquitto mostrando la publicación del topic iot/sensores. Mosquitto publicaciones

Cumple con: Publicación exitosa de datos IoT reales en AWS Core.


2️⃣ Integración InfluxDB / Prometheus ✅

Descripción

Se utilizó Telegraf para consumir los datos publicados en el broker MQTT (iot/sensores) y almacenarlos directamente en InfluxDB dentro del bucket sensores.

Datos enviados

  • temperatura (°C) → obtenida del micro:bit
  • light_lvl (nivel de luz 0–255)

Configuración

  • Telegraf configurado con plugin inputs.mqtt_consumer.
  • Bucket y token de InfluxDB definidos en telegraf.conf.
  • Prometheus habilitado para métricas del servidor EC2 (CPU, RAM, Disco).

📸 Evidencias

  • Telegraf consumiendo topic MQTT sin errores.
    Telegraf sin errores
  • InfluxDB mostrando registros con temperatura y luz provenientes del micro:bit.
    InfluxDB Temp y Luz

Cumple con: Integración y almacenamiento de datos en InfluxDB visibles desde Grafana.


3️⃣ Visualización y alertas ✅

Descripción

Los datos de InfluxDB se visualizaron en Grafana mediante un panel con dos gráficas en tiempo real:

  • Temperatura ambiente (°C)
  • Nivel de luz (Light Level)

También se añadieron métricas del sistema EC2 (CPU, Memoria y Disco) mediante Prometheus.

📸 Evidencias

  • Dashboard IoT completo mostrando temperatura, luz y métricas del servidor.
    Dashboard Microbit

Cumple con: Visualización funcional en Grafana.


4️⃣ Innovación del proyecto ✅

Innovación destacada

  • Se integró un dispositivo físico (BBC Micro:bit) en lugar de simulaciones, convirtiéndolo en un nodo IoT real.
  • Implementación multiplataforma (microcontrolador → PC → servidor EC2).
  • Doble canal de transmisión (Serial + HTTP + MQTT).
  • Se muestran los valores en Grafana en un Dashboard.

Cumple con: Integración de hardware real, validación de datos y flujo IoT completo.


🧾 Conclusión

Se logró conectar exitosamente un micro:bit físico a un entorno IoT en la nube (AWS EC2), transmitiendo datos reales de sensores hacia InfluxDB y Grafana con cifrado y autenticación segura.
El flujo fue estable, escalable y visualmente funcional.
Se cumplieron todos los criterios de la rúbrica, demostrando la comunicación IoT de extremo a extremo.


📦 Entregables

  • Código del micro:bit en MakeCode (JavaScript).
  • Script Python en PC (Serial → HTTP).
  • Servidor Flask (HTTP → MQTT).
  • Configuración Telegraf, InfluxDB y Grafana.
  • Capturas de dashboard.
@IoTeacher
Copy link

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment