Physique & Chimie au lycée

Cours de physique-chimie pour les classes de 1ère et Terminale

Sommaire
SP-1 ES-1
SP-T ES-T
3e SNT
Divers Annales
Contact

Arduino

Vous trouverez dans cette rubrique quelques tutos sur l’usage de l’Arduino dans le cadre de la SPC.

Quelques liens utiles

Arduino.cc (site officiel)
Capteurs Grove
Excellent tuto progressif

Présentation de l’Arduino Uno

Arduino est la marque d'une plateforme de prototypage open-source, basée sur une interface entrée/sortie simple, qui permet aux utilisateurs de créer des objets électroniques interactifs à partir de cartes électroniques matériellement libres sur lesquelles se trouve un microcontrôleur.

Le microcontrôleur peut être programmé pour analyser et produire des signaux électriques, de manière à effectuer des tâches très diverses comme la domotique (éclairage, chauffage…), le pilotage d'un robot, de l'informatique embarquée, etc.

Schéma d’une carte Arduino

A : Broches d’entrée/sortie numériques 1 ou 0 ; elles offrent en sortie du 0 ou du 5 V et acceptent en entrée du 0 ou du 5 V sur le même principe.

B : Broches d’entrées analogiques, valeur entre 0 V et 5 V

C : Broches d’alimentation

La connectique Groove

Grove est un système de connectique adapté à l’Arduino. Son rôle est de rendre les connexions plus faciles à réaliser.

Il y a d’abord une plaque appelée Base Shield fixée sur l’Arduino.

Grove Base Shield

Cette plaque est pourvue de connecteurs standardisés permettant de brancher facilement des périphériques à l’Arduino

Schéma du Base Shield

En rouge, les entrées/sorties digitales.
En jaune, les entrées analogiques
En vert, les ports I2C permettant le transfert de données (on ne s’en servira pas, les données seront transférées à l’ordinateur par le câble USB).

Programmer l’Arduino

Pour pouvoir faire quelque chose avec un Arduino, il faut le programmer.
Cette programmation se fait dans un environnement de programmation spécifique que vous pouvez télécharger sur cette page.

Un programme d’Arduino présente toujours la structure ci-dessous.


	
		void setup() {
		  // code à exécuter une seule fois au démarrage
		}

		void loop() {
		  // code principal à exécuter en boucle
		}
	
	
1er programme : contrôle de la LED interne

L’Arduino UNO est pourvu d’une petite diode orange associé au port digital n°13.
Nous allons écrire un programme qui permet de faire clignoter cette LED.


		
			void setup() {
			pinMode(13, OUTPUT);
			}

			void loop() {
				digitalWrite(13, HIGH);
				delay(500);
				digitalWrite(13, LOW);
				delay(500);
			}
		
		
Quelques explications

Ligne 2 : on déclare le port (pin) n°13 en mode sortie. Ceci fait partie de la phase d’initialisation (setup). On le fait une fois pour toute et c’est fini, jusqu’à exctinction (ou au reset) de l’Arduino.

Ligne 5 : à partir d’ici, on écrit la boucle qui sera répétée par l’Arduino jusqu’à son extinction ou sa remise à zéro.

Ligne 6 : digitalWrite est le nom de la fonction qui sert à envoyer une valeur à un port digital. Il ne peut y avoir que deux valeurs : HIGH (+5 V) et LOW (0 V).Cette ligne sert donc à faire passer le potentiel de la borne 13 à 5 V (par rapport aux bornes GND de l’Arduino, qui sont toutes au potentiel 0).

Ligne 7 : on fait faire une pause de 500 ms dans le déroulement du programme.

Je vous laisse deviner ce que signifient les deux lignes suivantes 😊

Activité

  • Connectez l’Arduino au PC ouvrez l’environnement de développement.
  • Copiez ce programme dans l’environnement de développement Arduino.
  • Sauvez ce programme sur le bureau du PC, vérifiez l’absence d’erreur et up-loader le programme dans l’Arduino
  • Vérifiez son bon fonctionnement.
  • Modifiez ce programme pour que la LED clignote deux fois brièvement et rapidement, puis fasse une pause de 1 seconde.
Bouton Vérification
Bouton Upload

Je vous le concède, l’intérêt de ce programme est très limité… 😊
Sa seule utilité est de vous faire saisir les bases de la programmation d’un Arduino dans un cas très simple.

2e programme : utiliser un capteur

L’intérêt d’un Arduino est qu’il puisse « réagir » à son environnement ou à une commande extérieur.

Dans cette deuxième partie, nous allons programmer l’Arduino pour qu’il mesure le niveau de lumière capter par un senseur : le Light Sensor.

Sachez tout d’abord que les capteurs Grove sont décrits sur ce site. Leur description comprend un code de base qui permet de les faire marcher (et qu’on va adapter à nos besoins).


			void setup()
			{
				// Initialisation communication, vitesse 9600 bauds (bit/s)
				Serial.begin(9600);
			}
			
			void loop()
			{
				// la valeur donnée par le capteur (branché sur A0)
				// est stockée dans la variable "value" (nbre entier)
				int value = analogRead(A0);
				
				// Cette valeur est envoyée sur le port de communication
				Serial.println(value);
				
				// Le programme se met en pause pendant 1 s
				delay(1000);
			}
		

Remarquez que, dans ce programme, j’ai mis des commentaires (précédés de //). Un commentaire est une information que l’on met dans un code mais qui n’est pas interprétée. Ça permet, lorsque le code est assez long, d’ajouter des explications. Ils peuvent être effacés ou modifiés sans incidence sur le déroulement du programme.

On accède à ce qu’envoie l’Arduino sur le port de communication en allant dans Outils > Moniteur série

Activité

  • Brancher le capteur de lumière dans le port A0 (ou dans un autre port A… mais pensez alors à adapter le programme)
  • Uploader le programme dans l’Arduino
  • Afficher les valeurs lues par l’Arduino

1. Quelles valeurs correspondent à une exposition à la lumière ambiante ?

2. Quelles sont les valeurs mesurées lorsque vous recouvrez le capteur avec votre main ?

Et voilà ! Vous savez maintenant utiliser un capteur sur l’Arduino 😊

3e programme : faire réagir l’Arduino à son environnement

Faire une mesure, c’est bien, mais faire réagir l’Arduino en fonction de cette mesure, c’est mieux !

Je vous propose dans cette partie de faire réagir l’Arduino à la lumière ambiante. Celui-ci va allumer sa LED interne s’il est plongé dans l’obscurité.

Voici le code… à compléter 😊


			void setup()
			{
				// Pas besoin de communiquer les mesures
				pinMode(13, OUTPUT);
			}
			
			void loop()
			{
				int value = analogRead(A0);
				if(value < ___){
					// À compléter
				}
				
				else {
					// À compléter
				}
				
				delay(500);
			}
		

Activité

  • Compléter le programme et l’uploader dans l’Arduino
  • Brancher le capteur de lumière si ce n’est pas encore fait
  • Vérifier son bon fonctionnement
  • Modifier le code pour le rendre plus sensible à la baisse de luminosité (la LED devra s’allumer si la lumière baisse « un peu »)

Vous avez maintenant toutes les bases. On peut passer aux choses sérieuses… 😊

Apprenez à être autonome

Il est l’heure pour vous d’apprendre à être autonome. 😎

Réalisation d’un avertisseur de température excessive

La boîte dont vous disposez contient un capteur de température et un buzzer. En vous aidant du site décrivant les capteurs Grove (voir liste de sites utiles en début de page), vous allez réalisez un montage qui émet deux bips brefs lorsque vous touchez le capteur de température.

Remarque : vous devez d’abord déterminer quelle est la température mesurée lorsque vous toucher le capteur de température.

Activité notée : mesure de distance

L’objectif de cette activité est d’estimer la précision de la mesure de distance du capteur Ultrasonic ranger

Étapes

  • Suivre les instructions du site Seeedstudio (dont le lien est en haut de la page) pour obtenir des mesures de distance grâce au capteur. Appelez-moi si vous avez des difficultés à installer la librairie associée à l’Ultrasonic ranger.
  • Modifier le code de manière à ce que seule la distance en cm s’affiche dans le moniteur série.
  • Tracer un graphique montrant la distance mesurée en fonction de la distance réelle, sur des distances variant entre 20 cm et 100 cm (5 ou 6 mesures bien réparties suffisent). Faites des mesures de distance entre le capteur et un grand obstacle, l’environnement alentour doit être bien dégagé (donc orientez le capteur vers le mur, par exemple).
  • Estimer la précision de la mesure de distance (± combien de cm ?)
Astuce : vous pouvez copier des valeurs du moniteur série si vous arrêtez son défilement. Vous pouvez ensuite les coller dans le programme que vous voulez, notamment un tableur…