Raspberry Pi Pico W en un tournemain

Page 1

Raspberry Pi Pico W en un tournemain

Maîtrise de la puce RP2040 avec plus de 60 projets à réaliser et à programmer

Main program loop. Send the temperature to smartphone

while True: buf = uart.readline()

# Read data dat = buf.decode('UTF-8')

n = dat.find("T?")

# Decode if n > 0:

# T? received?

T = GetTemperature()

# Get the Tstr = "T=" + str(T)

# Insert

# Length

T= Tlen = str(len(Tstr))

Dt = "AT+CIPSEND="+Tlen + "\r\n"

# AT command uart.write(Dt)

# Send to ESP-01 utime.sleep(2)

# Wait 2 sec uart.write(Tstr)

Dogan Ibrahim

# Send data

books
TRI ED • TE S TE D •

Raspberry Pi Pico W en un tournemain

Maîtrise de la puce RP2040 avec plus de 60 projets à réaliser et à programmer

• Droits de reproduction © 2023 – Publitronic - Elektor International Media

• Toute reproduction ou copie, même partielle, de ce livre, et sur quelque support que ce soit, sans l'accord écrit de l'éditeur, est interdite.

• Le code de la propriété intellectuelle du 1er juillet 1992 interdit expressément la photocopie à usage collectif sans autorisation des ayants droit.

No part of this book may be reproduced, in any form or means whatsoever, without permission in writing from the publisher. While every precaution has been taken in the preparation of this book, the publisher and author assume no responsability for errors or omissions. Neither is any liability assumed for damages resulting from the use of the information contained herein.

La protection du droit d'auteur s'étend aux illustrations, y compris aux circuits imprimés et aux projets y relatifs. En conformité avec l'article 30 de la Loi sur les brevets, les circuits mentionnés ne peuvent être exécutés qu'à des fins particulières ou scientifiques et non pas dans ou pour une entreprise ; ces exécutions et/ou applications se font en dehors de toute responsabilité de l'éditeur.

Conformément au droit d'auteur, ce copyright ne s'applique pas à certains schémas reproduits dans ce livre à titre de citation et d'illustration des propos et de la démarche intellectuelle de l'auteur, avec l'aimable autorisation des ayants droit.

L'éditeur remercie d'avance le lecteur qui prendra la peine de lui signaler les erreurs éventuelles qui auront échappé à sa vigilance (écrire à redaction@elektor.fr).

• ISBN 978-2-86661-214-6

978-2-86661-215-3

• 1e édition — 1er tirage - 02/2023

Version papier

Version numérique

• Maquette : www.d-vision.nl | Julian van den Berg

Coordination : Mariline Thiebaut-Brodier

Traduction : Magda Lorne

Imprimé en Allemagne par Media-Print Informationstechnologie

● 4
● 5 SOMMAIRE Préface ........................................................... 10 Chapitre 1 • Entrailles du Raspberry Pi Pico W ............................ 12 1.1 Préambule ................................................... 12 1.2 Caractéristiques matérielles du Pico .................................. 12 1.3 Comparaison avec l’Arduino UNO .................................... 15 1.4 Conditions de fonctionnement et mise sous tension du Pico 15 1.5 Brochage du microcontrôleur RP2040 et de la carte Pico ................... 16 1.6 Autres cartes à base de microcontrôleur RP2040 19 Chapitre 2 • Programmation du Raspberry Pi Pico W ....................... 20 2.1 Vue d’ensemble ................................................ 20 2.2 Installation de MicroPython sur le Pico W 20 2.3 Utilisation de l’EDI Thonny sur PC ................................... 21 2.4 Écrire un programme en utilisant Thonny .............................. 23 2.5 Programmes MicroPython purement logiciels, exécutés sur le Raspberry Pi Pico W... 24 Chapitre 3 • Projets avec des LED ...................................... 47 3.1 Aperçu ...................................................... 47 3.2 Projet 1 : clignotement d’une LED externe 47 3.3 Projet 2 : SOS lumineux .......................................... 51 3.4 Projet 3 : clignotement de LED – utilisation d’une temporisation 53 3.5 Projet 4 : changement de la fréquence de clignotement d’une LED –interruptions par boutons-poussoirs .................................... 54 3.6 Projet 5 : clignotement aléatoire d’une LED RVB 59 3.7 Projet 6 : LED de comptage binaire .................................. 61 3.8 Projet 7 : jour de chance de la semaine 64 3.9 Projet 8 : dé électronique ......................................... 67 3.10 Projet 9 : compteur binaire – avec registre à décalage 74HC595 ............. 71 3.11 Projet 10 : chenillard – avec registre à décalage 74HC595 ................. 76 3.12 Projet 11 : allumer la LED sélectionnée – avec registre à décalage 74HC595..... 77 3.13 Projet 12 : LED à clignotement aléatoire – avec registre à décalage 74HC595 .... 78
Raspberry Pi Pico W ● 6 3.14 Projet 13 : feux de circulation ..................................... 79 3.15 Projet 14 : sonde logique simple ................................... 83 3.16 Projet 15 : sonde logique améliorée ................................. 85 Chapitre 4 • Projets avec des afficheurs à 7 segments ...................... 87 4.1 Vue d’ensemble ................................................ 87 4.2 Afficheurs à 7 segments de LED 87 4.3 Projet 1 : compteur de secondes avec afficheur à 4 chiffres de 7 segments ...... 91 4.4 Projet 2 : compteur de marchandises sur bande transporteuse avec afficheur à 4 chiffres de 7 segments 95 Chapitre 5 • Projets avec un écran LCD ................................. 100 5.1 Vue d’ensemble ............................................... 100 5.2 Pilote HD44780 pour LCD à port parallèle ............................. 100 5.3 Bus I2C..................................................... 102 5.4 Broches I2C du Raspberry Pi Pico W ................................. 104 5.5 Projet 1 : LCD à port parallèle – affichage de texte 104 5.6 Projet 2 : mesure de temps de réaction – affichage sur LCD à port parallèle ..... 110 5.7 Projet 3 : voltmètre avec LCD à port parallèle 113 5.8 Projet 4 : mesure de température avec le capteur interne – affichage sur LCD à port parallèle ............................................... 116 5.9 Projet 5 : mesure de la température avec un capteur externe – affichage sur LCD à port parallèle 117 5.10 Projet 6 : régulateur de température ON/OFF – affichage sur LCD à port parallèle ................................................... 119 5.11 Projet 7 : mesure de l’intensité de la lumière ambiante – affichage sur LCD à port parallèle ............................................... 122 5.12 Projet 8 : ohmmètre – affichage sur LCD à port parallèle ................. 124 5.13 Écran LCD à interface I2C ....................................... 126 5.14 Projet 9 : compteur de secondes – affichage sur LCD à interface I2C 129 5.15 Projet 10 : mesure de deux températures – affichage sur LCD à interface I2C ... 131 5.16 Projet 11 : mesure de température avec une thermistance – affichage sur LCD à interface I2C 133
SOMMAIRE ● 7 5.17 Projet 12 : mesure de distance par ultrasons – affichage sur LCD à interface I2C .. 138 5.18 Projet 13 : mesure de la profondeur d’une rivière ...................... 142 5.19 Projet 14 : radar de recul à ultrasons avec buzzer ...................... 144 5.20 Projet 15 : affichage de caractères personnalisés sur l’écran LCD ........... 147 5.21 Projet 16 : dé sur écran LCD 149 5.22 Projet 17 : utilisation d’un module d’horloge en temps réel (RTC) –réglage/affichage de la date et de l’heure ............................... 150 5.23 Projet 18 : journal horodaté de la température 155 5.24 Projet 19 : GPS – affichage des coordonnées géographiques sur écran LCD .... 158 Chapitre 6 • Modulation de largeur d’impulsion (PWM) .................... 165 6.1 Vue d’ensemble 165 6.2 Modulation de largeur d’impulsion : les bases .......................... 165 6.3 Canaux PWM du Raspberry Pi Pico W ................................ 167 6.4 Projet 1 : production d’un signal PWM à 1000 Hz, avec un rapport cyclique de 50% ....................................................... 168 6.5 Projet 2 : variateur de luminosité d’une LED ........................... 169 6.6 Projet 3 : bougie électronique 170 6.7 Projet 4 : variateur de vitesse pour moteur à courant continu à balais ......... 171 6.8 Projet 5 : générateur de fréquence avec écran LCD et potentiomètre 173 6.9 Projet 6 : mesure de fréquence et de rapport cyclique d’un signal PWM ........ 175 6.10 Projet 7 : création de sons 176 Chapitre 7 • Projets avec un écran TFT ................................. 180 7.1 TFT : quèsaco ? ............................................... 180 7.2 Quel écran TFT ? 180 7.3 Connexion de l’écran TFT au Raspberry Pi Pico W ....................... 181 7.4 Bibliothèque du pilote de l’écran TFT ST7735 .......................... 182 7.4.1 Dessin de formes simples ...................................... 183 7.4.2 Affichage de texte ............................................ 187 7.4.3 Autres fonctions TFT 188 7.5 Projet 1 : compteur de secondes ................................... 190
Raspberry Pi Pico W ● 8 7.6 Projet 2 : mesure de temps de réaction .............................. 193 7.7 Projet 3 : mesure de température et d’humidité – affichage sur écran TFT ...... 196 7.8 Projet 4 : mesures de température ambiante et températures min./max., mesure d’humidité – affichage sur écran TFT ............................. 200 7.9 Projet 5 : thermostat marche/arrêt – avec boutons de réglage de la température de consigne et affichage sur écran TFT ................................. 203 7.10 Projet 6 : thermostat marche/arrêt – avec codeur rotatif pour le réglage de la température de consigne et affichage sur écran TFT ........................ 207 7.11 Projet 7 : affichage d’images bitmap sur un écran TFT 212 7.12 Projet 8 : utilisation d’un clavier de 4×4 touches ....................... 214 7.13 Projet 9 : exercices de multiplication – avec clavier à 4×4 touches et écran TFT 219 7.14 Projet 10 : calculatrice – avec clavier à 4×4 touches et écran TFT ........... 223 7.15 Projet 11 : jeu de devinette – avec clavier à 4×4 touches et écran TFT ....... 227 Chapitre 8 • Projets avec le bus I2C .................................... 231 8.1 Vue d’ensemble 231 8.2 Bus I2C..................................................... 231 8.3 Broches I2C du Raspberry Pi Pico W 231 8.4 Projet 1 : circuit d’extension de port I2C .............................. 233 8.5 Projet 2 : capteur de température TMP102 – avec écran TFT 238 Chapitre 9 • Projets avec un écran OLED ................................ 245 9.1 Vue d’ensemble ............................................... 245 9.2 Installation du pilote logiciel SSD1306 246 9.3 Interface matérielle ............................................ 246 9.4 Affichage de texte sur écran OLED .................................. 247 9.5 Affichage des formes simples ..................................... 249 9.6 Autres fonctions utiles .......................................... 251 9.7 Projet 1 : compteur de secondes 255 9.8 Projet 2 : dessiner des images bitmap ............................... 257 9.9 Projet 3 : thermomètre avec capteur numérique DS18B20 et écran OLED 262
SOMMAIRE ● 9 9.10 Projet 4 : mesure de la fréquence cardiaque (pouls) .................... 265 Chapitre 10 • Utilisation du Bluetooth avec le Raspberry Pi Pico W ........... 270 10.1 Vue d’ensemble .............................................. 270 10.2 Interface Bluetooth du Raspberry Pi Pico W........................... 270 10.3 Projet 1 : piloter trois LED par Bluetooth depuis un smartphone ............ 271 10.4 Projet 2 : envoi de la température interne du Raspberry Pi Pico W à un smartphone 275 Chapitre 11 • Utilisation du Wi-Fi avec le Raspberry Pi Pico W ............... 278 11.1 Vue d’ensemble .............................................. 278 11.2 Connexion à un réseau sans fil 278 11.3 Projet 1 : scanner le réseau local .................................. 278 11.4 Utilisation de la bibliothèque Socket 280 11.5 Projet 2 : pilotage d’une LED depuis un smartphone par Wi-Fi –avec protocole UDP ............................................... 282 11.6 Projet 3 : affichage de la température interne sur un smartphone par Wi-Fi .... 285 11.7 Projet 4 : commande à distance depuis un navigateur internet (sur smartphone ou PC) – serveur web ............................................. 288 11.8 Projet 5 : stockage de la température ambiante et de la pression atmosphérique dans le nuage ................................................... 293 Chapitre 12 • Projets RFID........................................... 301 12.1 Vue d’ensemble 301 12.2 Brochage du lecteur RFID RC522 .................................. 302 12.3 Interfaçage du lecteur RFID RC522 avec le Raspberry Pi Pico W 302 12.4 Projet 1 : lire L’ID d’une radio-étiquette ............................. 303 12.5 Projet 2 : ouverture d’une porte avec serrure RFID et relais 305 12.6 Projet 3 : système d’accès avec plusieurs étiquettes RFID et écran LCD ....... 307 Index ........................................................... 312

Préface

Un microcontrôleur est essentiellement un ordinateur monopuce comprenant une unité centrale, une mémoire, des circuits d’entrée-sortie, des temporisateurs, des circuits d’interruption, des circuits d’horloge et plusieurs autres circuits et modules, tous logés dans une seule puce de silicium. Les capacités et la vitesse des premiers microcontrôleurs étaient limitées, et leur consommation était considérable. La plupart des premiers microcontrôleurs étaient des processeurs à 8 bits avec des vitesses d’horloge de l’ordre du mégahertz, et ils ne disposaient que de centaines d’octets de mémoire de programme et de données. Ces microcontrôleurs étaient traditionnellement programmés avec le langage assembleur des processeurs cibles. Aujourd’hui, les microcontrôleurs à 8 bits sont encore couramment utilisés, notamment dans le cadre de petits projets où il n’est pas nécessaire de disposer d’une grande quantité de mémoire ou d’une vitesse élevée. Avec l’évolution de la technologie des puces, nous disposons désormais de microcontrôleurs à 32 et 64 bits, avec plusieurs gigaoctets de mémoire et des vitesses de l’ordre de plusieurs gigahertz. Les microcontrôleurs sont aujourd’hui programmés avec des langages de haut niveau tels que C, C#, BASIC, PASCAL, JAVA, etc.

Le Raspberry Pi Pico est une carte à microcontrôleur très puissante, conçue spécialement pour l’informatique interactive. Le lecteur doit savoir que ce type de carte est très différent des ordinateurs monocartes comme le Raspberry Pi 4 (et les autres membres de la famille Raspberry Pi). Il n’y a pas de système d’exploitation sur le Raspberry Pi Pico. Les cartes comme le Raspberry Pi Pico ne peuvent exécuter qu’une seule tâche. Elles sont utilisées dans des applications de commande et de surveillance en temps réel.

Le Raspberry Pi Pico est doté de la puce ARM Cortex-M0+ RP2040 à double cœur, rapide et très efficace, fonctionnant jusqu’à 133 MHz. La puce intègre 264 Ko de SRAM et 2 Mo de mémoire Flash. Ce qui rend le Raspberry Pi Pico très attrayant, c’est son grand nombre de broches GPIO, de fonctions de temporisation précises et de modules d’interfaçage avec des périphériques couramment utilisés, tels que SPI, I2C, UART, PWM.

Sorti en 2022, le Raspberry Pi Pico W est le dernier-né de la famille des cartes à microcontrôleur Pico. Le « Pico W » est presque identique au « Pico » standard, car il présente une différence majeure : par rapport aux autres membres de la famille Pico, le « Pico W » dispose d’un module Wi-Fi embarqué, permettant ainsi à la carte d’être utilisée dans de nombreux projets de communication, de commande, et surtout dans les projets de type Internet des Objets. La carte Pico W peut également communiquer par Bluetooth, mais le micrologiciel Bluetooth n’était pas prêt au moment de la rédaction de ce livre.

Le Raspberry Pi Pico standard et le Raspberry Pi Pico W sont faciles à programmer avec certains des langages de haut niveau les plus courants, tels que MicroPython ou C/C++. L’internet regorge de notes d’application, de tutoriels et de fiches techniques sur l’utilisation du Pico ou du Pico W.

Ce livre est une introduction à l’utilisation de la carte de développement à microcontrôleur Raspberry Pi Pico W avec le langage de programmation MicroPython. Tous les projets du

● 10

livre sont décrits dans l’environnement de développement intégré (EDI) Thonny, nous recommandons aux lecteurs d’utiliser cet EDI. Le livre contient de nombreux projets testés et fonctionnels, couvrant presque tous les aspects du Raspberry Pi Pico W. À l’exception des montages qui requièrent le Wi-Fi, tous les projets du livre peuvent également être reproduits avec le Raspberry Pi Pico standard sans aucune modification.

En principe, la description des projets est structurée de la manière suivante afin de faciliter la lecture :

• Titre

• Brève description

• Objectif

• Schéma fonctionnel

• Câblage

• Listing du programme avec description complète

J’espère que vos prochains montages avec un microcontrôleur seront réalisés avec une carte Raspberry Pi Pico W, et que ce livre vous sera utile dans le développement de vos projets.

Préface ● 11
Dogan Ibrahim

Chapitre 1 • Entrailles du Raspberry Pi Pico W

1.1 Préambule

Le Raspberry Pi Pico W est une carte dotée d’un microcontrôleur, conçue par la Fondation Raspberry Pi. Cette carte contient le microcontrôleur RP2040. Dans ce chapitre, nous examinons en détail le matériel de la carte à microcontrôleur Raspberry Pi Pico W. À partir de maintenant, cette carte avec microcontrôleur sera simplement appelée « Pico ».

1.2 Caractéristiques matérielles du Pico

Le Pico est une carte à microcontrôleur très bon marché (de 5 à 9 €), animée par la puce RP2040 avec un processeur Cortex-M0+ à double cœur. La figure 1.1 est une vue du dessus de la petite carte Pico. Au milieu de la carte se trouve la minuscule puce RP2040 de 7×7 mm logée dans un boîtier QFN-56. Sur les deux bords longs de la carte, il y a au total 40 trous métalliques de couleur or pour les broches GPIO (General Purpose Input/Output). Vous devez souder des broches dans ces trous pour pouvoir facilement connecter des composants externes à la carte. Les trous sont repérés en commençant par le numéro 1 dans le coin inférieur gauche de la carte (sous le connecteur micro-USB) et les numéros augmentent tout autour de la carte jusqu’au numéro 40 qui se trouve dans le coin supérieur gauche (au-dessus du connecteur micro-USB). La carte est compatible avec une platine d’essai (c’est-à-dire avec un écartement des broches de 0,1 pouce). Après le soudage des broches, la carte peut être montée sur une platine d’essai pour faciliter la connexion aux broches GPIO avec des fils de liaison. À chaque extrémité de ces deux rangées de trous, il y a des découpes circulaires qui permettent d’enficher le Pico sur d’autres cartes sans avoir de broches physiques.

Sur l’un des bords de la carte se trouve le port micro-USB B qui permet d’alimenter la carte et de la programmer. À côté de ce port USB, il y a une LED « utilisateur » embarquée qui peut être utilisée pendant le développement des programmes. À côté de cette LED, il y a un bouton nommé BOOTSEL qui sert pendant la programmation du microcontrôleur comme vous le verrez dans les chapitres suivants. À côté de la puce RP2040, il y a trois trous où il est possible d’établir des connexions externes. Celles-ci sont utilisées pour déboguer vos programmes à l’aide du Serial Wire Debug (SWD). À l’autre extrémité de la carte se trouve le module Wi-Fi 2,4 GHz à bande unique (802.11n). L’antenne intégrée se trouve à côté du module Wi-Fi.

● 12 Raspberry Pi Pico W
Figure 1.1 : vue du dessus de la carte Pico.

La figure 1.2 montre le dessous de la carte Pico. Ici, toutes les broches GPIO sont identifiées par des lettres et des chiffres. Vous remarquerez les types de lettres et de chiffres suivants :

GND masse de l’alimentation (masse numérique)

AGND masse de l’alimentation (masse analogique)

3V3 alimentation de +3,3 V (sortie)

GP0 à GP22 GPIO numériques

GP26_A0 à GP28_A2 entrées analogiques

ADC_VREF tension de référence du convertisseur analogiquenumérique

TP1 à TP6 points de test

SWDIO, GND, SWCLK interface de débogage

RUN broche RUN par défaut. Appliquer un signal de niveau BAS pour réinitialiser le RP2040.

3V3_EN cette broche active par défaut l’alimentation de +3,3 V Il est possible de désactiver le +3,3 V en connectant cette broche à un signal de niveau BAS.

VSYS tension d’entrée du système (1,8 V à 5,5 V) utilisée par l’alimentation monophasée (SMPS) intégrée pour produire une tension de +3,3 V pour la carte.

VBUS tension d’entrée du port micro-USB (+5 V)

Certaines des broches GPIO sont utilisées pour les fonctions internes de la carte. Ce sont les suivantes :

GP29 (entrée) utilisée en mode CA/N (ADC3) pour mesurer VSYS/3

GP24 (entrée) détection VBUS ; niveau HAUT si VBUS présent, sinon niveau BAS

GP23 (sortie) commande la broche d’économie d’énergie de l’alimentation SMPS embarquée

Chapitre 1 • Entrailles du Raspberry Pi Pico W ● 13
Figure 1.2 : vue du dessous de la carte Pico.

Les spécifications de la carte Pico sont les suivantes :

• Processeur à 32 bits RP2040 Cortex-M0+ à double cœur, fonctionnant à 133 MHz

• Mémoire flash Q-SPI de 2 Mo

• Mémoire SRAM de 264 Ko

• 26 GPIO (broches d’entrée/sortie compatibles +3,3 V)

• 3 broches de convertisseur analogique-numérique à 12 bits

• Bibliothèques de virgule flottante accélérées sur puce

• Puce sans fil monobande Infineon CYW43439 intégrée, interface sans fil à 2,4 GHz (802.11b/g/n) et Bluetooth 5.2 (non pris en charge au moment de la rédaction)

• Port SWD (Serial Wire Debug)

• Port micro-USB (USB 1.1) pour l’alimentation (+5 V) et les données (programmation)

• Interface de bus : 2× UART, 2× I2C, 2× SPI

• 16 canaux MLI (modulation de largeur d’impulsion)

• 1× timer (avec 4 alarmes), 1× compteur en temps réel

• Capteur de température embarqué

• LED intégrée, reliée à GPIO0, pilotée par le module Wi-Fi 43439

• Carte crenelée permettant une soudure directe sur des cartes porteuses

• 8× automate fini avec E/S programmable (PIO) pour mettre en œuvre des interfaces personnalisées

• Programmation en MicroPython, C, C++

• Programmation par glisser-déposer en utilisant une mémoire de masse connectée par USB

Nota : sur la carte Raspberry Pi Pico standard, la LED intégrée est reliée à la broche GP25 et est disponible pour l’utilisateur. Sur la carte Raspberry Pi Pico W, la LED intégrée est pilotée par le module Wi-Fi 43439.

Les broches GPIO du Pico supportent une tension de +3,3 V. Il est donc important de veiller à ne pas dépasser cette tension lors de la connexion aux broches GPIO de périphériques d’entrée externes. Pour relier aux broches GPIO du Pico des composants avec des sorties en +5 V, il faut se servir de circuits logiques de conversion du +5 V en +3,3 V ou de circuits diviseurs de tension avec des résistances.

La figure 1.3 montre un circuit diviseur de tension avec des résistances qui permet d’abaisser le +5 V à +3,3 V.

Raspberry Pi Pico W
14
Figure 1.3 : circuit diviseur de tension avec des résistances.

Chapitre 1 • Entrailles du Raspberry Pi Pico W

1.3 Comparaison avec l’Arduino UNO

Arduino UNO est l’une des cartes de développement à microcontrôleur les plus populaires, utilisée par les étudiants, les ingénieurs en exercice et les amateurs. Le tableau 1.1 présente une comparaison entre le Raspberry Pi Pico W et l’Arduino UNO. Il ressort clairement de ce tableau que le Pico W est beaucoup plus rapide que l’Arduino UNO, qu’il dispose d’une mémoire flash et d’une mémoire de données plus grosses, qu’il offre le Wi-Fi, qu’il dispose de plus de broches d’entrée/sortie numériques et d’un capteur de température intégré. L’Arduino UNO fonctionne en +5 V et ses broches GPIO sont compatibles avec le +5 V. Les avantages de l’Arduino UNO sont peut-être que cette carte possède une mémoire EEPROM intégrée et que son CA/N est à 6 canaux au lieu de 3.

Fonction Raspberry Pi Pico W Arduino UNO

Noyau

1.4 Conditions de fonctionnement et mise sous tension du Pico

Les conditions de fonctionnement recommandées pour le Pico sont les suivantes :

15
Microcontrôleur RP2040 Atmega328P
Simple cœur,
bits RAM 264 Ko 2 Ko Flash 2 Mo 32 Ko Vitesse de la CPU 48 MHz à 133 MHz 16 MHz EEPROM Aucune 1 Ko Wi-Fi Puce sans fil CYW43439 Aucun Alimentation +5 V par le port USB +5 V par le port USB Autre alimentation 2 à 5 V via la broche VSYS 7 à 12 V Tension de fonctionnement du MCU +3,3 V +5 V Nombre de GPIO 26 20 Canaux de CA/N 3 6 Liaison UART matérielle 2 1 Bus I2C matériel 2 1 Bus SPI matériel 2 1 MLI matérielle 16 6 Langages de programmation MicroPython, C, C++ C (EDI Arduino) LED embarquée 1 1 Coût 9 € 30 €
et bits Double cœur, 32 bits, Cortex-M0+
8
Tableau 1.1 : comparaison entre Raspberry Pi Pico W et Arduino UNO.
• Température de fonctionnement : −20 ºC à +85 ºC • Tension VBUS : +5 V ±10% • Tension VSYS : +1,8 V à +5,5 V

Une alimentation monophasée (SMPS) intégrée produit les +3,3 V nécessaires à l’alimentation du RP2040 à partir d’une gamme de tensions d’entrée allant de 1,8 V à +5,5 V. Par exemple, trois piles alcalines AA permettent de fournir +4,5 V pour alimenter le Pico.

Le Pico peut être alimenté de plusieurs façons. La méthode la plus simple consiste à raccorder le port micro-USB sur une source d’alimentation de +5 V, comme le port USB d’un ordinateur ou un bloc d’alimentation avec une sortie de +5 V. L’entrée VSYS (voir figure 1.4) est alors alimentée par une diode Schottky. La tension sur l’entrée VSYS est donc la tension VBUS moins la chute de tension aux bornes de la diode Schottky (environ +0,7 V). Les broches VBUS et VSYS peuvent être court-circuitées si la carte est alimentée par un port USB externe de +5 V. Cela augmentera légèrement la tension d’entrée et réduira donc les ondulations sur VSYS. La tension VSYS est fournie à l’alimentation SMPS par le convertisseur RT6150 qui produit une tension fixe de +3,3 V pour l’unité centrale et les autres composants de la carte. La tension sur VSYS est divisée par trois et est disponible sur la broche d’entrée analogique GPIO29 (ADC3) qui peut facilement être surveillée. La broche GPIO24 vérifie l’existence de la tension VBUS et est au niveau logique HAUT si la tension VBUS est présente.

Une autre méthode pour alimenter le Pico consiste à appliquer une tension externe (+1,8 V à +5,5 V) directement sur l’entrée VSYS (par exemple avec des piles ou une alimentation externe). Vous pouvez également utiliser l’entrée USB et l’entrée VSYS ensemble pour alimenter le Pico, par exemple pour fonctionner à la fois avec des piles et le port USB. Dans ce cas, il faut alors placer une diode Schottky sur l’entrée VSYS pour éviter que les alimentations n’interfèrent entre elles. La tension la plus élevée alimentera VSYS.

1.5 Brochage du microcontrôleur RP2040 et de la carte Pico

La figure 1.5 montre le brochage du microcontrôleur RP2040, logé dans un boîtier à 56 broches. Le brochage de la carte Pico est présenté en détail à la figure 1.6. Comme vous pouvez le constater, la plupart des broches ont plusieurs fonctions. Par exemple, la broche GPIO0 (broche 1) est à la fois la broche UART0 TX, la broche I2C0 SDA et la broche SPI0 RX.

Raspberry Pi Pico W ● 16
Figure 1.4 : alimentation du Pico.
● 17
Figure 1.5 : brochage du microcontrôleur RP2040. W
Chapitre 1 • Entrailles du Raspberry Pi Pico

La figure 1.7 présente un schéma fonctionnel simplifié de la carte Pico. Notez que les broches GPIO sont directement reliées de la puce au port GPIO. Les broches GPIO 26 à 28 peuvent être utilisées soit comme GPIO numériques, soit comme entrées de CA/N. Les entrées du CA/N GPIO26-29 ont des diodes en polarisation inverse jusqu’à 3 Valim et donc la tension d’entrée ne doit pas dépasser 3,3 V + 300 mV. Un autre point remarquable est que si le RP2040 n’est pas alimenté, les tensions appliquées sur les broches GPIO26-29 peuvent fuir à travers la diode vers l’alimentation (il n’y a pas de problème avec les autres broches GPIO et une tension peut être appliquée lorsque le RP2040 n’est pas alimenté).

Raspberry Pi Pico W ● 18
Figure 1.6 : brochage du Pico.

1.6 Autres cartes à base de microcontrôleur RP2040

Il existe de nombreuses autres cartes de développement basées sur le microcontrôleur RP2040. Au moment de la rédaction de ce livre, on peut citer entre autres :

• Adafruit - Feather RP2040

• Adafruit - ItsyBitsy RP2040

• Adafruit - QT Py RP2040

• Pimoroni - PicoSystem

• Pimoroni - Tufty 2040

• Arduino Nano RP2040 Connect

• SparkFun - Thing Plus RP2040

• Pimoroni - Pico Explorer Base

• Pimoroni - Pico Lipo

• SparkFun - MicroMod RP2040 Processor

• SparkFun - Pro Micro RP2040

• Pimoroni - Pico RGB Keypad Base

• Pimoroni - Pico Omnibus

• Pimoroni - Pico VGA Demo Base

• Cytron - Maker Pi RP2040 development board

• Technoblogy - Minimal RP2040 board

• Pimoroni - Tiny 2040

• Seeed Studio - Wio RP2040 Mini development board

• Seeed Studio - XIAO RP2040 development board

• Etc.

Chapitre 1 • Entrailles du Raspberry Pi Pico W ● 19
Figure 1.7 : schéma fonctionnel simplifié.

Chapitre 2 • Programmation du Raspberry Pi Pico W

2.1 Vue d’ensemble

Au moment de la rédaction de ce livre, le Raspberry Pi Pico W peut être programmé avec les langages de programmation suivants :

• C/C++

• MicroPython

• Langage assembleur

Bien que le Pico soit configuré par défaut pour être programmé avec le puissant et populaire langage C/C++, de nombreux débutants trouvent plus facile d’utiliser MicroPython, une version du langage de programmation Python développée spécifiquement pour les microcontrôleurs.

Dans ce chapitre, vous apprendrez à installer et à utiliser le langage de programmation MicroPython. Vous utiliserez l’environnement de développement intégré (EDI) Thonny qui a été développé spécifiquement pour les programmes Python.

Les prochains chapitres présentent de nombreux projets avec le Pico programmés en MicroPython, fonctionnels et entièrement testés.

2.2 Installation de MicroPython sur le Pico W

Il faut installer MicroPython sur le Raspberry Pi Pico W avant que la carte puisse être utilisée. Une fois installé, MicroPython reste sur votre Pico à moins qu’il ne soit écrasé par quelque chose d’autre. L’installation de MicroPython nécessite une connexion à l’internet, qui n’est requise qu’une seule fois. Vous pouvez le faire en utilisant soit un Raspberry Pi (par ex. Raspberry Pi 4), soit un PC. Dans cette section, vous verrez l’installation avec un PC (par ex. Windows 10).

Les étapes sont les suivantes :

• Assurez-vous que votre PC est connecté à l’internet.

• Téléchargez le fichier Raspberry Pi Pico W MicroPython UF2 dans un dossier (par ex. Downloads) sur votre PC à partir du lien suivant. Au moment de la rédaction de ce livre, le fichier avait pour nom : rp2-pico-w-20220909unstable-v1.19.1-389-g4903e48e3.uf2

https://www.raspberrypi.com/documentation/microcontrollers/micropython.html#drag-and-drop-micropython

• Appuyez sur le bouton BOOTSEL de votre Pico et maintenez-le enfoncé.

• Connectez votre Pico au port USB de votre PC à l’aide d’un câble micro-USB tout en maintenant le bouton enfoncé.

• Attendez quelques secondes et relâchez le bouton BOOTSEL.

● 20

• Le Pico doit apparaître comme un lecteur amovible baptisé RPI-RP2, comme illustré à la figure 2.1 (lecteur E : dans ce cas).

• Faites glisser et déposez le fichier MicroPython UF2 téléchargé sur le volume RPI-RP2. Votre Pico va redémarrer, et maintenant vous pouvez exécuter des programmes écrits en MicroPython sur votre Pico.

• La mise hors tension du Pico ne supprimera pas MicroPython de sa mémoire.

2.3 Utilisation de l’EDI Thonny sur PC

Dans cette section, vous allez apprendre à utiliser Thonny sur PC pour écrire et exécuter vos programmes.

Tout d’abord, vous devez installer Thonny sur votre PC (s’il n’est pas déjà installé). Les étapes sont les suivantes :

• Allez sur le site web Thonny.org :

https://thonny.org/

• Téléchargez la dernière version de Thonny pour Windows et installez-la (voir figure 2.2). Vous pouvez sélectionner la langue de l’interface, le français est proposé.

2 • Programmation du
Pi Pico W ● 21
Chapitre
Raspberry
Figure 2.1 : Pico comme lecteur amovible RPI-RP2.

• Vous devriez voir une icône sur le bureau (figure 2.3) de votre PC. Doublecliquez dessus pour lancer Thonny.

• L’écran de démarrage de Thonny sur PC est illustré à la figure 2.4.

• Cliquez sur l’étiquette Python dans le coin inférieur droit de l’écran puis sur « Configurer l’interpréteur », cherchez et sélectionnez MicroPython (Raspberry Pi Pico).

• Vous êtes maintenant prêt à écrire vos programmes. Prenons une instruction Python très simple pour tester l’installation de MicroPython sur votre Pico.

• Saisissez l’instruction suivante dans la partie inférieure de l’écran (dans Shell) : print("hello from Thonny on PC")

Raspberry Pi Pico W ● 22
Figure 2.2 : cliquez pour installer Thonny. Figure 2.3 : icône Thonny sur le bureau. Figure 2.4 : écran de démarrage de Thonny sur PC.

• Si vous cliquez sur Exécuter > Exécuter le script courant, vous devriez voir le message hello from Thonny on PC s’afficher comme indiqué dans la figure 2.5

Dans ce livre, vous utiliserez Thonny sur PC pour écrire des programmes et les exécuter sur le Raspberry Pi Pico W.

Les sections restantes de ce chapitre présentent des programmes d’exemple simples, purement logiciels. L’objectif de ce chapitre est de passer en revue les notions de base de la programmation en Python. Ce livre n’a pas pour but d’enseigner le langage de programmation Python. Les lecteurs intéressés peuvent trouver de nombreux livres et tutoriels sur l’internet pour apprendre le langage de programmation Python.

2.4 Écrire un programme en utilisant Thonny

Dans la section précédente, vous avez appris à exécuter une instruction en ligne à l’aide du Shell de Thonny. Dans presque toutes les applications, vous devez écrire des programmes. À titre d’exemple, les étapes pour écrire et exécuter un programme très simple d’une ligne pour afficher le message Bonjour de la part de… sont données ci-dessous :

• Saisissez les instructions du programme dans la partie supérieure de l’écran, comme le montre la figure 2.6.

• Cliquez sur Fichier puis sur Enregistrer sous et donnez un nom à votre programme, par exemple FirstProg. Vous avez la possibilité d’enregistrer le programme soit sur votre PC (Cet ordinateur), soit sur le Pico (Raspberry Pi Pico). Cliquez sur Raspberry Pi Pico pour l’enregistrer sur le Pico (figure 2.7). Entrez le nom de votre programme (FirstProg) et cliquez sur OK (remarquez que le fichier est enregistré avec l’extension .py).

Chapitre 2 • Programmation du Raspberry Pi Pico W ● 23
Figure 2.5 : affichage du message. Figure 2.6 : écrire le programme dans la partie supérieure de l’écran.

• Cliquez sur l’icône de la flèche verte en haut de l’écran pour exécuter votre programme. Le résultat du programme s’affiche dans la partie inférieure de l’écran, comme le montre la figure 2.8.

2.5

Programmes MicroPython purement logiciels, exécutés sur le Raspberry Pi Pico W

Exemple 1 : moyenne de deux nombres saisis sur le clavier du PC Dans cet exemple, deux nombres saisis sur le clavier du PC sont lus et leur moyenne est calculée puis affichée. Le but de cet exemple est de montrer comment les données peuvent être lues à partir du clavier.

Solution 1

Le programme s’appelle Average. La figure 2.9 présente le listing du programme et un exemple de son exécution. La fonction input est utilisée pour lire les nombres sous forme de chaînes à partir de la saisie au clavier. Ces chaînes sont ensuite converties en nombres à virgule flottante et stockées dans les variables n1 et n2. La moyenne est calculée en additionnant les deux nombres puis en divisant par deux cette somme. Le résultat est affiché à l’écran.

Raspberry Pi Pico W ● 24
Figure 2.7 : cliquez sur Raspberry Pi Pico pour enregistrer votre programme. Figure 2.8 : sortie du programme.

Exemple 2 : moyenne de dix nombres saisis sur le clavier du PC

Dans cet exemple, dix nombres sont saisis sur le clavier et leur moyenne est affichée. Le but de cet exemple est de montrer comment construire une boucle en Python.

Solution 2

Le programme s’appelle Average10. La figure 2.10 présente le listing du programme et un exemple de son exécution. Dans ce programme, une boucle est construite pour aller de 0 à 9 (c’est-à-dire dix itérations). À l’intérieur de cette boucle, les nombres saisis sur le clavier sont lus, additionnés les uns aux autres et stockés dans la variable sum. La moyenne est ensuite calculée et affichée en divisant sum par dix. Remarquez qu’il n’y a aucune nouvelle ligne après l’instruction de saisie, car cette dernière contient l’option end = ‘ ‘ .

Chapitre 2 • Programmation du Raspberry Pi Pico W ● 25
Figure 2.9 : programme Average et son exécution.

Exemple 3 : surface d’un cylindre

Dans cet exemple, le rayon et la hauteur d’un cylindre sont saisis sur le clavier et sa surface est affichée à l’écran.

Solution 3

Le programme s’appelle CylArea. La figure 2.11 présente le listing du programme et un exemple de son exécution. La surface d’un cylindre est donnée par :

surface = 2πrh

Où r et h sont respectivement le rayon et la hauteur du cylindre. Dans ce programme, la bibliothèque math propre au langage Python est importée afin que la fonction Pi puisse être utilisée dans le programme. La surface du cylindre est affichée après lecture du rayon et de la hauteur.

Raspberry Pi Pico W ● 26
Figure 2.10 : programme Average10 et son exécution.

Exemple 4 : conversion de ºC en ºF Dans cet exemple, le programme lit une valeur en degrés Celsius saisie sur le clavier, la convertit en degrés Fahrenheit et affiche le résultat de la conversion.

Solution 4

Le programme s’appelle CtoF. La figure 2.12 présente le listing du programme et un exemple de son exécution. La formule pour convertir les ºC en ºF est la suivante :

F = 1,8 × C + 32

Chapitre 2 • Programmation du Raspberry Pi Pico W ● 27
Figure 2.11 : programme CylArea et son exécution. Figure 2.12 : programme CtoF et son exécution.
● 312 Index A absorption de courant 48 ADC_VREF 13 adresse I2C 127 afficheurs à 7 segments 87 AGND 13 anode commune 88 assembleur 20 B bande transporteuse 95 bibliothèque socket 280 Bluetooth 270 BMP280 293 BOOTSEL 20 bougie électronique 170 bus I2C 102, 231 C calculatrice 33, 223 calculs de surface 38 canaux PWM 167 capteur à ultrasons 138 caractères personnalisés 147 carré et cube 35 cathode commune 88 chenillard 76 clavier 214 client 281 clignotement d’une LED 47 codeur rotatif 207 compteur binaire 71 convertisseur analogique-numérique 113 Cortex-M0+ 14 création de sons 176 cylindre 26 CYW43439 14 D dé électronique 67 définition d’une fonction 28 dé sur écran LCD 149 diviseur de tension 14 DS18B20 262 E écran LCD avec une interface I2C 126 écran OLED 245 écran TFT 180 équation du second degré 40 extension de port 233 F factorielle 41 feux de circulation 79 fonctions TFT 188 fonction trigonométrique 29 fréquence cardiaque 265 G générateur de fréquence 173 GPS 158 H HD44780 100 horloge en temps réel 150 I ID d’une radio-étiquette 303 images bitmap 257 images bitmap sur un écran TFT 212 intégration 43 intensité de la lumière ambiante 122 intérêts composés 42 interruptions par boutons-poussoirs 54 J jeu de devinette 227 journal horodaté 155 K KY-013 133 L LCD à port parallèle 104 luminosité d’une LED 169 M manipulation de fichier 34 matrices 37, 41 mesure de température et d’humidité 196
Index ● 313 modulation de largeur d’impulsion 165 moyenne 24 O ohmmètre 124 P pair ou impair 36 profondeur d’une rivière 142 PWM 165 R radar de recul 144 rapport cyclique 165 RC522 302 registre à décalage 71, 77 régulateur de température ON/OFF 119 résistance 31 RFID 301 RP2040 12 RPI-RP2 21 RVB 59 S serrure RFID 305 serveur 281 serveur web 288 Shell 22 signal SOS 51 smartphone 270, 275 sonde logique 83, 85 source de courant 48 SSD1306 246 ST7735 182 Steinhart-Hart 134 SWD 14 T TCP/IP 281 température analogique externe 117 température interne 116 temporisation 53 temps de réaction 110, 193 thermistance 133 thermostat marche/arrêt 203 ThingSpeak 294 Thonny 21 tirage vers le haut 57 TMP102 238 U UDP 281 V VBUS 13, 15 VSYS 13, 15 W wake 56 Wi-Fi 278

booksbooks

Raspberry Pi Pico W en un tournemain

Maîtrise de la puce RP2040 avec plus de 60 projets à réaliser et à programmer

Les cartes Raspberry Pi Pico et Pico W sont animées par un microcontrôleur ARM Cortex M0+ RP2040 à double cœur, rapide, e icace et peu coûteux, qui fonctionne jusqu’à 133 MHz et dispose de 264 Ko de SRAM et de 2 Mo de mémoire Flash. Outre une vaste mémoire, le Pico et le Pico W disposent de nombreuses broches GPIO et d’interfaces telles que CA/N, SPI, I2C, UART, MLI, de fonctions de temporisation, d’une interface de débogage matériel et d’un capteur de température interne. La carte Raspberry Pi Pico W comporte en plus une puce CYW43439 Bluetooth et Wi-Fi d’Infineon. Au moment de la rédaction de ce livre, le micrologiciel Bluetooth pour le Pico W n’était pas encore disponible. Le Wi-Fi à 2,4 GHz est toutefois entièrement pris en charge avec les protocoles 802.11b/g/n.

Ce livre est une introduction à l’utilisation du Raspberry Pi Pico W avec le langage de programmation MicroPython. Les quelque soixante projets testés et opérationnels sont présentés à l’aide de l’environnement de développement intégré (EDI) Thonny. Les sujets abordés sont nombreux :

> Installation de MicroPython sur le Raspberry Pi Pico depuis un PC

> Interruptions de l’horloge et interruptions externes

> Convertisseur analogique-numérique (CA/N)

> Capteurs de température interne et externe

> Capteurs externes (pression, humidité, pouls, à ultrasons)

> Enregistrement de données

> MLI, UART, I2C et SPI

> Bluetooth, Wi-Fi et applis sur smarphone

> Convertisseur numérique-analogique (CN/A)

Tous les projets ont été testés et éprouvés. Ils peuvent être mis en œuvre sur le Raspberry Pi Pico ainsi que sur le Raspberry Pi Pico W. Toutefois les projets avec une liaison Wi-Fi ne fonctionnent que sur le Pico W. Une petite expérience en programmation et en électronique est nécessaire pour suivre les projets. De brèves descriptions, des schémas fonctionnels, des schémas détaillés du câblage des montages et des listings

MicroPython complets sont fournis pour tous les projets. Tous les listings présentés dans le livre sont disponibles gratuitement sur la page web de ce livre : www.elektor.fr.

Le professeur Dogan Ibrahim est titulaire d’une licence en génie électronique, d’une maîtrise en automatisme et d’un doctorat en traitement des signaux numériques.

Dogan a travaillé dans de nombreuses sociétés industrielles avant de revenir à la vie académique. Il est l’auteur de plus de 70 livres techniques et a publié plus de 200 articles techniques sur l’électronique, les microprocesseurs, les microcontrôleurs et les domaines connexes.

Elektor International Media www.elektor.fr

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.