Arduinochart

Initiation mains sur les touches http://recit.org/ul/phu 

Version 11 mai 2016

La présente formation a pour but d’initier à l’utilisation de la carte Arduino UNO dans un contexte de robotique en classe. La programmation (traitement des entrées et des sorties) se fait avec Blockly@rduino pour débuter.

Pourquoi Arduino?capot_ferme.resized.png

L’ouverture du système, la simplicité et la souplesse (plusieurs types de projets), les faibles coûts, la documentation disponible, sont quelques aspects en faveur de cette technologie.

Une caricature

Au programme

Plus ou moins au programme

Différence de potentiel, circuit série, circuit parallèle, circuit mixte, résistance, etc.

Lire des % sur un écran. Ajuster la vitesse de rotation d’un moteur avec un curseur.

Vitesse du son, distance, temps. V = d/t

Faire calculer la distance par programmation lorsqu’on a le temps du trajet.

Lire une mesure de distance sur un écran.

Construire et utiliser (programmer) un circuit qui permet de mesurer la quantité de courant qui passe dans un milieu électrolyte.

Lire une mesure d’humidité du sol sur un écran.

Monter un circuit, tenant compte du sens du courant, qui permet de faire tourner un moteur dans un sens précis. Contrôler le sens par des moyens physiques (changer le circuit) ou par programmation.

Connecter un moteur à l’aide de fiche (type téléphone) et le faire tourner avec une case à cocher.

Utiliser la science et technologie pour construire (démarche technologique), programmer (structurer sa pensée + résoudre de «vrais» problèmes), améliorer des robots.

Utiliser des robots (qui utilisent de la science et technologie) qui ont été construits par d’autres.

Note : voir ces extraits du PFEQ pour quelques liens : Cycle 1 et cycle 2 au secondaire.


Défi 0 : Avant de débuter

Pour pouvoir communiquer avec la carte Arduino, nous devons installer le logiciel de base sur notre ordinateur.

Si vous utilisez Firefox (version récente), vous pouvez installer l’extension CodeBender pour pouvoir téléverser directement le code de Blockly@rduino vers la carte. Ceci simplifie quelque peu la tâche de programmation de notre robot.chart

L’aide mémoire publié sur cette page http://recit.org/ul/pht pourra vous aider tout au long de la formation.

Défi 1 : Petit circuit

Défi : On allume une DEL avec bouton poussoir (interrupteur)

But : Appropriation du matériel (alimentation).

Comme première tâche à réaliser avec le matériel Arduino, nous vous proposons de réaliser ce petit circuit (garder ce montage pour le prochain défi). La résistance de 220 Ω sert ici à ne pas envoyer trop de courant dans la DEL.

[ATTENTION : la broche la plus longue de la DEL est l'anode, donc elle doit être connectée sur la borne positive de notre circuit. Voir image sur l’aide-mémoire.]


Montage

aquops_premier_circuit

Note : On utilise ici le courant (une différence de potentiel de 5V) fourni par le port USB (on doit donc connecter le fil USB de l’ordinateur à la carte Arduino) de l’ordinateur pour alimenter notre circuit.

Schéma électrique

aquops_premier_circuit_schema.png

 

Défi 2 : Premier programme

Défi : Lire et afficher la valeur (ON ou OFF) du bouton poussoir (montage du défi 1)

But : Appropriation des entrées et de la programmation.

Le présent défi est une suite du montage réalisé dans le défi précédent. Mais cette fois nous allons prendre une mesure dans le circuit et programmer Arduino pour afficher cette mesure.

Montage

valeur_bouton


Schéma électrique

schema_lire_bouton.png

 

Maintenant que le montage est fait, nous devons programmer Arduino. Comme plus haut, nous vous suggérons Blockly@rduino pour ce faire.

Le programme doit lire la valeur de la broche numérique 2 (celle connectée à la sortie de l’interrupteur) puis l’envoyer vers le moniteur série.

Note : Le moniteur série est une fenêtre vers laquelle le programme peut envoyer de l’information. Ce moniteur série se trouve tant dans Blockly@rduino (nommé Console série dans le menu de gauche) que dans l’IDE d’Arduino (la loupe en haut à droite du logiciel).

Le programme (blocs) ressemblera donc à ceci :

defi3.pngchart

La vidéo suivante explique la procédure pour créer et tester le programme : http://recit.org/ul/php chart

Voir le montage et le programme dans le simulateur 123DCircuits.io : http://recit.org/ul/phq 

Un peu de théorie à propos de la programmation Arduino

Le code Arduino d’origine est en mode texte. Voici à quoi ressemble le code (commenté) pour le présent défi :

void setup() //c'est ici qu'on initialise le programme. Cette boucle roule 1 fois
{
 pinMode(2, INPUT);//On signifie que la broche 2 est en entrée
 Serial.begin(9600);//On démarre la communication avec le port série
} //les parenthèses servent à ouvrir et fermer des boucles

void loop()//c'est la boucle qui roule toujours
{
 Serial.print("État du bouton =");//On écrit du texte dans le moniteur série
 Serial.println(digitalRead(2));//ON écrit ensuite la valeur de la broche 2. Le «println» saute de ligne.

delay(1000);//on fait attendre 1 s (1000 ms) avant la prochaine boucle(loop).
}

N’ayez pas peur d’éditer le programme en mode texte, ça peut quelquefois être plus simple que les blocs de Blockly@rduino!


Défi 3 : Construire sa sonde d’humidité du sol

Une sonde n’est qu’un circuit qui laisse passer du courant selon le capteur utilisé (son, température, champ magnétique, etc.).

Pour avoir une idée de l’humidité du sol (pot de fleur par exemple), on peut utiliser tout simplement la propriété électrolytique d’une solution (ici eau + terre). Si le sol est sec, le courant passera moins bien que si le sol est humide.

Inspiration : chart

Note : Ce petit projet http://recit.org/ul/phr (capteur d’humidité du sol) offre de belles possibilités pour débuter avec Arduino, car la création (compréhension) du capteur avec des clous (univers technologique) et la saisie de données font un très bon tour d’horizon de la robotique Arduino.

Voici un montage pour mesurer cette conductibilité :

Capteur humidité - clous.png

À noter que nous utilisons ici 2 clous (galvaniser de préférence pour éviter une oxydation trop rapide), séparer d’environ 2 cm par un matériau isolant, sur lesquels nous avons ajouté un isolant afin d’aller prendre la mesure à une certaine profondeur dans la terre (l’humidité du sol varie en fonction de la profondeur). Voici une photo de notre sonde (au lieu du ruban, utiliser du silicone comme isolant pour une sonde plus durable) :

sonde_hum.png

Le code pour lire la valeur prise à la broche A0 et l’envoyer dans le port série est le suivant :

humidite_sol.png

void setup()
{
 Serial.begin(9600);
 pinMode(A0, INPUT);
}
void loop()
{
 Serial.print("Valeur humidité : ");
 Serial.println(analogRead(A0));
}

Le traitement de cette donnée (que nous aurons à «calibrer» pour trouver les valeurs «trop sec» et «adéquat») peut se faire de différente façon, mais dans l’exemple ci-dessous nous allumons une DEL de couleur différente selon le taux d’humidité du sol. On peut facilement modifier le tout pour faire démarrer une pompe à une valeur précise (voir ce défi http://recit.org/ul/phs).chart


 Montage

montage_sonde_humidite.png

Schéma électrique

schema_sonde_humidite.png


Programmationchart

Fichier XML (à importer dans Blockly@rduino) et adresse de l’image ci-dessous (pour zoomer). 

sonde_humidite_sol_del.png

Le code Arduino :

{
 Serial.begin(9600);
 pinMode(A0, INPUT);
 pinMode(7, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(5, OUTPUT);
}
void loop()
{
 Serial.print("Humidité : ");
 Serial.println(analogRead(A0));
 delay(2000);
 if (analogRead(A0) < 500) {
   digitalWrite(7, HIGH);
   digitalWrite(6, LOW);
   digitalWrite(5, LOW);

 } else if (analogRead(A0) >= 500 && analogRead(A0) <= 700) {
   digitalWrite(7, LOW);
   digitalWrite(6, HIGH);
   digitalWrite(5, LOW);
 } else if (analogRead(A0) > 700) {
   digitalWrite(7, LOW);
   digitalWrite(6, LOW);
   digitalWrite(5, HIGH);
 }
}

Défi 4 : Voltmètre de base

Défi : Se créer un petit voltmètre avec la carte Arduino UNO.

But : Appliquer les lois des circuits.

Ce défi n’est pas vraiment relié à la robotique, mais peut être utile pour la classe de science et technologie. Il nous permettra de mesurer la différence de potentiel d’une source de courant continu, et ce tout en comprenant ce qui se passe dans le circuit (U = RI, circuit série, etc.).

En travaillant un peu, on peut trouver la relation suivante pour le circuit ci-dessous.

où Ue est la différence de potentiel à l’entrée du circuit (celle que l’on veut connaître) et Us est la différence de potentiel mesurée par la carte Arduino.

diviseur2.png


Montage 

voltmetre_base2.png

Il ne reste qu’à programmer la carte Arduino pour traiter la valeur d’entrée A0 (qui prend des valeurs entre 0 et 1023, soit de 0 à 5V) pour connaître la différence de potentiel Ue. Voici un exemple de code :

int entree;

float vIn;

float vOut;

void setup() {

  // put your setup code here, to run once:

pinMode(A0,INPUT);

  Serial.begin(9600);

}

void loop() {

  // put your main code here, to run repeatedly:

entree=analogRead(A0);

vOut=(entree * 5.0)/1024.0;

vIn=vOut*5.545454;

Serial.println(vIn);

delay(2000);

}

Suite

chart

Vous avez maintenant les bases pour poursuivre vos apprentissages de la robotique Arduino. L’autoformation Arduino sur notre campus http://campus.recitmst.qc.ca/ vous offre d’autres défis à relever pour ce faire.

Plusieurs projets peuvent être réalisés avec le matériel Arduino, nous en avons documentés quelques-uns sur ce site http://recitmst.qc.ca/arduino/ .

Bonne robotique Arduino!

Pierre Lachance

Service national du RÉCIT

Domaine de la mathématique, de la science et technologie

pierre.lachance@recitmst.qc.ca


Annexe 1

Quelques projets

montage_moteurs.png

bolide_distance1.resized.jpg

IMG_20160408_091607.resized.jpg

donnes_bolide.png

montage_basilic.resized.png

Annexe 2

Des outils et stratégies

Outils/stratégies

Pourquoi?

Où?

Formation «Premiers pas» offerte aux CP

Pour présenter les possibilités d’Arduino pour le secondaire ainsi que la documentation disponible.

Présent document.

Autoformation

Séquence de formation (et documentation) pour supporter les formations dans les milieux.

http://campus.recitmst.qc.ca/course/arduino/ 

ou

http://campus.recit.org/courses/course-v1:RECITMST+arduino101+2016/about

Arduino en classe

Site Web de documentation d’Arduino pour présenter des projets réalisables et d’autres ressources.

http://recitmst.qc.ca/arduino/ 

Blockly@rduino

Outil de programmation en ligne installé sur nos serveurs pour aider à l’appropriation de la programmation.

http://recitmst.qc.ca/blockly@rduino/ 

Bouts de code

Des exemples de codes (blocs vs texte) pour aider à l’appropriation de la programmation en mode texte (où le but est ici de comprendre et ajuster le code, pas nécessairement de le créer de zéro).

http://recit.org/ul/phx

123d.Circuits

Outil en ligne (Autodesk) qui permet de réaliser des montages simples avec Arduino Uno et de les simuler (programmer).

https://123d.circuits.io/ 

Aide-mémoire

Une page synthèse de quelques éléments essentiels d’Arduino.

http://recit.org/ul/phy

Liste de matériel de formation

Pour supporter les milieux dans l’achat de matériel de base pour la formation des enseignants.

http://recit.org/ul/phz

Utilisation de GeoGebraTube

Les données recueillies par les robots Arduino peuvent être traitées et publiées grâce à GeoGebra.

Un exemple : http://recit.org/ul/pi0