Raspberry Pi Pico et MicroPython sous Windows
Cet article répond à la question : Comment utiliser le Raspberry Pi Pico avec MicroPython sous Windows ? Nous montrons également comment installer le bon pilote pour la "carte CDC" (que le Pico apparaîtra comme une fois MicroPython installé) sur Windows 8.1. (Nous discuterons également des différences entre MicroPython et CircuitPython le cas échéant - où la carte sera appelée "CircuitPython CDC Control").
Enfin, nous montrerons comment se connecter à la Pico en utilisant PuTTY, et une option plus confortable en utilisant Thonny (qui est un IDE Python, intégré à la Pico !).
Introduction : Qu'est-ce que le Pico et qu'est-ce que MicroPython ?
Le site Raspberry Pi Pico est une nouvelle carte de microcontrôleur de Raspberry Pi, équipée de la puce de microcontrôleur RP2040 développée en interne.
Raspberry Pi a intégré de nombreuses fonctionnalités intéressantes dans la RP2040 (ma préférée est PIO - programmable IO, qui permet d'émuler de nombreuses interfaces matérielles nécessitant une synchronisation précise, etc. - J'y reviendrai dans un autre article à l'avenir), et le Pico est une plateforme de référence très agréable sur laquelle le RP2040 est implémenté.
En quoi un Raspberry Pi Pico est-il différent d'un Raspberry Pi Zero W ?
La différence entre un microcontrôleur (comme le Pico) et un ordinateur monocarte (disons Pi Zero W) est à peu près la suivante : vous programmez le Pico directement (par exemple, en C), sans système d'exploitation, alors que le Pi Zero W fonctionne généralement sous Linux.
Cela présente des avantages, comme le temps réel, mais aussi des inconvénients : vous devez en savoir plus sur le matériel que vous utilisez et vous devez mettre en œuvre un grand nombre de fonctionnalités que vous tiendriez pour acquises sur un système d'exploitation moderne (par exemple, l'accès aux fichiers).
Le Pico dispose de moins de ressources que le Pi Zero W (par exemple, beaucoup moins de RAM, pas de GPU VideoCore, etc.) - mais il consomme moins d'énergie, et dispose de fonctionnalités supplémentaires, comme le PIO mentionné ci-dessus, et les entrées analogiques (ADC).
Le Pico est un bon choix pour les projets qui ne nécessitent pas nécessairement une connectivité réseau, une sortie HDMI, une entrée caméra et un traitement. En d'autres termes, si vous souhaitez vous interfacer avec du matériel, disposer d'une longue durée de vie de la batterie, etc.
Quels sont les logiciels qui existent déjà pour le Pico ?
Le Pico peut être flashé à l'aide de différents logiciels, qui sont fournis dans le manuel de l'utilisateur. Fichiers UF2 (voir le guide de démarrage de Pico). Raspberry Pi fournit plusieurs fichiers UF2 pour vous aider à démarrer :
- MicroPython (qui sera au centre de cet article) et un proche cousin, CircuitPython
- Faire clignoter une LED (Clignotement de l'UF2)
- Bonjour le monde (dira "Hello world" si vous vous connectez via un terminal)
- Picoprobe (utiliser un Pico pour déboguer un autre Pico)
- Réinitialisation de la mémoire flash (remet la mémoire Flash à zéro)
Il y a beaucoup plus d'exemples à trouver ici (code C).
Note : Je mets un lien vers les fichiers UF2 les plus récents au 30.01.2021 - en particulier MicroPython pourrait être mis à jour, alors assurez-vous de vérifier la page d'accueil de l'UF2. Page de démarrage du Raspberry Pi Pico.
MicroPython
Si la perspective de programmer en C vous semble un peu intimidante, vous pouvez commencer avec MicroPython. Dans ce cas, un logiciel est préinstallé sur le Raspberry Pi Pico (le fichier MicroPython UF2), qui exécutera un petit interpréteur Python.
Il est appelé MicroPython parce qu'il ne prend pas en charge l'intégralité de la bibliothèque standard Python 3. MicroPython est destiné à des environnements restreints, comme le Pico. Le Pico dispose d'un total de 2 Mo de RAM, ce qui ne permet pas de prendre en charge tout ce que Python 3 apporte avec lui. Vérifier cette page Github pour les différences entre CPython et MicroPython. Voici également le communiqué officiel Page d'accueil de MicroPythonet le la documentation officielle de MicroPython.
CircuitPython
Note : la plupart des instructions s'appliquent également aux cartes CircuitPython RP2040 sous Windows, par exemple la Adafruit Feather RP2040, mais vous devrez suivre des étapes un peu différentes - je soulignerai les différences dans cet article.
CircuitPython est une variante de MicroPython développée par Adafruit.
La carte elle-même sera appelée différemment dans votre gestionnaire de périphériques après le flashage (CircuitPython CDC Control) - et vous aurez besoin d'un logiciel différent bien sûr. Voici ce dont vous avez besoin pour commencer :
- Page de téléchargement Adafruit Feather RP2040 (Fichier CircuitPython 7.0.0 UF2)
Dans cet article, nous vous montrerons également comment installer les bibliothèques CircuitPython sur les appareils RP2040 sous Windows, et comment exécuter et arrêter les programmes à l'aide de Thonny.
Qu'obtiendrez-vous avec le MicroPython UF2 ?
Une fois MicroPython installé sur la Pico, vous pourrez vous connecter à la Pico à l'aide de la console série (nous montrerons comment dans cet article), et commencer à écrire du code Python sur la Pico.
Installation de MicroPython sur le Pico
- Couper l'alimentation de la Pico
- Appuyer sur le bouton BOOTSEL et le maintenir enfoncé
- branchez le Pico sur votre PC à l'aide d'un câble microUSB vers USB
- vous pouvez maintenant relâcher le bouton BOOTSEL
Le Pico devrait maintenant être visible dans votre système de fichiers, sous le nom de RPI-RP2 :
(Note en marge : je me demande ce qu'était le RPI-RP1).
La Pico émule un lecteur flash FAT32, qui contient deux fichiers : INDEX.HTM et INFO_UF2.TXT.
En fait, Windows Drive Manager indique que Pico est une clé USB FAT de 128 Mo.
Ne faites pas l'erreur d'essayer de stocker des fichiers sur le Pico de cette manièreils seront abandonnés silencieusement. Même si vous avez l'impression qu'ils sont écrits, c'est simplement Windows qui met en cache les opérations - vos fichiers disparaîtront ! Ai-je déjà mentionné que le Pico n'a en fait que 2 Mo de mémoire flash ? Il ment effrontément sur les 128MB ici (le RP2040 est supposé supporter jusqu'à 16MB de flash d'ailleurs, AFAIK).
Sidenote : Cela me rappelle un peu mon voyage en Inde, où j'ai acheté des clés USB d'une capacité de 128 GB - qui écrivent vos données au Nirvana. Lorsque j'ai essayé de rendre la clé et de me faire rembourser, le vendeur avait disparu... les aventures à vivre 🙂 .
Toutefois, si vous copiez le bon type de fichier - le fichier UF2 - sur ce lecteur, il sera reconnu et écrit.
Vous pouvez le glisser-déposer depuis votre navigateur, après l'avoir téléchargé, ou le copier-coller. Une fois la copie terminée, la Pico redémarrera automatiquement et vous ne verrez plus de clé USB.
Note : Si vous souhaitez utiliser CircuitPython, utilisez bien sûr le fichier CircuitPython UF2 à la place de cette étape.
Le Pico fonctionne maintenant (après le redémarrage) avec MicroPython, qui fournit un port série (COM-port) via USB. (En termes techniques, il s'agit d'un périphérique USB de classe 02 = Communications et contrôle du CDC et périphérique USB (sous-classe 02).
Connexion à la Pico, Windows 10
Windows 10 facilite la connexion au Pico, car le pilote de port COM nécessaire (usbser.inf) sera automatiquement installé et activé pour vous.
Pour vérifier le port COM sur lequel il se trouve, ouvrez votre gestionnaire de périphériques :
Ici, vous pourrez voir le nouveau périphérique série USB, avec le numéro du port COM (dont vous aurez besoin dans une seconde pour vous connecter), sous Ports (COM & LPT).
Pour vérifier qu'il s'agit bien du Pico qui exécute MicroPython, vous pouvez faire ce qui suit :
Cliquez sur View, puis sélectionnez Devices by Container :
Vous verrez ici une entrée "Board in FS mode", avec les deux nœuds "USB Composite Device" et "USB Serial Device (COM3)". Le COM3 est important, vous devrez l'utiliser pour PuTTY (voir ci-dessous).
Nous pouvons examiner les dispositifs plus en détail en cliquant dessus avec le bouton droit de la souris et en sélectionnant l'entrée de propriétés appropriée dans le menu contextuel. Les propriétés de la carte en mode FS sont vides :
Le dispositif composite USB affiche "Board in FS mode" (carte en mode FS) comme description du dispositif rapporté par le bus :
Note : il s'agit du Pico utilisant MicroPython. Lorsque vous le re-flasherez avec un logiciel différent, les résultats seront différents !
Le dispositif série USB lui-même présente des propriétés intéressantes :
Remarque : la description du périphérique de la carte sera "CircuitPython CDC Control" au lieu de "Board CDC" si vous utilisez CircuitPython.
Si vous savez ce que vous cherchez, les identifiants du matériel (VID = identifiant du fournisseur et PID = identifiant du produit) sont utiles :
VID_2E8A -> l'identifiant du vendeur est 2E8A (en hexadécimal) ou 11914 (en décimal), qui est Raspberry Pi
PID_0005 -> l'identifiant du produit est 5que la carte affichera lors de l'exécution de MicroPython (l'identifiant du produit par défaut est 3)
Sidenote : Journal de débogage du navigateur Chrome
Ces informations peuvent également être obtenues à l'aide du navigateur Chrome.
vous permettra de voir les appareils actuellement connectés
Retour à Windows 10 :
Comme vous le voyez dans la capture d'écran ci-dessus, Windows 10 a automatiquement installé usbser (USB Serial Driver) pour vous - vous pouvez donc commencer à utiliser la Pico immédiatement.
PuTTY
PuTTY est un client telnet / SSH. Vous l'utiliserez pour vous connecter à la Pico, et dialoguer avec le REPL de MicroPython. Téléchargez PuTTY ici. (Vous pouvez utiliser le programme d'installation Windows MSI 64 bits pour la plupart des installations de Windows 10).
Ouvrez PuTTY. Entrez les bons paramètres :
- Le type de connexion doit être réglé sur En série
- La ligne série doit être réglée sur ce que votre enquête a permis de découvrir. Dans mon cas, il s'agit de COM3. Dans votre cas, il s'agira probablement de quelque chose de différent !
- La vitesse peut être laissée à 9600 pour l'instant
Cliquez sur Ouvrir, et un terminal s'ouvrira :
Pour obtenir l'invite initiale, appuyez une fois sur la touche Entrée
Vous pouvez alors commencer à écrire du code Python après l'invite, qui sera interprété immédiatement. Essayez de saisir le classique "Hello world" :
print("Hello world!")
MicroPython répondra par
Bonjour à tous !
comme prévu 🙂 .
Maintenant que le premier contact est établi, je vous souhaite un bon codage !
Thonny : un IDE Python, fonctionne avec Pico !
L'utilisation de PuTTY n'est pas très confortable pour des sessions plus longues, ou lorsque vous voulez charger beaucoup de code dans votre Pico. Heureusement, l'application open source Thonny (qui est installée par défaut sur le Raspberry Pi OS) est également disponible pour Windows et intègre le support Pico (MicroPython et CircuitPython).
Première étape
Télécharger Thonny iciet l'installer
Deuxième étape
Connectez votre Pico, comme décrit ci-dessus - il devrait maintenant avoir un numéro de COM - si vous le souhaitez, vous pouvez tester en utilisant la méthode PuTTY décrite ci-dessus, si vous pouvez atteindre votre Pico.
Troisième étape
Démarrez Thonny, et cliquez sur le bouton Outils choisissez le menu Options
Quatrième étapePico : définir Pico comme interprète
Cliquez sur l'onglet Interprète. Cet écran s'affiche par défaut :
Cliquez et sélectionnez MicroPython (Raspberry Pi Pico)
Note: si vous utilisez CircuitPythonvous devez plutôt sélectionner "CircuitPython (générique)"dans ce menu déroulant.
Vous pouvez laisser le port à "essayer de détecter le port automatiquement", ou définir un port spécifique (nous avons vu plus haut comment le numéro de port correct peut être déterminé).
Remarque : le port doit toujours apparaître dans le menu déroulant, mais il peut être utile de vérifier qu'il est bien présent :
Je laisse "essayer de détecter le port automatiquement". Cliquez sur OK pour enregistrer le paramètre.
Votre écran devrait maintenant s'afficher comme suit :
Cinquième étape : test
Vous pouvez maintenant tester la communication avec le Pico.
Type
print("Hello world")
dans l'invite de MicroPython, et appuyez sur entrée
Vous verrez que le Pico vous répond.
Félicitations, vous avez réussi à connecter Thonny avec le Pico sous Windows !
Scripts plus complexes : Faire clignoter une LED avec Thonny
La boucle REPL (read evaluate print loop) que vous venez de voir est agréable, mais pour des projets plus complexes, nous aimerions d'abord entrer dans le source, ou le charger à partir d'un fichier.
C'est à cela que peut servir la partie supérieure de la fenêtre Thonny.
Entrez votre code. Dans mon exemple, nous ferons clignoter la LED embarquée (qui est l'équivalent matériel de hello world !), et nous bouclerons indéfiniment.
import time
from machine import Pin
print("Welcome to Pico example 2, blinking an LED")
led = Pin(25, Pin.OUT)
# For demo purposes, we have an infinite loop here
while True:
led.high()
time.sleep(0.5)
led.low()
time.sleep(0.5)
Veillez à une indentation correcte en Python (les espaces blancs sont utilisés à des fins de contrôle en Python !)
Cliquez maintenant sur le bouton "Exécuter".
Thonny vous demandera où sauvegarder.
Sélectionnez Raspberry Pi Pico :
J'ai choisi de nommer le fichier hello.py - Cliquez sur OK pour le sauvegarder
Une fois que vous aurez appuyé sur le bouton OK, votre code commencera à s'exécuter. La LED intégrée du Pico devrait commencer à clignoter et vous verrez la sortie dans le Shell :
Note : Je n'ai pas eu à entrer la commande %Run -c $EDITOR_CONTENT, Thonny l'a fait lui-même. La sortie ci-dessous provient de notre code.
CircuitPython sur Thonny sous Windows
Suivez les mêmes étapes, mais sélectionnez CircuitPython (générique) comme interprète.
La coque Thonny vous donnera une confirmation différente :
Windows 8.1
Windows 8.1 ne charge PAS automatiquement le pilote série et affiche le périphérique dans un état d'erreur.
Note : avec CircuitPython, le nom du dispositif sera "CircuitPython CDC control". Même procédure.
Voici à quoi ressemblent les propriétés de la carte CDC (le Pico qui exécute MicroPython) :
Il indique que les pilotes de ce périphérique n'ont pas été installés (code 28).
Une solution pour résoudre ce problème est le Outil Zadigque vous pouvez télécharger gratuitement :
Attention : Un certain nombre d'antivirus semblent s'accorder sur le fait que l'installer_x64.exe contenu dans Zadig 2.7 contient "Trojan.Tedy". Il s'agit peut-être d'une fausse alerte, cependant : je recommande d'utiliser Zadig-2.5.exe à la place, ce qui ne m'a pas donné ces avertissements (je viens de vérifier une deuxième fois). Mieux vaut prévenir que guérir !
Zadig vous aide à installer des pilotes USB génériques pour vous permettre d'accéder aux périphériques USB.
Dans notre cas, nous voulons le pilote USB Serial (CDC).
Sélectionnez Board CDC (Interface 0) dans le menu déroulant ci-dessus, et USB Serial (CDC) dans l'autre champ. Cliquez sur Installer le pilote.
Après l'installation, vous verrez que le pilote est maintenant réglé sur usbser (v1.0.0.0) :
Et vous pourrez vous connecter, comme je l'ai décrit dans Windows 10, en utilisant le bon numéro de port COM :
note en marge :
Port Pico/Série sur Windows 7
Selon un client, Zadig a permis d'installer le pilote du port série sur Windows 7 également, et le Pico était utilisable par la suite ! Veillez à utiliser Zadig 2.5La nouvelle version de Zadig 2.7 a été signalée par mon scanner de virus lors de l'installation du pilote. (Je ne sais pas trop pourquoi, mais mieux vaut prévenir que guérir - l'ancien fonctionne).
Si vous avez besoin d'un guide étape par étape, consultez le guide pour Windows 8.1 ci-dessus - il devrait être assez similaire sur une machine Windows 8.1.
Installation des bibliothèques et programmation d'une carte CircuitPython RP2040 sous Windows
Si vous utilisez par exemple un Adafruit Feather RP2040, vous pouvez utiliser CircuitPython. Adafruit dispose d'un NeoPixel RGB sur celui-ci, ce qui nécessite l'installation de bibliothèques dans le répertoire lib sur l'appareil.
(note : télécharger les bibliothèques ici - cliquez sur le lien "Télécharger l'ensemble de projets").
Lorsque vous extrayez le dossier de l'ensemble du projet, vous verrez deux sous-dossiers différents contenant CircuitPython 6.x et CircuitPython 7.x.
J'utilise ici la version CircuitPython 7.x, car j'ai flashé le fichier 7.0.0 Version de CircuitPython.
Vous remarquerez un lecteur appelé "CIRCUITPY" dans votre explorateur :
Le site lib est vide lors d'une nouvelle installation de CircuitPython. En utilisant l'explorateur Windows, nous pouvons simplement copier et coller les fichiers dans ce dossier.
Copier les bibliothèques nécessaires du dossier lib téléchargé dans le dossier lib de CIRCUITPY :
Maintenant, nous pouvons également écraser code.py :
En utilisant Thonny, nous pouvons éditer et exécuter le fichier code.py. Cliquez sur l'icône d'ouverture dans Thonny, et sélectionnez "CircuitPython device" dans la boîte de dialogue "Where to open from" :
Et ici, vous pouvez ouvrir code.py :
Votre fenêtre Thonny devrait maintenant ressembler à ceci :
Appuyez sur la touche F5 de votre clavier ou cliquez sur l'icône d'exécution.
Si tout s'est bien passé, la LED NeoPixel RGB de votre Adafruit Feather RP2040 devrait maintenant commencer à clignoter en différentes couleurs. Toutes nos félicitations 🙂 .
Vous pouvez maintenant jouer avec le script - peut-être pourriez-vous modifier les couleurs, ou le temps entre les changements de couleur ? Ou ajouter d'autres fonctions.
Afin de pouvoir exécuter votre script modifié, appuyez sur Ctrl + C dans le Shell (ou sélectionnez Run > Interrupt Execution dans le menu Thonny). Vous pouvez maintenant télécharger à nouveau votre script.
Une bonne chose pour le débogage est que vous obtiendrez une sortie console avec Thonny, vous pouvez donc utiliser les instructions print pour sortir des informations :
Adafruit CircuitPython Bundle
Adafruit propose un téléchargement pratique de plusieurs bibliothèques dans un ZIP. Téléchargez le fichier adafruit-circuitpython-bundle-7.x.-mpy ou -6.x. mpy correspondant. ici. Vous pouvez installer plusieurs ou toutes les bibliothèques comme indiqué ci-dessus en utilisant simplement l'explorateur Windows. Un téléchargement complet de toutes les librairies ferait environ 1.2 MB, l'Adafruit Feather RP2040 a assez d'espace pour le permettre. La copie peut prendre quelques minutes.
Notes diverses
Puis-je utiliser les procédures de ce guide pour CircuitPython également ?
Absolument, oui. Par exemple, vous pouvez utiliser Zadig sur Windows 8.1 (voir la description ci-dessus pour plus de détails. Utilisez la version 2.5.730 de Zadig !) Vous chercherez un périphérique "CircuitPython CDC control" au lieu du périphérique "Board CDC".
L'installation du pilote échoue avec Zadig ?
Cela peut être dû à un logiciel antivirus. Il s'agit peut-être d'une fausse alerte, mais je ne peux pas en être sûr. Mon antivirus (Bitdefender) m'indique ce qui suit :
"Die Datei C:\Users\Max\usb_driver\installer_x64.exe ist mit Gen:Variant.Tedy.11444 infiziert und wurde in die Quarantäne verschoben. Nous vous conseillons d'effectuer une analyse du système afin de détecter d'autres problèmes."
Un certain nombre d'antivirus semblent s'accorder sur le fait que l'installer_x64.exe (qui fait partie du pilote USB) contient "Trojan.Tedy". Je recommande d'essayer d'utiliser Zadig-2.5.exe à la place. Que vous pouvez télécharger ici. J'ai utilisé Zadig-2.5 pour installer un pilote série USB CircuitPython sur mon installation Windows 8.1 (qui est ma machine principale).
Comment arrêter l'exécution du code sur le Pico dans Thonny ?
Cliquez dans le Shell et appuyez sur Ctrl+C. Cela devrait arrêter l'exécution du code actuel :
Répétition des déclarations précédentes à Thonny
Il est pratique d'exécuter à nouveau la même commande : appuyez sur la touche "up" du clavier à l'invite de l'interpréteur de commandes pour consulter l'historique des commandes précédentes.
Comment savoir si mon Pi Pico est déconnecté de Thonny ?
Vous obtiendrez un message d'erreur en essayant d'exécuter le code, quelque chose comme ceci :
Cela signifie que Thonny ne peut pas écrire sur le port série sur lequel la Pico est censée se trouver.
L'erreur "Couldn't find the device automatically" (Impossible de trouver l'appareil automatiquement) dans Thonny
Si vous obtenez l'erreur suivante :
Impossible de trouver l'appareil automatiquement.
Vérifiez la connexion (en vous assurant que l'appareil n'est pas en mode bootloader) ou choisissez
"Configurer l'interprète" dans le menu de l'interprète (en bas à droite de la fenêtre)
pour sélectionner un port spécifique ou un autre interprète.
Vérifiez que vous avez sélectionné le bon interprète. Si votre appareil utilise CircuitPython au lieu de MicroPython, vous devez sélectionner CircuitPython (générique) en tant qu'interprète dans Thonny. Voir les informations pertinentes dans cet article pour les instructions.
Vos conseils pour Pico/MicroPython sous Windows ?
Faites-nous savoir dans les commentaires si vous avez d'autres astuces pour démarrer avec le Pico et MicroPython sur Windows, nous mettrons l'article à jour en conséquence 🙂 .
Profitez de votre Pico et amusez-vous avec les projets étonnants que vous pouvez réaliser avec elle !
Plus d'articles du blog Pico sur PiCockpit
Si vous avez apprécié la lecture de cet article, vous aimerez peut-être lire les suivants :
J'ai Win 8.1 et c'est le seul site qui a la solution pour le problème COM. Merci beaucoup.
Pourriez-vous partager le lien de l'article dans lequel il y a une solution pour Board CDC dans Windows 8.1 ?
L'article que vous lisez décrit comment utiliser Board CDC sur Windows 8.1 - utiliser l'outil Zadig dans la version 2.5.
Merci, Windows 7 64 bits fonctionne sans problème.
Un grand merci pour ce tutoriel !
Très beau tutoriel Vous mettez le café sur la table comme on dit en Pologne, c'est à dire sans tourner autour du pot. Superbe !
J'ai besoin d'aide. Mon windows 11 affiche le pico comme "portable device". Putty ne peut pas le trouver à cause de cela, donc je reçois une erreur disant qu'il ne peut pas trouver le chemin.
Je ne sais pas comment surmonter cela.
Merci !
C'était une excellente introduction pour moi ! Je vous remercie !
Hola muy bueno, consulto x la inquietud que se me ha presentado
si après avoir soumis mon code à mon ordinateur, je l'ai placé dans un endroit pour qu'il exécute une tâche x,
si vous n'êtes pas le seul à le faire, débranchez la carte de la prise et connectez-la à un PC ou à un ordinateur portable,
Le code qui se trouve sur la carte peut être lu à partir d'un exemple de Thonny qui clique sur l'icône d'ouverture de la moquette et qui choisit d'ouvrir ce qui se trouve sur la carte.
Existe-t-il un moyen de ne pas lire ?
remerciements
Putty et zadig ont tous deux fonctionné pour moi. Excellent tutoriel.