Sistema de telemetría en tiempo real para un vehículo eléctrico (batería, corriente, temperatura del motor, RPM de motor y rueda, acelerador y freno), con tres implementaciones equivalentes sobre distinto hardware. Cada nodo lee los sensores analógicos/digitales del vehículo y publica un mensaje JSON por MQTT sobre TLS mutuo (mTLS) a AWS IoT Core.
Proyecto desarrollado como parte de un Trabajo Fin de Máster (TFM).
Sensores del vehículo → [nodo embebido] → MQTT sobre mTLS (TLS 1.2, cert. X.509) → AWS IoT Core
Cada nodo se autentica con su propio certificado de dispositivo (mTLS), no con usuario/contraseña. Los tres nodos implementan la misma lógica de lectura de sensores y publicación, adaptada a las capacidades de cada plataforma:
| Carpeta | Placa | Lenguaje | Notas |
|---|---|---|---|
nanoesp32/ |
Arduino Nano ESP32 | MicroPython | ADC interno de la placa |
pipico-code/ |
Raspberry Pi Pico W | MicroPython | ADC externo (ADC Pi); dos variantes: main.py y main_python.py (mismo hardware, publican en topics MQTT distintos) |
pi_zerowh_code/ |
Raspberry Pi Zero W | Python 3 | ADC externo (ADC Pi), usa el SDK oficial de AWS IoT |
Ningún secreto (contraseña WiFi, certificados, claves privadas) está en el repositorio. Antes de usar cualquiera de los nodos:
- Credenciales de conexión — en
nanoesp32/ypipico-code/, copiaconfig.example.pycomoconfig.pyy rellena tu SSID/contraseña de WiFi y el endpoint de AWS IoT (Consola AWS IoT → Configuración). Enpi_zerowh_code/, copia igualmenteconfig.example.pycomoconfig.py. - Certificados del dispositivo — crea una "Thing" (dispositivo) por nodo en AWS IoT Core, genera su certificado X.509 y su clave privada, adjúntale una policy (ver
pi_zerowh_code/iot-policy.example.jsoncomo plantilla), y coloca los ficheros donde indica elREADME.mdde cada subcarpeta de certificados (cert_n/,cert_rpipico/,certs_n/,pi_zerowh_code/).
Ninguno de estos ficheros (config.py, certificados, claves privadas) se sube a git — están excluidos vía .gitignore.
- nanoesp32 / pipico-code (MicroPython): copia todos los ficheros de la carpeta (incluido tu
config.pyy tus certificados) a la placa, por ejemplo conmpremoteorshell. Al arrancar,boot.pyconecta el WiFi ymain.pypublica telemetría por MQTT cada segundo. - pi_zerowh_code (Python 3):
pip install -r requirements.txt python3 main.py
start.shes un script auxiliar (basado en el ejemplo oficial de AWS) para probar la conectividad pub/sub contra AWS IoT antes de lanzarmain.py; requiere la variable de entornoAWS_IOT_ENDPOINT.
Para flashear MicroPython en la Raspberry Pi Pico W, descarga el .uf2 oficial desde micropython.org/download.
MIT — ver LICENSE.