mercredi 14 juillet 2021

Jouer une mélodie avec le Raspberry Pi Pico (MicroPython)

Une façon simple de jouer une mélodie au moyen d'un microcontrôleur consiste à modifier la fréquence d'un signal modulé en largeur d'impulsion (PWM). Il en résulte un son très synthétique qui rappelle les jeux vidéo des années 1980.

Pour transformer le signal électrique de la broche GP2 en vibration sonore, vous pouvez utiliser un haut-parleur ou un buzzer piézoélectrique.

Connexion d'un haut-parleur

Un haut-parleur offre une excellente qualité sonore,  mais il est hors de question de le brancher directement à une broche du Raspberry Pi Pico (ou de tout autre microcontrôleur): le courant traversant la broche serait beaucoup trop intense à cause de la faible résistance du haut-parleur. 

Le signal PWM généré par la broche GP2 du Raspberry Pi Pico est plutôt reliée à la base d'un transistor par l'entremise d'une forte résistance (1 kΩ, par exemple). Le haut-parleur est branché au collecteur du transistor, en série avec une résistance d'au moins 100 Ω (pour plus d'infos, voir cet article)


Un buzzer piézoélectrique est beaucoup plus facile à brancher, mais la qualité sonore risque d'en souffrir. Ça peut être une bonne idée d'ajouter une résistance de 100 Ω ou 220 Ω en série avec le piézo.


Script en MicroPython

Chaque fois qu'on désire jouer une note, il faut s'assurer de jouer la bonne fréquence (hauteur de la note) et la bonne durée. La fréquence est réglée au moyen de la méthode freq().

Pour que les notes soient bien distinctes les unes des autres, on ajoute un court silence (d'une durée de 50 millisecondes) entre deux notes successives. Le rapport cyclique est alors réglé à 0% (alors qu'il est de 50% lorsqu'on désire générer un son).

-

-

À lire également


Yves Pelletier (Facebook)


jeudi 8 juillet 2021

Mesure d'une température avec un thermocouple MAX6675 et un Raspberry Pi Pico (MicroPython)

Lorsqu'on désire mesurer une haute température, comme par exemple celle qui règne à l'intérieur d'un four, l'utilisation d'un thermocouple s'avère particulièrement pertinente.


Un thermocouple exploite l'effet Seebeck: une faible différence de potentiel est générée lorsqu'on joint deux fils conducteurs de matériaux différents et qu'on les soumet à une différence de température. Le circuit intégré MAX6675 transforme cette différence de potentiel en un signal numérique de 12 bits qui indique directement la température, avec une résolution de 0,25°C.


Dans cet article, nous utilisons un thermocouple de type K branché à un module MAX6675. Le module sera branché à un Raspberry Pi Pico programmé en MicroPython.

Connexions

Le module MAX6675 que j'ai utilisé comporte, d'un côté, un bornier à vis servant à brancher le thermocouple et, de l'autre côté, 5 broches pour les connexions avec le microcontrôleur (GND, VCC, SCK, CS et SO).




Côté thermocouple, le rouge est positif et le bleu est négatif. Si vous le branchez à l'envers, vous constaterez que la température mesurée diminue lorsque vous chauffez le thermocouple...


J'ai branché le module MAX6675 au Raspberry Pi Pico de cette façon:

  • Broche GND du MAX6675 : Broche GND du Raspberry Pi Pico
  • Broche VCC du MAX6675: Sortie 3,3 V du Raspberry Pi Pico
  • Broche SCK du MAX6675: Broche GP13 du Raspberry Pi Pico
  • Broche CS du MAX6675: Broche GP14 du Raspberry Pi Pico
  • Broche SO du MAX6675: Broche GP15 du Raspberry Pi Pico


Installation du pilote

J'ai choisi le pilote MicroPython max6675 par BetaRavener. Le fichier max6675.py doit être copié dans le Raspberry Pi Pico.


Script

La méthode "read" de la bibliothèque retourne la température mesurée en degrés Celsius. Le script se résume donc à peu de choses: définir les 3 broches du Raspberry Pi Pico qui ont été utilisées pour la connexion du MAX6675, lire la température une fois par seconde et afficher le résultat. J'ai aussi ajouté une conversion en Kelvin.

-

-

À lire également


Yves Pelletier (Facebook)