Arduino Nano RP2040 Connect

Upozorenje

Ova ploča više nije podržana. Posljednje izdanje OpenMV firmvera za Arduino Nano RP2040 Connect je 4.7.0. Za ovaj cilj neće biti izdana daljnja ažuriranja ugrađenog programa (firmware), ispravci grešaka ni nove značajke. Informacije u nastavku sačuvane su za korisnike koji koriste verziju 4.7.0 ili stariju.

Arduino Nano RP2040 Connect je ploča dimenzija 45 × 18 mm u Arduino-Nano formatu izgrađena oko Raspberry Pi RP2040 — dvojezgrenog ARM Cortex‑M0+ koji radi na 133 MHz s 264 KB internog SRAM-a. WiFi i BLE dolaze iz U‑blox NINA‑W102 modula, a ploča nosi LSM6DSOX 6‑osni IMU i MP34DT06 PDM mikrofon. OpenMV firmver upravlja svime time iz MicroPythona.

Arduino Nano RP2040 Connect

Za potpunu tehničku dokumentaciju, fotografije i dimenzije pogledajte stranicu proizvoda Arduino Nano RP2040 Connect.

Istaknute značajke

  • Raspberry Pi RP2040 dvojezgreni ARM Cortex‑M0+ na 133 MHz s 264 KB internog SRAM-a.

  • 16 MB vanjske QSPI flash memorije.

  • U‑blox NINA‑W102 modul koji pruža 2.4 GHz Wi‑Fi b/g/n i Bluetooth 4.2 (BR/EDR + LE).

  • LSM6DSOX 6‑osni IMU i MP34DT06 PDM mikrofon.

  • Micro USB priključak za napajanje, programiranje i CDC REPL.

  • 22 korisnička I/O pina na standardnim Nano priključcima — TX/RX, D2D13 (digitalni), A0A7 (analogni).

Raspored pinova

Raspored pinova Arduino Nano RP2040 Connect

Referenca pinova

Naziv pina

Referenca

Funkcija

TX

3.3 V

UART0 TX / SPI0 RX / I2C0 SDA / PWM0 A

RX

3.3 V

UART0 RX / SPI0 CS / I2C0 SCL / PWM0 B

D2

3.3 V

SPI1 CS / UART1 RX / I2C0 SCL / PWM4 B

D3

3.3 V

SPI1 TX / UART0 RTS / I2C1 SCL / PWM7 B

D4

3.3 V

SPI0 RX / UART0 TX / I2C0 SDA / PWM0 A

D5

3.3 V

SPI0 CS / UART0 RX / I2C0 SCL / PWM0 B

D6

3.3 V

SPI0 SCK / UART0 CTS / I2C1 SDA / PWM1 A

D7

3.3 V

SPI0 TX / UART0 RTS / I2C1 SCL / PWM1 B

D8

3.3 V

SPI0 RX / UART1 TX / I2C0 SDA / PWM2 A

D9

3.3 V

SPI0 CS / UART1 RX / I2C0 SCL / PWM2 B

D10

3.3 V

SPI0 CS / UART1 RX / I2C0 SCL / PWM2 B

D11

3.3 V

SPI0 TX / UART1 RTS / I2C1 SCL / PWM3 B

D12

3.3 V

SPI0 RX / UART1 TX / I2C0 SDA / PWM2 A

D13

3.3 V

SPI0 SCK / UART1 CTS / I2C1 SDA / PWM3 A

D14 / A0

3.3 V

ADC / SPI1 SCK / UART1 CTS / I2C1 SDA / PWM5 A

D15 / A1

3.3 V

ADC / SPI1 TX / UART1 RTS / I2C1 SCL / PWM5 B

D16 / A2

3.3 V

ADC / SPI1 RX / UART0 TX / I2C0 SDA / PWM6 A

D17 / A3

3.3 V

ADC / SPI1 CS / UART0 RX / I2C0 SCL / PWM6 B

D18 / A4 / SDA

3.3 V

ADC / I2C0 SDA / SPI1 RX / UART0 TX / PWM6 A

D19 / A5 / SCL

3.3 V

ADC / I2C0 SCL / SPI1 CS / UART0 RX / PWM6 B

D20 / A6

3.3 V

ADC / GPIO

D21 / A7

3.3 V

ADC / GPIO

RESET

3.3 V

pritisnite RESET gumb na ploči ili spojite na GND za resetiranje

REC

3.3 V

BOOTSEL — postavite na visoku razinu pri uključivanju za ulazak u RP2040 ROM pokretač (bootloader)

LED_BUILTIN

Narančasta korisnička LED na D13

LED_RED

crveni kanal RGB LED-a

LED_GREEN

zeleni kanal RGB LED-a

LED_BLUE

plavi kanal RGB LED-a

Upozorenje

I/O pinovi Nano RP2040 Connect ploče rade samo na 3.3 Vnisu otporni na 5 V. Dovođenje 5 V na njih oštetit će RP2040.

Pinovi za napajanje

  • VIN — ulaz 4 – 20 V. Napaja ploču kroz ugrađeni prekidački regulator. Također se napaja preko diode iz USB 5 V voda, pa USB i VIN mogu biti prisutni istovremeno bez međusobnog povratnog napajanja.

  • +5V — prema zadanome nije spojen.

  • +3V3 — izlaz 3.3 V regulatora.

  • AREF — pin analogne reference. Na ovoj ploči nije spojen na RP2040 — ADC je uvijek referenciran na 3.3 V.

  • GND — zajednička masa.

Nano RP2040 Connect može se napajati kroz bilo koji od putova:

  • Micro USB — dovodi 5 V ugrađenom regulatoru.

  • VIN pin — dovedite regulirano napajanje od 4 – 20 V.

Napomena

Lemni premosnik na dnu ploče povezuje +5V s USB 5 V vodom. Zatvorite ga kako bi +5V pin priključka stvarno nosio 5 V.

Napomena

Normalno zatvoreni lemni premosnik na izlazu ugrađenog 4–20 V prekidačkog regulatora može se prerezati kako bi se onemogućio regulator, tako da se ploča može napajati izravno iz vanjskog 3.3 V izvora na +3V3.

Pinovi za oporavak i otklanjanje pogrešaka

  • RESET — i izloženi kontakt i trenutni RESET gumb na vrhu ploče, povezani s RP2040 NRST linijom. Spojite na GND ili pritisnite gumb za resetiranje.

  • REC — izloženi kontakt. Držanje REC na visokoj razini pri uključivanju (ili tijekom pritiska na RESET) postavlja RP2040 u njegov ROM pokretač (bootloader); ploča se ponovno prijavljuje kao USB disk za masovnu pohranu pod nazivom RPI-RP2 i prihvaća .uf2 sliku ugrađenog programa (firmware).

Nano RP2040 Connect koristi Arduinov standardni dvostruki pritisak za reset za ulazak u Arduinov pokretač (bootloader). Brzo dvaput pritisnite RESET gumb — ploča se ponovno prijavljuje preko USB-a kao UF2 uređaj i OpenMV IDE može upisati novu sliku ugrađenog programa (firmware).

SWD signali RP2040 izloženi su na pozlaćenim kontaktima na stražnjoj strani ploče, neposredno ispod NINA modula. Svi signali za otklanjanje pogrešaka referencirani su na 3.3 V.

Ugrađena periferija

LED-ovi

Nano RP2040 Connect ima korisnički RGB LED — pogonjen kroz kanale LED_RED, LED_GREEN i LED_BLUE označene na ploči — uz zaseban narančasti LED_BUILTIN na D13. Sva četiri mogu se programski upravljati kroz machine.LED

from machine import LED

LED("LED_RED").on()
LED("LED_GREEN").on()
LED("LED_BLUE").on()
LED("LED_BUILTIN").on()

Zaseban zeleni power LED na ploči svijetli kad god je +3.3 V vod aktivan i njime se ne može korisnički upravljati.

Senzor kamere

OpenMV firmver na Nano RP2040 Connect podržava OmniVision OV7670 paralelni CMOS senzor. Ploča nema ugrađeni senzor slike — spojite OV7670 modul na pinove priključka označene na ploči navedene u nastavku i pogonite ga kroz modul csi — senzori kamere

import csi

cam = csi.CSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.QVGA)
cam.snapshot(time=2000)       # let auto‑exposure settle

while True:
    img = cam.snapshot()

Napomena

OV7670 zauzima 14 pinova. Firmver ih povezuje na sljedeći način:

Signal senzora

Nano RP2040 pin

D0

D3

D1

D4

D2

D5

D3

D6

D4

D7

D5

D8

D6

D9

D7

D2

HSYNC

A1

VSYNC

A0

PXCLK

A3

MXCLK

A2

POWER

TX

RESET

RX

SCL

SDA (I²C 0)

SDA

SCL (I²C 0)

I²C upravljačka sabirnica OV7670 dijeli se s ugrađenim IMU-om i ATECC608A na I²C 0. Senzor se nalazi na 7‑bitnoj adresi 0x21 — korisnički uređaji na sabirnici 0 također moraju izbjegavati ovu adresu kada je kamera spojena.

IMU

Ugrađeni LSM6DSOX 6‑osni akcelerometar + žiroskop nalazi se na I2C0. machine.I2C(0) rp2 porta prema zadanome koristi drugačiji skup pinova, pa eksplicitno proslijedite SDA/SCL kontakte označene na ploči. Koristite ugrađeni lsm6dsox.LSM6DSOX upravljački program:

import time
from machine import I2C, Pin
from lsm6dsox import LSM6DSOX

bus = I2C(0, scl=Pin("SCL"), sda=Pin("SDA"))
imu = LSM6DSOX(bus)

while True:
    print(imu.accel())     # (x, y, z) in g
    print(imu.gyro())      # (x, y, z) in deg/s
    time.sleep_ms(100)

Mikrofon

Ugrađeni MP34DT06 PDM mikrofon snima se kroz audio — Audio modul koristeći jedan od PIO blokova RP2040:

import audio
from ulab import numpy as np

def loudness(pcmbuf):
    samples = np.array(np.frombuffer(pcmbuf, dtype=np.int16), dtype=np.float)
    rms = np.sqrt(np.mean(samples ** 2))
    if rms > 10000:
        print("Loud!", int(rms))

audio.init(channels=1, frequency=16000, gain_db=24)
audio.start_streaming(loudness)

while True:
    pass

Wi‑Fi

Ugrađeni NINA‑W102 modul izložen je preko network — konfiguracija mreže kao stanično (station) sučelje:

import network, time

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("ssid", "password")
while not wlan.isconnected():
    time.sleep(1)
print("Wi‑Fi IP:", wlan.ipconfig("addr4")[0])

Bluetooth

Isti NINA modul također izlaže Bluetooth 4.2 LE. Koristite aioble — Asinkroni BLE za BLE prilagođen asynciju — na primjer, oglašavajte se kao periferija i čekajte da se centralni uređaj spoji:

import asyncio
import aioble

async def run():
    while True:
        conn = await aioble.advertise(250_000, name="Nano-RP2040")
        print("Connected:", conn.device)
        await conn.disconnected()

asyncio.run(run())

Referenca sabirnica

GPIO

Koristite machine.Pin za očitavanje ili pogon bilo kojeg pina označenog na ploči. Izlazi su 3.3 V CMOS, ukupno 50 mA propusta (sink) preko svih GPIO-a.

from machine import Pin

out = Pin("D2", Pin.OUT)
out.on()
out.off()
out.value(1)

inp = Pin("D3", Pin.IN, Pin.PULL_UP)
print(inp.value())

Svaki ulazni pin također može pokrenuti prekid pri prijelazima ruba:

def handler(pin):
    print("triggered:", pin)

Pin("D3", Pin.IN, Pin.PULL_UP).irq(
    handler, Pin.IRQ_FALLING | Pin.IRQ_RISING,
)

UART

Sabirnica

TX

RX

UART0

TX

RX

Koristite nazive s otiska TX/RX s machine.UART

from machine import UART

uart = UART(0, baudrate=115200)
uart.write("hello")
uart.read(5)

Napomena

machine.UART(1) postoji, ali je rezerviran za ugrađeni NINA‑W102 modul (BLE veza); nemojte ga koristiti izravno.

I²C

Sabirnica

SDA

SCL

I2C0

SDA / A4

SCL / A5

I2C1

A0

A1

Objema sabirnicama pinovi se moraju eksplicitno proslijediti machine.I2C

from machine import I2C, Pin

bus0 = I2C(0, scl=Pin("SCL"), sda=Pin("SDA"), freq=400_000)
bus0.scan()

bus1 = I2C(1, scl=Pin("A1"),  sda=Pin("A0"),  freq=400_000)
bus1.scan()

Napomena

Dva ugrađena čipa dijele sabirnicu 0 — korisnički uređaji na ovoj sabirnici moraju izbjegavati njihove adrese:

  • 0x6A — LSM6DSOX IMU

  • 0x60 — ATECC608A‑MAHDA‑T

Korištenje A0/A1 kao I²C zauzima ih za sabirnicu, pa ne mogu istovremeno biti ADC ulazi.

Napomena

SDA / SCL kontakti (sabirnica 0) imaju ugrađene pull-up otpornike na 3.3 V, pa za uređaje na toj sabirnici nisu potrebni vanjski pull-up otpornici. A0 / A1 (sabirnica 1) ih nemaju — dodajte vanjske pull-up otpornike pri korištenju sabirnice 1.

Isti hardver može se koristiti i u ciljnom (slave) načinu rada kroz machine.I2CTarget kako bi se drugom I²C upravljaču izložilo memorijsko područje:

from machine import I2CTarget

buf = bytearray(32)
target = I2CTarget(0, addr=0x42, mem=buf)

SPI

Sabirnica

MOSI

MISO

SCK

CS

SPI0

D11

D12

D13

D10

rp2 port na ovoj ploči ne konfigurira unaprijed pinove SPI0, pa eksplicitno proslijedite kontakte označene na ploči pri stvaranju sabirnice:

from machine import SPI, Pin

spi = SPI(0, baudrate=10_000_000,
          sck=Pin("D13"), mosi=Pin("D11"), miso=Pin("D12"))
cs = Pin("D10", Pin.OUT, value=1)   # CS is not driven by the SPI peripheral

cs.value(0)
spi.write(b"hello")
cs.value(1)

Napomena

D13 ujedno služi i kao narančasti LED_BUILTIN — pogon SPI-ja na ovoj sabirnici trepćet će LED u ritmu sa satom sabirnice.

Napomena

machine.SPI(1) postoji, ali je rezerviran za ugrađeni NINA‑W102 modul (Wi-Fi/BLE SPI veza); nemojte ga koristiti izravno.

ADC

RP2040 ima četiri 12‑bitna ADC kanala izložena na A0–A3, svi referencirani na 3.3 Vread_u16 vraća 0–65535 u rasponu 0–3.3 V na pinu. AREF pin ploče nije spojen, pa je referenca uvijek 3.3 V:

from machine import ADC
import time

adc = ADC("A0")
while True:
    voltage = adc.read_u16() * 3.3 / 65535
    print(voltage)
    time.sleep_ms(100)

PWM

Pin

Odsječak / kanal

TX

PWM0 A

RX

PWM0 B

D2

PWM4 B

D3

PWM7 B

D4

PWM0 A

D5

PWM0 B

D6

PWM1 A

D7

PWM1 B

D8

PWM2 A

D9

PWM2 B

D10

PWM2 B

D11

PWM3 B

D12

PWM2 A

D13

PWM3 A

D14 / A0

PWM5 A

D15 / A1

PWM5 B

D16 / A2

PWM6 A

D17 / A3

PWM6 B

D18 / A4 / SDA

PWM6 A

D19 / A5 / SCL

PWM6 B

Pogonite bilo koji od njih preko machine.PWM

from machine import Pin, PWM

pwm = PWM(Pin("D3"), freq=1_000, duty_u16=32768)

Napomena

Nekoliko pinova dijeli kanale PWM odsječka:

  • PWM0 A je na TX i D4.

  • PWM0 B je na RX i D5.

  • PWM2 A je na D8 i D12.

  • PWM2 B je na D9 i D10.

  • PWM6 A je na D16/A2 i D18/A4/SDA.

  • PWM6 B je na D17/A3 i D19/A5/SCL.

Odaberite jednog potrošača po kanalu odsječka. Kanali A i B unutar istog odsječka dijele svoj period (frekvenciju), ali svaki ima vlastiti radni ciklus.

Programski emulirane (bit-bang) sabirnice

machine.SoftI2C i machine.SoftSPI rade na bilo kojem GPIO-u ako vam treba dodatna sabirnica.

Toplinski senzor (izvan ploče)

Firmver uključuje fir — upravljački program termalnog senzora (fir == daleko infracrveno) upravljački program za vanjski spojeni AMG8833 8×8 toplinski snimač. Spojite modul na I²C sabirnicu navedenu u nastavku, zatim očitajte sličice s fir.init() + fir.snapshot()

import time
import image
import fir

fir.init()                          # auto‑detects the sensor
clock = time.clock()

while True:
    clock.tick()
    try:
        img = fir.snapshot(x_scale=5, y_scale=5,
                           color_palette=image.PALETTE_IRONBOW,
                           hint=image.BICUBIC,
                           copy_to_fb=True)
    except OSError:
        continue
    print(clock.fps())

fir upravljački program komunicira sa senzorom samo preko I²C 0 — spojite modul na SCL / SDA kontakte označene na ploči. 7‑bitnu adresu senzora (0x69) ne smije koristiti nijedan drugi uređaj na toj sabirnici.

Mjerenje vremena

time

Modul time pokriva blokirajuća kašnjenja, monotone otkucaje i mjerenje proteklog vremena:

import time

time.sleep(1)              # seconds
time.sleep_ms(500)
time.sleep_us(10)

start = time.ticks_ms()
# ...do work...
elapsed = time.ticks_diff(time.ticks_ms(), start)

Virtualni mjerači vremena

machine.Timer zakazuje periodične ili jednokratne povratne pozive bez zauzimanja utora hardverskog mjerača vremena. Proslijedite -1 kao id za korištenje virtualnog (programskog) mjerača vremena:

from machine import Timer

one_shot = Timer(-1)
one_shot.init(period=5_000, mode=Timer.ONE_SHOT,
              callback=lambda t: print("once"))

periodic = Timer(-1)
periodic.init(period=2_000, mode=Timer.PERIODIC,
              callback=lambda t: print("tick"))

Vrijednosti perioda izražene su u milisekundama. Pozovite deinit() za zaustavljanje i oslobađanje utora.

Sat stvarnog vremena

machine.RTC čuva stvarno vrijeme kroz resetiranja. RTC RP2040 vezan je za oscilator na čipu i ne preživljava potpuni gubitak napajanja — postavite vrijeme pri svakom hladnom pokretanju ako je to važno za vašu aplikaciju:

from machine import RTC

rtc = RTC()
rtc.datetime((2026, 4, 30, 4, 12, 0, 0, 0))   # Y, M, D, weekday, h, m, s, subsec
print(rtc.datetime())

Watchdog

machine.WDT resetira ploču ako se aplikacija zaglavi. Jednom pokrenut ne može se zaustaviti niti ponovno konfigurirati — hranite ga periodično unutar vaše glavne petlje:

from machine import WDT

wdt = WDT(timeout=5_000)   # 5 second window
while True:
    # ...do work...
    wdt.feed()

Informacije o pokretanju i izvođenju

Ažuriranje ugrađenog programa (UF2)

Nano RP2040 Connect koristi Arduinov standardni dvostruki pritisak za reset za ulazak u Arduinov pokretač (bootloader). Brzo dvaput pritisnite reset gumb — ploča se ponovno prijavljuje preko USB-a kao UF2 uređaj i OpenMV IDE može upisati novu sliku ugrađenog programa (firmware).

Skripta u izvođenju može na zahtjev ponovno ući u pokretač (bootloader) pozivanjem machine.bootloader()

import machine

machine.bootloader()

Datotečni sustav i redoslijed pokretanja

Firmver Nano RP2040 Connect montira jedan datotečni sustav pri pokretanju:

  • Interna flash memorija — uvijek montirana na /flash i korištena kao radni direktorij. Prema zadanome sadrži main.py i README.txt; stvara se pri prvom pokretanju.

Nakon montiranja, interpreter zatim izvodi skripte iz /flash:

  • boot.py se izvodi pri svakom mekom resetiranju.

  • main.py se izvodi samo pri hladnom pokretanju, neposredno nakon boot.py.

Zadani main.py isporučen na svježe upisanoj ploči samo trepće plavim kanalom korisničkog RGB LED-a kao otkucaj srca (dva kratka pulsa, kratka stanka), tako da možete prepoznati da se firmver uredno pokrenuo bez ikakvog priključenog domaćina.

Kada je povezan preko USB-a, /flash se na domaćinu prijavljuje kao USB disk za masovnu pohranu, što vam omogućuje izravno uređivanje boot.py, main.py i bilo kojih drugih datoteka. Izbacite disk prije resetiranja ploče kako bi domaćin ispraznio svoje međuspremljene zapise.

Napomena

Budući da operacijski sustav tretira disk kao pasivni blok-uređaj, datoteke koje stvori ili izmijeni kôd koji se izvodi na kameri neće se pojaviti dok domaćin ponovno ne montira disk. Ako i operacijski sustav i kamera istovremeno pišu na isti datotečni sustav, operacijski sustav će pobijediti i prepisati promjene koje je napravila kamera. Koristite SD karticu za sve podatke koje skripta zapisuje natrag, i ponovno montirajte prije čitanja tih datoteka s domaćina.

Napomena

Crveni kanal korisničkog RGB LED-a može se nakratko upaliti dok domaćin čita s USB diska za masovnu pohranu ili piše na njega — to je pokazatelj aktivnosti pogonjen firmverom, a ne kvar.

Veličine pohrane

Nano RP2040 Connect isporučuje se s:

  • /flash14 MB FAT datotečni sustav, za čitanje/pisanje.

Nano RP2040 izdanje ne uključuje ROMFS; isporučujte Python module i ML modele izravno na /flash.

Softverske biblioteke

Pogledajte indeks biblioteke za potpuni popis modula — uključujući one koji su jedinstveni za izdanje Nano RP2040 Connect.