Crash Course sur ArduinoJson¶
Introduction¶
ArduinoJson est une librairie qui permet de créer, lire et manipuler des objets JSON directement sur une carte Arduino. Elle est très utile pour envoyer des données structurées vers un ordinateur, un tableau de bord ou un serveur.
Sur le Makeblock Ranger, on peut s’en servir pour transmettre les données de capteurs, l’état du robot et d’autres informations vers le port série.
Pourquoi utiliser le json¶
- Format standard : facile à lire et à interpréter dans n’importe quel langage (Python, JavaScript, etc.)
- Lecture humaine : plus clair que des chaînes séparées par des virgules
- Compact : idéal pour des échanges réguliers de données
- Simple à convertir en tableau ou objet côté PC
Installation¶
- Ouvre l’IDE Arduino
- Va dans Outils → Gérer les bibliothèques…
- Recherche ArduinoJson
- Installe la version 6.x (la plus récente de cette série)
Note
La version 6 de la librairie ArduinoJson est recommandée pour les microcontrôleurs 8-bits comme l’Arduino.
Structure de base¶
Un message JSON est une structure clé/valeur. Exemple simple :
Dans ArduinoJson :
Créer un message JSON¶
Les champs sont ajoutés directement dans le document :
Envoyer un message au port série¶
Une fois les données ajoutées :
Cela enverra un texte du genre :
Lecture de JSON (optionnel)¶
Si on reçoit des données JSON (ex: depuis un PC ou un module), on peut les décoder :
C’est optionnel, mais utile pour les projets bidirectionnels.
Différence entre StaticJsonDocument et DynamicJsonDocument¶
| Type | Où est stockée la mémoire | Avantages | Inconvénients |
|---|---|---|---|
| StaticJsonDocument | Sur la pile (RAM locale) | Rapide, sûr, pas de fragmentation | Taille fixe, limitée |
| DynamicJsonDocument | Sur le tas (heap) | Taille variable | Plus lent, risque de fragmentation |
Règle générale :
- Utilise
StaticJsonDocumentpour les messages courts et connus d’avance. - Utilise
DynamicJsonDocumentsi tu construis des structures complexes ou variables.
Exemple complet sur le Ranger¶
Voici un exemple complet adapté à ton robot Makeblock Ranger. Il envoie les données du gyroscope (axe Z), l’état du robot, le temps écoulé, la PWM et les capteurs de ligne.
Sortie série :
Bonnes pratiques¶
- Réserve toujours assez de mémoire pour le document (
StaticJsonDocument<256>ou plus selon la taille du message). - Ajoute un
Serial.println()aprèsserializeJson()pour séparer les lignes dans le moniteur série. - Utilise des noms courts pour réduire la taille du message (ex:
gz,ts,pwm). - Si le robot envoie souvent des données → limite la fréquence.
- Calcule la taille de ton message avec l'assistant de taille : https://arduinojson.org/v6/assistant/
- Teste ton JSON avec https://jsonlint.com.
- Utilise la version 6.x de la librairie ArduinoJson pour une meilleure compatibilité avec les microcontrôleurs 8-bits.
- Utilise la version 7.x de la librairie ArduinoJson si tu travailles avec des microcontrôleurs plus puissants (ex: ESP32, Teensy).
Références¶
