Un système d'affichage GPS et anémométrique pour télécommande de voilier RC basé sur un M5Stack Core2. Ce projet fait partie de l'écosystème OpenSailingRC et affiche en temps réel les données de navigation (bateau et vent) via ESP-NOW.
🎉 Version 1.0.7 - Nouvelle interface 4 lignes avec système de timeout intelligent
Interface compacte et lisible affichant toutes les données essentielles :
- Ligne 1 - BOAT Speed : Vitesse du bateau en nœuds
- Ligne 2 - BOAT Heading : Cap du bateau en degrés (0-360°)
- Ligne 3 - WIND Speed : Vitesse du vent en nœuds
- Ligne 4 - WIND Direction : Direction du vent en degrés (prévu pour bouées GPS)
- Détection automatique : Affiche
--après 5 secondes sans données - Indication visuelle : Identifie immédiatement les pertes de connexion
- Indépendant : Timeout séparé pour bateau et vent
- Pas de synchronisation : Utilise l'horloge locale du Display uniquement
- ESP-NOW : Réception des données en temps réel (100-200m de portée)
- Données bateau (GPS) : vitesse, cap, timestamp
- Données vent (anémomètre) : vitesse, timestamp
- Multi-sources : Supporte plusieurs bateaux et anémomètres simultanément
- Broadcast : Communication point-à-multipoint sans appairage
- Carte SD : Enregistrement automatique des données de navigation
- Format JSON : Données structurées et facilement exploitables
- Serveur web : Accès distant aux fichiers via interface web
- M5Stack Core2 v1.1 - Écran tactile ESP32
- Carte microSD (recommandée : 8GB+)
- Câble USB-C pour programmation et alimentation
- Processeur : ESP32 dual-core 240MHz
- Mémoire : 16MB Flash, 8MB PSRAM
- Écran : 320x240 pixels, tactile capacitif
- Connectivité : WiFi 802.11 b/g/n, Bluetooth 4.2, ESP-NOW
- Alimentation : Batterie intégrée 390mAh + USB-C
La méthode la plus simple pour flasher votre M5Stack !
-
Télécharger M5Burner
- Windows/Mac/Linux : M5Burner Download
-
Télécharger le firmware
- Aller dans Releases
- Télécharger
OpenSailingRC_Display_v1.0.7_MERGED.bin
-
Flasher le M5Stack Core2
- Ouvrir M5Burner
- Connecter le M5Stack Core2 en USB-C
- Sélectionner le port COM
- Choisir le fichier
.bintéléchargé - Adresse :
0x0(important !) - Cliquer sur "Burn"
-
Vérifier
- Redémarrer le M5Stack
- L'interface 4 lignes devrait s'afficher
- Vérifier que
--apparaît (normal sans signal)
✅ Aucune compilation nécessaire !
- PlatformIO installé
- VS Code avec extension PlatformIO
- Pilotes USB-C pour M5Stack Core2
-
Cloner le projet
git clone https://github.com/FRA-222/Boat-GPS-Display.git cd Boat-GPS-Display/OpenSailingRC-Display -
Compiler le projet
platformio run
-
Téléverser sur le M5Stack
platformio upload
-
Moniteur série (optionnel)
platformio device monitor
- Carte SD : Insérer une carte microSD formatée en FAT32
- WiFi : Créer le fichier
wifi_config.jsonsur la carte SD :{ "ssid": "VotreSSID", "password": "VotreMotDePasse" }
- Allumer le M5Stack Core2
- L'interface 4 lignes s'affiche automatiquement
- Par défaut, toutes les valeurs affichent
--(pas de données) - Les données apparaissent dès réception des signaux ESP-NOW
┌─────────────────────────────┐
│ BOAT 12.5 KTS │ ← Vitesse bateau
│ BOAT 285 DEG │ ← Cap bateau
│ WIND 8.3 KTS │ ← Vitesse vent
│ WIND -- DEG │ ← Direction vent*
└─────────────────────────────┘
*Direction vent préparée pour future implémentation avec bouées GPS
- Valeur numérique : Donnée valide reçue < 5 secondes
--: Aucune donnée depuis > 5 secondes- Indépendant : Bateau et vent ont des timeouts séparés
- Réception bateau : Vitesse, cap depuis module GPS embarqué
- Réception vent : Vitesse depuis anémomètre AtomS3
- Temps réel : Rafraîchissement automatique à chaque réception
- Portée : 100-200 mètres en ligne de vue
⚠️ Version 1.0.7 requise sur tous les appareils- Incompatible avec versions antérieures (structure modifiée)
- Nécessite :
- OpenSailingRC-Display v1.0.7
- OpenSailingRC-Anemometer v1.0.7
- OpenSailingRC-BoatGPS v1.0.6+
OpenSailingRC-Display/
├── src/
│ ├── main.cpp # Programme principal
│ ├── Display.cpp # Gestion de l'affichage
│ ├── Storage.cpp # Stockage sur carte SD
│ ├── FileServerManager.cpp # Serveur de fichiers WiFi
│ └── Logger.cpp # Système de logging
├── include/
│ ├── Display.h
│ ├── Storage.h
│ ├── FileServerManager.h
│ ├── Logger.h
│ └── DisplayTypes.h
├── docs/ # Documentation technique
├── platformio.ini # Configuration PlatformIO
└── README.md
Gestion de l'interface utilisateur et de l'affichage des données GPS.
- Rose des vents interactive
- Barres de progression colorées
- Interface tactile
Système de stockage des données sur carte SD.
- Écriture en format JSON
- Gestion des erreurs SD
- Organisation des fichiers par date
Serveur web pour l'accès distant aux données.
- Interface HTTP simple
- Liste et téléchargement de fichiers
- Gestion de la connexion WiFi
Système de logging unifié pour le debugging.
- Messages horodatés
- Niveaux de priorité
- Sortie série et fichier
struct struct_message_Boat {
float speedKnots; // Vitesse en nœuds
float heading; // Cap en degrés (0-360)
unsigned long timestamp; // Timestamp (rempli par Display)
};struct struct_message_Anemometer {
float windSpeed; // Vitesse du vent en nœuds
unsigned long timestamp; // Timestamp (rempli par Display)
};💡 Note : Le timestamp est initialisé à 0 par l'émetteur et rempli par le Display lors de la réception avec
millis(). Cela permet le système de timeout sans synchronisation entre appareils.
{
"timestamp": "2025-09-21T14:30:00Z",
"latitude": 43.123456,
"longitude": 2.654321,
"speed_ms": 2.5,
"speed_knots": 4.86,
"heading": 285.0,
"satellites": 8
}- Vitesse max : Configurable dans
DisplayTypes.h - Couleurs : Personnalisables par vitesse
- Unités : Support nœuds/km/h
- Canal WiFi : Auto-détection
- Adresses MAC : Configuration automatique
- Retry logic : Gestion des pertes de connexion
- Intervalle : Fréquence d'enregistrement configurable
- Compression : Optimisation de l'espace disque
- Rotation : Gestion automatique des anciens fichiers
platformio test- Test de réception ESP-NOW
- Validation stockage SD
- Vérification serveur web
- Logs série :
monitor_speed = 115200 - Logs SD : Fichiers de debug sur carte
- Interface web : Diagnostic système
Les contributions sont les bienvenues ! Ce projet fait partie de l'écosystème OpenSailingRC.
- Fork du projet
- Créer une branche feature (
git checkout -b feature/AmazingFeature) - Commit des changements (
git commit -m 'Add AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
- Code documenté en anglais
- Tests unitaires pour les nouvelles fonctionnalités
- Respect des conventions de nommage
- Documentation mise à jour
Ce projet est sous licence GNU General Public License v3.0. Voir le fichier LICENSE pour plus de détails.
- M5Stack pour le hardware Core2
- Espressif pour l'ESP32 et ESP-NOW
- Communauté PlatformIO pour l'écosystème de développement
- OpenSailingRC pour l'inspiration et les spécifications
- Issues GitHub : Signaler un bug
- Discussions : Forum de discussion
- Documentation : Wiki du projet
- ✅ Interface 4 lignes (BOAT + WIND)
- ✅ Système de timeout 5 secondes
- ✅ Terminologie WIND au lieu de BUOY
- ✅ Structures avec timestamp
- ✅ Merged bin pour M5Burner
- ✅ Interface 4 lignes initiale
- ✅ Système de timeout 5 secondes
Voir RELEASE_NOTES_V1.0.3.md pour tous les détails.
- OpenSailingRC-Anemometer-v2 - Anémomètre M5Stack AtomS3
- OpenSailingRC-BoatGPS - Module GPS embarqué M5Stack AtomS3
- OpenSailingRC-Display - Display M5Stack Core2 (ce projet)
Pour un système complet, flasher les 3 firmwares v1.0.3 :
- Display (M5Stack Core2) - Écran 4 lignes
- Anemometer (M5Stack AtomS3) - Mesure vitesse vent
- BoatGPS (M5Stack AtomS3) - Mesure vitesse/cap bateau
Développé avec ❤️ pour la communauté RC Sailing