Raspberry Pi Pico en MicroPython op Windows
Dit artikel geeft antwoord op de vraag: Hoe gebruik ik de Raspberry Pi Pico met MicroPython onder Windows? We laten ook zien hoe je het juiste stuurprogramma installeert voor "Board CDC" (waar de Pico als zal verschijnen zodra MicroPython is geïnstalleerd) op Windows 8.1. (We bespreken ook de verschillen tussen MicroPython en CircuitPython waar van toepassing - waar het bord "CircuitPython CDC Control" zal heten).
Tot slot laten we zien hoe je verbinding maakt met de Pico met PuTTY, en een meer comfortabele optie met Thonny (een Python IDE, geïntegreerd met de Pico!).
Introductie: Wat is de Pico & wat is MicroPython?
De Raspberry Pi Pico is een nieuw microcontrollerbord van Raspberry Pi, met de zelf ontwikkelde RP2040 microcontrollerchip.
Raspberry Pi heeft veel coole functies in de RP2040 ingebouwd (mijn favoriet is PIO - programmeerbare IO, waarmee je veel hardware-interfaces kunt emuleren die precieze timing vereisen, enz. - Ik zal hier in de toekomst in een ander artikel dieper op ingaan), en de Pico is echt een mooi referentieplatform waarop de RP2040 is geïmplementeerd.
Hoe verschilt een Raspberry Pi Pico van een Raspberry Pi Zero W?
Het verschil tussen een microcontroller (zoals de Pico) en een single-board computer (laten we zeggen Pi Zero W) is ongeveer als volgt: je programmeert de Pico rechtstreeks (bijvoorbeeld in C), zonder besturingssysteemterwijl de Pi Nul W draait meestal Linux.
Dit heeft voordelen, zoals real-time, maar ook nadelen - je moet meer weten over de hardware die je gebruikt en je moet veel functionaliteit implementeren die je op een modern besturingssysteem als vanzelfsprekend zou beschouwen (bijvoorbeeld bestandstoegang).
De Pico heeft minder bronnen in vergelijking met de Pi Zero W (bv. aanzienlijk minder RAM, geen VideoCore GPU, enz.) - maar hij verbruikt minder energie en heeft extra functies, zoals de eerder genoemde PIO en analoge ingangen (ADC).
De Pico is een goede keuze voor projecten die niet noodzakelijk netwerkconnectiviteit, HDMI-uitgang, camera-ingang en verwerking vereisen. Met andere woorden, als je een interface met hardware wilt, een lange batterijlevensduur wilt, enzovoort, dan is de Pico iets voor jou.
Welke software bestaat er al voor de Pico?
De Pico kan worden geflasht met verschillende software, die wordt meegeleverd in UF2-bestanden (zie Pico Starthandleiding). Raspberry Pi levert verschillende UF2-bestanden om je op weg te helpen:
- MicroPython (waar dit artikel zich op zal richten) en een neefje, CircuitPython
- Een LED laten knipperen (Knipper UF2)
- Hallo wereld (zegt "Hallo wereld" als je verbinding maakt via een terminal)
- Picoprobe (gebruik een Pico om een andere Pico te debuggen)
- Reset flashgeheugen (stelt het Flash-geheugen in op leeg)
Er is nog veel meer voorbeelden vindt u hier (C-code).
Let op: Ik link naar de nieuwste UF2-bestanden vanaf 30.01.2021 - met name MicroPython kan zijn bijgewerkt, dus controleer zeker de Raspberry Pi Pico aan de slag pagina.
MicroPython
Als het vooruitzicht om volledig in C te gaan programmeren je een beetje afschrikt, kun je aan de slag met MicroPython. In dit geval is er wat software voorgeïnstalleerd op de Raspberry Pi Pico (het MicroPython UF2-bestand), dat een kleine Python-interpreter zal uitvoeren.
Het heet MicroPython omdat het niet de volledige Python 3 standaardbibliotheek ondersteunt. MicroPython is bedoeld voor beperkte omgevingen, zoals de Pico. De Pico heeft in totaal 2 MB RAM - hier past niet alles in wat Python 3 met zich meebrengt. Kijk op deze Github-pagina voor verschillen tussen CPython en MicroPython. Hier is ook de officiële MicroPython homepageen de officiële MicroPython documentatie.
CircuitPython
Opmerking: de meeste instructies zijn ook van toepassing op CircuitPython RP2040-gebaseerde borden op Windows, bijvoorbeeld de Adafruit Feather RP2040, maar je moet iets andere stappen volgen - ik zal de verschillen in dit artikel aangeven.
CircuitPython is eigenlijk een variant van MicroPython dat wordt ontwikkeld door Adafruit.
Het bord zelf wordt na het flashen anders genoemd in apparaatbeheer (CircuitPython CDC Control) - en je hebt natuurlijk andere software nodig. Dit is wat je nodig hebt om te beginnen:
- Adafruit Feather RP2040 Download pagina (CircuitPython 7.0.0 UF2-bestand)
In dit artikel laten we je ook zien hoe je CircuitPython-bibliotheken installeert op RP2040-gebaseerde apparaten onder Windows, en hoe je programma's uitvoert en stopt met Thonny.
Wat krijg je met de MicroPython UF2?
Zodra MicroPython is geïnstalleerd op de Pico, kunt u verbinding maken met de Pico via de seriële console (we zullen in dit artikel laten zien hoe), en beginnen met het schrijven van Python-code op de Pico.
MicroPython installeren op de Pico
- Verwijder de stroom van de Pico
- Druk op de knop BOOTSEL en houd deze ingedrukt
- sluit de Pico aan op je PC met een microUSB naar USB kabel
- U kunt nu de knop BOOTSEL loslaten
De Pico zou nu zichtbaar moeten zijn in je bestandssysteem, als RPI-RP2:
(Sidenote: Ik vraag me af wat RPI-RP1 was?)
De Pico emuleert een FAT32 flash drive met twee bestanden: INDEX.HTM en INFO_UF2.TXT.
Windows Drive Manager laat zien dat Pico een 128 MB FAT flash drive is.
Maak niet de fout om bestanden op te slaan op de Pico zo: ze worden stilletjes verwijderd. Zelfs als het lijkt alsof ze geschreven zijn, is dat alleen maar Windows die de bewerkingen cacht - je bestanden zijn weg! Had ik al gezegd dat de Pico eigenlijk maar 2MB Flash heeft? Hij liegt hier schaamteloos over de 128MB (de RP2040 wordt trouwens verondersteld tot 16MB flash te ondersteunen, AFAIK).
Sidenote: Dit doet me een beetje denken aan mijn reis naar India, waar ik thumb drives kocht met een capaciteit van 128 GB - die je gegevens naar het Nirvana zouden schrijven. Toen ik probeerde de schijf terug te brengen en mijn geld terug te krijgen, was de verkoper weg... de avonturen die er te beleven zijn 🙂
Als je echter het juiste soort bestand - het UF2-bestand - naar deze schijf kopieert, zal het herkend en geschreven worden.
Je kunt het vanuit je browser slepen, nadat je het hebt gedownload, of kopiëren en plakken. Zodra het kopiëren voltooid is, zal de Pico automatisch herstarten en zie je geen flash drive meer.
Opmerking: Als je CircuitPython wilt gebruiken, gebruik dan natuurlijk het CircuitPython UF2-bestand in plaats van deze stap.
De Pico draait nu (na het opnieuw opstarten) MicroPython, dat een seriële poort (COM-poort) via USB biedt. (In technische termen is dit USB apparaat klasse 02 =) Communicatie en CDC-besturing en USB-apparaat Subklasse 02).
Verbinding maken met de Pico, Windows 10
Windows 10 maakt het ons gemakkelijk om verbinding te maken met de Pico, omdat het benodigde COM-poort stuurprogramma (usbser.inf) automatisch voor je wordt geïnstalleerd en geactiveerd.
Om te controleren op welke COM-poort hij zit, open je apparaatbeheer:
Hier ziet u het nieuwe USB Serial Device, met het COM-poortnummer (dat u zo meteen nodig hebt om verbinding te maken), onder Ports (COM & LPT).
Om dubbel te controleren of dit inderdaad de Pico is waarop MicroPython draait, kun je het volgende doen:
Klik op Beeld en selecteer Apparaten per container:
Hier zie je een item "Board in FS mode", met de twee knooppunten "USB Composite Device" en "USB Serial Device (COM3)". De COM3 is belangrijk, die moet je gebruiken voor PuTTY (zie hieronder).
We kunnen de apparaten verder onderzoeken door er met de rechtermuisknop op te klikken en de juiste eigenschappen te selecteren in het contextmenu. De eigenschappen voor Board in FS-modus zijn leeg:
Het USB Composite Device toont "Board in FS mode" als de Bus reported device description:
Opmerking: dit is de Pico waarop MicroPython draait. Als je hem opnieuw flasht met andere software, zal hij hier andere resultaten laten zien!
Het USB seriële apparaat zelf zal enkele interessante eigenschappen vertonen:
Opmerking: de beschrijving van het bordapparaat zal "CircuitPython CDC Control" zijn in plaats van "Board CDC" als je CircuitPython gebruikt.
Als je weet wat je zoekt, zijn de Hardware ID's (VID = vendor id en PID = product id) handig:
VID_2E8A -> de verkopers-id is 2E8A (in hexadecimaal) of 11914 (decimaal), dat is Raspberry Pi
PID_0005 -> het product id is 5die het bord zal tonen wanneer MicroPython wordt uitgevoerd (de standaard product id is 3)
Sidenote: debug-logboek Chrome-browser
Deze informatie kan ook worden verkregen met de Chrome-browser.
Hiermee kunt u de momenteel aangesloten apparaten zien
Terug naar Windows 10:
Zoals je in de schermafbeelding hierboven ziet, heeft Windows 10 automatisch usbser (USB Serial Driver) voor je geïnstalleerd - zodat je meteen aan de slag kunt met de Pico.
PuTTY
PuTTY is een telnet / SSH-client. Je zult het gebruiken om verbinding te maken met de Pico en te praten met de REPL van MicroPython. PuTTY hier downloaden. (Je kunt de 64-bits MSI Windows Installer gebruiken voor de meeste Windows 10-installaties).
Open PuTTY. Voer de juiste instellingen in:
- Verbindingstype moet worden ingesteld op Serie
- Serial Line moet worden ingesteld op wat uw onderzoek hierboven heeft opgeleverd. In mijn geval is dit COM3. In jouw geval zal het waarschijnlijk iets anders zijn!
- De snelheid kan voorlopig op 9600 worden gelaten
Klik op Openen en er wordt een Terminal geopend:
Druk eenmaal op Enter om de initiële prompt te krijgen
Dan kun je na de prompt Python-code gaan schrijven, die meteen wordt geïnterpreteerd. Probeer het klassieke "Hallo wereld" eens in te voeren:
print("Hello world!")
MicroPython zal antwoorden met
Hallo wereld!
zoals verwacht 🙂
Nu het eerste contact gelegd is, wens ik je veel plezier met coderen!
Thonny: een Python IDE, werkt met Pico!
Het gebruik van PuTTY is niet erg comfortabel voor langere sessies, of wanneer je veel code in je Pico wilt laden. Gelukkig is de open source applicatie Thonny (die standaard geïnstalleerd is op Raspberry Pi OS) ook beschikbaar voor Windows en integreert het ondersteuning voor Pico (MicroPython en CircuitPython).
Stap Een
Download Thonny hieren installeer het
Stap Twee
Sluit je Pico aan, zoals hierboven beschreven - hij zou nu een COM-nummer moeten hebben - als je wilt, kun je testen met de PuTTY-methode die hierboven beschreven is, of je je Pico kunt bereiken.
Stap Drie
Start Thonny en klik op de Gereedschap menu, kies Opties
Stap VierPico instellen als tolk
Klik op de tab Tolk. Dit scherm wordt standaard weergegeven:
Klik en selecteer MicroPython (Raspberry Pi Pico)
Nootals u CircuitPythonmoet je in plaats daarvan "CircuitPython (algemeen)" in dit vervolgkeuzemenu.
Je kunt de poort op "try to detect port automatically" laten staan, of een specifieke poort instellen (we hebben hierboven gezien hoe het juiste poortnummer kan worden bepaald).
Opmerking: de poort zou nog steeds moeten verschijnen in het dropdownmenu, dus het is misschien een goed idee om te controleren of hij er wel is:
Ik laat het staan als "probeer poort automatisch te detecteren". Klik op OK om de instelling op te slaan.
Je scherm zou nu moeten veranderen in dit:
Stap vijf: testen
Nu kun je de communicatie met de Pico testen.
Type
print("Hello world")
in de MicroPython prompt en druk op enter
Je zult zien dat de Pico op je reageert.
Gefeliciteerd, je hebt Thonny succesvol verbonden met de Pico onder Windows!
Complexere scripts: Een LED laten knipperen met Thonny
De REPL (read evaluate print loop) die je net hebt gezien is leuk, maar voor complexere projecten willen we eerst de broncode invoeren of deze uit een bestand laden.
Dit is waar het bovenste deel van het Thonny-venster voor kan worden gebruikt.
Voer je code in. In mijn voorbeeld laten we de onboard LED knipperen (dit is het hardware hello world equivalent!) en laten we een oneindige lus lopen.
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)
Let op de juiste inspringing in Python (witruimte wordt in Python gebruikt voor controledoeleinden!)
Klik nu op de knop "uitvoeren
Thonny zal je vragen waar je moet opslaan
Selecteer Raspberry Pi Pico:
Ik heb ervoor gekozen om het bestand hello.py te noemen - Klik op OK om het op te slaan
Zodra je op de OK-knop drukt, wordt je code uitgevoerd. De on-board LED van de Pico zou moeten gaan knipperen en je ziet de uitvoer in de Shell:
Opmerking: Ik hoefde het commando %Run -c $EDITOR_CONTENT niet in te voeren, Thonny deed het zelf. De onderstaande uitvoer is van onze code.
CircuitPython op Thonny onder Windows
Volg dezelfde stappen, maar selecteer CircuitPython (generiek) als interpreter.
De Thonny schelp laat een andere bevestiging zien:
Windows 8.1
Windows 8.1 zal het seriële stuurprogramma NIET automatisch laden en het apparaat in een foutstatus weergeven.
Opmerking: met CircuitPython wordt de naam van het apparaat "CircuitPython CDC control". Dezelfde procedure.
Hier ziet u hoe de eigenschappen voor Board CDC (de Pico waarop MicroPython draait) eruit zien:
Er staat dat de stuurprogramma's voor dit apparaat niet zijn geïnstalleerd (code 28).
Een oplossing voor dit probleem is de Zadig gereedschapdie je gratis kunt downloaden:
Attentie: Een aantal virusscanners lijken het erover eens te zijn dat de installer_x64.exe in Zadig 2.7 "Trojan.Tedy" bevat. Misschien is dit echter vals alarm: ik raad aan om Zadig-2.5.exe in plaats daarvan, waardoor ik deze waarschuwingen niet kreeg (zojuist voor de tweede keer gecontroleerd). Beter veilig dan sorry!
Zadig helpt u bij het installeren van algemene USB-stuurprogramma's om toegang te krijgen tot USB-apparaten.
In ons geval willen we het USB Serial (CDC) stuurprogramma.
Selecteer Board CDC (Interface 0) in het dropdownmenu erboven, USB Serial (CDC) in het andere veld. Klik op Stuurprogramma installeren.
Na de installatie zul je zien dat het stuurprogramma nu is ingesteld op usbser (v1.0.0.0):
En je kunt verbinding maken, zoals ik heb beschreven in Windows 10, met het juiste COM-poortnummer:
kanttekening:
Pico/Seriële poort op Windows 7
Volgens een klant, Zadig Het hielp ook om het stuurprogramma voor de seriële poort in Windows 7 te installeren, en daarna was de Pico bruikbaar! Gebruik zeker Zadig 2.5omdat de nieuwere Zadig 2.7 door mijn virusscanner werd gemarkeerd tijdens de installatie van het stuurprogramma. (Ik weet niet zeker waarom, maar beter veilig dan sorry - de oude werkt)
Als je een stap-voor-stap handleiding nodig hebt, bekijk dan de handleiding voor Windows 8.1 hierboven - het zou ongeveer hetzelfde moeten zijn op een Windows 8.1 machine.
Bibliotheken installeren en een CircuitPython RP2040-bord programmeren in Windows
Als je bijvoorbeeld een Adafruit Feather RP2040 gebruikt, wil je daar misschien CircuitPython op gebruiken. Adafruit heeft een NeoPixel RGB erop, waarvoor bibliotheken moeten worden geïnstalleerd in de lib map op het apparaat.
(Let op: download de bibliotheken hier - klik op de link "Projectbundel downloaden").
Wanneer je de projectbundel uitpakt, zie je twee verschillende submappen met CircuitPython 6.x en CircuitPython 7.x
Ik gebruik hier de CircuitPython 7.x versie, omdat ik de 7.0.0 CircuitPython versie.
Je zult een schijf met de naam "CIRCUITPY" zien in je Verkenner:
De lib map is leeg bij een nieuwe installatie van CircuitPython. Met de Windows Verkenner kunnen we hier eenvoudig bestanden in kopiëren en plakken.
Kopieer de vereiste bibliotheken van de gedownloade lib-map naar de lib-map van CIRCUITPY:
Nu kunnen we ook code.py overschrijven:
Met Thonny kunnen we het code.py bestand bewerken en uitvoeren. Klik op het open pictogram in Thonny en selecteer "CircuitPython device" in het dialoogvenster "Where to open from":
En hier kun je code.py openen:
Nu zou je Thonny-venster er ongeveer zo uit moeten zien:
Druk op F5 op uw toetsenbord of klik op het pictogram Uitvoeren
Als alles goed is gegaan, zou de NeoPixel RGB LED op je Adafruit Feather RP2040 nu moeten beginnen knipperen in verschillende kleuren. Gefeliciteerd 🙂
Nu kun je met het script gaan spelen - misschien kun je de kleuren aanpassen, of de tijd tussen de kleurveranderingen? Of andere functies toevoegen.
Om je gewijzigde script te kunnen uitvoeren, druk je op Ctrl + C in de Shell (of selecteer je Uitvoeren > Uitvoering onderbreken in het Thonny-menu). Nu kun je je script opnieuw uploaden.
Een groot voordeel voor debuggen is dat je console-uitvoer krijgt met Thonny, dus je kunt print statements gebruiken om informatie uit te voeren:
Adafruit CircuitPython Bundel
Adafruit biedt een handige download van meerdere bibliotheken in een ZIP. Download de overeenkomstige adafruit-circuitpython-bundel-7.x.-mpy of -6.x. mpy hier. Je kunt verschillende of alle bibliotheken installeren zoals hierboven besproken door gewoon Windows Verkenner te gebruiken. Een volledige upload van alle bibliotheken zou ongeveer 1,2 MB groot zijn, de Adafruit Feather RP2040 heeft voldoende ruimte om dit toe te laten. Het kopiëren kan een paar minuten duren.
Diverse notities
Kan ik de procedures in deze handleiding ook gebruiken voor CircuitPython?
Absoluut, ja. Je kunt bijvoorbeeld Zadig gebruiken op Windows 8.1 (zie de beschrijving hierboven voor details. Gebruik versie 2.5.730 van Zadig!). Je zult zoeken naar een "CircuitPython CDC control" apparaat in plaats van het "Board CDC" apparaat.
Installatie stuurprogramma mislukt met Zadig?
Dit kan het gevolg zijn van antivirussoftware. Misschien vals alarm, maar dat weet ik niet zeker. Mijn virusscanner (Bitdefender) vertelt me het volgende:
"Die Datei C:sersMax\usb_driver\installer_x64.exe is mit Gen:Variant.Tedy.11444 infiziert und wurde in die Quarantäne verschoben. Wij raden u aan een systeemscan uit te voeren om verdere infecties te voorkomen."
Een aantal virusscanners lijken het erover eens te zijn dat de installer_x64.exe (onderdeel van het USB-stuurprogramma) "Trojan.Tedy" bevat. Ik raad aan om in plaats daarvan Zadig-2.5.exe te gebruiken. Die u hier kunt downloaden. Ik heb Zadig-2.5 gebruikt om een CircuitPython USB seriële driver te installeren op mijn Windows 8.1 installatie (wat mijn hoofdmachine is).
Hoe stop ik het uitvoeren van code op de Pico in Thonny?
Klik in de Shell en druk op Ctrl+C. Dit zou de huidige code-uitvoering moeten stoppen:
Herhaling van eerdere uitspraken in Thonny
Het is handig om hetzelfde commando opnieuw uit te voeren - druk op de omhoog-toets op het toetsenbord in de shell prompt om een geschiedenis van eerdere commando's op te roepen.
Hoe weet ik wanneer mijn Pi Pico is losgekoppeld van Thonny?
Je krijgt een foutmelding als je code probeert uit te voeren, zoiets als dit:
Dit betekent dat Thonny niet kan schrijven naar de seriële poort waarop de Pico wordt verwacht.
Kon het apparaat niet automatisch vinden fout in Thonny
Als u de volgende foutmelding krijgt:
Kon het apparaat niet automatisch vinden.
Controleer de verbinding (zorg ervoor dat het apparaat niet in bootloadermodus staat) of kies
"Tolk configureren" in het menu Tolk (rechtsonder in het venster)
om een specifieke poort of een andere tolk te selecteren.
Controleer of de juiste interpreter is geselecteerd. Als uw apparaat CircuitPython draait in plaats van MicroPython, dan moet u het volgende selecteren CircuitPython (algemeen) als tolk in Thonny. Zie de relevante informatie in dit artikel voor instructies.
Uw tips voor Pico/MicroPython op Windows?
Laat het ons in de comments weten als je nog andere tips hebt om aan de slag te gaan met de Pico en MicroPython op Windows, dan werken we het artikel dienovereenkomstig bij 🙂
Geniet van je Pico en veel plezier met de geweldige projecten die je ermee kunt doen!
Meer Pico blog posts op PiCockpit
Als je dit artikel leuk vond om te lezen, vind je het misschien ook leuk om het volgende te lezen:
Ik heb Win 8.1 en dit is de enige site met een oplossing voor het COM-probleem. Hartelijk dank.
Kunt u alstublieft de link van het artikel delen waarin een oplossing staat voor Board CDC in windows 8.1?
Dit artikel beschrijft hoe je Board CDC op Windows 8.1 kunt gebruiken - gebruik het Zadig-gereedschap in versie 2.5.
Bedankt, Windows 7 64 bits werkt probleemloos.
Hartelijk dank voor deze handleiding!
Erg leuke tutorial Je zet koffie op tafel zoals we in Polen zeggen, wat betekent zonder om de hete brij heen te draaien. Geweldig!
Ik heb hulp nodig. Mijn windows 11 laat de pico gewoon zien als "draagbaar apparaat". Putty kan het daardoor niet vinden, dus ik krijg een foutmelding dat het pad niet in orde is.
Ik weet niet hoe ik hier voorbij moet komen.
Bedankt!
Dit was een geweldige introductie voor mij! Bedankt!
Hola muy bueno, consulto x la inquietud que se me ha presentado
si despues de subir mi codigo a mi pi pico, y la coloco en una placa para que ejecute una tarea x,
si cualquier otro que no sea yo sacara la pi pico de la placa y la conectara a una pc o notebook,
podria leer el codigo que esta en la piico a traves por ejemplo de Thonny dando click al icono de abrir carpeta y seleccionando abrir lo que esta en la piico.?
Is er een manier om de lectuur te verwijderen?
dank je wel
Putty en zadig werkten allebei voor mij. Uitstekende handleiding.