4. Outil FabLab sélectionné#
4.1. Electronique - microcontrôleur#
D’abord c’est quoi un microcontrôleur ?
-> Un microcontrôleur est un circuit intégré qui rassemble les éléments essentiels d’un ordinateur : processeur, mémoires, unités périphériques et interfaces d’entrées-sorties.
Le circuit imprimé YD-RP2040 qui nous est fourni est très similaire au Raspberry Pi Pico mais possède en plus une led RGB et un bouton poussoir inclus directement sur la carte. Le shéma des entrées et sorties de ce module est donné par la figure ci-dessous.
Les autres informations relatives à l’utilisation de ce modules se trouvent sur la datasheet du module Raspberry Pi Pico.
4.2. Arduino#
Arduino est une plateforme de prototypage open-source 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. Elle a l’avange de tout contenir dans un seul environnement : le dispositif de programmation sur la carte Arduino, le logiciel Arduino IDE pour écrire notre code, pour l’envoyer sur la carte et le tester.
4.2.1. Utilisation de Arduino#
Après le téléchargement, qui se fait sur le site ici, et l’ouverture du logiciel, l’interface devrait ressembler à ça :
Il faut maintenant choisir le Board, commme sur la photo ci-dessous c’est le Raspberry Pico/RP2040.
Une fois le Board choisit, il faut télécharger une librairie de code prédéfinit dans Library Manager
Dépendament de ce qu’on veut que le microcontrôleur fasse ou utilise comme outil, on va choisir une librairie adaptée.
4.2.2. Exercice#
LED#
Par exemple ici, nous voulons modfier la couleur/l’intensité de la led se trouvant sur le processeur, on va donc télécharger la librairie adapté : Adapfruit Neopixel. Une fois télécharger, pour ouvrir une nouvelle page contenant le code souhaité il faut aller dans File > Examples > Adafruit Neopixel > Simple Voici le code que j’ai utilisé:
// File : ex1microprocess.ino
// Author : Arduino
// Last modified : 31 octobre 2023 by Timo Pambou
// License : ?? je ne connais pas la licence, les seules infos que j'ai retrouvéés sont celle ci-dessous
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// Released under the GPLv3 license to match the rest of the
// Adafruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 23 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 16 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}
void loop() {
pixels.clear(); // Set all pixel colors to 'off'
// The first NeoPixel in a strand is #0, second is 1, all the way up
// to the count of pixels minus one.
for(int i=0; i<NUMPIXELS; i++) { // For each pixel...
// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
// Here we're using a moderately bright green color:
pixels.setPixelColor(i, pixels.Color(0, 250,0 ));
pixels.show(); // Send the updated pixel colors to the hardware.
// delay(DELAYVAL); // Pause before next pass through loop
}
}
On voit apparaitre sur le code une ligne comprenant #define PIN, il faut assigner une valeur a ce PIN qui correspond à l’emplacement de la led sur le microcontroleur, dans le cas de ce microcontrôleur c’est 23 (voir schéma microcontrôleur ci-dessous, position GP23).
Une fois la bonne valeur de PIN choisie, il faut séléction les valeurs que l’on veut. On voit
dans une ligne de code une fonction pixels.Colors(x,y,Z), x/y/z étant des valeurs de Rouge/Vert/Bleu allant de 0 à 255. On peut donc choisir quelle(s) couleur(s) on applique à la Led et avec quelle intensité.
Voici un photo du branchement:
Les problèmes rencontrés sont surtout lié à des fautes de codage ou à un mauvais choix de Board ou de port. Etant donner que mes connaissances en codage son limitées j’ai du choisir un code prédéfini dans la base de donnée qui était donnée. Le choix étant assez large, il ne faut pas hésiter à changer de choix de code si des problèmes son rencontrer! Pour ce qui est du choix du Board et du port, vérifier votre choix dans le menu comme montrer sur les images suivantes:
J’ai malheureusement eu un soucis de port lorsque j’ai voulu continuer, le port USB que j’avais utilisé préalablement ne s’affichait plus dans la liste (celle à droite dans la deuxième image ci-dessus). Même après avoir regardé plusieurs tutos et demander l’aide de mes collègues et assistants, je n’ai pas su comment résoudre le problème et par manque de temps j’ai du arrêter mes recherches. Etant donné que mon ordinateur n’était plus connecter au microcontrôleur je n’ai pas pu continuer les exercices. La documentation qui suit est donc basée sur la réalisation d’autres étudiants.
capteur de température et d’humidité DHT20#
D’abord télécharger DHT20 dans la librairie. Apres cela rechercher un fichier dans exemple comme montrer ci-dessous:
Le capteur contient 4 ports qui représentes de gauche à droite: 1. L’alimentation (idéalement à 3,3 V). 2. Le port SDA ou port de données série, qui doit être connecté à n’importe quelle broche d’entrée SDA (voir le schéma de brochage du RP-2040). 3. Le port de masse. 4. Le port SCL (horloge série), qui doit être connecté au port SCL à côté du port SDA que vous avez utilisé.
Voici une représentation de ce capteur :
Il est possible de relier le capteur à un programme de graphique qui décrit le graphe de la température et du taux d’humidité détecté par le capteur au cours du temps grace au programme DHT20_plotter. Un exemple est donné ci-dessous.
Pour que le programme ci-dessous fonctionne, il faut cependant replacer la ligne de code DHT.begin;
par
Wire.setSDA(x);
Wire.setSCL(y);
Ou x et y correspondent respectivement au numéro auquel est branché la sortie SDA et SCL du capteur.
// FILE: DHT20_plotter.ino
// AUTHOR: Rob Tillaart
// PURPOSE: Demo for DHT20 I2C humidity & temperature sensor
//
// Always check datasheet - front view
//
// +--------------+
// VDD ----| 1 |
// SDA ----| 2 DHT20 |
// GND ----| 3 |
// SCL ----| 4 |
// +--------------+
#include "DHT20.h"
DHT20 DHT(&Wire);
void setup()
{
Wire.setSDA(0);
Wire.setSCL(1);
Wire.begin();
// ESP32 default pins 21 22
Serial.begin(115200);
Serial.println("Humidity, Temperature");
}
void loop()
{
if (millis() - DHT.lastRead() >= 1000)
{
// note no error checking
DHT.read();
Serial.print(DHT.getHumidity(), 1);
Serial.print(", ");
Serial.println(DHT.getTemperature(), 1);
}
}
Il est grâce à ce programme possible de visualiser des graphes en temps réels.