Arduino Nano RP2040 Connect¶
تحذير
لم تعد هذه اللوحة مدعومة. آخر إصدار من برنامج OpenMV الثابت للوحة Arduino Nano RP2040 Connect هو 4.7.0. لن تصدر أي تحديثات إضافية للبرنامج الثابت أو إصلاحات للأخطاء أو ميزات جديدة لهذا الهدف. المعلومات أدناه محفوظة للمستخدمين الذين يشغّلون الإصدار 4.7.0 أو ما قبله.
لوحة Arduino Nano RP2040 Connect هي لوحة بأبعاد 45 × 18 مم وبصيغة Arduino‑Nano مبنية حول معالج Raspberry Pi RP2040 — وهو معالج مزدوج النواة من نوع ARM Cortex‑M0+ يعمل بتردد 133 ميغاهرتز مع ذاكرة SRAM داخلية بسعة 264 كيلوبايت. يأتي WiFi وBLE من وحدة U‑blox NINA‑W102، وتحمل اللوحة وحدة قياس بالقصور الذاتي (IMU) سداسية المحاور من نوع LSM6DSOX وميكروفون PDM من نوع MP34DT06. ويقوم برنامج OpenMV الثابت بتشغيل كل هذه المكونات من خلال MicroPython.
للاطلاع على صحيفة البيانات الكاملة والصور والأبعاد، راجع صفحة منتج Arduino Nano RP2040 Connect.
أبرز المواصفات¶
Raspberry Pi RP2040 معالج مزدوج النواة من نوع ARM Cortex‑M0+ بتردد 133 ميغاهرتز مع ذاكرة SRAM داخلية بسعة 264 كيلوبايت.
ذاكرة فلاش QSPI خارجية بسعة 16 ميغابايت.
وحدة U‑blox NINA‑W102 توفر Wi‑Fi بتردد 2.4 غيغاهرتز من نوع b/g/n وBluetooth 4.2 (BR/EDR + LE).
وحدة قياس بالقصور الذاتي (IMU) سداسية المحاور LSM6DSOX وميكروفون PDM من نوع MP34DT06.
موصّل Micro USB للطاقة والبرمجة وواجهة REPL عبر CDC.
22 دبوس إدخال/إخراج للمستخدم على رؤوس Nano القياسية —
TX/RX، D2–D13(رقمية)، A0–A7(تناظرية).
مخطط الدبابيس¶
مرجع الدبابيس¶
اسم الدبوس |
المرجع |
الوظيفة |
|---|---|---|
TX |
3.3 فولت |
UART0 TX / SPI0 RX / I2C0 SDA / PWM0 A |
RX |
3.3 فولت |
UART0 RX / SPI0 CS / I2C0 SCL / PWM0 B |
D2 |
3.3 فولت |
SPI1 CS / UART1 RX / I2C0 SCL / PWM4 B |
D3 |
3.3 فولت |
SPI1 TX / UART0 RTS / I2C1 SCL / PWM7 B |
D4 |
3.3 فولت |
SPI0 RX / UART0 TX / I2C0 SDA / PWM0 A |
D5 |
3.3 فولت |
SPI0 CS / UART0 RX / I2C0 SCL / PWM0 B |
D6 |
3.3 فولت |
SPI0 SCK / UART0 CTS / I2C1 SDA / PWM1 A |
D7 |
3.3 فولت |
SPI0 TX / UART0 RTS / I2C1 SCL / PWM1 B |
D8 |
3.3 فولت |
SPI0 RX / UART1 TX / I2C0 SDA / PWM2 A |
D9 |
3.3 فولت |
SPI0 CS / UART1 RX / I2C0 SCL / PWM2 B |
D10 |
3.3 فولت |
SPI0 CS / UART1 RX / I2C0 SCL / PWM2 B |
D11 |
3.3 فولت |
SPI0 TX / UART1 RTS / I2C1 SCL / PWM3 B |
D12 |
3.3 فولت |
SPI0 RX / UART1 TX / I2C0 SDA / PWM2 A |
D13 |
3.3 فولت |
SPI0 SCK / UART1 CTS / I2C1 SDA / PWM3 A |
D14 / A0 |
3.3 فولت |
ADC / SPI1 SCK / UART1 CTS / I2C1 SDA / PWM5 A |
D15 / A1 |
3.3 فولت |
ADC / SPI1 TX / UART1 RTS / I2C1 SCL / PWM5 B |
D16 / A2 |
3.3 فولت |
ADC / SPI1 RX / UART0 TX / I2C0 SDA / PWM6 A |
D17 / A3 |
3.3 فولت |
ADC / SPI1 CS / UART0 RX / I2C0 SCL / PWM6 B |
D18 / A4 / SDA |
3.3 فولت |
ADC / I2C0 SDA / SPI1 RX / UART0 TX / PWM6 A |
D19 / A5 / SCL |
3.3 فولت |
ADC / I2C0 SCL / SPI1 CS / UART0 RX / PWM6 B |
D20 / A6 |
3.3 فولت |
ADC / GPIO |
D21 / A7 |
3.3 فولت |
ADC / GPIO |
RESET |
3.3 فولت |
اضغط زر RESET الموجود على اللوحة أو اسحبه إلى GND لإعادة التعيين |
REC |
3.3 فولت |
BOOTSEL — اسحبه إلى المستوى المرتفع عند التشغيل للدخول إلى محمّل إقلاع ROM الخاص بـ RP2040 |
LED_BUILTIN |
— |
مؤشر LED برتقالي للمستخدم على |
LED_RED |
— |
قناة اللون الأحمر لمؤشر RGB LED |
LED_GREEN |
— |
قناة اللون الأخضر لمؤشر RGB LED |
LED_BLUE |
— |
قناة اللون الأزرق لمؤشر RGB LED |
تحذير
دبابيس الإدخال/الإخراج في لوحة Nano RP2040 Connect تعمل بجهد 3.3 فولت فقط — وهي غير متحملة لجهد 5 فولت. إن إدخال جهد 5 فولت إليها سيتلف معالج RP2040.
دبابيس الطاقة¶
VIN — دخل بجهد 4 – 20 فولت. يغذّي اللوحة عبر منظّم التبديل الموجود عليها. كما يُغذّى عبر صمام ثنائي من خط USB بجهد 5 فولت، لذا يمكن وجود USB و
VINفي الوقت نفسه دون أن يدفع أحدهما الآخر عكسيًا.+5V — غير موصول افتراضيًا.
+3V3 — خرج منظّم الجهد 3.3 فولت.
AREF — دبوس المرجع التناظري. غير موصول بمعالج RP2040 على هذه اللوحة — يكون ADC دائمًا مرجوعًا إلى 3.3 فولت.
GND — الأرضي المشترك.
يمكن تشغيل لوحة Nano RP2040 Connect عبر أيٍّ من المسارين:
Micro USB — يوفّر جهد 5 فولت لمنظّم اللوحة.
دبوس VIN — مرّر إمدادًا منظّمًا بجهد 4 – 20 فولت.
ملاحظة
يربط وصلة لحام (jumper) في أسفل اللوحة بين +5V وخط USB بجهد 5 فولت. أغلقها لجعل دبوس الرأس +5V يحمل فعليًا جهد 5 فولت.
ملاحظة
يمكن قطع وصلة لحام مغلقة افتراضيًا على خرج منظّم التبديل 4–20 فولت الموجود على اللوحة لتعطيل المنظّم، بحيث يمكن تشغيل اللوحة مباشرة من إمداد خارجي بجهد 3.3 فولت على +3V3.
دبابيس الاسترداد وتصحيح الأخطاء¶
RESET — وهو وسادة مكشوفة وزر RESET لحظي في أعلى اللوحة، مرتبطان بخط NRST في RP2040. اسحبه إلى GND أو اضغط الزر لإعادة التعيين.
REC — وسادة مكشوفة. إن إبقاء
RECعند المستوى المرتفع أثناء التشغيل (أو أثناء الضغط على RESET) يضع RP2040 في محمّل إقلاع ROM الخاص به؛ تُعاد فهرسة اللوحة كقرص تخزين USB كبير السعة باسمRPI-RP2وتقبل صورة برنامج ثابت بصيغة.uf2.
تستخدم لوحة Nano RP2040 Connect آلية النقر المزدوج لإعادة التعيين القياسية من Arduino للدخول إلى محمّل إقلاع Arduino. اضغط زر RESET مرتين بسرعة — تُعاد فهرسة اللوحة عبر USB كجهاز UF2 ويمكن لـ OpenMV IDE تحميل صورة برنامج ثابت جديد.
تُكشف إشارات SWD الخاصة بـ RP2040 على وسائد مطلية في الجهة الخلفية للوحة، أسفل وحدة NINA مباشرة. جميع إشارات تصحيح الأخطاء مرجوعة إلى 3.3 فولت.
الطرفيات الموجودة على اللوحة¶
مؤشرات 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()
يضيء مؤشر الطاقة الأخضر المنفصل على اللوحة كلما كان خط +3.3 فولت نشطًا، وهو غير قابل للتحكم من قبل المستخدم.
مستشعر الكاميرا¶
يدعم برنامج OpenMV الثابت على لوحة Nano RP2040 Connect المستشعر المتوازي من نوع CMOS طراز OmniVision OV7670. لا تحتوي اللوحة على مستشعر صور مدمج — قم بتوصيل وحدة 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()
ملاحظة
يحتاج OV7670 إلى 14 دبوسًا. يوصّلها البرنامج الثابت على النحو التالي:
إشارة المستشعر |
دبوس Nano RP2040 |
|---|---|
D0 |
|
D1 |
|
D2 |
|
D3 |
|
D4 |
|
D5 |
|
D6 |
|
D7 |
|
HSYNC |
|
VSYNC |
|
PXCLK |
|
MXCLK |
|
POWER |
|
RESET |
|
SCL |
|
SDA |
|
تتشارك ناقل التحكم I²C الخاص بـ OV7670 مع وحدة IMU وشريحة ATECC608A الموجودتين على اللوحة على ناقل I²C 0. يقع المستشعر على العنوان ذي 7 بتات 0x21 — يجب على أجهزة المستخدم على الناقل 0 تجنب هذا العنوان أيضًا عند توصيل الكاميرا.
IMU¶
يقع مقياس التسارع + الجيروسكوب سداسي المحاور LSM6DSOX الموجود على اللوحة على I2C0. يستخدم منفذ rp2 افتراضيًا مجموعة دبابيس مختلفة لـ machine.I2C(0)، لذا مرّر وسادتي SDA/SCL المطبوعتين على اللوحة صراحةً. استخدم المشغّل المجمّد 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 --- وحدة الصوت باستخدام إحدى كتل 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):
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 --- BLE غير المتزامن للحصول على BLE متوافق مع asyncio — على سبيل المثال، الإعلان كطرفية والانتظار حتى يتصل جهاز مركزي:
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 فولت CMOS، بتيار تصريف إجمالي 50 مللي أمبير عبر جميع دبابيس 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())
يمكن لأي دبوس إدخال أيضًا إطلاق مقاطعة عند انتقالات الحافة:
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)
ملاحظة
يوجد machine.UART(1) لكنه محجوز لوحدة NINA‑W102 الموجودة على اللوحة (وصلة BLE)؛ لا تستخدمه مباشرة.
I²C¶
الناقل |
SDA |
SCL |
|---|---|---|
I2C0 |
|
|
I2C1 |
|
|
يحتاج كلا الناقلين إلى تمرير دبابيسهما صراحةً إلى 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()
ملاحظة
تتشارك شريحتان على اللوحة الناقل 0 — يجب على أجهزة المستخدم على هذا الناقل تجنب عناوينهما:
0x6A— وحدة IMU طراز LSM6DSOX0x60— شريحة ATECC608A‑MAHDA‑T
إن استخدام A0/A1 كـ I²C يستهلكهما للناقل، لذا لا يمكن استخدامهما في الوقت نفسه كمدخلات ADC.
ملاحظة
تحتوي وسادتا SDA / SCL (الناقل 0) على مقاومات سحب لأعلى مدمجة على اللوحة إلى 3.3 فولت، لذا لا حاجة لمقاومات سحب لأعلى خارجية للأجهزة على ذلك الناقل. أما A0 / A1 (الناقل 1) فلا تحتوي عليها — أضف مقاومات سحب لأعلى خارجية عند استخدام الناقل 1.
يمكن أيضًا استخدام العتاد نفسه في وضع الهدف (التابع) عبر machine.I2CTarget لكشف منطقة ذاكرة لمتحكم I²C آخر:
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 على هذه اللوحة، لذا مرّر الوسائد المطبوعة على اللوحة صراحةً عند إنشاء الناقل:
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)
ملاحظة
يعمل D13 أيضًا كمؤشر LED_BUILTIN البرتقالي — إن تشغيل SPI على هذا الناقل سيومض المؤشر بالتزامن مع ساعة الناقل.
ملاحظة
يوجد machine.SPI(1) لكنه محجوز لوحدة NINA‑W102 الموجودة على اللوحة (وصلة SPI الخاصة بـ Wi-Fi/BLE)؛ لا تستخدمه مباشرة.
ADC¶
يحتوي RP2040 على أربع قنوات ADC ذات 12 بتًا مكشوفة على A0–A3، وجميعها مرجوعة إلى 3.3 فولت — تُرجع read_u16 قيمًا من 0 إلى 65535 عبر نطاق 0–3.3 فولت عند الدبوس. دبوس AREF في اللوحة غير موصول، لذا يكون المرجع دائمًا 3.3 فولت:
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¶
الدبوس |
الشريحة / القناة |
|---|---|
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)
ملاحظة
تتشارك عدة دبابيس قنوات شرائح PWM:
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.
اختر مستهلكًا واحدًا لكل قناة شريحة. تتشارك القناتان A وB داخل الشريحة نفسها فترتهما (الترددهما) لكن لكلٍّ منهما دورة عمل (duty cycle) خاصة بها.
النواقل المُحاكاة برمجيًا بأسلوب bit‑banging¶
تعمل machine.SoftI2C وmachine.SoftSPI على أي دبوس GPIO إن احتجت إلى ناقل إضافي.
المستشعر الحراري (خارج اللوحة)¶
يتضمن البرنامج الثابت مشغّل fir --- مشغّل المستشعر الحراري (fir == far infrared) لمصوّر حراري AMG8833 بدقة 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 فقط — قم بتوصيل الوحدة بوسادتي SCL / SDA المطبوعتين على اللوحة. يجب ألا يُستخدم العنوان ذو 7 بتات للمستشعر (0x69) من قبل أي جهاز آخر على ذلك الناقل.
التوقيت¶
time¶
تغطي وحدة time التأخيرات الحاجبة والنبضات الرتيبة (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)
المؤقتات الافتراضية¶
تجدول machine.Timer دوال رد نداء دورية أو لمرة واحدة دون استهلاك فتحة مؤقت عتادي. مرّر -1 كمعرّف لاستخدام مؤقت افتراضي (برمجي):
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"))
قيم الفترة بالمللي ثانية. استدعِ deinit() للإيقاف وتحرير الفتحة.
ساعة الوقت الحقيقي¶
تحفظ machine.RTC وقت ساعة الحائط عبر عمليات إعادة التعيين. ترتبط ساعة 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 تعيين اللوحة إذا تعلّق التطبيق. بمجرد تشغيله لا يمكن إيقافه أو إعادة تهيئته — أطعمه دوريًا داخل حلقتك الرئيسية:
from machine import WDT
wdt = WDT(timeout=5_000) # 5 second window
while True:
# ...do work...
wdt.feed()
معلومات الإقلاع والتشغيل¶
تحديث البرنامج الثابت (UF2)¶
تستخدم لوحة Nano RP2040 Connect آلية النقر المزدوج لإعادة التعيين القياسية من Arduino للدخول إلى محمّل إقلاع Arduino. اضغط زر إعادة التعيين مرتين بسرعة — تُعاد فهرسة اللوحة عبر USB كجهاز UF2 ويمكن لـ OpenMV IDE تحميل صورة برنامج ثابت جديد.
يمكن لبرنامج نصي قيد التشغيل إعادة الدخول إلى محمّل الإقلاع عند الطلب باستدعاء machine.bootloader()
import machine
machine.bootloader()
نظام الملفات وترتيب الإقلاع¶
يركّب البرنامج الثابت للوحة Nano RP2040 Connect نظام ملفات واحدًا عند الإقلاع:
ذاكرة الفلاش الداخلية — تُركَّب دائمًا على
/flashوتُستخدم كدليل العمل. تحتوي علىmain.pyوREADME.txtافتراضيًا؛ تُنشأ عند أول إقلاع على الإطلاق.
بعد التركيب، يقوم المفسّر بعد ذلك بتشغيل البرامج النصية من /flash:
يُنفَّذ
boot.pyعند كل إعادة تعيين ناعمة.يُنفَّذ
main.pyفقط عند الإقلاع البارد، مباشرة بعدboot.py.
يكتفي ملف main.py الافتراضي المشحون على لوحة حُمِّل عليها البرنامج الثابت حديثًا بإيماض قناة اللون الأزرق لمؤشر RGB LED الخاص بالمستخدم كنبضة قلب (نبضتان قصيرتان، ثم فجوة قصيرة)، بحيث يمكنك معرفة أن البرنامج الثابت أقلع بنجاح دون توصيل أي مضيف.
عند الاتصال عبر USB، تُفهرس /flash كقرص تخزين USB كبير السعة على المضيف، مما يتيح لك تحرير boot.py وmain.py وأي ملفات أخرى مباشرة. أخرج القرص قبل إعادة تعيين اللوحة حتى يفرّغ المضيف عمليات الكتابة المخبأة لديه.
ملاحظة
نظرًا لأن نظام التشغيل يتعامل مع القرص كجهاز كتلي سلبي، فإن الملفات التي يُنشئها أو يعدّلها الكود الذي يعمل على الكاميرا لن تظهر حتى يعيد المضيف تركيب القرص. وإذا كتب كلٌّ من نظام التشغيل والكاميرا في نظام الملفات نفسه في الوقت نفسه، فسيفوز نظام التشغيل ويكتب فوق التغييرات التي أجرتها الكاميرا. استخدم بطاقة SD لأي بيانات يكتبها البرنامج النصي، وأعد التركيب قبل قراءة تلك الملفات من المضيف.
ملاحظة
قد تضيء قناة اللون الأحمر لمؤشر RGB LED الخاص بالمستخدم لفترة وجيزة أثناء قراءة المضيف من قرص تخزين USB كبير السعة أو الكتابة إليه — وهذا مؤشر نشاط يقوده البرنامج الثابت، وليس عطلًا.
أحجام التخزين¶
تُشحن لوحة Nano RP2040 Connect مع:
/flash— نظام ملفات FAT بسعة 14 ميغابايت، للقراءة/الكتابة.
لا يتضمن بناء Nano RP2040 نظام ROMFS؛ اشحن وحدات Python ونماذج التعلم الآلي على /flash مباشرة.
مكتبات البرمجيات¶
راجع فهرس المكتبة للاطلاع على القائمة الكاملة بالوحدات — بما في ذلك تلك الفريدة لبناء Nano RP2040 Connect.