Mejoras generales

This commit is contained in:
2025-04-24 01:18:40 +02:00
parent adb0be24a6
commit aa66d49d4f
8 changed files with 300 additions and 37 deletions

124
README.md
View File

@@ -1,39 +1,119 @@
# CanSat
Este documento describe el proceso para ejecutar el código que gestionará la recepción de datos del CanSat.
Este proyecto se encarga de leer datos desde un dispositivo CanSat vía puerto serie, procesarlos y enviarlos a ThingSpeak para visualizarlos en un dashboard.
## Requisitos Previos
---
Es indispensable contar con [Node.js](https://nodejs.org/) instalado en el equipo. Se recomienda descargar la versión LTS (Long Term Support) para garantizar la estabilidad del proyecto.
## 📋 Requisitos previos
## Verificación de la Instalación de Node.js
1. **Node.js**:
- Versión recomendada: LTS (Long Term Support).
- Descárgala de https://nodejs.org/
Para confirmar que Node.js y npm se han instalado correctamente, abra una terminal y ejecute los siguientes comandos:
2. **Acceso al dispositivo CanSat** conectado al puerto USB de tu ordenador.
```bash
node -v
npm -v
---
## 🚀 Instalación
1. Abre una terminal.
2. Clona o descarga el proyecto y accede a su carpeta:
```bash
# El git es para clonar, pero puedes descargar el código en ZIP si no tienes Git
git clone https://git.h4ckdata.es/h4ckx0r/CanSat.git
cd CanSat
```
3. Instala las dependencias:
```bash
npm install
```
---
## ⚙️ Configuración
Antes de ejecutar el proyecto, edita el archivo `config.js` y ajusta estos valores:
```js
export default {
// Identificadores de tu canal ThingSpeak
thingSpeak: {
channelId: "<TU_CHANNEL_ID>",
writeKey: "<TU_WRITE_KEY>"
},
// Opciones del puerto serial donde está conectado el CanSat
serial: {
path: "/dev/ttyUSB0", // Cambia al puerto correcto de tu sistema
baudRate: 9600 // Ajusta si tu dispositivo usa otra velocidad
}
}
```
Si los comandos no muestran la versión correspondiente, es posible que la instalación no haya finalizado correctamente. En ese caso, consulte las [instrucciones oficiales de Node.js](https://nodejs.org/) para completar la instalación.
- **thingSpeak.channelId**: ID del canal dónde se mostrarán los datos.
- **thingSpeak.writeKey**: Clave de escritura para enviar datos a ThingSpeak.
- **serial.path**: Ruta del dispositivo serie (por ejemplo `/dev/ttyUSB0` en Linux, `COM3` en Windows, o `/dev/tty.usbserial-XXXX` en macOS).
- **serial.baudRate**: Velocidad en baudios, normalmente `9600`.
## Preparación del Código
---
1. Descargue el código del proyecto en formato ZIP desde el repositorio o, alternativamente, realice un clon mediante Git.
2. Una vez ubicado en la carpeta del proyecto, ejecute en la terminal el siguiente comando para instalar las dependencias:
## 📂 Estructura de archivos
```bash
npm install
```
- **`main.js`**
Punto de entrada:
- Abre el puerto serie.
- Procesa cada línea recibida con `ReadlineParser`.
- Convierte la línea a objeto y llama a la función de envío.
## Ejecución del Código
- **`config.js`**
Contiene toda la configuración del proyecto (ThingSpeak y serial).
Para iniciar la ejecución del programa, utilice el siguiente comando en la terminal:
- **`utils.js`** (en `libs/`)
- `dataLineToObject(line)`: convierte una línea CSV (`;` separado) en un objeto con propiedades claras.
- Funciones de guardado en `logs/` (JSON, CSV y GeoJSON).
```bash
node main.js
```
- **`api.js`** (en `libs/`)
- `subirDato(datos)`: prepara y acumula peticiones para ThingSpeak.
- Bucle que envía datos en bloques cada 20 segundos.
## Configuración
- **`package.json`**
- Define dependencias y scripts disponibles.
Antes de ejecutar la aplicación, asegúrese de configurar correctamente las opciones necesarias en el archivo `config.js`.
---
## ▶️ Uso
1. Asegúrate de haber configurado `config.js`.
2. En la terminal, ejecuta:
```bash
npm start
```
Esto lanza `main.js` y comienza a leer y enviar datos.
---
## 🔧 Scripts disponibles
- **`npm start`**
Ejecuta el programa principal: `node main.js`.
Si da error al comunicarse con el puerto serie, cierre el monitor serie de Arduino IDE o cierre completamente el Arduino IDE y compruebe que en la configuración ha escrito correctamente el puerto serial del equipo.
En el caso de que necesite cancelar la ejecución del script, pulse `Ctrl + C` 2 veces seguidas.
- **`npm run csv2json -- nombreArchivoCSVAConvertir.csv`**
Convierte un registro de los datos CSV a JSON y GeoJSON.
Es importante que ejecute este comando en la raiz del proyecto y que el archivo CSV a convertir esté en la raiz del proyecto también. El script generará los dos archivos en la misma raiz con el mismo nombre, sólo cambiando la extensión.
Y el CSV debe contener sólo los datos, no puede contener los títulos de las columnas.
- **`npm run uploadcsv -- nombreArchivoCSVAConvertir.csv`**
Convierte el CSV de datos a un CSV listo para subir a ThingSpeak.
El comando es igual al de convertir a JSON y GeoJSON, pero esta vez generará un CSV que se llama csvParaSubir.csv y este lo importamos en ThingSpeak.
Es posible que ThingSpeak se pille, yo he tenido que recargar y borrar los datos del canal varias veces para que lo pille bien y pille todos los datos. Igualmente, esperad unos minutos a que cargue los datos.
---
¡Y ya está! Con esto tendrás tu CanSat enviando datos en tiempo real a ThingSpeak. Si tienes dudas, consulta la documentación de [Node.js](https://nodejs.org/) o busca ayuda en la comunidad.