Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sistema de Telemetría para Motocicletas en Tiempo Real con Arduino, GPS y Sensores

Componentes y Suministros

Arduino UNO×1
Módulo GPS u-blox NEO-7M×1
Sensor de Temperatura LM35DT×1
Sensor Infrarrojo TMP006 (SparkFun)×1
Módulo Bluetooth HC-05×1
Sensor Ultrasónico HC-SR04 (Genérico)×2
Acelerómetro ADXL345 (SparkFun)×1
Ducati Monster 695 (Vehículo de pruebas)×1
ProtoShield Kit (SparkFun)×1
Protoboard Mediana×1
Batería 9V×1
Conector Batería 9V×1
Cables Dupont×1
Lumia 650 (Windows Phone)×1

Aplicaciones y Servicios Online

Sobre el Proyecto

Este proyecto combina la pasión por las motocicletas con el desarrollo en Arduino, creando un sistema de telemetría inspirado en los datos que se muestran en las retransmisiones de MotoGP. El objetivo es desarrollar un sistema replicable que cualquier entusiasta pueda instalar en su motocicleta.

La Idea

El sistema captura los siguientes parámetros de conducción:

Arquitectura del Sistema

El flujo de trabajo consta de 7 fases:

  1. Fase 1: La unidad de control (en la moto) adquiere datos de telemetría ~2 veces/segundo.
  2. Fase 2: Los datos se envían por Bluetooth (HC-05) desde Arduino al Windows Phone.
  3. Fase 3: La app UWP muestra los datos y los envía por 3G/4G a Azure IoT Hub.
  4. Fase 4: Un trabajo de Stream Analytics recibe los datos y los guarda en SQL Azure.
  5. Fase 5: Una Web App en Azure muestra la telemetría en tiempo real usando Entity Framework.
  6. Fase 6: La Web App autentica usuarios y muestra gráficos con todos los datos.
  7. Fase 7: Machine Learning procesa los datos para analizar el "estilo de conducción" y sugerir mejoras.

Configuración Hardware

PASO 1 - Conectividad Bluetooth

Se usa la librería SoftwareSerial para comunicar el HC-05 con Arduino. El módulo se configura como esclavo y se cambia su nombre por defecto.

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX, TX
void setup() { BTSerial.begin(9600); }
void loop() { BTSerial.print("Datos telemetría"); }

PASO 2 - Comunicación GPS

El módulo NEO-7M (56 canales, 10Hz) se comunica vía SoftwareSerial y la librería TinyGPS++.

#include <SoftwareSerial.h>
#include <TinyGPS++.h>
SoftwareSerial ss(12, 13);
TinyGPSPlus gps;
void setup() { ss.begin(9600); }
void loop() {
  while (ss.available() > 0) {
    if (gps.encode(ss.read())) {
      if (gps.location.isValid()) {
        double lat = gps.location.lat();
        double lon = gps.location.lng();
      }
    }
  }
}

PASO 3 - Acelerómetro ADXL345

Mide aceleración en 3 ejes (±16g, 13-bit) vía I2C/SPI. Calcula ángulos de inclinación (roll) y caballito (pitch) tras calibrar el "punto cero" en el primer bucle.

// Calibración primer bucle
if (i == 0) { refXg = Xg; refYg = Yg; refZg = Zg; i = 1; }
Xg -= refXg; Yg -= refYg; Zg = Zg - refZg + 1;

// Cálculo ángulos
roll  = -(atan2(-fYg, fZg) * 180.0) / M_PI;
pitch =  (atan2(fXg, sqrt(fYg*fYg + fZg*fZg)) * 180.0) / M_PI;

Ejes: Z = gravedad, Y = dirección marcha, X = movimiento lateral.

PASO 4 - Temperatura Neumático (TMP006)

Sensor infrarrojo sin contacto (4-16 µm). Distancia recomendada: ≤ mitad del radio del ángulo sólido. Para neumático 160mm → distancia ≤ 40mm. Comunicación I2C con librería Adafruit_TMP006.

#include "Adafruit_TMP006.h"
Adafruit_TMP006 tmp006;
void loop() {
  float objTemp = tmp006.readObjTempC(); // Temp objeto (neumático)
  float dieTemp = tmp006.readDieTempC(); // Temp sensor (ambiente)
}

PASO 5 - Temperatura Externa (LM35)

Salida lineal 10mV/°C. Lectura en entrada analógica A1.

int sensor = analogRead(A1);
float millivolts = (sensor / 1023.0) * 5000;
float celsius = millivolts / 10;

PASO 6 - Posición Ultrasónica (HC-SR04)

Mide recorrido de suspensiones. Velocidad sonido ~340 m/s. Fórmula: S = 0.034 × t / 2 (t en µs, S en cm). Se usa librería NewPing para mejor rendimiento.

#include <NewPing.h>
NewPing sonar(2, 3, 200); // trigger, echo, max_dist_cm
int ReadPositionPing() {
  unsigned int uS = sonar.ping();
  return sonar.convert_cm(uS);
}

Software UWP (Windows 10 Mobile)

Aplicación Universal Windows que recibe datos por Bluetooth, los valida (marcadores $START / $END), los parsea (separador |), muestra en UI (velocidad, ángulos, GPS, temperaturas, suspensiones) y envía a IoT Hub.

Ejemplo trama: $START|40.909409|N|9.520008|E|8|2|2016|15:46:42|0.09|0.000000|0|0|-0.21|0.00|0.00|-0.02|0.98|-|0.00|35.19|29.58|16|10|$END|

Despliegue en Windows 10 Mobile

  1. Activar "Modo Desarrollador" en el móvil (Actualización y Seguridad → Para desarrolladores).
  2. Conectar por USB, obtener PIN.
  3. En Visual Studio: Proyecto → Tienda → Crear paquetes de aplicación → No (paquete local) → Plataforma ARM → Crear.
  4. Usar WinAppDeployCmd.exe desde C:\Program Files (x86)\Windows Kits\10\bin\x86\:
    WinAppDeployCmd install -file "ruta\archivo.appxbundle" -ip 127.0.0.1 -pin TU_PIN

Configuración en Azure

1. IoT Hub

Crear IoT Hub → Anotar Hostname y Connection String (política iothubowner).

2. Stream Analytics Job

Entrada: IoT Hub. Salida: Tabla SQL Azure. Consulta SQL para insertar datos.

3. Web App + SQL Azure

Crear "Web App + SQL" → Configurar plan (F1 gratuito) → Credenciales admin SQL → Vincular Stream Analytics a la BD.

4. Device ID

App Consola con paquete Microsoft.Azure.Devices para registrar dispositivo (myDucatiMonsterDevice) y obtener clave simétrica.

Aplicación Web

Dashboard ASP.NET responsive (Entity Framework → SQL Azure). Muestra gráficos de telemetría. Demo: usuario demo / contraseña demo. Dominio personalizable en Azure.

Montaje en Ducati Monster 695

Machine Learning (Azure ML Studio)

Experimentos para correlacionar telemetría y estilo de conducción.

Hallazgos: Preferencia inclinación derecha; ángulo inclinación independiente de temp. neumático/velocidad; caballito (wheelie) aparece con temp. neumático > 35°C.

Conclusiones y Futuro

Código

Esquemáticos

Diagrama de circuito del sistema de telemetría (archivo MotorbikeProject.fzz para Fritzing).

Proceso de manufactura

  1. Sensor Telemetry 2.0.1 – Monitorización Avanzada de Temperatura con Azure IoT Hub
  2. Sistema de Evitación de Obstáculos con IA y Arduino: Aprendizaje por Refuerzo Q-Learning
  3. Pantalla LED Interactiva con Giroscopio, Anillo NeoPixel y Arduino
  4. Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
  5. Disfraz de nube DIY: Tira LED, Arduino Nano y componentes SparkFun
  6. Robot industrial seguidor de línea para transporte de materiales
  7. Pixie: Reloj de pulsera NeoPixel basado en Arduino – Elegante reloj LED DIY
  8. Botella de agua inteligente con Arduino: Monitorización en tiempo real y alertas
  9. Teatro de Sombras Navideño DIY: Espectáculo de Luces con Arduino y Tira LED Direccionable
  10. Sistema Portátil de Vigilancia Remota con Cámara y Robot Móvil
  11. Guante Inteligente de Gestos a Texto para Lenguaje de Signos