lundi 24 mai 2021

Module Bluetooth HC-06 et Raspberry Pi Pico

Vous aimeriez pouvoir contrôler votre Raspberry Pi Pico au moyen de votre smartphone?

Un module HC-06 permettra à votre Raspberry Pi Pico de communiquer par Bluetooth avec un téléphone ou une tablette situé à une distance maximale d'une dizaine de mètres. 

Dans cet article, le Raspberry Pi Pico sera programmé en MicroPython.



Connexions du module HC-06 au Raspberry Pi Pico

Le module HC-06 ne comporte que 4 broches: deux pour l'alimentation, et deux pour la communication UART. Le verso de mon module indique que l'alimentation doit se situer entre 3,6 V et 6 V, mais que la communication s'effectue à un niveau logique de 3,3 V.

Voici comment j'ai branché le module HC-06 au Raspberry Pi Pico:
  • Broche VCC du HC-06 - Broche VBUS (5 V) du Raspberry Pi Pico
  • Broche GND du HC-06 - Broche GND du Raspberry Pi Pico
  • Broche TXD du HC-06 - Broche GP1 (RX) du Raspberry Pi Pico
  • Broche RXD du HC-06 - Broche GP0 (TX) du Raspberry Pi Pico

Couplage avec l'appareil hôte

Aussitôt que le module HC-06 est alimenté, sa LED rouge se met à clignoter, ce qui indique qu'il est prêt à être couplé avec un appareil hôte (smartphone, tablette, etc.). Cette procédure s'effectue de façon autonome par le module HC-06, elle ne dépend aucunement du Raspberry Pi Pico.

Les captures d'écran ci-dessous proviennent d'une tablette Android. Je suis allé dans "Paramètres", puis "Bluetooth".  J'active Bluetooth si ce n'est pas déjà fait, et HC-06 apparaît dans la liste des appareils disponibles.



Par défaut, le mot de passe est "1234" (si vous le désirez, toutefois, le mot de passe peut être modifié au moyen d'une commande AT).


Si le mot de passe est bon, HC-06 apparaît désormais dans la liste "Périphériques couplés".



Une appli pour la communication Bluetooth

Il existe un grand nombre d'applis qui permettent de communiquer en Bluetooth avec votre téléphone ou votre tablette. Sur Android, j'aime bien Serial Bluetooth Terminal par Kai Morich.

À l'intérieur de Serial Bluetooth Termnal, cliquez sur ce bouton afin d'établir la connexion avec le HC-06.

À cette étape, le bouton change de forme et la LED du HC-06 cesse de clignoter (elle demeure allumée de façon continue).



Exemple 1: envoi d'un message du Raspberry Pi Pico vers le téléphone

Ce script en MicroPython envoie un message qui pourra être capté par votre téléphone. Puisque le HC-06 retransmet via Bluetooth tout ce qu'il reçoit sur sa broche RXD, le script ne comporte rien de spécifique au Bluetooth: il émet simplement un message UART (dans ce cas particulier: un nombre entier qui augmente d'une unité à chaque seconde).

-

-

Exemple 2: envoi d'un message du téléphone vers le Raspberry Pi Pico

Dans ce deuxième exemple, on envoie un message au Raspberry Pi Pico à partir du téléphone. Si on envoie le message "a", la LED verte du Raspberry Pi Pico s'allume, alors qu'elle s'éteint si on envoie le message "b".

Ici encore, le message Bluetooth reçu par le HC-06 sera transmis par UART au Raspberry Pi Pico.


-
-

À lire également


Yves Pelletier (Facebook)

mardi 18 mai 2021

Lecture d'un tag RFID avec module RC522 et Raspberry Pi Pico (MicroPython)

Le module RFID-RC522 constitue une façon simple et économique de faire de la radio-identification au moyen d'un microcontrôleur. Dans cet article, nous lisons le numéro d'identification (uid) d'un tag RFID au moyen d'un module RC522 branché à un Raspberry Pi Pico programmé en MicroPython.


Connexions

Voici comment j'ai branché le module RC522 au Raspberry Pi Pico:

  • Broche 3.3 V du RC522 - Sortie 3,3 V du RP Pico
  • Broche RST du RC522 - Broche GP3 du RP Pico
  • Broche GND du RC522 - Broche GND du RP Pico
  • Broche IRQ du RC522 - Pas branchée
  • Broche MISO du RC522 - Broche GP4 du RP Pico
  • Broche MOSI du RC522 - Broche GP7 du RP Pico
  • Broche SCK du RC522 - Broche GP6 du RP Pico
  • Broche SDA du RC522 - Breoche GP5 du RP Pico
(Bizarrement, la broche identifiée SDA sur le module RC522 est en fait le "chip select" SPI)

Installation du pilote mfrc522

J'ai utilisé le pilote MicroPython mfrc522 que Daniel Perron a modifié pour utilisation avec le Rasbperry Pi Pico. Le fichier "mfrc522.py" doit être copié dans le Raspberry Pi Pico (pour ce faire, j'utilise le panneau "Fichiers" de Thonny).


Exemple: lecture du numéro d'identification d'un tag RFID

Le script ci-dessous lit le numéro d'identification d'un tag ou d'une carte RFID placée à proximité du module RC522.

-

-

Lorsque vous connaissez le numéro d'identification d'un tag RFID, vous pouvez ensuite l'utiliser dans un programme qui accomplira une action à la condition que ce tag en particulier soit présenté.

À lire également

D'autres articles impliquant le Raspberry Pi Pico programmé en MicroPython:
Yves Pelletier (Facebook)

dimanche 16 mai 2021

Utilisation d'un écran tactile TFT SPI 240 X 320 (ILI9341) avec un ESP32

Dans ce tuto, nous branchons à un ESP32 un écran tactile SPI 240 X 320 comportant le contrôleur ILI9341. L'ESP32 sera programmé au moyen de l'IDE Arduino.


Connexions de l'écran à l'ESP32

Mon écran est muni d'un lecteur de carte SD que je n'utiliserai pas pour l'instant. Ça nous laisse tout de même 18 broches qui servent à l'alimentation, à l'affichage et au capteur tactile.


Voici comment j'ai branché l'écran à mon module ESP32:

  • Broche VCC de l'écran: sortie 3,3 V de l'ESP32
  • Broche GND de l'écran: broche GND de l'ESP32
  • Broche CS de l'écran: broche D15 de l'ESP32
  • Broche Reset de l'écran: broche D4 de l'ESP32
  • Broche DC de l'écran: broche D5 de l'ESP32
  • Broche SDI (MOSI) de l'écran: broche D23 de l'ESP32
  • Broche SCK de l'écran: broche D18 de l'ESP32
  • Broche LED de l'écran: sortie 3,3 V de l'ESP32
  • Broche CDCK (MISO) de l'écran: broche D19 de l'ESP32
  • Broche T_CLK de l'écran: broche D18 de l'ESP32
  • Broche T_CS de l'écran: broche D21 de l'ESP32
  • Broche T_DIN de l'écran: broche D23 de l'ESP32
  • Broche T_DO de l'écran: broche D19 de l'ESP32
  • Broche T_IRQ de l'écran: pas branchée

Installation de la bibliothèque TFT_eSPI

La bibliothèque TFT_eSPI de Bodmer peut être installée au moyen du gestionnaire de bibliothèques de l'IDE Arduino.


Configuration de la bibliothèque TFT_eSPI (fichier User_Setup)

Puisque la bibliothèque TFT_eSPI est compatible avec un grand nombre d'écrans TFT et avec plusieurs microcontrôleurs, il est nécessaire de régler certaines informations dans un fichier de démarrage avant de pouvoir l'utiliser.  Un grand nombre de fichiers prêts à l'emploi se trouvent dans le dossier "User_Setups", qui se trouve lui-même à l'intérieur du dossier de la bibliothèque TFT_eSPI (dans votre Sketchbook Arduino). 

Malheureusement, le dossier ne comporte pas de fichier conçu pour l'utilisation d'un ILI9341 avec un ESP32, et j'en ai donc écrit un (voir ci-dessous). Ce fichier devrait être enregistré dans le dossier User_Setups sous le nom "Setup_ILI9341_ESP32.h"

-
-

Après avoir copié le fichier ci-dessous dans le dossier User_Setups sous le nom "Setup_ILI9341_ESP32.h" , il faut également ouvrir le fichier User_Setup_Select.h, commenter la ligne 22 (pour la désactiver), et ajouter cette directive:

#include <User_Setup/Setup_ILI9341_ESP32.h>


Si plus tard vous désirez utiliser la bibliothèque TFT_eSPI avec un autre écran ou avec un autre microcontrôleur, il s'agira d'utiliser un fichier de configuration différent.

Sketch #1: Deux boutons

Je vous présente ici les deux mêmes sketches que j'avais utilisés avec un ESP8266 et un STM32. Dans ce premier exemple, l'écran affiche deux boutons: un premier bouton fait apparaître un rectangle, alors que l'autre fait apparaître un cercle. En  plus d'illustrer la gestion des boutons, cet exemple montre comment tracer à l'écran des formes géométriques simples.


-
-

Sketch #2: Bouton coulissant

Dans ce deuxième exemple, l'écran affiche un bouton coulissant qui contrôle une valeur numérique située entre 0 et 100. Ça pourrait être utilisé pour contrôler la vitesse d'un moteur, la luminosité d'une LED, etc.


-
-

Bien entendu, de nombreux autres exemples sont inclus avec la bibliothèque TFT_eSPI.


À lire également

Yves Pelletier (Facebook)