Arduino Nano RP2040 Connect

Warning

บอร์ดนี้ไม่ได้รับการสนับสนุนอีกต่อไป เวอร์ชัน OpenMV เฟิร์มแวร์สุดท้ายสำหรับ Arduino Nano RP2040 Connect คือ 4.7.0 จะไม่มีการอัปเดตเฟิร์มแวร์ แก้ไขบัก หรือเพิ่มฟีเจอร์ใหม่สำหรับเป้าหมายนี้อีก ข้อมูลด้านล่างนี้เก็บรักษาไว้สำหรับผู้ใช้ที่ใช้เวอร์ชัน 4.7.0 หรือต่ำกว่า

Arduino Nano RP2040 Connect เป็นบอร์ดรูปแบบ Arduino Nano ขนาด 45 × 18 มม. ที่สร้างบน Raspberry Pi RP2040 ซึ่งเป็น ARM Cortex‑M0+ แบบดูอัลคอร์ทำงานที่ 133 MHz พร้อม SRAM ภายใน 264 KB Wi-Fi และ BLE มาจากโมดูล U‑blox NINA‑W102 และบอร์ดมี IMU 6 แกน LSM6DSOX และไมโครโฟน PDM MP34DT06 OpenMV เฟิร์มแวร์ขับเคลื่อนทั้งหมดนี้ผ่าน MicroPython

Arduino Nano RP2040 Connect

สำหรับข้อมูล datasheet ฉบับเต็ม รูปภาพ และขนาด ดูที่ หน้าสินค้า Arduino Nano RP2040 Connect

จุดเด่น

  • Raspberry Pi RP2040 ARM Cortex‑M0+ แบบดูอัลคอร์ที่ 133 MHz พร้อม SRAM ภายใน 264 KB

  • แฟลช QSPI ภายนอก 16 MB

  • โมดูล U‑blox NINA‑W102 ที่รองรับ Wi‑Fi 2.4 GHz b/g/n และ Bluetooth 4.2 (BR/EDR + LE)

  • LSM6DSOX IMU 6 แกน และไมโครโฟน PDM MP34DT06

  • ขั้วต่อ Micro USB สำหรับจ่ายไฟ โปรแกรม และ CDC REPL

  • พิน I/O ของผู้ใช้ 22 พิน บนเฮดเดอร์ Nano มาตรฐาน — TX/RX, D2D13 (ดิจิทัล), A0A7 (อนาล็อก)

ผังพิน

Arduino Nano RP2040 Connect Pinout

ตารางอ้างอิงพิน

ชื่อพิน

อ้างอิง

ฟังก์ชัน

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

กดปุ่ม RESET บนบอร์ดหรือดึงลง GND เพื่อรีเซ็ต

REC

3.3 V

BOOTSEL — ดึงขึ้น HIGH ขณะเปิดเครื่องเพื่อเข้าสู่ ROM bootloader ของ RP2040

LED_BUILTIN

LED ผู้ใช้สีส้มบน D13

LED_RED

ช่องสีแดงของ RGB LED

LED_GREEN

ช่องสีเขียวของ RGB LED

LED_BLUE

ช่องสีน้ำเงินของ RGB LED

Warning

พิน I/O ของ Nano RP2040 Connect เป็น 3.3 V เท่านั้นไม่รองรับ 5 V การจ่าย 5 V เข้าไปจะทำให้ RP2040 เสียหาย

พินจ่ายไฟ

  • VIN — อินพุต 4 – 20 V จ่ายไฟให้บอร์ดผ่านตัวควบคุมแบบสวิตชิ่งบนบอร์ด นอกจากนี้ยังได้รับไฟจากไดโอดจากราง USB 5 V ดังนั้น USB และ VIN สามารถมีไฟพร้อมกันได้โดยไม่ทำให้กระแสไฟไหลย้อน

  • +5V — ไม่ต่อไว้โดยค่าเริ่มต้น

  • +3V3 — เอาต์พุตของตัวควบคุม 3.3 V

  • AREF — พินอ้างอิงอนาล็อก ไม่ได้ต่อกับ RP2040 บนบอร์ดนี้ — ADC อ้างอิงกับ 3.3 V เสมอ

  • GND — กราวด์ร่วม

Nano RP2040 Connect สามารถจ่ายไฟได้สองทาง:

  • Micro USB — จ่าย 5 V ให้ตัวควบคุมบนบอร์ด

  • พิน VIN — จ่ายแรงดันไฟที่ควบคุมแล้ว 4 – 20 V

Note

มี solder jumper ที่ด้านล่างของบอร์ดเชื่อม +5V เข้ากับราง USB 5 V ปิดเพื่อให้พินเฮดเดอร์ +5V มีไฟ 5 V จริง

Note

มี solder jumper แบบปกติปิด (normally‑closed) ที่เอาต์พุตของตัวควบคุมแบบสวิตชิ่ง 4–20 V บนบอร์ด สามารถตัดเพื่อปิดใช้งานตัวควบคุม เพื่อให้บอร์ดรับไฟโดยตรงจากแหล่งจ่าย 3.3 V ภายนอกที่ +3V3

พินรีคัฟเวอรีและดีบัก

  • RESET — ทั้งแผ่น pad ที่เปิดเผยและปุ่ม RESET แบบ momentary บนด้านบนของบอร์ด ต่อกับสาย NRST ของ RP2040 ดึงลง GND หรือกดปุ่มเพื่อรีเซ็ต

  • REC — แผ่น pad ที่เปิดเผย การดึง REC ขึ้น HIGH ขณะเปิดเครื่อง (หรือขณะกด RESET) จะนำ RP2040 เข้าสู่ ROM bootloader โดยบอร์ดจะ re-enumerate เป็นไดรฟ์ USB mass-storage ที่ชื่อ RPI-RP2 และยอมรับไฟล์เฟิร์มแวร์ .uf2

Nano RP2040 Connect ใช้ double‑tap reset มาตรฐานของ Arduino เพื่อเข้าสู่ Arduino's bootloader กดปุ่ม RESET สองครั้งอย่างรวดเร็ว — บอร์ดจะ re-enumerate ผ่าน USB เป็นอุปกรณ์ UF2 และ OpenMV IDE สามารถแฟลชเฟิร์มแวร์ใหม่ได้

สัญญาณ SWD ของ RP2040 เปิดเผยอยู่บน pad ที่ชุบแล้วที่ด้านหลังของบอร์ด ใต้โมดูล NINA สัญญาณดีบักทั้งหมดอ้างอิงกับ 3.3 V

อุปกรณ์ต่อพ่วงบนบอร์ด

LED

Nano RP2040 Connect มี RGB LED สำหรับผู้ใช้ — ขับผ่านช่อง LED_RED, LED_GREEN, และ LED_BLUE ที่พิมพ์ไว้บนบอร์ด — รวมถึง LED_BUILTIN สีส้มแยกต่างหากบน D13 ทั้งสี่ตัวสามารถควบคุมผ่านซอฟต์แวร์ได้ผ่าน machine.LED

from machine import LED

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

LED พาวเวอร์ สีเขียวแยกต่างหากบนบอร์ดจะติดทุกครั้งที่ราง +3.3 V ทำงาน และผู้ใช้ไม่สามารถควบคุมได้

เซนเซอร์กล้อง

OpenMV เฟิร์มแวร์บน Nano RP2040 Connect รองรับ เซนเซอร์ CMOS แบบพาราเลล OmniVision OV7670 บอร์ดไม่มี image sensor บนบอร์ด — ต่อโมดูล OV7670 เข้ากับพินเฮดเดอร์ที่พิมพ์ไว้ด้านล่าง และขับเคลื่อนผ่านโมดูล csi --- เซ็นเซอร์กล้อง

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()

Note

OV7670 ใช้ 14 พิน เฟิร์มแวร์ต่อสายดังนี้:

สัญญาณเซนเซอร์

พิน Nano RP2040

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 สำหรับควบคุม OV7670 ใช้ร่วมกับ IMU และ ATECC608A บนบอร์ดบน I²C 0 เซนเซอร์อยู่ที่แอดเดรส 7 บิต 0x21 — อุปกรณ์ของผู้ใช้บนบัส 0 ต้องหลีกเลี่ยงแอดเดรสนี้เมื่อต่อกล้องไว้

IMU

LSM6DSOX 6 แกน (accelerometer + gyroscope) บนบอร์ดอยู่บน I2C0 พอร์ต rp2 ของ machine.I2C(0) ค่าเริ่มต้นใช้ชุดพินอื่น ดังนั้นต้องส่งแผ่น pad SDA/SCL ที่พิมพ์ไว้อย่างชัดเจน ใช้ไดรเวอร์ frozen lsm6dsox.LSM6DSOX

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)

ไมโครโฟน

ไมโครโฟน PDM MP34DT06 บนบอร์ดถูกบันทึกผ่าน audio --- โมดูล Audio โดยใช้บล็อก PIO ของ 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

โมดูล NINA‑W102 บนบอร์ดเปิดเผยผ่าน network --- การกำหนดค่าเครือข่าย เป็น station interface:

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

โมดูล NINA เดียวกันยังเปิดเผย Bluetooth 4.2 LE ด้วย ใช้ aioble --- Async BLE สำหรับ BLE ที่รองรับ asyncio — ตัวอย่างเช่น โฆษณาเป็น peripheral และรอให้ central เชื่อมต่อ:

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())

ตารางอ้างอิงบัส

GPIO

ใช้ machine.Pin เพื่ออ่านหรือขับพินใดก็ได้ที่พิมพ์ไว้บนบอร์ด เอาต์พุตเป็น 3.3 V CMOS กระแสรวม 50 mA สำหรับ GPIO ทั้งหมด

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())

พินอินพุตใดก็ได้สามารถเรียกอินเทอร์รัปต์บนการเปลี่ยนขอบ (edge transition) ได้:

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

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

UART

บัส

TX

RX

UART0

TX

RX

ใช้ชื่อบนบอร์ด TX/RX กับ machine.UART

from machine import UART

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

Note

machine.UART(1) มีอยู่แต่สงวนไว้สำหรับโมดูล NINA‑W102 บนบอร์ด (ลิงก์ BLE) อย่าใช้โดยตรง

I²C

บัส

SDA

SCL

I2C0

SDA / A4

SCL / A5

I2C1

A0

A1

ทั้งสองบัสต้องส่งพินอย่างชัดเจนให้ 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()

Note

ชิปสองตัวบนบอร์ดใช้ บัส 0 ร่วมกัน — อุปกรณ์ของผู้ใช้บนบัสนี้ต้องหลีกเลี่ยงแอดเดรสของพวกเขา:

  • 0x6A — LSM6DSOX IMU

  • 0x60 — ATECC608A‑MAHDA‑T

การใช้ A0/A1 เป็น I²C จะใช้พินเหล่านั้นสำหรับบัส ดังนั้นไม่สามารถใช้เป็นอินพุต ADC ได้ในเวลาเดียวกัน

Note

แผ่น pad SDA / SCL (บัส 0) มีตัวต้านทาน pull-up ขึ้น 3.3 V บนบอร์ด จึงไม่จำเป็นต้องใช้ pull-up ภายนอกสำหรับอุปกรณ์บนบัสนั้น A0 / A1 (บัส 1) ไม่มี — ต้องเพิ่ม pull-up ภายนอกเมื่อใช้บัส 1

ฮาร์ดแวร์เดียวกันยังสามารถใช้ในโหมด target (slave) ผ่าน machine.I2CTarget เพื่อเปิดเผยพื้นที่หน่วยความจำให้กับ I²C controller อื่น:

from machine import I2CTarget

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

SPI

บัส

MOSI

MISO

SCK

CS

SPI0

D11

D12

D13

D10

พอร์ต rp2 ไม่ได้กำหนดค่าพิน SPI0 บนบอร์ดนี้ไว้ล่วงหน้า ดังนั้นต้องส่ง pad ที่พิมพ์ไว้อย่างชัดเจนเมื่อสร้างบัส:

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)

Note

D13 ทำหน้าที่เป็น LED_BUILTIN สีส้มด้วย — การขับ SPI บนบัสนี้จะทำให้ LED กะพริบตามจังหวะ clock ของบัส

Note

machine.SPI(1) มีอยู่แต่สงวนไว้สำหรับโมดูล NINA‑W102 บนบอร์ด (ลิงก์ SPI สำหรับ Wi-Fi/BLE) อย่าใช้โดยตรง

ADC

RP2040 มีช่อง ADC 12 บิต 4 ช่องเปิดเผยบน A0–A3 ทั้งหมด อ้างอิงกับ 3.3 Vread_u16 คืนค่า 0–65535 สำหรับ 0–3.3 V ที่พิน พิน AREF ของบอร์ดไม่ได้ต่อ ดังนั้นอ้างอิงเป็น 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

พิน

Slice / channel

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

ขับพินเหล่านั้นผ่าน machine.PWM

from machine import Pin, PWM

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

Note

พินหลายตัวใช้ช่อง PWM slice ร่วมกัน:

  • PWM0 A อยู่บน TX และ D4

  • PWM0 B อยู่บน RX และ D5

  • PWM2 A อยู่บน D8 และ D12

  • PWM2 B อยู่บน D9 และ D10

  • PWM6 A อยู่บน D16/A2 และ D18/A4/SDA

  • PWM6 B อยู่บน D17/A3 และ D19/A5/SCL

เลือก consumer หนึ่งตัวต่อ slice channel ช่อง A และ B ภายใน slice เดียวกันใช้ period (ความถี่) ร่วมกัน แต่แต่ละตัวมี duty cycle ของตัวเอง

บัสแบบ software bit‑bang

machine.SoftI2C และ machine.SoftSPI ทำงานบน GPIO ใดก็ได้หากต้องการบัสเพิ่มเติม

เซนเซอร์ความร้อน (ภายนอกบอร์ด)

เฟิร์มแวร์รวมไดรเวอร์ fir --- ไดรเวอร์เซนเซอร์ความร้อน (fir == far infrared) สำหรับ AMG8833 thermal imager แบบ 8×8 ที่ต่อสายภายนอก ต่อโมดูลเข้ากับบัส I²C ด้านล่าง จากนั้นอ่านเฟรมด้วย 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 สื่อสารกับเซนเซอร์ผ่าน I²C 0 เท่านั้น — ต่อโมดูลเข้ากับแผ่น pad SCL / SDA ที่พิมพ์ไว้ แอดเดรส 7 บิตของเซนเซอร์ (0x69) ต้องไม่ถูกใช้โดยอุปกรณ์อื่นบนบัสนั้น

การจับเวลา

time

โมดูล time ครอบคลุมการหน่วงเวลาแบบบล็อก, ticks แบบ monotonic และการวัดเวลาที่ผ่านไป:

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)

Virtual timers

machine.Timer กำหนดเวลาคอลแบ็กแบบ periodic หรือ one‑shot โดยไม่ใช้ hardware timer slot ส่ง -1 เป็น id เพื่อใช้ virtual (software) timer:

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"))

ค่า Period เป็นมิลลิวินาที เรียก deinit() เพื่อหยุดและคืน slot

Real‑time clock

machine.RTC รักษาเวลาแบบ wall‑clock ข้ามการรีเซ็ต RTC ของ RP2040 ผูกกับออสซิลเลเตอร์บนชิปและไม่รอดจากการตัดไฟทั้งหมด — ตั้งเวลาทุกครั้งที่บูตเย็นหากแอปพลิเคชันของคุณต้องการ:

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 รีเซ็ตบอร์ดหากแอปพลิเคชันค้าง เมื่อเริ่มแล้วไม่สามารถหยุดหรือกำหนดค่าใหม่ได้ — ต้องป้อนเป็นระยะๆ ภายใน main loop:

from machine import WDT

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

ข้อมูลการบูตและ runtime

การอัปเดตเฟิร์มแวร์ (UF2)

Nano RP2040 Connect ใช้ double‑tap reset มาตรฐานของ Arduino เพื่อเข้าสู่ Arduino's bootloader กดปุ่ม reset สองครั้งอย่างรวดเร็ว — บอร์ดจะ re-enumerate ผ่าน USB เป็นอุปกรณ์ UF2 และ OpenMV IDE สามารถแฟลชเฟิร์มแวร์ใหม่ได้

สคริปต์ที่กำลังทำงานสามารถกลับเข้าสู่ bootloader ได้ตามต้องการโดยเรียก machine.bootloader()

import machine

machine.bootloader()

ระบบไฟล์และลำดับการบูต

เฟิร์มแวร์ Nano RP2040 Connect เมาท์ระบบไฟล์เดียวเมื่อบูต:

  • แฟลชภายใน — เมาท์ที่ /flash เสมอและใช้เป็น working directory เก็บ main.py และ README.txt โดยค่าเริ่มต้น สร้างขึ้นในการบูตครั้งแรก

หลังจากเมาท์แล้ว interpreter จะรันสคริปต์จาก /flash:

  • boot.py ถูกรัน ทุกครั้ง ที่รีเซ็ตแบบ soft

  • main.py ถูกรัน เฉพาะการบูตเย็น เท่านั้น ทันทีหลังจาก boot.py

main.py เริ่มต้นที่จัดส่งบนบอร์ดที่แฟลชใหม่จะกะพริบช่อง blue ของ RGB LED ของผู้ใช้เป็น heartbeat (สองพัลส์สั้น ช่องว่างสั้น) เพื่อให้รู้ว่าเฟิร์มแวร์บูตสำเร็จโดยไม่มี host ต่อ

เมื่อเชื่อมต่อผ่าน USB /flash จะ enumerate เป็น USB mass‑storage drive บน host ทำให้สามารถแก้ไข boot.py, main.py และไฟล์อื่นๆ ได้โดยตรง ดีด drive ออกก่อนรีเซ็ตบอร์ด เพื่อให้ host flush การเขียนที่ cache ไว้

Note

เนื่องจาก OS จัดการ drive เป็น passive block device ไฟล์ที่สร้างหรือแก้ไขโดยโค้ดที่รันบนกล้องจะไม่ปรากฏจนกว่า host จะ re-mount drive ถ้าทั้ง OS และกล้องเขียน filesystem เดียวกันในเวลาเดียวกัน OS จะชนะและเขียนทับการเปลี่ยนแปลงของกล้อง ใช้ SD card สำหรับข้อมูลที่สคริปต์เขียนกลับ และ re-mount ก่อนอ่านไฟล์เหล่านั้นจาก host

Note

ช่อง red ของ RGB LED ของผู้ใช้อาจติดสั้นๆ ในขณะที่ host กำลังอ่านจากหรือเขียนไปยัง USB mass‑storage drive — นี่เป็นตัวบ่งชี้กิจกรรมที่ขับเคลื่อนโดยเฟิร์มแวร์ ไม่ใช่ข้อผิดพลาด

ขนาด storage

Nano RP2040 Connect มาพร้อมกับ:

  • /flash — FAT filesystem ขนาด 14 MB อ่าน/เขียนได้

Nano RP2040 build ไม่รวม ROMFS ให้จัดส่ง Python modules และ ML models บน /flash โดยตรง

ไลบรารีซอฟต์แวร์

ดู ดัชนีไลบรารี สำหรับรายการโมดูลทั้งหมด — รวมถึงโมดูลที่เฉพาะเจาะจงสำหรับ Nano RP2040 Connect build