C'est un “truc” qui va transformer une grandeur physique (lumière, chaleur, humidité, taux de tel ou tel composant chimique, pression acoustique, champ électromagnétique, …) en une valeur électrique qui pourra ensuite être “numérisée”.
Il existe tout un florilège de capteurs, du très simple, par exemple une résistance électrique qui varie en fonction de la lumière, à des capteurs très élaborés comme un compteur de particules pour la pollution liée au diesel qui va utiliser un rayon laser et de l'électronique pour estimer ce nombre de particules fines dans l'air.
Exemples de capteurs prêts à être greffé à une carte Arduino
Donc si un capteur nous renvoie une valeur électrique et que l'on veut pouvoir traiter cette valeur avec du code informatique, il va falloir la transformer en 0 et en 1. Cette opération s'appelle la discrétisation du signal (Cf Claude Shannon et la théorie de l'information et cette opération est réalisée par un ADC Analogic to Digital Converter. Un exemple de ADC est une carte son d'ordi qui va convertir une belle onde sonore continue en suite de 0 et de 1 (pour le CD : 44100 points d'information par seconde).
Ici on voit en gros plan un fichier audio dans Audacity, les points sur la courbe correspondent aux endroits du signal qui sont convertis en 0 1.
Un microcontrôleur est une carte électronique qui va permettre de faire l'interface entre le monde physique et le monde des 0 et 1. Un des plus utilisés aujourd'hui dans le monde créatif & Fablab est la carte Arduino
Sortie en 2005 comme un modeste outil pour les étudiants de Massimo Banzi, son créateur, à l’Interaction Design Institute Ivrea (IDII) en Italir, Arduino a initié une révolution DIY dans l’électronique à l’échelle mondiale.
Grossièrement, cette carte se branche en USB à un ordinateur, on va pouvoir installer un IDE, un environnement de programmation de la carte pour pouvoir lui injecter un programme. On peut y brancher capteurs et actionneurs (pour piloter un moteur, un relais électrique, …) et lui conférer un comportement autonome en la débranchant de l'ordi ou au contraire récupérer ses valeurs et lui en envoyer via une diversité de programmes informatiques depuis l'ordi (Processing, Pure Data, …).
On peut aussi greffer à la carte arduino des “shields”, des composants supplémentaires comme des briques de lego afin de lui conférer des fonctions supplémentaires (comme un Shield GSM qui va permettre à l'arduino d'envoyer ses valeurs via le réseau téléphonique GSM).
Une jolie pile de “shields”
Acquérir l'intuition nécessaire pour comprendre et manipuler des capteurs. Nous abordons les thèmes suivants :
Une LED a un sens : pour qu'elle puisse laisser passer le courant électrique et éclairer, il faut relier sa cathode “vers la masse” du circuit. On peut distinguer la cathode de la LED car elle a généralement à une pate plus courte, et surtout, le boitier est toujours aplatie du coté de la cathode.
Pour utiliser les ordinateurs portables de la labomedia, veuillez vous référer à la page dédiée à l'utilisation des ordinateurs portables de la labomedia .
Ce croquis fait clignoter la LED embarqué sur l'Arduino. Il utilise un port de sortie spécial de l'Arduino qui dispose d'une LED interne cablé sur ce port (le port digital 13 aussi appelé D13).
Objectif de l'exercice :
Si la LED clignote déjà alors vous pouvez :
Instructions découverte pour aller plus loin :
Ce croquis fait varier la luminosité d'une LED. Il utilise un port de sortie analogique de type PWM. Il faut utiliser la “breadboard” pour câbler une LED sur un port de sortie compatible PWM.
Objectif de l'exercice :
Instructions découverte pour aller plus loin :
Ce croquis lit la valeur du signal choisi par le potentiomètre et affiche cette valeur dans la console série de l'Arduino.
Objectif de l'exercice :
Instructions découverte pour aller plus loin :
Ce croquis permet de tester le capteur de température DHT11 ou DHT22. Ce capteur est plus sophistiqué : il retourne 2 informations : la température et l'humidité, et émet ces valeurs avec des signaux numériques.
Le code arduino de l'exercice est disponible ici. Vous trouverez les bibliothèques nécéssaires au code dans l'archive téléchargeable ici.
Objectif de l'exercice :
Instructions découverte pour aller plus loin :
Une partie théorique pour exposer les concepts (mais pas trop)
https://semestriel.framapad.org/p/d8KENCbxsva?lang=fr
* : Le texte qui suit ces 2 caractères sont des commentaires qui ne sont pas exécutés. Il permettent d'expliquer et de clarifier le code. * void setup() : Fonction d'initialisation de l'Arduino exécuté une seule fois au démarrage. * void loop() : Fonction principale appelée en boucle après la fonction setup(). * INPUT : La “direction ENTREE” * OUTPUT : La “direction SORTIE” * LOW: niveau logique BAS (0) * HIGH : niveau logique HAUT (1) * pinMode(port, direction) : Assigne une direction (ENTREE ou SORTIE) sur un port de l'Arduino. * digitalWrite(port, niveau_logique) : Affecte un niveau logique (HAUT ou BAS) sur un port numérique configuré en SORTIE. * analogWrite(port, valeur) : Affecte une valeur “analogique” sur un port analogique configuré en SORTIE. * analogRead(port) * delay(temps_en_ms) : * int variable1 : Déclare une variable nommée “variable1” de type entière. * float variable2 : Déclare une variable nommée “variable1” de type floatante (rationnelle). * const : Déclare une constante dont le programme ne pourra jamais changer la valeur. * if (condition) : Test une condition, et exécute le bloc de code en { } si la condition est vraie. * condition1 || condition2 : Opère un OU logique entre la condition1 et la condition2. * Serial, Serial.begin, Serial.print, Serial.println : Bibliothèque pour manipuler le port Serie de l'Arduino et y afficher des messages. * map(valeur, entrée_min, entrée_max, sortie_min, sortie_max) : Adapte la valeur située dans une plage d'entrée encadré par entrée_min et entrée_max, vers une plage de sortie encadrée par sortie_min et sortie_max.