←Retour à la documentation FizziQ Web
Cette page explique comment programmer un microcontrôleur pour transmettre des mesures de capteurs à FizziQ Web par USB. Le microcontrôleur envoie des lignes de texte dans un format reconnu par FizziQ Web. Les données peuvent ensuite être affichées, enregistrées et analysées dans le cahier d’expérience.
Ce guide traite uniquement le cas de la connexion USB Serial.
Objectif
Dans ce guide, vous allez apprendre à :
- comprendre le format USB attendu par FizziQ Web ;
comprendre le format USB attendu par FizziQ Web ;
- programmer un microcontrôleur pour envoyer des mesures ;
programmer un microcontrôleur pour envoyer des mesures ;
- utiliser les bonnes légendes de capteurs ;
utiliser les bonnes légendes de capteurs ;
- envoyer plusieurs capteurs sur plusieurs canaux ;
envoyer plusieurs capteurs sur plusieurs canaux ;
- corriger les erreurs les plus fréquentes.
corriger les erreurs les plus fréquentes.
Prérequis
Pour réaliser cette activité, il faut :
- un microcontrôleur avec port USB ou port série USB ;
un microcontrôleur avec port USB ou port série USB ;
- un ou plusieurs capteurs ;
un ou plusieurs capteurs ;
- un câble USB de données ;
un câble USB de données ;
- FizziQ Web ouvert dans un navigateur compatible ;
FizziQ Web ouvert dans un navigateur compatible ;
- un environnement de programmation adapté au microcontrôleur.
un environnement de programmation adapté au microcontrôleur.
Exemples de matériels compatibles :
- Arduino Uno, Nano ou Mega ;
Arduino Uno, Nano ou Mega ;
- ESP32 ou ESP8266 ;
ESP32 ou ESP8266 ;
- micro:bit ;
micro:bit ;
- Teensy ;
Teensy ;
- Raspberry Pi Pico.
Raspberry Pi Pico.
Comprendre le principe
FizziQ Web ne lit pas directement le capteur. Il lit les lignes de texte envoyées par le microcontrôleur par le port USB.
Votre programme doit donc :
- lire la valeur du capteur ;
lire la valeur du capteur ;
- convertir cette valeur dans une unité utile ;
convertir cette valeur dans une unité utile ;
- envoyer une ligne dans le bon format ;
envoyer une ligne dans le bon format ;
- recommencer à intervalle régulier.
recommencer à intervalle régulier.
Comprendre le format USB attendu par FizziQ Web
En USB, le format à utiliser est :
FZ[CANAL]:[LEGENDE]:[VALEUR]
Exemples :
FZ0:tem:25.3FZ0:hum:65.2FZ1:pre:1013.25FZ2:lum:450
Structure d’un message
Chaque ligne contient :
- FZ, le préfixe obligatoire ;
FZ, le préfixe obligatoire ;
- un numéro de canal de 0 à 5 ;
un numéro de canal de 0 à 5 ;
- une légende de capteur ;
une légende de capteur ;
- une valeur numérique.
une valeur numérique.
Exemple :
FZ0:tem:25.3
Ici :
- FZ0 désigne le canal 0 ;
FZ0 désigne le canal 0 ;
- tem désigne une température ;
tem désigne une température ;
- 25.3 est la valeur mesurée.
25.3 est la valeur mesurée.
Connaitre les légendes de capteurs reconnues
FizziQ Web reconnait un ensemble standardisé de légendes associées à des grandeurs physiques mesurées par des capteurs. Chaque légende correspond à une abréviation précise et à une unité physique associée. Voici les principales légendes reconnues pour débuter.
- tem : Température (°C) - Mesure la température ambiante ou celle d’un objet à l’aide d’un thermomètre ou d’une sonde thermique.
tem : Température (°C) - Mesure la température ambiante ou celle d’un objet à l’aide d’un thermomètre ou d’une sonde thermique.
- pre : Pression atmosphérique (hPa) - Mesure la pression de l’air, généralement à l’aide d’un capteur barométrique.
pre : Pression atmosphérique (hPa) - Mesure la pression de l’air, généralement à l’aide d’un capteur barométrique.
- hum : Humidité relative (%) - Mesure la quantité de vapeur d’eau présente dans l’air.
hum : Humidité relative (%) - Mesure la quantité de vapeur d’eau présente dans l’air.
- lum : Luminosité (lux) - Mesure l’intensité lumineuse reçue par un capteur optique.
lum : Luminosité (lux) - Mesure l’intensité lumineuse reçue par un capteur optique.
- acc : Accélération (m/s2) - Mesure l’accélération d’un objet dans l’espace sur un ou plusieurs axes.
acc : Accélération (m/s2) - Mesure l’accélération d’un objet dans l’espace sur un ou plusieurs axes.
- dis : Distance (mm) - Mesure la distance entre le capteur et un obstacle à l’aide d’ultrasons, infrarouge ou laser.
dis : Distance (mm) - Mesure la distance entre le capteur et un obstacle à l’aide d’ultrasons, infrarouge ou laser.
- son : Température d’une sonde (°C) - Mesure la température à l’aide d’une sonde externe.
son : Température d’une sonde (°C) - Mesure la température à l’aide d’une sonde externe.
- co2 : Dioxyde de carbone (ppm) - Mesure la concentration de dioxyde de carbone dans l’air.
co2 : Dioxyde de carbone (ppm) - Mesure la concentration de dioxyde de carbone dans l’air.
- o2 : Oxygène (%) - Mesure la concentration d’oxygène dans l’air.
o2 : Oxygène (%) - Mesure la concentration d’oxygène dans l’air.
- ph : pH (sans unité) - Mesure l’acidité ou l’alcalinité d’une solution.
ph : pH (sans unité) - Mesure l’acidité ou l’alcalinité d’une solution.
- uv : Indice ultraviolet (UV) - Mesure l’intensité du rayonnement ultraviolet.
uv : Indice ultraviolet (UV) - Mesure l’intensité du rayonnement ultraviolet.
- tvo : Composés organiques volatils totaux (ppb) - Mesure la concentration de composés organiques volatils présents dans l’air.
tvo : Composés organiques volatils totaux (ppb) - Mesure la concentration de composés organiques volatils présents dans l’air.
- inf : Température infrarouge (°C) - Mesure la température d’un objet à distance sans contact.
inf : Température infrarouge (°C) - Mesure la température d’un objet à distance sans contact.
- wei : Masse ou poids (kg) - Mesure la masse à l’aide d’un capteur de pesée.
wei : Masse ou poids (kg) - Mesure la masse à l’aide d’un capteur de pesée.
- ten : Tension électrique (V) - Mesure une tension électrique continue.
ten : Tension électrique (V) - Mesure une tension électrique continue.
- int : Intensité électrique (A) - Mesure le courant électrique circulant dans un circuit.
int : Intensité électrique (A) - Mesure le courant électrique circulant dans un circuit.
- bou : Direction du compas (deg) - Mesure l’orientation magnétique en degrés.
bou : Direction du compas (deg) - Mesure l’orientation magnétique en degrés.
- mag : Champ magnétique (mT) - Mesure l’intensité du champ magnétique.
mag : Champ magnétique (mT) - Mesure l’intensité du champ magnétique.
- pou : Pouls (bpm) - Mesure la fréquence cardiaque en battements par minute.
pou : Pouls (bpm) - Mesure la fréquence cardiaque en battements par minute.
- rot : Rotation (rpm) - Mesure une vitesse de rotation.
rot : Rotation (rpm) - Mesure une vitesse de rotation.
- niv : Niveau sonore (dB) - Mesure l’intensité du son dans l’environnement.
niv : Niveau sonore (dB) - Mesure l’intensité du son dans l’environnement.
- pm2 : Particules fines PM2.5 (µg/m3) - Mesure la concentration de particules fines en suspension dans l’air.
pm2 : Particules fines PM2.5 (µg/m3) - Mesure la concentration de particules fines en suspension dans l’air.
- vac : Tension alternative (V) - Mesure une tension électrique alternative.
vac : Tension alternative (V) - Mesure une tension électrique alternative.
- cv : Conductivité électrique (mS/cm) - Mesure la capacité d’un liquide à conduire le courant électrique.
cv : Conductivité électrique (mS/cm) - Mesure la capacité d’un liquide à conduire le courant électrique.
- cp : Capacité électrique (µA) - Mesure une capacité ou une charge électrique.
cp : Capacité électrique (µA) - Mesure une capacité ou une charge électrique.
- rs : Résistance électrique (µA ou unité dépendante du capteur) - Mesure une résistance électrique.
rs : Résistance électrique (µA ou unité dépendante du capteur) - Mesure une résistance électrique.
- an : Signal analogique (sans unité définie) - Mesure une valeur analogique brute.
an : Signal analogique (sans unité définie) - Mesure une valeur analogique brute.
- wat : Puissance électrique (W) - Mesure une puissance électrique.
wat : Puissance électrique (W) - Mesure une puissance électrique.
- sp : Spectre lumineux (%) - Mesure la distribution spectrale d’une source lumineuse.
sp : Spectre lumineux (%) - Mesure la distribution spectrale d’une source lumineuse.
- red : Canal rouge (sans unité) - Mesure l’intensité lumineuse dans la bande rouge.
red : Canal rouge (sans unité) - Mesure l’intensité lumineuse dans la bande rouge.
- ext : Mesure externe personnalisée - Permet l’ajout d’une donnée spécifique définie par l’utilisateur.
ext : Mesure externe personnalisée - Permet l’ajout d’une donnée spécifique définie par l’utilisateur.
- unk : Mesure inconnue - Utilisée lorsque le type de mesure n’est pas identifié.
unk : Mesure inconnue - Utilisée lorsque le type de mesure n’est pas identifié.
La détection des légendes n’est pas sensible aux majuscules/minuscules :
Par exemple, Tem, tem ou TEM seront reconnus de la même manière.
Utiliser plusieurs canaux
FizziQ Web gère 6 canaux, de 0 à 5. Cela permet de distinguer plusieurs capteurs du même type.
Exemple avec trois capteurs de température
FZ0:tem:25.3FZ1:tem:22.1FZ2:tem:28.5
Dans FizziQ Web, ces trois capteurs seront reconnus comme trois sources distinctes.
Étape 1 : préparer le matériel
Avant de programmer le microcontrôleur :
- branchez le capteur ;
branchez le capteur ;
- vérifiez le câblage ;
vérifiez le câblage ;
- connectez le microcontrôleur à l’ordinateur avec un câble USB de données ;
connectez le microcontrôleur à l’ordinateur avec un câble USB de données ;
- vérifiez que le microcontrôleur est détecté par l’ordinateur.
vérifiez que le microcontrôleur est détecté par l’ordinateur.
Étape 2 : envoyer un premier message de test
Avant d’utiliser un vrai capteur, commencez par envoyer une valeur fixe.
Exemple minimal
Ce premier test permet de vérifier que FizziQ Web reçoit bien un message correctement formaté.
Étape 3 : configurer correctement le port série
Pour une connexion USB stable, utilisez de préférence :
- un baud rate de 115200 ;
un baud rate de 115200 ;
- 8 bits de données ;
8 bits de données ;
- 1 bit d’arrêt ;
1 bit d’arrêt ;
- aucune parité.
aucune parité.
Exemple de configuration
Les lignes commençant par # servent au débogage.
Étape 4 : programmer un Arduino
Exemple simple avec une température
Exemple avec plusieurs capteurs
Étape 5 : programmer un ESP32
L’ESP32 est bien adapté à FizziQ Web en USB car il dispose d’un port série rapide et de nombreuses entrées.
Exemple simple ESP32
Étape 6 : programmer une micro:bit en USB
La micro:bit peut aussi transmettre des mesures simples à FizziQ Web par USB.
Exemple JavaScript MakeCode
Exemple Python micro:bit
Étape 7 : utiliser un vrai capteur
Une fois le premier test validé, remplacez la valeur fixe par une mesure réelle.
Exemple avec DHT22
Exemple avec BMP280
Étape 8 : choisir la bonne fréquence d’envoi
Il ne faut pas envoyer trop vite.
Recommandation
- idéal : 500 à 1000 ms ;
idéal : 500 à 1000 ms ;
- acceptable : 100 à 2000 ms ;
acceptable : 100 à 2000 ms ;
- trop rapide : moins de 100 ms ;
trop rapide : moins de 100 ms ;
- trop lent : plus de 5000 ms.
trop lent : plus de 5000 ms.
Exemple
Étape 9 : vérifier les valeurs avant l’envoi
Avant d’envoyer une mesure, vérifiez qu’elle est plausible.
Exemple
Cette vérification évite d’afficher des valeurs aberrantes dans FizziQ Web.
Bonnes pratiques
Commencer par un seul capteur
Pour un premier test :
- utilisez un seul capteur ;
utilisez un seul capteur ;
- n’envoyez qu’une seule grandeur ;
n’envoyez qu’une seule grandeur ;
- vérifiez d’abord le format du message.
vérifiez d’abord le format du message.
Utiliser des messages courts
Des messages simples sont plus robustes :
- FZ0:tem:25.3
FZ0:tem:25.3
- FZ0:lum:450
FZ0:lum:450
- FZ0:dis:15.2
FZ0:dis:15.2
Tester avec le moniteur série
Avant FizziQ Web :
- ouvrez le moniteur série ;
ouvrez le moniteur série ;
- réglez le débit sur 115200 ;
réglez le débit sur 115200 ;
- vérifiez que chaque ligne est correcte ;
vérifiez que chaque ligne est correcte ;
- vérifiez qu’une nouvelle ligne est bien envoyée à chaque mesure.
vérifiez qu’une nouvelle ligne est bien envoyée à chaque mesure.
Utiliser des messages de débogage
Les lignes commençant par # sont utiles pour suivre le programme.
Exemples :
Résoudre un problème de connexion USB
Aucune donnée n’apparait dans FizziQ Web
Les causes les plus fréquentes sont :
- le format est incorrect ;
le format est incorrect ;
- le préfixe FZ manque ;
le préfixe FZ manque ;
- le baud rate est incorrect ;
le baud rate est incorrect ;
- les données sont envoyées trop vite
les données sont envoyées trop vite
- aucune fin de ligne n’est envoyée.
aucune fin de ligne n’est envoyée.
Pour corriger :
- utilisez Serial.println() ;
utilisez Serial.println() ;
- vérifiez que la ligne commence par FZ0:, FZ1: ou équivalent ;
vérifiez que la ligne commence par FZ0:, FZ1: ou équivalent ;
- testez d’abord avec une valeur fixe ;
testez d’abord avec une valeur fixe ;
- insérer un delai d’au moins 50 ms entre l’envoi des données pour assurer leur traitement;
insérer un delai d’au moins 50 ms entre l’envoi des données pour assurer leur traitement;
- vérifiez le débit 115200.
vérifiez le débit 115200.
Les capteurs sont détectés mais les valeurs sont incohérentes
Les causes les plus fréquentes sont :
- la conversion est fausse ;
la conversion est fausse ;
- le capteur n’est pas calibré ;
le capteur n’est pas calibré ;
- il existe du bruit électrique ;
il existe du bruit électrique ;
- l’alimentation est instable.
l’alimentation est instable.
Pour corriger :
- relisez la documentation du capteur ;
relisez la documentation du capteur ;
- comparez avec une mesure de référence ;
comparez avec une mesure de référence ;
- faites une moyenne sur plusieurs mesures ;
faites une moyenne sur plusieurs mesures ;
- vérifiez le câblage.
vérifiez le câblage.
Certains messages manquent
Les causes les plus fréquentes sont :
- les envois sont trop rapides ;
les envois sont trop rapides ;
- le buffer série se remplit ;
le buffer série se remplit ;
- trop de capteurs sont envoyés en même temps ;
trop de capteurs sont envoyés en même temps ;
- les messages sont trop longs.
les messages sont trop longs.
Pour corriger :
- augmentez l’intervalle d’envoi ;
augmentez l’intervalle d’envoi ;
- envoyez moins de données ;
envoyez moins de données ;
- réduisez la longueur des messages ;
réduisez la longueur des messages ;
- insérer un delai entre l’envoi des données pour assurer leur traitement;
insérer un delai entre l’envoi des données pour assurer leur traitement;
- testez chaque capteur séparément.
testez chaque capteur séparément.
Le port USB ne s’ouvre pas
Les causes les plus fréquentes sont :
- un autre logiciel utilise déjà le port ;
un autre logiciel utilise déjà le port ;
- le câble USB ne transmet pas les données ;
le câble USB ne transmet pas les données ;
- le port sélectionné n’est pas le bon ;
le port sélectionné n’est pas le bon ;
- le pilote n’est pas installé.
le pilote n’est pas installé.
Pour corriger :
- fermez le moniteur série de l’Arduino IDE ;
fermez le moniteur série de l’Arduino IDE ;
- changez de câble USB ;
changez de câble USB ;
- essayez un autre port USB ;
essayez un autre port USB ;
- vérifiez que le microcontrôleur est bien détecté par l’ordinateur.
vérifiez que le microcontrôleur est bien détecté par l’ordinateur.
Le microcontrôleur redémarre
Les causes les plus fréquentes sont :
- une alimentation insuffisante ;
une alimentation insuffisante ;
- un court-circuit ;
un court-circuit ;
- une surcharge mémoire ;
une surcharge mémoire ;
- une boucle trop lourde.
une boucle trop lourde.
Pour corriger :
- vérifiez l’alimentation ;
vérifiez l’alimentation ;
- simplifiez le programme ;
simplifiez le programme ;
- testez un capteur à la fois ;
testez un capteur à la fois ;
- vérifiez le montage.
vérifiez le montage.
Exemple d’activité en classe
Vous pouvez réaliser une petite station météo avec :
- un microcontrôleur ;
un microcontrôleur ;
- un capteur de température ;
un capteur de température ;
- un capteur d’humidité ;
un capteur d’humidité ;
- un capteur de lumière.
un capteur de lumière.
Le programme envoie par exemple :
FZ0:tem:23.4FZ0:hum:58.1FZ0:lum:420
Dans FizziQ Web, les élèves peuvent ensuite :
- visualiser les mesures ;
visualiser les mesures ;
- enregistrer les données ;
enregistrer les données ;
- tracer un graphique ;
tracer un graphique ;
- comparer plusieurs situations expérimentales.
comparer plusieurs situations expérimentales.
Ce que vous avez appris
Vous savez maintenant :
- utiliser le format USB reconnu par FizziQ Web ;
utiliser le format USB reconnu par FizziQ Web ;
- programmer un microcontrôleur pour envoyer des mesures ;
programmer un microcontrôleur pour envoyer des mesures ;
- utiliser des légendes correctes ;
utiliser des légendes correctes ;
- envoyer plusieurs capteurs sur plusieurs canaux ;
envoyer plusieurs capteurs sur plusieurs canaux ;
- régler la fréquence d’envoi ;
régler la fréquence d’envoi ;
- corriger les erreurs les plus courantes.
corriger les erreurs les plus courantes.
FAQ
Quel format faut-il utiliser en USB ?
Il faut utiliser le format :
FZ[CANAL]:[LEGENDE]:[VALEUR]
Exemple :
FZ0:tem:25.3
Combien de canaux sont disponibles ?
FizziQ Web gère 6 canaux, de 0 à 5.
Faut-il une bibliothèque spéciale pour envoyer les données ?
Non. Pour l’envoi simple, aucune bibliothèque particulière n’est nécessaire. Les bibliothèques servent surtout à lire certains capteurs.
Quelle fréquence d’envoi choisir ?
Pour la plupart des usages en classe, 500 à 1000 ms est une très bonne valeur.
Comment vérifier que le programme fonctionne ?
Commencez par le moniteur série et vérifiez que les lignes envoyées respectent exactement le format attendu.
Peut-on envoyer plusieurs capteurs ?
Oui. Il suffit d’envoyer plusieurs lignes, avec la même légende ou des légendes différentes, et d’utiliser les canaux si nécessaire.
Voir aussi
- Connecter FizziQ Connect à FizziQ Web
Connecter FizziQ Connect à FizziQ Web
- Utiliser des capteurs externes dans FizziQ Web
Utiliser des capteurs externes dans FizziQ Web
- Créer un tableau de données dans FizziQ Web
Créer un tableau de données dans FizziQ Web
- Tracer un graphique dans FizziQ Web
Tracer un graphique dans FizziQ Web
- Enregistrer des mesures dans le cahier d’expérience
Enregistrer des mesures dans le cahier d’expérience