Raspberry Pi Pico och MicroPython på Windows
Den här artikeln svarar på frågan: Hur använder jag Raspberry Pi Pico med MicroPython på Windows? Vi visar också hur man installerar rätt drivrutin för "Board CDC" (som Pico kommer att visas som när MicroPython är installerat) på Windows 8.1. (Vi kommer också att diskutera skillnaderna mellan MicroPython och CircuitPython där det är tillämpligt - där kortet kommer att kallas "CircuitPython CDC Control").
Slutligen visar vi hur man ansluter till Pico med PuTTY, och ett bekvämare alternativ är att använda Thonny (som är en Python IDE, integrerad med Pico!)
Introduktion: Vad är Pico och vad är MicroPython?
The Raspberry Pi Pico är ett nytt mikrokontrollerkort från Raspberry Pi, med det egenutvecklade RP2040-mikrokontrollchipet.
Raspberry Pi har designat massor av coola funktioner i RP2040 (min favorit är PIO - programmerbar IO, där du kan emulera massor av hårdvarugränssnitt som kräver exakt timing osv. - Jag kommer att gå in på det i en annan artikel i framtiden), och Pico är en riktigt trevlig referensplattform som RP2040 är implementerad på.
Hur skiljer sig en Raspberry Pi Pico från en Raspberry Pi Zero W?
Skillnaden mellan en mikrokontroller (som t.ex. Pico) och en enkortsdator (låt oss säga Pi Zero W) är ungefär så här: du programmerar Pico direkt (t.ex. i C), utan operativsystem, medan Pi Zero W körs vanligtvis Linux.
Detta har fördelar, som realtid, men också nackdelar - du måste veta mer om den hårdvara du använder och måste implementera en hel del funktionalitet som du skulle ta för givet i ett modernt operativsystem (t.ex. filåtkomst).
Pico har färre resurser jämfört med Pi Zero W (t.ex. betydligt mindre RAM, ingen VideoCore GPU, etc.) - men den drar mindre ström och har ytterligare funktioner, som den tidigare nämnda PIO och analoga ingångar (ADC).
Pico är ett bra val för projekt som inte nödvändigtvis kräver nätverksanslutning, HDMI-utgång, kameraingång och bearbetning. Med andra ord, om du vill ha gränssnitt mot hårdvara, lång batteritid etc - då är Pico något för dig.
Vilken programvara finns redan för Pico?
Pico kan flashas med hjälp av olika programvaror som medföljer i UF2-filer (se Pico Kom igång-guide). Raspberry Pi tillhandahåller flera UF2-filer för att du ska komma igång:
- MicroPython (som kommer att vara i fokus i denna artikel) och en nära kusin, CircuitPython
- Blinkar en lysdiod (Blinka UF2)
- Hej världen (kommer att säga "Hello world" om du ansluter via en terminal)
- Picoprobe (använd en Pico för att felsöka en annan Pico)
- Återställ flashminnet (Flash-minnet kommer att tömmas)
Det finns mycket mer av exempel som finns här (C-kod).
Observera: Jag länkar till de senaste UF2-filerna från och med 30.01.2021 - särskilt MicroPython kan ha uppdaterats, så se till att kontrollera Raspberry Pi Pico sida för att komma igång.
MicroPython
Om du tycker att det verkar lite skrämmande att gå hela vägen och programmera i C kan du komma igång med MicroPython. I det här fallet är viss programvara förinstallerad på Raspberry Pi Pico (MicroPython UF2-filen), som kommer att köra en liten Python-tolk.
Det kallas MicroPython eftersom det inte stöder hela standardbiblioteket Python 3. MicroPython är avsett för begränsade miljöer, som Pico. Pico har totalt 2 MB RAM - det räcker inte till allt som Python 3 för med sig. Kontrollera denna Github-sida för skillnader mellan CPython och MicroPython. Här är också den officiella MicroPython hemsida, och officiell MicroPython-dokumentation.
CircuitPython
Obs: de flesta av instruktionerna gäller också CircuitPython RP2040-baserade kort på Windows, t.ex. Adafruit Feather RP2040, men du måste följa lite olika steg - jag kommer att påpeka skillnaderna i den här artikeln.
CircuitPython är i grunden en variant av MicroPython som utvecklas av Adafruit.
Själva kortet kommer att kallas annorlunda i din enhetshanterare efter flashning (CircuitPython CDC Control) - och du behöver naturligtvis annan programvara. Här är vad du behöver, för att börja:
- Adafruit Feather RP2040 Ladda ner sidan (CircuitPython 7.0.0 UF2-fil)
I den här artikeln visar vi dig också hur du installerar CircuitPython-bibliotek på RP2040-baserade enheter på Windows och hur du kör och stoppar program med Thonny.
Vad får du med MicroPython UF2?
När MicroPython är installerat på Pico kan du ansluta till Pico med hjälp av den seriella konsolen (vi visar hur i den här artikeln) och börja skriva Python-kod på Pico.
Installera MicroPython på Pico
- Koppla bort strömmen från Pico
- Tryck på BOOTSEL-knappen och håll den intryckt
- anslut Pico till din dator med en microUSB- till USB-kabel
- nu kan du släppa BOOTSEL-knappen
Pico ska nu vara synlig i ditt filsystem som RPI-RP2:
(Sidenote: Jag undrar vad RPI-RP1 var?)
Pico emulerar ett FAT32-minne som innehåller två filer: INDEX.HTM och INFO_UF2.TXT.
Faktum är att Windows Drive Manager visar att Pico är ett 128 MB FAT-flashminne.
Gör inte misstaget att försöka lagra några filer på Pico på det här sättet: de kommer att tyst släppas. Även om det ser ut som om de skrivs, är det bara Windows som cachelagrar operationerna - dina filer kommer att vara borta! Nämnde jag redan att Pico faktiskt bara har 2 MB Flash? Den ljuger skamlöst om 128 MB här (RP2040 är förresten tänkt att stödja upp till 16 MB flash, AFAIK).
Sidenote: Detta påminner mig lite om min resa till Indien, där jag köpte USB-minnen med 128 GB kapacitet - som skulle skriva dina data till Nirvana. När jag försökte returnera enheten och få tillbaka mina pengar var säljaren borta ... äventyren som skulle ha 🙂
Men om du kopierar rätt typ av fil - UF2-filen - till den här enheten kommer den att kännas igen och skrivas.
Du kan dra och släppa den från din webbläsare efter att du har laddat ner den, eller kopiera och klistra in den. När kopieringen är klar kommer Pico att starta om automatiskt och du kommer inte att se något USB-minne längre.
Obs: Om du vill använda CircuitPython använder du naturligtvis CircuitPython UF2-filen istället i det här steget.
Pico kör nu (efter omstarten) MicroPython, som tillhandahåller en serieport (COM-port) via USB. (I tekniska termer är detta USB-enhet klass 02 = Kommunikation och CDC-kontroll och USB-enhet SubClass 02).
Ansluta till Pico, Windows 10
Windows 10 gör det enkelt för oss att ansluta till Pico, eftersom den nödvändiga COM-Port-drivrutinen (usbser.inf) automatiskt installeras och aktiveras åt dig.
För att kontrollera vilken COM-port den är på, öppna enhetshanteraren:
Här kan du se den nya USB Serial Device, med COM-portnumret (som du behöver om en stund för att ansluta), under Portar (COM & LPT).
För att dubbelkolla att det verkligen är Pico som kör MicroPython kan du göra följande:
Klicka på View och välj Devices by Container:
Här ser du en post "Board in FS mode", med de två noderna "USB Composite Device" och "USB Serial Device (COM3)". COM3 är viktig, eftersom du behöver använda den för PuTTY (se nedan).
Vi kan undersöka enheterna ytterligare genom att högerklicka på dem och välja lämplig egenskapspost från snabbmenyn. Egenskaperna för Board i FS-läge är tomma:
USB Composite Device visar "Board in FS mode" som den bussrapporterade enhetsbeskrivningen:
Obs: detta är Pico som kör MicroPython. När du flashar om den med annan programvara kommer den att visa andra resultat här!
Den seriella USB-enheten i sig kommer att visa några intressanta egenskaper:
Obs: Om du använder CircuitPython kommer kortets enhetsbeskrivning att vara "CircuitPython CDC Control" i stället för "Board CDC".
Om du vet vad du letar efter är hårdvaru-ID:n (VID = leverantörs-ID och PID = produkt-ID) användbara:
VID_2E8A -> leverantörens id är 2E8A (i hex) eller 11914 (i decimal), vilket är Raspberry Pi
PID_0005 -> produkt-ID är 5som kortet kommer att visa när MicroPython körs (standardprodukt-ID är 3)
Sidenote: Felsökningslogg för Chrome Browser
Denna information kan också hämtas med hjälp av webbläsaren Chrome.
kan du se de enheter som för närvarande är anslutna
Tillbaka till Windows 10:
Som du ser i skärmdumpen ovan installerade Windows 10 automatiskt usbser (USB Serial Driver) åt dig - så att du kan komma igång med Pico omedelbart.
PuTTY
PuTTY är en telnet / SSH-klient. Du kommer att använda den för att ansluta till Pico och prata med MicroPythons REPL. Ladda ner PuTTY här. (Du kan använda 64-bitars MSI Windows Installer för de flesta Windows 10-installationer).
Öppna PuTTY. Ange rätt inställningar:
- Anslutningstypen måste vara inställd på Serie
- Serial Line måste ställas in på det som din undersökning ovan gav. I mitt fall är detta COM3. I ditt fall kommer det troligen att vara något annat!
- Hastigheten kan lämnas på 9600 för tillfället
Klicka på Open, så öppnas en terminal:
Tryck en gång på Enter för att få den inledande prompten
Sedan kan du börja skriva Python-kod efter prompten, som tolkas omedelbart. Testa att skriva in det klassiska "Hello world":
print("Hello world!")
MicroPython kommer att svara med
Hej, världen!
som förväntat 🙂 🙂
Nu när den första kontakten är etablerad önskar jag dig en trevlig kodning!
Thonny: en Python IDE, fungerar med Pico!
Att använda PuTTY är inte särskilt bekvämt för längre sessioner, eller när du vill ladda in mycket kod i din Pico. Lyckligtvis finns open source-programmet Thonny (som installeras som standard på Raspberry Pi OS) även för Windows och integrerar stöd för Pico (MicroPython och CircuitPython)
Steg ett
Ladda ner Thonny häroch installera den
Steg två
Anslut din Pico enligt beskrivningen ovan - den ska nu ha ett COM-nummer - om du vill kan du testa med PuTTY-metoden som beskrivs ovan om du kan nå din Pico.
Steg tre
Starta Thonny och klicka på Verktyg menyn, välj Alternativ
Steg fyra: ställa in Pico som tolk
Klicka på fliken Interpreter. Du kommer att se den här skärmen som standard:
Klicka och välj MicroPython (Raspberry Pi Pico)
Obs: om du använder CircuitPythonbehöver du istället välja "CircuitPython (generisk)" från denna rullgardinsmeny.
Du kan låta porten vara "försök att upptäcka porten automatiskt" eller ange en specifik port (vi har sett ovan hur rätt portnummer kan fastställas).
Porten ska fortfarande visas i rullgardinsmenyn, så det kan vara en bra idé att dubbelkolla att den finns där:
Jag låter det vara "försök att upptäcka port automatiskt". Klicka på OK för att spara inställningen.
Din skärm bör nu se ut så här:
Steg fem: test
Nu kan du testa kommunikationen med Pico.
Typ
print("Hello world")
i MicroPython-prompten och tryck på Enter
Du kommer att se att Pico svarar dig.
Grattis, du har lyckats ansluta Thonny till Pico i Windows!
Mer komplexa skript: Blinka en lysdiod med Thonny
REPL (read evaluate print loop) som du just har sett är bra, men för mer komplexa projekt vill vi gärna ange källan först, eller ladda den från en fil.
Det är detta som den övre delen av Thonny-fönstret kan användas till.
Ange din kod. I mitt exempel blinkar vi med den inbyggda LED-lampan (som är hårdvarans motsvarighet till Hello World!) och loopar för evigt.
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)
Var uppmärksam på korrekt indragning i Python (blanksteg används för kontrolländamål i Python!)
Klicka nu på "kör" -knappen
Thonny kommer att fråga dig var du ska spara till
Välj Raspberry Pi Pico:
Jag har valt att döpa filen till hello.py - Klicka på OK för att spara den
När du trycker på OK-knappen börjar din kod att exekveras. Den inbyggda LED-lampan på Pico bör börja blinka och du ser utmatningen i Shell:
Observera: Jag behövde inte skriva in kommandot %Run -c $EDITOR_CONTENT, det gjorde Thonny själv. Utdata nedan är från vår kod.
CircuitPython på Thonny på Windows
Följ samma steg, men välj CircuitPython (generisk) som tolk.
Thonny-skalet kommer att visa dig en annan bekräftelse:
Windows 8.1
Windows 8.1 laddar INTE automatiskt den seriella drivrutinen och visar enheten i ett feltillstånd.
Obs: med CircuitPython kommer namnet på enheten att vara "CircuitPython CDC control" istället. Samma procedur.
Så här ser egenskaperna ut för Board CDC (den Pico som kör MicroPython):
Det står att drivrutinerna för den här enheten inte har installerats (kod 28).
En lösning för att lösa detta problem är Zadig-verktygsom du kan ladda ner gratis:
Lystring! Ett antal virusskannrar verkar vara överens om att installer_x64.exe som finns i Zadig 2.7 har "Trojan.Tedy". Kanske är detta ett falskt alarm, dock: Jag rekommenderar att du använder Zadig-2.5.exe istället, vilket inte gav mig dessa varningar (bara verifierad en andra gång). Bättre att vara på den säkra sidan än att vara ledsen!
Zadig hjälper dig att installera generiska USB-drivrutiner så att du kan komma åt USB-enheter.
I vårt fall vill vi ha drivrutinen USB Serial (CDC).
Välj Board CDC (Interface 0) från rullgardinsmenyn ovan, USB Serial (CDC) i det andra fältet. Klicka på Installera drivrutin.
Efter installationen kommer du att se att drivrutinen nu är inställd på usbser (v1.0.0.0):
Och du kommer att kunna ansluta, som jag har beskrivit i Windows 10, med hjälp av rätt COM-portnummer:
sidenote:
Pico/Serial-port på Windows 7
Enligt en kund, Zadig hjälpte till att installera serieportdrivrutinen på Windows 7 också, och Pico var användbar efteråt! Var noga med att använda Zadig 2,5, eftersom den nyare Zadig 2.7 flaggades av min virusscanner under drivrutinsinstallationen. (Jag vet inte varför, men det är bäst att ta det säkra före det osäkra - den gamla fungerar)
Om du behöver en steg-för-steg-guide kan du kolla in guiden för Windows 8.1 ovan - det bör vara ungefär samma sak på en Windows 8.1-maskin.
Installera bibliotek och programmera ett CircuitPython RP2040-kort i Windows
Om du t.ex. använder en Adafruit Feather RP2040 kanske du vill använda CircuitPython på den. Adafruit har en NeoPixel RGB på den, vilket kräver att bibliotek installeras i lib mappen på enheten.
(Obs: Ladda ner biblioteken här - klicka på länken "Download Project Bundle").
När du extraherar mappen med projektpaketet kommer du att se två olika undermappar med CircuitPython 6.x och CircuitPython 7.x
Jag använder CircuitPython 7.x-versionen här, eftersom jag flashade 7.0.0 CircuitPython-version.
Du kommer att märka en enhet som heter "CIRCUITPY" i din Explorer:
The lib mappen är tom med en ny installation av CircuitPython. Med hjälp av Windows Explorer kan vi enkelt kopiera och klistra in filer här.
Kopiera de nödvändiga biblioteken från den nedladdade lib-mappen till lib-mappen för CIRCUITPY:
Nu kan vi också skriva över code.py:
Med hjälp av Thonny kan vi redigera och köra filen code.py. Klicka på öppna-ikonen i Thonny och välj "CircuitPython device" i dialogrutan "Where to open from":
Och här kan du öppna code.py:
Nu bör ditt Thonny-fönster se ut ungefär så här:
Tryck på F5 på tangentbordet eller klicka på körikonen
Om allt gick bra ska NeoPixel RGB LED på din Adafruit Feather RP2040 nu börja blinka i olika färger. Grattis 🙂 🙂
Nu kan du gå vidare och leka med skriptet - kanske kan du ändra färgerna, eller tiden mellan färgbytena? Eller lägga till andra funktioner.
För att kunna köra ditt modifierade skript, tryck Ctrl + C i Shell (eller välj Run > Interrupt Execution i Thonny-menyn). Nu kan du ladda upp ditt skript igen.
En bra sak för felsökning är att du får konsolutmatning med Thonny, så du kan använda print-satser för att mata ut information:
Adafruit CircuitPython-paket
Adafruit tillhandahåller en bekväm nedladdning av flera bibliotek i en ZIP. Ladda ner motsvarande adafruit-circuitpython-bundle-7.x.-mpy eller -6.x.mpy här. Du kan installera flera eller alla bibliotek som diskuterats ovan helt enkelt med Windows Explorer. En komplett uppladdning av alla bibliotek skulle vara cirka 1,2 MB stor, Adafruit Feather RP2040 har tillräckligt med utrymme för att tillåta detta. Kopiering kan ta ett par minuter.
Diverse anteckningar
Kan jag använda procedurerna i den här guiden för CircuitPython också?
Ja, absolut, ja. Du kan till exempel använda Zadig på Windows 8.1 (se beskrivningen ovan för detaljer. Använd version 2.5.730 av Zadig!). Du kommer att leta efter en "CircuitPython CDC control"-enhet i stället för "Board CDC"-enheten.
Drivrutinsinstallation misslyckas med Zadig?
Detta kan bero på antivirusprogram. Kanske ett falsklarm, men jag kan inte vara säker på det. Min virusscanner (Bitdefender) säger följande till mig:
"Die Datei C:\Users\Max\usb_driver\installer_x64.exe ist mit Gen:Variant.Tedy.11444 infiziert und wurde in die Quarantäne verschoben. Wir empfehlen die Durchführung eines System-Scans, um weitere Infektionen auszuschließen."
Ett antal virusskannrar verkar vara överens om att installer_x64.exe (en del av USB-drivrutinen) har "Trojan.Tedy". Jag rekommenderar att du försöker använda Zadig-2.5.exe istället. Som du kan ladda ner här. Jag har använt Zadig-2.5 för att installera en CircuitPython USB-seriell drivrutin på min Windows 8.1-installation (som är min huvudmaskin).
Hur stoppar jag kodexekvering på Pico i Thonny?
Klicka in i Shell och tryck på Ctrl+C. Detta bör stoppa den aktuella kodkörningen:
Upprepning av tidigare uttalanden i Thonny
Det är bekvämt att köra samma kommando igen - tryck på upp-tangenten på tangentbordet i shell-prompten för att få fram en historik över tidigare kommandon.
Hur vet jag när min Pi Pico är bortkopplad från Thonny?
Du får ett felmeddelande när du försöker köra koden, ungefär så här:
Det innebär att Thonny inte kan skriva till den serieport som Pico förväntas vara ansluten till.
Kunde inte hitta enheten automatiskt fel i Thonny
Om du får följande felmeddelande:
Kunde inte hitta enheten automatiskt.
Kontrollera anslutningen (se till att enheten inte är i bootloader-läge) eller välj
"Konfigurera tolk" i tolkmenyn (nedre högra hörnet av fönstret)
för att välja en specifik port eller en annan tolk.
Kontrollera att du har valt rätt tolk. Om din enhet kör CircuitPython istället för MicroPython måste du välja CircuitPython (generisk) som tolk i Thonny. Se relevant information i den här artikeln för instruktioner.
Dina tips för Pico/MicroPython på Windows?
Låt oss veta i kommentarerna om du har några andra tips för att komma igång med Pico och MicroPython på Windows, vi uppdaterar artikeln därefter 🙂
Njut av din Pico och ha kul med de fantastiska projekt du kan göra med den!
Fler blogginlägg om Pico på PiCockpit
Om du tyckte om att läsa den här artikeln kanske du också tycker om att läsa följande:
Jag har Win 8.1 och det här är den enda webbplatsen som har lösningen för COM-problem. Tack så mycket mycket.
Kan du snälla dela länken till artikeln där det finns en lösning för Board CDC i Windows 8.1
Den här artikeln som du läser beskriver hur du använder Board CDC på Windows 8.1 - använd Zadig-verktyget i version 2.5.
Tack så mycket, Windows 7 64 bits fungerar smidigt.
Ett stort tack för denna handledning!
Mycket trevlig handledning Du sätter kaffe på bordet som vi säger i Polen, vad betyder utan att slå om busken. Storartat!
Jag behöver hjälp. Min Windows 11 visar bara pico som "bärbar enhet". Putty kan inte hitta det på grund av detta, så jag får ett fel att det inte kan fin sökvägen.
Jag vet inte hur jag ska komma förbi det här.
Tack!
Detta var en bra introduktion för mig! Tack för det!
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 pi pico a traves por ejemplo de Thonny dando click al icono de abrir carpeta y seleccionando abrir lo que esta en la pi pico.?
Finns det något sätt att göra så att du inte läser?
tack
Putty och zadig fungerade båda för mig. Utmärkt handledning.