Proyecto Astro Pi 25/26 (Misión Flora y Fauna)
1. Objetivo del Repositorio
El propósito de este código es proporcionar una base sólida y funcional para que cualquier estudiante pueda poner en marcha el kit Astro Pi 25/26 de inmediato. El software gestiona la captura de imágenes de la Tierra y la telemetría ambiental básica.
2. Configuración del Entorno
Para que el software funcione, es necesario contar con el siguiente equipamiento y configuración:
- Hardware: Raspberry Pi 4, Sense HAT (v2) y Cámara HQ.
- Software: Raspberry Pi OS con las librerías
sense_hatypicamerainstaladas. - Conexiones: Asegúrate de que la Sense HAT esté bien acoplada a los pines GPIO y el cable de la cámara esté firme.
3. Código Fuente (Versión 1.0)
Este script incluye la lógica de captura y el bloque del experimento de IA que causó los problemas de rendimiento.
Python
import os
from datetime import datetime
from sense_hat import SenseHat
from picamera import PiCamera
from time import sleep
sense = SenseHat()
camera = PiCamera()
camera.resolution = (4056, 3040) # Resolución HQ
# Intentamos usar TensorFlow Lite para análisis de terreno en tiempo real.
# PROBLEMA: El modelo .tflite + la librería superan los 30MB de límite de la ESA.
# Además, el tiempo de inferencia hacía que el script tardara > 10 min por ciclo.
"""
try:
import tflite_runtime.interpreter as tflite
interpreter = tflite.Interpreter(model_path="bosque_vs_desierto.tflite")
except ImportError:
print("Error: Librerías de IA demasiado pesadas para el entorno ISS")
"""
def capturar_datos():
timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
temp = sense.get_temperature()
hum = sense.get_humidity()
pres = sense.get_pressure()
sense.show_message("REC", scroll_speed=0.05, text_colour=[255, 0, 0])
foto_path = f"./data/imagen_{timestamp}.jpg"
camera.capture(foto_path)
with open("log_astropi.csv", "a") as f:
f.write(f"{timestamp},{temp},{hum},{pres},{foto_path}\n")
try:
if not os.path.exists('./data'):
os.makedirs('./data')
while True:
capturar_datos()
sleep(60) # Captura cada minuto
except KeyboardInterrupt:
print("Simulación finalizada")
4. Análisis del “Fallo” y Trabajo Futuro
Como se detalla en el código, el ejercicio complicado que intentamos implementar fue la clasificación automática de biomas mediante Redes Neuronales Convolucionales (CNN).
¿Qué salió mal?
- Límite de Almacenamiento: El modelo entrenado ocupaba 45 MB, lo cual es incompatible con las restricciones de la ESA para la misión Astro Pi (máximo 30 MB totales incluyendo código y assets).
- Cuello de Botella Térmico: El procesamiento de imágenes de 12MP mediante IA hacía que la CPU de la Raspberry Pi se calentara rápidamente. En la ISS, el calor no se disipa por convección, por lo que el sistema forzaba un apagado de seguridad.
Sugerencia para el Curso 26/27
Para que el siguiente curso pueda “echarlo a andar” con éxito, recomendamos:
- Sustituir la IA por filtros de color OpenCV (mucho más ligeros).
- Utilizar la librería
ephempara capturar fotos solo cuando la ISS esté en la cara iluminada de la Tierra, ahorrando batería y espacio.
5. Equipo a cargo del proyecto
Este proyecto, documentación y creación de la entrada han sido realizadas por los siguientes integrantes:
- Eric Condrat
- Julio Floria Marcos
Etiqueta:25/26, ASTROPI, ies monterroso, montesteam, raspberry
