Page ressource des SITA Capteurs

Qu'est-ce qu'un capteur ?

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

Qu'est-ce que "numériser" ?

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.

Qu'est-ce qu'un microcontrôleur Arduino ?

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”

Histoire de l'Arduino (à consulter pendant les soirées d'hiver)

Objectifs

Acquérir l'intuition nécessaire pour comprendre et manipuler des capteurs. Nous abordons les thèmes suivants :

  • Capteurs
  • Signaux
  • Arduino
  • Programmation / Code

Ateliers / Exercices

Rappels

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 applatie du coté de la cathode.

Pour utiliser les ordinateurs portables de la labomedia, veuillez vous referer à 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 :

  • Premier code Arduino et maniment des fonctions setup(), loop()
  • Première déclaration de variable (une constante)
  • Première déclaration d'entré/sortie d'un port
  • Première utilisation d'un port de sortie logique (ou numérique ou digital) avec la fonction digitalWrite()
  • Première utilisation d'une temporisation avec la fonction delay()


Si la LED clignote déjà alors vous pouvez :

  1. Modifier le code avec pour objectif que la LED ne clignote plus
  2. Téleverser ce code
  3. Vérifier que la LED ne clignote plus
  4. Modifier le code pour que la LED clignote de nouveau
  5. Téleverser ce code
  6. Vérifier que la LED clignote


Découvrerte :

  1. Faites varier la fréquence de clignotement de la LED
  2. Imaginez des schéma de clignotement différent (exemple: alterner des clignotements rapides et lents pour signaler du code morse), faites varier le code et constatez si le montage réagit comme vous l'attendiez.

02_Fade

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 cabler une LED sur un port de sortie compatible PWM.



Objectif de l'exercice :

  • Premier montage des composants sur une “breadboard”
  • Première utilisation de la sortie analogique “PWM” avec la fonction analogWrite()


Découverte :

  1. Changez l'amplitude de la plage des valeurs de sortie possible pour diminuer l'amplitude de changement de luminosité

03_AnalogInOutSerial

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 :

  • Première utilisation de la lecture d'un signal analogique avec analogRead()
  • Première utilisation du port série de l'Arduino
  • Première utilisation de la fonction map() pour adapter une plage d'entrée à une plage de sortie différente


Découverte :

  1. Modifiez le montage en ajoutant une LDR entre le port A0 et l'alimentation +5V (entre le fil rouge et le fil bleu sur le schéma). Constater que l'on peut faire le lien entre la luminosité capté par la LDR et la valeur indiqué dans la console. Notez les valeurs extremes que vous constatez dans la console lorsque la luminosité est maximale et minimale
  2. Faites varier le réglage du potentiometre et constater que cela change les valeurs extremes que vous avez noté précédement.
  3. Modifiez le code pour allumer la LED uniquement lorsque la luminosité est faible.

04_DHTTester

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 émmet 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 :

  • Manipuler un capteur différent avec un signal numérique
  • Manipuler une première librairie Arduino


Découverte :

  1. Essayez d'aumenter la température de l'air avec un seche cheveux ou bien un décapeur thermique sans endomager le capteur !

Théorie

Une partie théorique pour exposer les concepts (mais pas trop)

Capteurs / Sensor

  • Grandeurs physiques
  • Mesure
  • Donnée
  • Outils : Instrument de mesure (ex: thermomètre, multimetre)
  • Définition : Un assemblage/dispositif/systeme qui convertit une grandeur physique en une donnée exploitable
  • Caracteristiques: Etendue de mesure, Résolution, Sensibilité, Précision, Rapidité (temps de réponse)

Signaux

  • Exemples : signal lumineux: 1 voyant rouge, signal sonore: 1 bip, 1 signal électrique, 1 image
  • Définition : Un signal est une grandeur variable dans le temps et/ou l'espace.
  • Numérique (Digital) : Réprésente un nombre fini de valeurs. On parle de valeurs discontinus, discrètes. Par exemple les nombre de 0 à 255 soit 1 Octet.
  • Logique : Cas particulier de Numérique avec un alphabet contenant seulement 2 symboles. Vrai/Faux Oui/Non 1/0
  • Analogique : Peut prendre une infinité de valeur. Qui varie de façon continu.
  • Emétteur / Récépteur ⇔ Sortie / Entrée

Arduino

  • Des Entrée / Sortie (Input / Output ou IO) : 2 types d'entrées : Numerique et Analogique. 2 types de sortie : Numerique et Analogique
  • Attention toujours Sortie ⇔ Entrée
  • Port/Patte/Pin : Une seule patte du composant.
  • CAN : un composant qui permet de convertir un signal analogique en signal numérique. résolution 10 bits ⇒ 1024 valeurs possibles (de 0 à 1023); digitalRead();
  • PWM : Sortie Analogique limité. résolution 8 bits ⇒ 256 valeurs possibles (de 0 à 255) ; analogWrite();
  • UI: Console / écran / Led
  • setup() & loop()

Programmation / Code

  • Instruction : Un ordre
  • Mots clés (keywords) : if, then, else ; for ; const ; int ; void ; …
  • Variable : mémoire nommé ; affectation avec le symbole =
  • Fonction : pinMode(), digitalWrite(), delay(), analogWrite(), …
  • Condition : test avec le symbole ==
  • Boucle
  • Commentaires

Retour d'XP

  • Parler d'algorithme et d'algorigramme. Présenter les codes avec des algorigrammes en français.
  • Détailler l'algo qui permet d'allumer la LED avec un seuil sur la LDR.
  • Retirer tous les commentaires anglais y compris l'entête pour reduire la verbosité et ne pas effrayer avec tout ce texte.
  • Terminer l'exo DHT
  • Passer l'Arduino à une version récente pour profiter du lib manager ou bien utiliser platform.io
  • Refaire les images des breadboard au plus juste.
  • Produire un support papier à distribuer. Quoi mettre dedans ? Un support pour l'atelier et un support pour emporter et méditer à la maison ?
  • sita_capteurs.txt
  • Dernière modification: 2019/04/28 14:53
  • par bigMax