Mejoras generales
This commit is contained in:
124
README.md
124
README.md
@@ -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.
|
||||
Reference in New Issue
Block a user