mardi 7 juillet 2020

Mesurer la pression atmosphérique avec BMP180 et micro:bit

Le capteur BMP180 a été spécialement conçu pour mesurer la pression atmosphérique ainsi que la température. Dans cet article, nous le branchons à une carte micro:bit qui pourra tout aussi bien être programmée avec MakeCode qu'avec MicroPython.  Afin de simplifier les choses au maximum, nous afficherons la pression atmosphérique (en hPa) et la température (en °C) sur la matrice de LEDs du micro:bit.

Capteur BMP180 et micro:bit


Connexions

Le capteur BMP180 communique ses mesures avec le protocole I2C. On le branche donc au micro:bit de la façon suivante:

  • Broche VIN  du BMP180:   3 V du micro:bit
  • Broche GND du BMP180: GND du micro:bit
  • Broche SCL du BMP180: P19 du micro:bit
  • Broche SDA du BMP180: P20 du micro:bit

Programmation avec MakeCode

Le programmation avec MakeCode est extrêmement simple si vous installez l'extension BMP180 par Shaoziyang: vous allez dans la section "Extensions", ce qui peut se faire en passant par la roue d'engrenage en haut à droite...


...et vous faites une recherche de "bmp180":


Une fois l'extension installée dans votre projet, vous disposez d'une nouvelle catégorie "BMP180", qui contient deux blocs "pressure" et "température".




Il s'agit d'insérer ces blocs dans votre programme chaque fois que vous désirez connaître la pression ou la température:


Programmation en MicroPython

Si vous préférez programmer en MicroPython, ce sera tout aussi facile puisque Shaoziyang, l'auteur de l'extension pour MakeCode, a également écrit une bibliothèque en MicroPython. Avec cette bibliothèque, la pression et la température s'obtiennent respectivement grâce aux méthodes Pressure() et Temperature(), comme dans l'exemple de script ci-dessous.

-

-

À lire aussi:

D'autres articles impliquant le micro:bit:
D'autres projets impliquant le capteur BMP180:
La carte micro:bit utilisée pour la rédaction de cet article a été fournie gratuitement par DigitSpace.

Yves Pelletier (TwitterFacebook)


vendredi 3 juillet 2020

Capteur de champ magnétique à effet Hall KY-024

Le capteur à effet Hall KY-024 est un module qui permet de détecter la présence d'un champ magnétique, ou de mesurer son intensité.


Le capteur lui-même est situé du côté opposé aux broches de connexion (il a l'allure d'un petit transistor): il s'agit d'un SS49E; sa broche de sortie transmet une tension proportionnelle à l'intensité du champ magnétique.  Sa sensibilité à 25°C est typiquement de 1.4 mV/Gauss, mais elle varie d'un specimen à l'autre, donc celle de votre capteur peut aussi bien être de 1,0 mV/Gauss que de 1,75 mV/Gauss. Pour calculer un résultat précis en Gauss ou en Tesla, une calibration est donc nécessaire.

Le module comporte également un comparateur LM393 qui sert à produire un signal numérique indiquant si l'intensité du champ magnétique est inférieure ou supérieure à un certain seuil.

Le module KY-024 comporte 4 connecteurs: AO, G, + et DO.
  • La broche AO (Analog Out) est la sortie analogique qui transmet la mesure du champ magnétique. Lorsque le champ magnétique est nul, sa tension est égale à la moitié de la tension d'alimentation du module (donc 2,5 V si vous alimentez le module avec une tension de 5 V, 1,65 V si vous alimentez le module avec une tension de 3,3 V).  En présence d'un champ magnétique, la tension augmente ou diminue selon la direction du champ. La sortie AO est pertinente si vous désirez mesurer un champ magnétique, ou observer comment il varie dans le temps. Pour l'utiliser, vous devez la brancher à une entrée analogique d'un microcontrôleur (ou même à un simple voltmètre, si le champ magnétique ne varie pas trop rapidement).
  • La broche G (Ground) doit être branchée à la masse (broche GND du microcontrôleur, ou la borne négative de la source d'alimentation).
  • La broche + doit être alimentée avec une tension de 3,3 V ou 5 V. Puisque la tension de sortie du module dépend de cette alimentation, il est important de choisir 3,3 V si vous utilisez un microcontrôleur fonctionnant à un niveau logique de 3,3 V (exemples: ESP8266,  STM32, Raspberry Pi...) alors qu'une tension de 5 V sera réservée aux microcontrôleurs qui fonctionnent à un niveau logique de 5 V (exemple: Arduino Uno).
  • La broche DO (digital Out) sera utilisée pour détecter la présence d'un champ magnétique (pour un compte-tours, par exemple). Cette sortie génère un signal numérique BAS en l'absence de champ magnétique, et HAUT en présence d'un champ magnétique. La sensibilité du capteur peut être ajustée au moyen du potentiomètre intégré au module (une rotation en sens horaire permet de réagir à des champs plus faibles). La LED située près du potentiomètre s'allume lorsque le signal est haut, ce qui facilite l'ajustement du potentiomètre.
Sur la photographie ci-dessous, la LED s'allume lorsqu'on approche l'aimant.




Mise à l'essai

Pour observer le comportement des deux sorties du module KY-024, j'ai branché la broche AO du module à l'entrée A0 d'un Arduino Uno, et j'ai branché la broche DO du module à l'entrée 7 de l'Arduino Uno. Un petit aimant était placé à différentes distances du capteur.



Le sketch est minimaliste: j'affiche dans le moniteur série la valeur analogique lue à l'entrée A0 et la valeur numérique lue à l'entrée 7.



En absence de champ magnétique, mon module a affiché une valeur analogique de 517 et un niveau logique bas.


J'ai approché un aimant: la valeur analogique a augmenté, alors que le signal numérique est demeuré bas.


J'ai inversé l'aimant, et l'ai approché de nouveau. Cette fois, la valeur analogique diminue, et le signal logique devient haut quand le signal analogique atteint environ 485.



Contrairement à ce que j'aurais pensé,  le potentiomètre affecte le signal analogique. Par exemple, après avoir tourné le potentiomètre dans le sens antihoraire, la valeur mesurée en absence de champ magnétique est d'environ 525...


...et la valeur de transition du signal numérique semble sensiblement la même qu'auparavant, mais elle correspond à un champ magnétique plus intense (l'aimant devait être plus proche du capteur).



À lire également:

D'autres façons de détecter ou de mesurer un champ magnétique:

Le capteur KY-024 utilisé dans cet articule a été fourni gratuitement par DigitSpace.

Yves Pelletier (TwitterFacebook)

lundi 29 juin 2020

Livre: micro:bit Programmez la carte avec MakeCode et MicroPython

par Jean-Christophe Quetin
Éditions ENI (Collection La Fabrique)
2020
495 pages


J'ai eu le plaisir de recevoir le nouveau livre de Jean-Christophe Quetin, qui s'adresse aux adeptes de la carte micro:bit.

Une première particularité intéressante de ce livre, c'est qu'il couvre les deux principaux langages pouvant être utilisés pour programmer la carte: MakeCode et MicroPython. Il s'agit peut-être d'un inconvénient pour les lecteurs qui s'intéressent à un seul des deux langages (par exemple: quelqu'un qui a déjà des bonnes base en Python), mais c'est parfait pour le débutant qui ne sait pas encore quel langage il adoptera (je peux facilement imaginer que quelqu'un débute son initiation avec MakeCode et, réalisant les limites de l'outil, décide plus tard de s'attaquer à MicroPython).

L'approche pédagogique est similaire à celle que l'auteur avait appliquée dans son livre précédent (Arduino, Apprivoisez l'électronique et le codage): le lecteur est invité à apprendre les bases de la programmation...en programmant! La majeure partie du livre est donc consacrée à la présentation d'exemples concrets, expliqués soigneusement (mais sans blabla inutile). Les noms des variables sont en français, et les scripts en python comportent de nombreux commentaires.

Dans un premier temps (chapitres 2 et 3), le lecteur apprend à utiliser les nombreuses ressources intégrées à la carte: la matrice de LEDs, les boutons, l'accéléromètre, le magnétomètre, le capteur de température, le capteur de luminosité, les capteurs sensitifs, la communication radio, la communication série, le stockage de données sous forme de fichier... Je remarque qu'il n'y a rien concernant la communication en Bluetooth, qui permet pourtant des applications fort intéressantes (le bluetooth ne peut pas être utilisé en micropython, mais il peut l'être avec MakeCode).

Le chapitre 4 traite des entrées et des sorties, et on y apprend comment utiliser des composants externes communs: LED, LED RGB, module de LED adressables, bouton, potentiomètre, photorésistance, capteur d'humidité, buzzer, haut-parleur, capteur à ultrasons, détecteur de mouvement (PIR), relais, etc. Le moteur à courant continu et le servomoteur sont abordés un peu plus loin, dans un chapitre consacré aux robots.

Ensuite, ça semble un peu inévitable quand il s'agit du micro:bit, on en arrive aux cartes d'extensions spécialisées dans lesquelles il s'agit d'insérer la carte sans avoir à se poser de questions sur les connexions. Il est probablement impossible de couvrir tout ce qui est disponible sur le marché, mais la sélection est assez variée avec, pour chaque carte d'extension présentée, au moins un exemple en MakeCode et en Python.  J'ai particulièrement remarqué les cartes d'extension qui transforment le micro:bit en mini console de jeu (Joystick for micro:bit, Game ZIP 64) ou en robot (MOVE mini, Maqueen).

Je m'interroge un peu sur la pertinence des derniers chapitres, dans lesquels ont présente brièvement d'autres cartes utilisées dans le monde scolaire: Circuit Playground Express, Pyboard, Arduino, Makey Makey et Ozobot. C'est intéressant, mais un peu hors sujet.

L'absence de couleur donne au livre un aspect un peu austère, mais ça n'a pas eu de conséquence fâcheuse sur la clarté des schémas (seule exception: la figure de la page 282, dans laquelle un des fils du moteur est à toute fin pratique invisible). Un peu de couleur aurait aussi contribué à faciliter la compréhension des programmes présentés sous forme de blocs, puisque la couleur de chaque bloc donne une indication de la catégorie à laquelle il appartient. Malgré tout, les programmes en MakeCode sont très lisibles (sauf peut-être celui de la page 316, que les optométristes pourraient utiliser afin de diagnostiquer un début de presbytie).

En conclusion: si vous désirez vous initier au micro:bit, ce livre constitue un excellent choix.


À lire également:

Le livre commenté dans cet article a été fourni gratuitement par les Éditions ENI.

Yves Pelletier (TwitterFacebook)