Célérité des ultrasons dans l'air (2)

Un exemple d'utilisation de Web Sciences en mode temporel rapide

Le capteur US Grove est relié au pin 4. Cet exemple de mesures temporelles rapides à l'aide de la bibliothèque web_sciences permet de déterminer la célérité des ultrasons dans l'air en traçant l'évolution de l'état du pin 4 en fonction du temps.

Le mode temporel permet de tracer une ou plusieurs grandeurs mesurées par Arduino en fonction du temps.

I. Montage

Matériel nécessaire

  • Une carte Arduino équipée d'un shield Grove.
  • Un capteur à ultrasons Grove.
  • Un valet élévateur.
  • Un écran sur support.
  • Un réglet.

II. Code nécessaire

Script Arduino

Le script :

  • attend l'arrivée de la commande mesure sur la liaison série.
  • réagit en conséquence, c'est à dire effectue une série de mesures de l'état du pin 4 pendant une durée Δt (par exemple 10ms)
  • envoie cette série de mesures sur la liaison série.

Remarque : Dans un soucis de rapidité, ce script a la particularité de stocker la série de mesure en mémoire et d'envoyer ensuite la totalité des données sur la liaison série. Une carte Arduino Uno réalise par exemple 200 points de mesures en 5 millisecondes sans difficulté.

Voir à cet effet les commentaires dans le code source du script capteur_us_tempo.ino.


Code Javascript

Le code javascript:

  • fonctionne en mode temporel :
    mode = "temporel";
  • envoie la commande mesure lorsque l'utilisateur clique sur le bouton mesure:
    commandes = [{texte_bouton:"Mesure", arduino:"mesure"}];
  • attend une série de mesures de l'état du pin 4 en fonction du temps (en mode temporel, le temps est la première série par défaut et ne doit pas être ajouté à la variable series):
    series = [{grandeur: "E", unite: ""}];
    .
  • trace le graphe E = f(t).
    axes = [{grandeur: "Δt", unite: "µs"}, {grandeur: "E", unite: "sans unité"}];

Le code Javascript complet est le suivant :

mode = "temporel";
commandes = [{texte_bouton:"Mesure", arduino:"mesure"}];
series = [{grandeur: "E", unite: ""}];
titre_graphe = "Célérité des ultrasons dans l'air";
axes = [{grandeur: "Δt", unite: "µs"}, {grandeur: "E", unite: "sans unité"}];

Le code complet à insérer dans une cellule Jupyter

from web_sciences import WebSciences
	
my_init = '''
mode = "temporel";
commandes = [{texte_bouton:"Mesure", arduino:"mesure"}];
series = [{grandeur: "E", unite: ""}];
titre_graphe = "Célérité des ultrasons dans l'air";
axes = [{grandeur: "Δt", unite: "µs"}, {grandeur: "E", unite: "sans unité"}];
'''
	
interface = WebSciences(my_init)
interface.affiche()

Exemple d'éxécution


Démo en ligne

  • Télécharger le script capteur_us_tempo.ino en cliquant sur le lien.
  • Téléverser ce script dans la carte à l'aide de l'IDE Arduino.
  • Relier le capteur US Grove au pin 4 de la carte.
  • Cliquer sur le bouton Connexion ci-dessous et sélectionner le port correspondant à la carte.
  • Placer le capteur à une distance d = 50 cm de l'écran par exemple (voir image ci-dessus).
  • Cliquer sur le bouton mesure. La carte effectue une série de 200 points de mesures de l'état du pin 4 en une durée de 5 millisecondes (ces valeurs peuvent être modifiées dans le script Arduino). L'ensemble des couples (t, E) est transmis par la liaison série.
  • Le script affiche le graphe E = f(t).
  • Cliquer sur le bouton Copie presse papier pour récupérer les données dans le presse papier. Dans cet exemple, les données sont formatées sous forme de tableaux python. Il est cependant possible d'obtenir un formatage compatible avec un tableur comme Régressi ou Excel en cochant la case ci-dessous.
tableur = false;

Le traitement des données permet de tracer le graphe E = f(t) dont l'exploitation permet de déterminer la célérité des ultrasons dans l'air (voir le notebook ci-dessous).

Liens

 

k