Système de télémétrie moto en temps réel avec Arduino, GPS et capteurs
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino UNO | 1 |
| Module GPS u-blox NEO-7M | 1 |
| Capteur de température LM35DT | 1 |
| Capteur infrarouge TMP006 (SparkFun) | 1 |
| Module Bluetooth HC-05 | 1 |
| Capteur ultrasonique HC-SR04 | 2 |
| Accéléromètre ADXL345 (SparkFun) | 1 |
| Ducati Monster 695 (véhicule de test) | 1 |
| Kit ProtoShield (SparkFun) | 1 |
| Plaque d'essai demi-format | 1 |
| Batterie 9V | 1 |
| Connecteur batterie 9V | 1 |
| Fils de connexion | 1 lot |
| Téléphone Lumia 650 (Windows 10 Mobile) | 1 |
Applications et services en ligne
- Microsoft Azure (IoT Hub, Stream Analytics, SQL Database, Web App, Machine Learning)
- Microsoft Visual Studio 2015
- Microsoft Blend
- Arduino IDE
- GIMP
- Fritzing
À propos du projet
Chaque nouveau projet est pour moi l'occasion d'allier mes passions : la moto et l'électronique embarquée avec Arduino. Inspiré par les données télémétriques diffusées lors des courses MotoGP, j'ai conçu un système complet, reproductible et accessible à tous les motards.
L'idée
Le système capture en temps réel les paramètres suivants :
- Vitesse (km/h)
- Position GPS (latitude/longitude)
- Informations satellites (nombre, HDOP)
- Altitude (mètres)
- Angle d'inclinaison (Lean Angle)
- Angle de cabrage (Wheelie Angle)
- Accélérations G sur 3 axes (m/s²)
- Température extérieure (°C)
- Température pneu arrière (°C)
- Débattement amortisseur avant (cm)
- Débattement amortisseur arrière (cm)
Architecture globale
Le flux de données suit 7 phases :
- Acquisition : la centrale (Arduino + capteurs) échantillonne ~2 fois/seconde.
- Transmission Bluetooth : envoi vers le téléphone Windows 10 Mobile via HC-05.
- Affichage & relais 3G/4G : l'application UWP affiche les données et les pousse vers Azure IoT Hub.
- Stream Analytics : job Azure qui route les messages vers une base SQL Azure.
- Web App temps réel : application ASP.NET (Entity Framework) visualise les graphiques.
- Authentification & tableaux de bord : accès sécurisé, graphiques interactifs.
- Machine Learning : analyse du style de conduite pour suggérer des améliorations.
Configuration matérielle
Étape 1 – Bluetooth (HC-05) : liaison série logicielle (SoftwareSerial) sur broches 10/11. Configuration AT pour renommer le module.
Étape 2 – GPS (NEO-7M) : SoftwareSerial sur broches 12/13 + bibliothèque TinyGPS++ pour parser les trames NMEA.
Étape 3 – Accéléromètre (ADXL345) : interface I2C, calibration « point zéro » au premier cycle, calcul des angles de roulis (lean) et tangage (wheelie) via formules trigonométriques.
Étape 4 – Température pneu (TMP006) : capteur infrarouge sans contact, distance optimale ≤ 40 mm pour un pneu de 160 mm (R/2). Bibliothèque Adafruit_TMP006.
Étape 5 – Température extérieure (LM35DT) : sortie 10 mV/°C, lecture sur entrée analogique A1.
Étape 6 – Débattements suspensions (2× HC-SR04) : mesure temps de vol ultrasons, formule S = 0,034 × t/2. Utilisation de la bibliothèque NewPing pour de meilleures performances.
Application UWP (Windows 10 Mobile)
Interface utilisateur : jauges vitesse/inclinaison/cabrage, composantes G, GPS, températures, débattements. Parsing trames format $START|...|$END| avec séparateur « | ». Déploiement via WinAppDeployCmd (mode développeur, package ARM).
Services Azure
- IoT Hub : point d'entrée télémétrie, stratégie d'accès iothubowner.
- Stream Analytics : entrée IoT Hub, sortie table SQL Azure, requête
SELECT * INTO SqlAzureMyTelemetry FROM MyTelemetryInputHub. - Web App + SQL Azure : plan gratuit F1, base de données, déploiement Entity Framework, domaine personnalisé possible.
- Device ID : création via console C# (SDK Microsoft.Azure.Devices) → clé symétrique pour l'authentification.
Machine Learning (Azure ML Studio)
Expériences d'entraînement : import SQL, conversion types, filtrage qualité, Split Data, Train Model (Two-Class Decision Forest → Accuracy/Precision/Recall/F1 ≈ 1), Evaluate Model. Expérience prédictive : algorithme Multiclass Decision Forest, déploiement service web (endpoint REST), classification style de conduite (SAFE DRIVING, HIGH STRESS HIGH SPEED, etc.).
Montage sur Ducati Monster 695
- Centrale (Arduino, GPS, ADXL345, LM35) derrière la selle.
- TMP006 sur support imprimé/fixé près pneu arrière (≈40 mm).
- HC-SR04 avant sous phare (tête de fourche → garde-boue).
- HC-SR04 arrière sous selle (siège → pneu arrière).
Évolutions futures
- Buffer local sur l'application mobile en cas de perte 3G/4G.
- Portage Xamarin (Android/iOS).
- Capteurs plus précis, centrale miniaturisée (Arduino MKR1000).
- Réseau social motards : partage trajets, alertes virages dangereux.
- Intégration Stream Analytics → ML prédictif en boucle fermée (Event Hub → Cloud Service → ML → IoT Hub → device).
Code source
Schémas
Fichier Fritzing : MotorbikeProject.fzz (schéma carte embarquée).
Processus de fabrication
- Télémétrie de capteur 2.0.1 – Surveillance avancée de température avec Azure IoT Hub
- Système d'Évitement d'Obstacles par Intelligence Artificielle (Q-Learning) sur Arduino
- Affichage LED Interactif Gyroscopique avec Anneau NeoPixel et Arduino
- Manette de jeu USB Arduino DIY – Construisez votre propre gamepad haute performance
- Costume nuage DIY : Bandeau LED, Arduino Nano et pièces SparkFun
- Robot suiveur de ligne industriel pour transport de matériaux
- Pixie : Montre-bracelet NeoPixel à base d'Arduino – Élégante, DIY, montre LED
- Bouteille d'eau intelligente Arduino : Suivi temps réel et alertes
- Théâtre d'Ombres DIY : Créez un Spectacle Lumineux avec Arduino et Bandeau LED Adressable