Programmering og koding

Raspberry Pi Pico med MicroPython: kom i gang med Pico 2 W og Thonny

Raspberry Pi Pico 2 W ved siden av MicroPython-kode som får den innebygde LED-en til å blinke med Pin("LED")

Raspberry Pi Pico med MicroPython lar deg programmere Pico-kortet i Python fra første linje, og Pico 2 W er et godt kort å starte med. Du installerer MicroPython ved å kopiere én fil til kortet, skriver koden i Thonny og ser resultatet med en gang. Guiden har tre nivåer: blink en LED, dim den med en knapp og styr den fra mobilen over WiFi.

Kort forklart Hold inne BOOTSEL mens du kobler Pico 2 W til PC-en, og kopier MicroPython-fila for Pico 2 W til disken RP2350. Velg tolken «MicroPython (Raspberry Pi Pico)» nederst til høyre i Thonny og kjør koden. Den innebygde LED-en heter Pin("LED"). En ekstern LED kobler du til GP15 (pinne 20) gjennom en motstand på 220 Ω, og knappen til GP14 (pinne 19) med intern pull-up. Lagre som main.py når programmet skal starte av seg selv.

Dette trenger du

NivåDu byggerDu lærerEkstra deler
1: nybegynnerBlinkende LED, på kortet og på koblingsbrettetUtganger, pauser og main.pyRød LED, 220 Ω, to ledninger
2: viderekommenKnapp som dimmer LED-en, og temperaturmålingInnganger, pull-up, PWM og ADCTrykknapp, to ledninger
3: avansertNettside som slår LED-en av og påWiFi, sockets og HTTPWiFi-nett på 2,4 GHz

Kortet er Raspberry Pi Pico 2 W med RP2350-brikken, WiFi og Bluetooth. Du trenger også et koblingsbrett med 170 hull, koblingsledninger hann-hann, en rød 5 mm LED, en motstand på 220 Ω fra et motstandssett med 16 verdier, en 12 mm trykknapp og en micro-USB-kabel som overfører data, for eksempel en 4-i-1-kabel med micro-USB-plugg. LED-settet med 160 lysdioder har bare motstander på 1 kΩ; de virker, men gir svakere lys.

Pinnelister: lodd selv eller velg ferdig monterte

På produktbildene av Pico 2 W hos oss har kortet ingen pinnelister, bare loddehull langs de lange sidene. Kortet er laget for pinnelister med 2,54 mm pinneavstand som du lodder på selv. Du har to muligheter:

  • Lodd på hunnlister. GPIO-kontaktsettet til Pico har to hunnlister på 1 × 20. Lodd dem på oversiden, så ser du fortsatt LED-en, BOOTSEL og tallene 1, 2 og 39 ved hjørnepinnene. Navnene GP0, GND og så videre står på undersiden av kortet, så tell deg fram fra pinne 1, slik pinout-tegningen viser. Hann-hann-ledningene går fra listene til koblingsbrettet, slik tegningene viser. Har du ikke loddet før? Les guiden om loddebolt og varmluft.
  • Velg ferdig monterte pinner. Pico W-startsettet har en Pico W med monterte hannpinner, et koblingsbrett med 830 hull, LED-er, motstander, trykknapper, 40 hann-hann-ledninger og en micro-USB-kabel. Pico W bruker RP2040, men pinnene i denne guiden sitter på samme sted, og koden virker uendret. Last ned MicroPython-fila for Pico W; i BOOTSEL-modus heter disken RPI-RP2 i stedet for RP2350. Her står selve kortet i koblingsbrettet, over midtsporet, så ledningene går fra hullene ved siden av pinne 13, 18, 19 og 20, ikke fra hunnlistene som på tegningene.
Lodd trygt: Loddespissen er flere hundre grader varm. Bruk stativ til loddebolten, vernebriller og god ventilasjon eller røykavsug, vask hendene etterpå, og lodd aldri mens USB-kabelen er koblet til.

Et åpent, gjennomsiktig kabinett for Pico beskytter kortet på pulten; sjekk at det passer til pinnelistene du lodder på.

Installer MicroPython på Raspberry Pi Pico 2 W

  1. Last ned riktig fil fra MicroPythons side for Pico 2 W: den øverste .uf2-fila under «Firmware» og «Releases», den som er merket «(latest)». Ikke velg «Preview builds»: det er uferdige utviklingsversjoner. «RISC-V CPU mode» er bare for deg som vil bruke RISC-V-kjernene. Pico, Pico W, Pico 2 og Pico 2 W har hver sin fil.
  2. Start i BOOTSEL-modus. Hold inne BOOTSEL-knappen mens du kobler kortet til PC-en. Slipp når disken RP2350 dukker opp.
  3. Kopier fila til RP2350-disken. Kortet skriver den til flashminnet og starter på nytt med MicroPython. Disken forsvinner, og det er slik det skal være.
  4. Neste gang holder det å koble til USB. BOOTSEL trenger du bare når fastvaren skal oppdateres.

Thonny kan også installere fastvaren: start kortet i BOOTSEL-modus som i trinn 2, klikk på tolkenavnet nederst til høyre, velg «Configure interpreter...», klikk på lenken «Install or update MicroPython» og velg varianten for Pico 2 W. Koden i guiden krever MicroPython 1.25 eller nyere. Får du AttributeError på IF_STA eller ipconfig, må du oppdatere fastvaren.

Kom i gang med Thonny

  1. Installer Thonny fra thonny.org, en gratis Python-editor for nybegynnere med støtte for MicroPython.
  2. Velg tolk: klikk på tolkenavnet nederst til høyre og velg «MicroPython (Raspberry Pi Pico)». Valget gjelder også Pico 2 W.
  3. Test i Shell nederst i vinduet: skriv print("Hei fra Pico") og trykk Enter. Svaret kommer fra kortet.
  4. Kjør koden i editoren med Run (F5). Stop (Ctrl+F2) avbryter programmet.
  5. Lagre på kortet: velg Save i File-menyen og deretter «Raspberry Pi Pico», ikke «This computer», og skriv main.py som filnavn. Fila main.py starter automatisk hver gang kortet får strøm.
Tips: Sier Thonny at enheten er opptatt, trykker du Stop først. Et program i en uendelig løkke må stoppes før du kan lagre filer på kortet.

Pinout for Pico 2 W: pinnene du bruker

Hold kortet med USB-kontakten opp og komponentsiden mot deg. Pinne 1 er øverst til venstre og merket «1». Pinnene 1 til 20 går nedover venstre side, og 21 til 40 oppover høyre side. Tallet i koden er GP-nummeret, ikke pinnenummeret: Pin(15) betyr GP15 på pinne 20.

Forenklet pinout for Pico 2 W ovenfra: GP15 på pinne 20, GP14 på pinne 19, GND på pinne 18 og 13, og LED-en ved USB-kontakten.
Pico 2 W sett ovenfra med USB-kontakten opp. Pinnene telles fra 1 øverst til venstre ned til 20, og videre fra 21 nederst til høyre opp til 40. Bare pinnene guiden bruker, er merket; GND finnes også på pinne 3, 8, 23, 28 og 38, og pinne 33 er AGND.
PinneNavnBruk i guiden
20GP15Ekstern LED, utgang og PWM
19GP14Knapp, inngang med pull-up
18GNDJord for LED-en
13GNDJord for knappen
IngenLED (WL_GPIO0)Innebygd LED, Pin("LED")
IngenADC-kanal 4Innebygd temperatursensor
363V3(OUT)3,3 V ut, brukes ikke her
39VSYSStrøminngang 1,8 til 5,5 V, brukes ikke her
40VBUS5 V fra USB, brukes ikke her

De andre GND-pinnene er 3, 8, 23, 28 og 38, og pinne 33 er analog jord (AGND). GP26 til GP28 på pinne 31, 32 og 34 kan også lese analoge spenninger.

3,3 V-logikk: Koble aldri VBUS eller VSYS rett til en GP-pinne, og ikke legg mer enn 3,3 V på GP26 til GP28. Raspberry Pi anbefaler å holde belastningen på 3V3(OUT) under 300 mA.

Nivå 1: blink en LED med MicroPython

Nivå 1: nybegynner. Tid: rundt 20 minutter. Du trenger Pico 2 W med MicroPython, Thonny og en USB-kabel som overfører data, og til del 2 koblingsbrettet med 170 hull, en rød LED, en motstand på 220 Ω fra motstandssettet og to koblingsledninger hann-hann. Andre størrelser og ledningstyper finner du under koblingsbrett og prototyping og koblingsledninger.

Del 1: den innebygde LED-en

LED-en ved USB-kontakten er koblet til trådløsbrikken CYW43439, ikke til RP2350. MicroPython kaller den derfor "LED". Skriv dette i editoren og trykk Run:

from machine import Pin
import time

led = Pin("LED", Pin.OUT)

while True:
    led.toggle()
    time.sleep(0.5)
  • Pin("LED", Pin.OUT) gjør LED-en til en utgang. Eldre eksempler for Pico uten W bruker Pin(25), men på Pico 2 W er GP25 en intern pinne for trådløsbrikken.
  • led.toggle() bytter mellom på og av, time.sleep(0.5) venter et halvt sekund, og while True: gjentar alt sammen til du trykker Stop.

Del 2: en ekstern LED på GP15

Strømmen går fra GP15 gjennom motstanden og LED-en til GND. Motstanden begrenser strømmen; uten den kan både LED-en og pinnen ta skade. GP15 er også pinnen Raspberry Pi bruker i sine egne LED- og WiFi-eksempler.

  1. Trekk ut USB-kabelen.
  2. Legg koblingsbrettet til venstre for Picoen med den lange siden vannrett, så ledningene går ut til siden. Sett motstanden (rød, rød, brun) i nedre halvdel av brettet, fra kolonne 2 til 6. Tell fra venstre; de fem hullene i en kolonne er koblet sammen, og midtsporet skiller øvre og nedre halvdel.
  3. Sett LED-en med det lange beinet (anoden, +) i kolonne 6 og det korte (katoden, −) i kolonne 7.
  4. Koble pinne 20 (GP15, nederst på venstre side) til kolonne 2, og pinne 18 (GND, to pinner lenger opp) til kolonne 7.
  5. Sjekk strømveien før du kobler til USB: GP15, motstand, langt bein, LED, kort bein, GND.
Koblingstegning: pinne 20 (GP15) på Pico 2 W går via en motstand på 220 ohm til en rød LED på koblingsbrettet og tilbake til pinne 18 (GND).
GP15 (pinne 20) går gjennom motstanden på 220 Ω til LED-ens lange bein, og det korte beinet ved den flate kanten går tilbake til GND (pinne 18). Pico 2 W med hunnlister er sett ovenfra, og brettet ligger til venstre, så ledningene går ut til siden og ikke over antennen. Med en rød LED blir strømmen høyst (3,3 V − 2,0 V) / 220 Ω ≈ 6 mA. Kolonnenumrene finnes bare på tegningen, ikke på brettet.

Strømmen er høyst (3,3 V − spenningsfallet over LED-en) / motstanden. Produktsiden for LED-settet oppgir 2 til 2,3 V for røde LED-er og 3,2 V for blå, så en blå LED lyser bare svakt på 3,3 V. Bruk en rød LED i denne øvelsen. Motstanden på 220 Ω ligger innenfor området Raspberry Pi oppgir i sin egen LED-oppgave for Pico, omtrent 50 til 330 Ω.

MotstandStrøm med rød LED (2,0 V)Resultat
220 ΩOpptil rundt 6 mAGodt synlig lys
330 ΩOpptil rundt 4 mALitt svakere
1 kΩ (LED-settet)Opptil rundt 1,3 mASvakt, men synlig
from machine import Pin
import time

led = Pin(15, Pin.OUT)

while True:
    led.value(1)
    time.sleep(0.5)
    led.value(0)
    time.sleep(0.5)

Pin(15, Pin.OUT) gjør GP15 til en utgang. value(1) gir 3,3 V på pinne 20 og tenner LED-en, og value(0) gir 0 V. Mer om motstandsverdier finner du i guiden om hva en resistor er og i fargekodekalkulatoren.

Hvis LED-en ikke lyser

  • Snu LED-en: det lange beinet skal mot motstanden.
  • Sjekk at ledningen sitter i pinne 20, den nederste til venstre, og ikke i pinne 19.
  • Kontroller at motstanden er 220 Ω og ikke 220 kΩ (rød, rød, gul).
  • Blinker den innebygde LED-en, men ikke den eksterne, er feilen i koblingen.

Prøv selv: lagre programmet på kortet som main.py og koble kortet til en USB-lader. LED-en skal blinke uten PC.

Nivå 2: knapp med pull-up og PWM-dimming

Nivå 2: viderekommen. Tid: rundt 30 minutter. Du trenger oppsettet fra nivå 1, en 12 mm trykknapp og to koblingsledninger til.

Hvert trykk på knappen gir sterkere lys, og etter fullt lys slokner LED-en. Du lærer å lese en inngang og å lage «halvt lys» med PWM.

Koble til knappen

  1. Trekk ut USB-kabelen og la LED-kretsen stå.
  2. Sett knappen over midtsporet med beina i kolonne 11 og 13, to bein i hver halvdel. Beina er koblet sammen to og to inni knappen, og et trykk kobler parene sammen.
  3. Koble pinne 19 (GP14) til kolonne 11 i nedre halvdel.
  4. Koble pinne 13 (GND) til kolonne 13 i øvre halvdel. Ledningene sitter da ved diagonalt motsatte bein, og det virker uansett hvordan beina er koblet sammen inni knappen.
Koblingstegning: trykknapp over midtsporet koblet til pinne 19 (GP14) og pinne 13 (GND) på Pico 2 W, ved siden av LED-kretsen på GP15.
Knappen står over midtsporet med bein i kolonne 11 og 13. GP14 (pinne 19) går til ett bein og GND (pinne 13) til det diagonalt motsatte, så knappen kobler GP14 til jord når du trykker. LED-kretsen fra nivå 1 står uendret. Kolonnenumrene finnes bare på tegningen, ikke på brettet.

Knappen trenger ingen egen motstand. Pin.PULL_UP kobler inn en intern motstand mot 3,3 V (32 til 86 kΩ ifølge RP2350-databladet), så pinnen leser 1 når knappen er sluppet. Når du trykker, kobles GP14 til GND, og pinnen leser 0.

Skjema: GP15 via 220 ohm og LED til GND, og GP14 via trykknapp til GND med intern pull-up mot 3,3 V inne i Pico 2 W.
Skjema for nivå 1 og 2. LED-en får strøm fra GP15 gjennom motstanden på 220 Ω. Knappen trenger ingen ekstern motstand: den interne pull-up-motstanden holder GP14 på 3,3 V til et trykk på knappen trekker pinnen ned til GND.
Hvorfor pull-up og ikke pull-down? RP2350 i revisjon A2 har feilen RP2350-E9: en inngang kan bli hengende på rundt 2,2 V, og den interne pull-down-motstanden er for svak til å trekke den ned. Pull-up virker på alle revisjoner.
from machine import Pin, PWM
import time

button = Pin(14, Pin.IN, Pin.PULL_UP)
led = PWM(Pin(15), freq=1000, duty_u16=0)

levels = [0, 1000, 6000, 20000, 65535]
step = 0
was_pressed = False

while True:
    pressed = button.value() == 0
    if pressed != was_pressed:
        if pressed:
            step = (step + 1) % len(levels)
            led.duty_u16(levels[step])
            print("Trinn", step, "duty", levels[step])
        time.sleep_ms(50)
    was_pressed = pressed
    time.sleep_ms(10)
  • PWM(Pin(15), freq=1000, duty_u16=0) slår GP15 av og på 1000 ganger i sekundet. Hvor stor del av tiden pinnen er på (duty cycle), oppgir du som et tall fra 0 til 65535, og øyet ser bare svakere eller sterkere lys.
  • Verdiene i levels stiger raskt fordi selv lav duty cycle gir synlig lys. Raspberry Pis eget dimmeeksempel bruker også en kvadratisk kurve (duty * duty).
  • pressed != was_pressed slår til når knappen endrer tilstand, og if pressed: teller bare overgangen fra sluppet til trykket. Ellers ville lyset skifte mange ganger mens du holder knappen inne.
  • time.sleep_ms(50) er enkel avprelling: kontaktene spretter i noen millisekunder både når du trykker og når du slipper. Pausen etter hver endring hindrer at ett trykk teller flere ganger.
  • (step + 1) % len(levels) begynner på trinn 0 igjen etter siste trinn.

Den innebygde LED-en kan ikke dimmes slik, fordi den sitter på trådløsbrikken og ikke på en PWM-pinne.

Bonus: temperaturen i brikken med ADC

RP2350 har en temperatursensor på ADC-kanal 4. Den måler temperaturen i selve brikken, ikke i rommet, men viser godt hvordan en spenning blir et tall. RP2350-databladet (avsnitt 12.4.6) oppgir rundt 0,706 V ved 27 °C og −1,721 mV per grad, som gir formelen T = 27 − (U − 0,706) / 0,001721, der U er spenningen i volt.

from machine import ADC
import time

sensor = ADC(ADC.CORE_TEMP)
factor = 3.3 / 65535

while True:
    voltage = sensor.read_u16() * factor
    temp = 27 - (voltage - 0.706) / 0.001721
    print("Brikketemperatur: %.1f °C" % temp)
    time.sleep(2)
  • ADC(ADC.CORE_TEMP) velger temperaturkanalen, på Pico 2 W kanal 4, som ADC(4) i Raspberry Pis eksempel. MicroPython slår på sensoren selv.
  • read_u16() gir 0 til 65535 for 0 til 3,3 V, og ganget med 3.3 / 65535 blir det volt.
  • Resultatet er en tilnærming. Ifølge databladet kan 1 % feil i referansespenningen gi et avvik på over 4 °C, så kalibrer mot et termometer hvis du trenger nøyaktige verdier.

Hvis knappen ikke virker

  • Legg inn print(button.value()) i løkka: 1 er sluppet, 0 er trykket.
  • Alltid 0: ledningene sitter på to bein som alltid er koblet sammen. Flytt GND-ledningen til beinet diagonalt motsatt.
  • Alltid 1: sjekk at knappen står over midtsporet og at ledningen sitter i pinne 19.

Prøv selv: la LED-en lyse sterkere jo varmere brikken blir, eller bruk et avbrudd med button.irq(handler, Pin.IRQ_FALLING), der handler er en funksjon du skriver selv, slik Raspberry Pis avbruddseksempel viser.

Nivå 3: styr LED-en over WiFi med en liten nettside

Nivå 3: avansert. Tid: rundt 45 minutter. Du trenger oppsettet fra nivå 1, et WiFi-nett på 2,4 GHz og en mobil eller PC på samme nett.

Pico 2 W kobler seg til hjemmenettet og blir en liten webserver med lenkene «Slå på» og «Slå av» for LED-en på GP15. Koden bygger på Raspberry Pis eget webservereksempel for Pico W, men har passordet i en egen fil og leser forespørselen på en sikrere måte.

Hold WiFi-passordet utenfor koden du deler. Legg nettnavn og passord i fila wifi_secrets.py, som du bare lagrer på Picoen. Da kan du dele main.py i klassen, på nett eller i Git uten passordet. Bruker du Git, skal fila stå i .gitignore. Ta heller ikke skjermbilder av den. Alle som får tak i kortet, kan lese filene på det.

Fil 1: wifi_secrets.py

Skriv inn ditt eget nettnavn og passord, og lagre fila på «Raspberry Pi Pico» som wifi_secrets.py.

# Lagres bare på Picoen. Del aldri denne fila.
SSID = "navnet-på-nettet-ditt"
PASSWORD = "passordet-ditt"

Fil 2: main.py

import network
import socket
import time
from machine import Pin

import wifi_secrets

led = Pin(15, Pin.OUT, value=0)
led_on = False

network.country("NO")
wlan = network.WLAN(network.WLAN.IF_STA)
wlan.active(True)
wlan.connect(wifi_secrets.SSID, wifi_secrets.PASSWORD)

for _ in range(20):
    status = wlan.status()
    if status < 0 or status == network.STAT_GOT_IP:
        break
    print("Kobler til WiFi ...")
    time.sleep(1)

if wlan.status() != network.STAT_GOT_IP:
    raise RuntimeError("WiFi feilet, status %d" % wlan.status())

ip = wlan.ipconfig("addr4")[0]
print("Åpne http://%s/ i nettleseren" % ip)

PAGE = """<!DOCTYPE html>
<html lang="no"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Pico 2 W</title></head>
<body><h1>LED-en er %s</h1>
<p><a href="/on">Slå på</a> | <a href="/off">Slå av</a></p>
</body></html>
"""

HEADER = (b"HTTP/1.0 200 OK\r\n"
          b"Content-Type: text/html; charset=utf-8\r\n\r\n")

addr = socket.getaddrinfo("0.0.0.0", 80)[0][-1]
server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(addr)
server.listen(1)

while True:
    client, remote = server.accept()
    try:
        client.settimeout(3)
        request = client.readline()
        while True:
            header = client.readline()
            if not header or header == b"\r\n":
                break
        parts = request.split(b" ")
        path = parts[1] if len(parts) > 1 else b"/"
        if path == b"/on":
            led_on = True
        elif path == b"/off":
            led_on = False
        led.value(1 if led_on else 0)
        state = "PÅ" if led_on else "AV"
        client.write(HEADER)
        client.write((PAGE % state).encode())
    except OSError as e:
        print("Forbindelsesfeil:", e)
    finally:
        client.close()

Slik virker koden

  • import wifi_secrets henter nettnavn og passord. Mangler fila på kortet, stopper programmet med ImportError.
  • network.country("NO") setter landkoden for radioen. Uten landkode bruker driveren en standardinnstilling for hele verden, og da kan enkelte kanaler bli utilgjengelige, ifølge Raspberry Pis WiFi-dokumentasjon.
  • network.WLAN(network.WLAN.IF_STA) lager et klientgrensesnitt mot ruteren, og active(True) slår radioen på. connect() starter tilkoblingen uten å vente på den.
  • Løkka venter i opptil 20 sekunder. MicroPython prøver som standard på nytt i det uendelige, også ved feil passord, så programmet trenger en egen tidsgrense. network.STAT_GOT_IP betyr at kortet har fått IP-adresse, og negativ status betyr feil.
  • wlan.ipconfig("addr4")[0] er IP-adressen kortet har fått fra ruteren, for eksempel 192.168.1.42. Programmet skriver den ut i Shell.
  • PAGE er nettsiden som tekst. %s byttes ut med «PÅ» eller «AV», og charset="utf-8" gjør at æ, ø og å vises riktig.
  • getaddrinfo("0.0.0.0", 80) og bind() får serveren til å lytte etter tilkoblinger på port 80 fra alle enheter på nettet. SO_REUSEADDR lar deg starte programmet på nytt uten å vente på at porten blir ledig.
  • server.accept() venter på en nettleser og gir en egen socket for den. settimeout(3) hindrer at en avbrutt forbindelse låser serveren.
  • Første linje fra nettleseren ser ut som GET /on HTTP/1.1. Løkka etter den leser resten av HTTP-hodet fram til den tomme linjen, og parts[1] er stien: /on, /off eller /.
  • led_on husker tilstanden. Svaret er HTTP-hodet i HEADER pluss siden, og client.close() i finally lukker forbindelsen også ved feil.

Test og feilsøking

  1. Lagre begge filene på kortet og kjør main.py. Shell viser «Kobler til WiFi ...» og så adressen.
  2. Åpne adressen på en mobil eller PC på samme nett og trykk «Slå på».
  3. Når alt virker, kan kortet stå på en USB-lader. Adressen kan endre seg etter omstart; finn den i ruteren eller i Thonny.
  • Status 1 etter 20 sekunder: kortet fikk ikke koblet seg til. MicroPython prøver på nytt i det uendelige, så også feil passord eller feil nettnavn kan vises som status 1. Sjekk nettnavn og passord i wifi_secrets.py (store og små bokstaver), at nettet sender på 2,4 GHz, og flytt kortet nærmere ruteren.
  • Status −3, −2 eller −1: feil passord, nettet ble ikke funnet eller en annen feil. Sjekk de samme punktene.
  • Status 2: kortet er koblet til nettet, men har ikke fått IP-adresse. Start ruteren eller kortet på nytt.
  • Siden åpnes ikke: mobilen må være på samme nett, ikke på mobildata eller et eget gjestenett.
  • Ustabil forbindelse: antennen sitter i motsatt ende av USB-kontakten, og databladet sier at ingenting bør stikke inn i antenneområdet. La ledningene fra pinne 18 til 20 gå ut til siden.
Bare for hjemmenettet: Siden har ingen innlogging, så alle på nettet kan styre LED-en. Ikke åpne port 80 mot internett i ruteren. Skal prosjektet styre noe annet enn en LED, trenger det innlogging og en trygg starttilstand, slik LED-en her er av ved oppstart.

Prøv selv: legg til siden /temp, som viser brikketemperaturen fra nivå 2, eller styr den innebygde LED-en med Pin("LED", Pin.OUT).

Vanlige spørsmål

Hva er forskjellen på Pico 2 W og Pico W?

Pico 2 W har RP2350 med to Cortex-M33- eller to Hazard3 RISC-V-kjerner på opptil 150 MHz og 520 kB SRAM. Pico W har RP2040 med 264 kB SRAM. Pinnene i denne guiden sitter likt, men MicroPython-fila er forskjellig. Se også Raspberry Pi Pico eller ESP32.

Hvorfor finner ikke Thonny kortet?

Prøv en annen USB-kabel. Mange kabler fører bare strøm og ikke data. Kontroller tolken nederst til høyre. Vises disken RP2350 fortsatt, er MicroPython ikke installert. Kjører et program i en løkke, trykker du Stop.

Hvordan starter programmet uten PC?

Lagre det på kortet som main.py. MicroPython kjører fila hver gang kortet starter, så en USB-lader holder.

Tåler Pico 2 W 5 V på pinnene?

Nei, hold deg til 3,3 V. Utgangene gir 3,3 V, og GP26 til GP28 tåler ikke mer enn 3,3 V. RP2350-databladet beskriver en viss toleranse for høyere spenning på de digitale pinnene, men bare når kortet har strøm og pinnen er en inngang, så ikke stol på den. Bruk en nivåomformer mot 5 V-utstyr.

Må jeg holde inne BOOTSEL hver gang?

Nei, bare når fastvaren skal installeres eller oppdateres. Kjører kortet MicroPython, kan du skrive import machine og machine.bootloader() i Shell for å starte BOOTSEL-modus uten knappen.

Veien videre

Med LED, knapp, PWM, ADC og WiFi har du grunnlaget for de fleste små Pico-prosjekter. Til sensorer og display gir et koblingsbrett med 830 hull bedre plass. ESP32-guiden med MicroPython-eksempler går fra blink til webserver på ESP32, og guiden om GPIO med Python tar deg videre til Raspberry Pi. Er du usikker på hvilken plattform du skal velge, kan du begynne med oversikten over programmering med elektronikk.

Kilder

Installasjon og BOOTSEL følger Raspberry Pis MicroPython-dokumentasjon. Pinner, strøm og antenne er kontrollert mot databladet for Pico 2 W, og temperaturformel, pull-up og RP2350-E9 mot RP2350-databladet. LED-navnet, landkoden og webserveren bygger på Raspberry Pis WiFi-veiledning for Pico W-kortene og de offisielle MicroPython-eksemplene. Pin, PWM, ADC og WLAN følger MicroPythons hurtigreferanse for RP2.

Alle guider

Produkter omtalt i denne guiden

Produktene som brukes og sammenlignes i guiden, med pris og lagerstatus.