Outils pour utilisateurs

Outils du site


sita_capteurs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sita_capteurs [2019/04/27 12:20]
bigMax [Ateliers / Exercices]
sita_capteurs [2020/02/07 11:39] (Version actuelle)
serge ↷ Liens modifiés en raison d'un déplacement.
Ligne 6: Ligne 6:
 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. 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.
  
-{{::​sku_452042_1.jpg?​direct&​700|}}+{{ ::​sku_452042_1.jpg?​direct&​700 |}}
  
 //Exemples de capteurs prêts à être greffé à une carte Arduino// //Exemples de capteurs prêts à être greffé à une carte Arduino//
Ligne 13: Ligne 13:
 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 [[http://​centenaire-shannon.cnrs.fr/​chapter/​la-theorie-de-information|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). 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 [[http://​centenaire-shannon.cnrs.fr/​chapter/​la-theorie-de-information|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).
  
-{{::​audacity-discretisation.png?​direct&​700|}}+{{ ::​audacity-discretisation.png?​direct&​700 |}}
  
 //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.// //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.//
Ligne 22: Ligne 22:
 Un des plus utilisés aujourd'​hui dans le monde créatif & Fablab est la carte [[liens_ressources_tutoriaux_arduino|Arduino]] Un des plus utilisés aujourd'​hui dans le monde créatif & Fablab est la carte [[liens_ressources_tutoriaux_arduino|Arduino]]
  
-{{:​arduino316.jpg?​direct&​700|}}+{{  :​arduino316.jpg?​direct&​700 |}}
  
 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. 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.
Ligne 30: Ligne 30:
 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). 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).
  
-{{::​stacked-shields_large.jpg?​direct&​600|}}+{{  ::​stacked-shields_large.jpg?​direct&​600 |}}
  
 //Une jolie pile de "​shields"//​ //Une jolie pile de "​shields"//​
  
 === Histoire de l'​Arduino (à consulter pendant les soirées d'​hiver)=== === Histoire de l'​Arduino (à consulter pendant les soirées d'​hiver)===
-{{vimeo>​18539129}}+{{ vimeo>​18539129 }}
   * http://​www.framablog.org/​index.php/​post/​2011/​12/​10/​arduino-histoire   * http://​www.framablog.org/​index.php/​post/​2011/​12/​10/​arduino-histoire
  
Ligne 48: Ligne 48:
  
 ==== Ateliers / Exercices ==== ==== Ateliers / Exercices ====
-  * Blink croquis (Sketchbook) 
-  * PWM: Fade croquis 
-  * Potar 1: croquis AnalogInOutSerial 
-  * Potar 2: croquis AnalogInput (sortie sur une LED PWM) 
-  * LDR 1: capteur -> sortie logique LED avec seuil 
-  * LDR 2: capteur -> sortie console 
-  * LDR 3: potar + LDR -> sortie console 
-  * DHT11 ??: 
- 
-Les codes arduino des exercices sont disponibles ici : [[ https://​github.com/​mxbossard/​sita/​tree/​master/​sita_capteurs_1/​croquis_arduino ]] 
  
 === Rappels === === Rappels ===
  
 <WRAP center round important 80%> <WRAP center round important 80%>
-{{ :max:​led.png?​nolink|}}+{{ media_06:​led.png?​nolink|}}
  
-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.+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.
 </​WRAP>​ </​WRAP>​
  
 <WRAP center round info 80%> <WRAP center round info 80%>
-Pour utiliser les ordinateurs portables de la labomedia, veuillez vous referer ​à [[ laptop_labomedia | la page dédiée à l'​utilisation des ordinateurs portables de la labomedia ]].+Pour utiliser les ordinateurs portables de la labomedia, veuillez vous référer ​à [[ laptop_labomedia | la page dédiée à l'​utilisation des ordinateurs portables de la labomedia ]].
 </​WRAP>​ </​WRAP>​
  
 === 01_Blink === === 01_Blink ===
 +<WRAP center round info 80%>
 +[[ https://​raw.githubusercontent.com/​mxbossard/​sita/​master/​sita_capteurs_1/​croquis_arduino/​01_Blink/​01_Blink.ino | Le code arduino de l'​exercice est disponible ici ]]
 +</​WRAP>​
 +
 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). 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 :__ __Objectif de l'​exercice :__
-  * Premier code Arduino et maniment ​des fonctions setup(), loop()+  * Premier code Arduino et maniement ​des fonctions setup(), loop()
   * Première déclaration de variable (une constante)   * Première déclaration de variable (une constante)
   * Première déclaration d'​entré/​sortie d'un port   * Première déclaration d'​entré/​sortie d'un port
Ligne 84: Ligne 78:
 __Si la LED clignote déjà alors vous pouvez :__ __Si la LED clignote déjà alors vous pouvez :__
   - Modifier le code avec pour objectif que la LED ne clignote plus   - Modifier le code avec pour objectif que la LED ne clignote plus
-  - Téleverser ​ce code+  - Téléverser ​ce code
   - Vérifier que la LED ne clignote plus   - Vérifier que la LED ne clignote plus
   - Modifier le code pour que la LED clignote de nouveau   - Modifier le code pour que la LED clignote de nouveau
-  - Téleverser ​ce code+  - Téléverser ​ce code
   - Vérifier que la LED clignote   - Vérifier que la LED clignote
 \\ \\
-__Découvrerte ​:__ +__Instructions découverte pour aller plus loin :__ 
-  - Faites ​varier la fréquence de clignotement de la LED +  - Essayer de modifier le code puis de le téléverser pour faire varier la fréquence ​(vitesse) ​de clignotement de la LED 
-  - 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.+  - Imaginez des schéma de clignotement ​différents ​(exemple: alterner des clignotements rapides et lents pour signaler du code morse), ​puis faites varier le code et constatez si le montage réagit comme vous l'​attendiez.
  
 === 02_Fade === === 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.+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. 
 + 
 +<WRAP center round info 80%> 
 +[[ https://​raw.githubusercontent.com/​mxbossard/​sita/​master/​sita_capteurs_1/​croquis_arduino/​02_Fade/​02_Fade.ino | Le code arduino de l'​exercice est disponible ici ]] 
 +</​WRAP>​ 
 \\ \\ \\ \\
 __Objectif de l'​exercice :__ __Objectif de l'​exercice :__
Ligne 101: Ligne 100:
   * Première utilisation de la sortie analogique "​PWM"​ avec la fonction analogWrite()   * Première utilisation de la sortie analogique "​PWM"​ avec la fonction analogWrite()
  
-{{ :max:​02_fade_layout.png?​direct&​800 |}}+{{ media_06:​02_fade_layout.png?​direct&​800 |}}
  
 \\ \\
-__Découverte ​:__ +__Instructions découverte pour aller plus loin :__ 
-  - Changez ​l'​amplitude ​de la plage des valeurs de sortie possible pour diminuer l'​amplitude de changement de luminosité+  - Essayez de modifier le code puis de le téleverser pour changer ​l'​amplitude ​(la plagedes valeurs de sortie possible pour diminuer l'​amplitude de changement de luminosité
  
 === 03_AnalogInOutSerial === === 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. Ce croquis lit la valeur du signal choisi par le potentiomètre et affiche cette valeur dans la console série de l'​Arduino.
 +
 +<WRAP center round info 80%>
 +[[ https://​raw.githubusercontent.com/​mxbossard/​sita/​master/​sita_capteurs_1/​croquis_arduino/​03_AnalogInOutSerial/​03_AnalogInOutSerial.ino | Le code arduino de l'​exercice est disponible ici ]]
 +</​WRAP>​
 +
 \\ \\ \\ \\
 __Objectif de l'​exercice :__ __Objectif de l'​exercice :__
Ligne 115: Ligne 119:
   * Première utilisation de la fonction map() pour adapter une plage d'​entrée à une plage de sortie différente   * Première utilisation de la fonction map() pour adapter une plage d'​entrée à une plage de sortie différente
  
-{{ :​03_analoginoutserital_layout.png?​direct&​400 |}}+{{ media_02:​03_analoginoutserital_layout.png?​direct&​400 |}}
  
 \\ \\
-__Découverte ​:__ +__Instructions découverte pour aller plus loin :__ 
-  - 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  +  - 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 ​extrêmes ​que vous constatez dans la console lorsque la luminosité est maximale et minimale  
-  - Faites varier le réglage du potentiometre ​et constater que cela change les valeurs ​extremes ​que vous avez noté précédement.+  - Faites varier le réglage du potentiomètre ​et constater que cela change les valeurs ​extrêmes ​que vous avez noté précédemment.
   - Modifiez le code pour allumer la LED uniquement lorsque la luminosité est faible.   - Modifiez le code pour allumer la LED uniquement lorsque la luminosité est faible.
  
 === 04_DHTTester === === 04_DHTTester ===
-{{ :max:04_dhttester.png?​nolink&​800 |}}+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.
  
 +<WRAP center round info 80%>
 +[[ https://​github.com/​mxbossard/​sita/​blob/​master/​sita_capteurs_1/​croquis_arduino/​04_DHTtester/​04_DHTtester.ino | 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 [[ https://​github.com/​mxbossard/​sita/​archive/​master.zip | ici]].
 +</​WRAP>​
 +
 +\\ \\
 +__Objectif de l'​exercice :__
 +  * Manipuler un capteur différent avec un signal numérique
 +  * Manipuler une première librairie Arduino
 +
 +{{ media_06:​04_dhttester.png?​nolink&​800 |}}
 +
 +\\
 +__Instructions découverte pour aller plus loin :__
 +  - Essayez d'​augmenter la température de l'air avec un sèche cheveux ou bien un décapeur thermique sans endommager le capteur !
  
 ==== Théorie ==== ==== Théorie ====
Ligne 162: Ligne 180:
   * Boucle   * Boucle
   * Commentaires   * Commentaires
 +
 +==== Ressources complémentaires ====
 +  * Un manuel en français pour Arduino (un peu daté mais toujours savoureux) https://​fr.flossmanuals.net/​arduino/​historique-du-projet-arduino/​
 +  * Le Livret Arduino de Jean-Noël Montagné de Artsens réalisé au Craslab http://​www.craslab.org/​interaction/​files/​LivretArduinoCRAS.pdf.
 +
 +==== 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 ?
 +
 +==== Support Papier ====
 +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.
 +
 +
  
sita_capteurs.1556360427.txt.gz · Dernière modification: 2019/04/27 12:20 par bigMax