2025-04-24 01:18:40 +02:00
2025-04-24 01:18:40 +02:00
2025-04-24 01:18:40 +02:00
2025-04-08 18:38:27 +02:00
2025-04-24 01:18:40 +02:00
2025-04-08 18:16:51 +02:00
2025-04-24 01:18:40 +02:00
2025-04-08 18:38:27 +02:00
2025-04-24 01:18:40 +02:00
2025-04-24 01:18:40 +02:00
2025-04-24 01:18:40 +02:00

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

  1. Node.js:

  2. Acceso al dispositivo CanSat conectado al puerto USB de tu ordenador.


🚀 Instalación

  1. Abre una terminal.
  2. Clona o descarga el proyecto y accede a su carpeta:
    # 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:
    npm install
    

⚙️ Configuración

Antes de ejecutar el proyecto, edita el archivo config.js y ajusta estos valores:

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
  }
}
  • 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.

📂 Estructura de archivos

  • 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.
  • config.js
    Contiene toda la configuración del proyecto (ThingSpeak y serial).

  • 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).
  • api.js (en libs/)

    • subirDato(datos): prepara y acumula peticiones para ThingSpeak.
    • Bucle que envía datos en bloques cada 20 segundos.
  • package.json

    • Define dependencias y scripts disponibles.

▶️ Uso

  1. Asegúrate de haber configurado config.js.
  2. En la terminal, ejecuta:
    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 o busca ayuda en la comunidad.

Description
No description provided
Readme MIT 59 KiB
Languages
JavaScript 100%