4. Formation microcontrôleur#
Ce module était une introduction au microcontrôleurs dont le but était de faire fonctionner des dispositifs de mesure avec notre ordinateur. L’exercice était de faire les bons montages et d’adapter les codes correspondants afin de faire le lien entre le dispositif, le microcontrôleur et l’ordinateur. Nous avons utilisé le language C / Arduino. Il fallait programmer les microcontrôleurs avec du codage pour collecter des données des senseurs.
Mais qu’est-ce qu’un microcontrôleur?
Un microcontrôleur est un circuit intégré qui sert de lien entre un outil de mesure et un ordinateur. Il rassemble les éléments d’un ordinateur, qu’il comprend sur une seule carte: mémoires, processeur, unités périphériques et interfaces d’entrées et sorties.
Arduino#
Arduino est une marque de plateforme de prototypage qui produit du hardware et software. En ce qui nous concerne nous avons utilisé Arduino, le logiciel open-source avec lequel on peut programmer, à l’aide de codes, des cartes électroniques dotées d’un microcontrôleur. Sur ces cartes électroniques on peut brancher des capteurs, senseurs, moteurs… Arduino permet d’animer des dispositifs mécaniques sur des systèmes électroniques. Il s’agit d’un “EDI”, Environnement de Développement Intégré. La carte que nous allons programmer est “YD-RP2040” en utilisant un language C sur Arduino. Voici une schématisation du microcontrôleur en question avec les différents inpout, output, USB-C… Les pins qui vont nous intéresser sont les SCL; SCA; GND et Power que je détaillerai plus tard dans ce module.
Voici aussi un site utile pour obtenir des informations sur le logiciel et des codes spéifiques. J’y ai par exemple exporté le code de mon servo moteur décrit plus tard dans ce module: Arduino
Lien entre PC et microcontrôleur#
Etablir le lien entre la carte et le microcontrôleur s’est étonnament avéré être l’étape la plus compliquée.
Tout d’abord il faut aller sur le site electronics du cours dans le module 4. Electronics Puis, faut aller dans la section C/ Arduino (et installer Arduino si ce n’est pas déjà fait). Puis ajouter ce lien: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json à Additional board Manager
Puis suivre les étapes suivantes: Tools->Boards->Board Manager dans Arduino et télécharger le package “pico” (Raspberry Pi Pico/RP2040).
Ensuite, on peut connecter la carte électronique à l’ordinateur avec le cable USB-C.
Dans Arduino, faut sélectionner comme “board” Generic RP2040 et le port USB qui est affiché. Run le programme. Normalement cela va pas fonctionner, alors il faut changer le “board” en Raspberry Pi Pico et rééssayer.
Sur mon image il n’y a pas de port détecté car j’ai oublié de documenter pendant que la carte était connectée.
Il se peut que le port USB-C ne soit pas compatible avec l’ordinateur, dans ce cas la configuration peut être correcte mais le “Uploading” ne marchera pas. Je n’ai pas trouvé de solution à ce problème mise-à-part de changer de cable. Notre assistant a dit que cela pouvait être lié au logiciel lui-même.
Exercices#
Le premier exercice était de faire fonctionner 1 outil de mesure (ici un détecteur d’humidité) et/ ou un outil connecteurs (une ampoule LED). Le deuxième exercice était le même que le premier sauf qu’il fallait connecter un servomoteur. Finalement, nous avions libre choix entre de nombreux outils que l’on peut retrouver sur ce site: outils arduino. Avec 2 camarades nous avons décidé d’essayer de faire fonctionner un capteur à CO2. Pour chaque dispositif il nous a fallu adapter un code en fonction des branchements de notre montage.
détecteur humidité#
Avant de passer au montage de notre circuit intégré liant notre ordinateur, le microcontrôleur et le détecteur d’humidité DHT20- Temperature & RH sensor, il faut d’abord suivre quelques étapes sur le logiciel Arduino.
- télécharger une bibliothèque spécifique qui comprend une préinstallation du DHT20 et télécharger DHT20
- télécharger une version plotter (code très simple) -> DHT20_plotter
Après on peut passer au montage:
- montage
Pour réaliser le montage, je me suis servi de la “datasheet” de DHT20 et du schéma de YD-RP2040. datasheet
J’y est recueilli les informations nécessaires dont la fonction des 4 différents ports du détecteur d’humidité: - VDD est idéalement à 3.3V - SDA doit être connecté à n’importe quelle borne d’entrée SDA (input pin voir schéma dans section **Arduino) de RP-2040. - GND, la borne de terre - SCL, doit être connecté à un port SCL paire du SDA choisi
Sur l’image suivante, on peut observer le montage que je viens de décrire. On peut aussi observer que le détecteur d’humidité est connecté au Breadboard (objet blanc cadrié).
- code
Il suffit ensuite seulement de modifier les lignes suivantes dans le code en fonction du SDA et SCL choisi. Ici SDA sur le pin 20 et SCL sur le pin 21.
DHT.begin();
Wire.setSDA(20);
Wire.setSCL(21);
Wire.begin();
Ensuite, suivre les étapes décrite dans “Lien entre PC et microcontrôleur” plus haut. Voci le code complet:
Malheureusement, bien que mon code et le montage étaient correctes, mon outil ne fonctionnait pas à cause du port USB-C non-compatible.
servomoteur#
Cet outil est mini servo moteur qui peut mettre en action un mouvement mécanique. Ici nous avons utilisé une toute petite hélice. Ici aussi, nous avons téléchargé un code préinstallé dans dans Files-> examples-> servo-> knob.
Pour le montage je me suis basé sur ce schéma:
Un autre schéma explicatif:
Ici on peut observer le montage que j’ai réalisé. (Le servo moteur est la petite boîte bleue avec l’hélice blanche attachée dessus)
Voici le code utilisé:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Cet outil a fonctionné sur mon ordinateur et l’action sur celui-ci s’est présentée sous forme d’un mouvement rotationnel de 360°.
capteur CO2#
Finalement, avec Jean Boussier et Lukas Schieble, nous avons testé un capteur de CO2.
En voici le montage:
Nous avons réalisé le code sur l’ordinateur de Jean Boussier, ainsi pour plus d’information veuillez consulter sa page: Jean Boussier