4. Prototypage d’électronique#
Cette semaine je vais documenter l’option “Prototypage d’électronique” que j’ai choisie.
4.1 Sensor’s datasheet DHT20 (input device)#
En lisant la feuille de données du DH20, voici ce qu’on peut en tirer comme informations cruciales au bon déroulement de la machine.
On peut lire une description conforme de la machine dans les premières pages
“The DHT20 is a kind of sensor of humidity and temperature with digital I²C output.”
on comprend par cela que notre machine est un détecteur d’humidité et température avec une interface digital dite I²C.
Par I²C on entend qu’elle est ” synchronisée, est un bus série synchrone bidirectionnel half-duplex, où plusieurs équipements, maîtres ou esclaves, peuvent être connectés au bus” (je n’expliquerai pas plus que cela étant donné que cela est fort complexe à ma personne), comme le dit Wikipedia.
Si on a besoin de plus d’informations que ce qu’il y a déjà à ce sujet dans le manuel de référence, on peut aller sur ce site donné par ce dernier : www.aosong.com (provides a sample program for reference)
“Superior sensor performance, typical accuracy RH: ±3%, T: ±0.5℃ Wide voltage support 2.2 to 5.5V DC • Fully calibrated and processed digital output, I²C protocol”
Tout d’abord, on remarque que le taux d’erreur absolu le plus bas (+-3 % et +- 4 % RH) est entre 30 et 80 % d’humidité relative. On se doit de ne pas aller en deçà ou au-delà de ces valeurs pour être le plus précis. De même, le taux d’erreur absolu le plus bas pour la température (+-0,5 % et +-0,75 %) est entre 10 et 15 C°, pour avoir des données assez fiables.
On doit essayer de travailler un maximum sous les conditions normales comme indiquées dans le graphique. Si on dépasse celles-ci (en particulier une RH de 80 %) cela peut causer que le signal de sortie “dérive” temporairement (drift + 3%RH après une soixantaine d’heures). Si on revient dans les conditions normales, le senseur va doucement revenir au statut calibré. Évidemment si on l’utilise trop longtemps dans les conditions “maximum range” , cela accélérera sa défaillance, écourtera sa durée de vie. De même, de trop longues expositions à des concentrations élevées de vapeur chimique va causer une “dérive”, un malfonctionnement du signal extérieur du senseur.
“If you want to ensure the variation of the temperature of the sensor is less than 0.1°C, the activation time of DHT20 should not exceed 10 % of the measurement time. It is recommended to measure the data every 2 seconds.”
Ensuite, on lit que pour éviter des variations de l’ordre de 0,1°C on recommande de prendre les mesures à des intervalles de 2 secondes.
On nous recommande par la suite qu’il n’y a pas de fréquence minimale pour SCL. Le Microprocesseur doit toujours être chargé à un niveau minimal pour éviter des interférences d’autres signaux.
Finalement, pour allumer le senseur, on doit envoyer un voltage de 2.2V et 5.5V pour la tension d’alimentation du VDD sélectionné De même, l’ESD protection, ce composant à des troubles avec l’électricité statique, il vaut mieux donc ne pas l’utiliser dans ces conditions ou il faut prendre des mesures anti-statiques (comme recommandées).
4.2 KIT#
On va d’abord prendre ce qui nous intéresse dans le kit qu’on nous a prêté :
-
On va prendre 2 fils (en gris et bleus) avec un embout métallique et une cavité et 2 fils plus longs (en rouge et noirs) avec 2 embouts métalliques
-
Un breadboard pour y mettre notre DTH20 et les embouts métalliques de nos fils.
-
1 microcontrôleur, notre pièce maîtresse
-
un câble USB pour connecter notre ordinateur à notre microcontrôleur.
4.3 Embranchement#
Voici comment embrancher précisément tous les composés pour le DHT20.
En premier, DHT20 est positionné parallèlement à la longueur du breadboard, sa partie trouée étant vers l’intérieur du breadboard et sa partie lisse avec ses descriptions étant vers l’extérieur du breadboard. En respectant, la notice du DHT20 au niveau des embranchements, nous obtenons (en allant de la gauche vers la droite de la longueur de la face trouée du DTH20) :
-
le fil bleu reliant le VDD du DHT20 à la section 3V3 de notre MCU (vdd supply by I/O)
-
le fil rouge reliant le SDA du DHT20 à notre GP20 (colonne de gauche, avec les cavités) du MCU.
-
le fil gris reliant le DHT20 au ground (GND) du MCU.
-
le fil noir reliant le SCL de notre DHT20 à GP21 (colonne de gauche, avec les cavités) de notre MCU.
Il faut bien entendu connecter le câble USB à notre ordinateur et le connecter au port USB-C de notre MCU (une lumière rouge s’affichera pour témoigner de la connexion).
4.4 Board manager#
On clique sur l’icône BOARDS MANAGER (entouré en bleu). Et on tape dans la barre de recherche “Raspberry”.
Attention à bien faire attention au bon package, on désire installer “Raspberry Pi Pico/RP2040” (ici je mettais trompé de package, j’avais pris Arduino Mbed OS RP2040 Boards). On l’installe.
Par la suite, il va falloir suivre les étapes de 0 à 3 :
On va dans nos onglets du dessus, on va dans Tools (0 entouré en bleu), puis on clique les onglets nécessaires jusqu’à arriver à “Generic RP2040”, on clique dessus.
On voit au dessus de la page si nous sommes bien connectés à “Generic RP2040”.
Finalement, au-dessus de notre fenêtre se trouve plusieurs icônes, les 3 premières sont à gauche et les 2 dernières sont à droite.
On vérifie toujours notre code, c’est-à-dire qu’on clique sur le l’icône en forme de V (cela va compiler les erreurs commises en bas de notre page), s’il y a des problèmes, on peut aussi débugger (on clique juste à droite, icône en forme d’insecte et bouton play) . Ensuite, on va l’uploader (icône avec une flèche) vers notre board.
Pour voir notre graphique de température et d’humidité relative, on clique sur la première icône à gauche de notre fenêtre “Serial Plotter” (en forme de sinusoïde)
4.5 DHT20 mise en place#
On doit premièrement installer le DHT20 (aka une bibliothèque de codes) pour avoir le code du capteur RH qui nous intéresse. Après avoir installé Arduino, nous allons dans la section LIBRARY MANAGER, on tape dans la barre de recherche “DHT20” ce qui nous donne divers library, or on désire celle produite par/by Rob Tillaart. On l’installe (ici je l’avais déjà installé, au lieu du bouton remove il devrait se trouver install comme la bibliothèque en dessous, par la suite on clique dessus). On doit désormais chercher dans nos files (entourées en bleu ci-dessous) cette bibliothèque et plus précisément le code s’y trouvant nommé “DHT20_plotter”. En suivant l’ordre (en rouge) d’ouverture des onglets, on le retrouve en 3 (voir ci-dessous)
On modifiera quelque peu les codes pour l’adapter à notre branchage.
Cela nous permet d’avoir le prototype d’un code déjà préparé.
On à ceci comme présentation du DHT20 (on remarque les câblages adaptés entre autres). En allant en bas, nous avons le prototype du code pour le DHT20.
Dans ces lignes de code, la ligne 24 et 25 sont des lignes importantes car elles permettent de voir quel embranchement nous allons réaliser dans notre microcontrôleur (Raspberry Pi Pico GPIO Breakout).
4.6 Problèmes rencontrés et solutions#
Les problèmes que j’ai eus aux premiers abords et que soit j’avais installé la mauvaise bibliothèque, donc je n’arrivais pas à avoir le code voulu, soit j’avais installé le mauvais board manager, donc mon raspberry ne se synchronisait pas avec arduino. Les solutions étaient donc de bien faire attention aux programmes téléchargés.
Par la suite, les autres problèmes étaient non pas de l’ordre du code, mais de l’ordre des embranchements, j’avais soit mis un mauvais branchage vers l’humidificateur soit un mauvais branchage vers le microcontrôleur (toujours bien observé de haut pour les branchages latéraux). Les solutions étaient de bien lire la notice du DHT20 et son schéma de branchement. Ainsi que bien voir les branchements impliqués par la notice du DHT20 et le code mis du DHT20 (lignes 24 et 25). Un conseil est de choisir différentes couleurs pour les fils (pour les distinguer lors d’une révision de branchement).
Ensuite, le branchement du câble USB peut être trompeur étant donné qu’il faut bien enfoncer (mais vraiment bien l’enfoncer) l’embout USB-C au port du MCU qui est capricieux, mais essentiel si on veut un bon fonctionnement du logiciel (dans mon expérience il m’est arrivé 2 fois que mon logiciel ne fonctionnait pas à cause de cela)
De même lorsque j’ai mis mon DHT20 dans mon breadboard, je l’avais positionné d’une mauvaise manière. Je l’avais branché parallèlement à la largeur alors qu’il faut toujours la brancher parallèlement à la longueur (due au circuit interne du breadboard).
Le dernier problème rencontré était le graphique et le fait qu’il ne montrait aucune variation lors des tests d’humidité et de chaleur il fallait le régler à des bauds beaucoup plus élevés (attention à bien modifier le code à la ligne 28 aussi) permettant d’avoir des variations plus visibles. Les nombres de bauds qu’on peut modifier sont entourés en rouge ci dessous. La ligne de température en 2 (flèche rouge) et d’humidité en 1 (flèche bleue) devraient être stagnantes comme ceci si on ne les modifie pas de bauds.
4.7 Démonstration du setup en marche#
Pour vérifier que notre détecteur d’humidité et de température, il fallait que je trouve quelque chose qui fait varier ces 2 conditions. Quoi de mieux que ma main pour augmenter la température et l’humidité en couvrant quasi entièrement le DHT20. Puis, en retirant ma main pour la remettre dans ses conditions initiales.
Premièrement, je vais montrer l’humidité relative (droite 1 en bleu) puis la température (droite 2 en rouge). Ainsi, on verra mieux leurs variations que si elles étaient toutes les 2 affichées à la fois (la température ne peut varier fortement,car proportionnellement l’humidité varie beaucoup plus intensément en une plus courte durée)
On remarque que l’humidité augmente en posant ma main puis se recourbe pour diminuer lors du retirement de ma main. De même, la température a des variations plus saccadées et donc plus lentes.
4.8 Code source et fichier DHT20_plotter modifié#
Voici le code source utilisé:
Gnd ground / VDD volt.
//
// 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(20);
Wire.setSCL(21);
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);
}
}
// -- END OF FILE --
Voici le lien pour le fichier:
4.9 Challenge, réveil musical#
Notre idée de base était de réaliser un réveil après une nuit de sommeil. Par la suite, nous avons opté par un réveil qui s’allume en faisant une mélodie prédéfinie par la réception de la lumière du jour pour plus de facilités.
Voici le code qu’on a réalisé en binôme de soutien pour plus de facilité (réalisé avec Armand Bobelea):
void setup() {
pinMode(1, OUTPUT);
}
void loop() {
tone (1, 22.5);
delay (500);
tone(1, 55);
delay(500);
tone (1, 110);
delay(500);
tone (1, 220);
delay (500);
tone (1, 110);
delay(500);
tone(1, 55);
delay(500);
tone (1, 110);
delay(500);
tone (1, 220);
delay (500);
tone (1, 440);
delay (500);
tone (1, 220);
delay (500);
tone (1, 22.5);
delay (500);
tone(1, 55);
delay(500);
tone (1, 110);
delay(500);
tone(1, 55);
delay(500);
tone (1, 22.5);
delay (400);
noTone (1);
delay (70);
tone (1, 22.5);
delay (400);
noTone (1);
delay (70);
tone(1, 55);
delay(500);
tone (1, 110);
delay(500);
tone(1, 55);
delay(500);
tone (1, 22.5);
delay (750);
noTone(1);
delay (2000);
}
Lors de la mise en place du circuit, nous avions remarqué qu’une erreur de câblage est toujours fatale au bon fonctionnement de celui-ci. Et qu’une résistance est toujours utile lorsqu’on utilise des ouput devices pour ne pas détruire le matériel.
Le circuit à suivre était celui-ci :
Enfin, pour plus d’explications et pour ne pas recopier bêtement 2 fois les mêmes explications, je recommande d’aller sur le lien du module 4 de mon binôme de soutien Armand.