Arduino Nano 33 BLE Sense¶
Cảnh báo
Bo mạch này không còn được hỗ trợ. Phiên bản firmware OpenMV cuối cùng cho Arduino Nano 33 BLE Sense là 4.7.0. Sẽ không có thêm bản cập nhật firmware, sửa lỗi, hay tính năng mới nào được phát hành cho bo mạch này. Thông tin bên dưới được lưu giữ cho người dùng đang chạy phiên bản 4.7.0 hoặc cũ hơn.
Arduino Nano 33 BLE Sense là bo mạch theo chuẩn Arduino Nano kích thước 45 × 18 mm, được xây dựng xung quanh Nordic Semiconductor nRF52840 — một lõi ARM Cortex‑M4 với FPU chạy ở 64 MHz với 256 KB SRAM nội và 1 MB flash nội. BLE đến từ radio tích hợp sẵn trên chip, và bo mạch được trang bị IMU 9 trục, cảm biến áp suất LPS22HB, cảm biến nhiệt độ/độ ẩm HTS221/HS3003, cảm biến ánh sáng/màu sắc/khoảng cách/cử chỉ APDS9960, và microphone PDM MP34DT05. Firmware OpenMV điều khiển tất cả các ngoại vi này từ MicroPython.
Để xem datasheet đầy đủ, ảnh chụp và kích thước, hãy truy cập trang sản phẩm Arduino Nano 33 BLE Rev2.
Điểm nổi bật¶
Nordic nRF52840 Cortex‑M4 với FPU ở 64 MHz với 256 KB SRAM nội và 1 MB flash nội.
Bluetooth LE 5.0 qua radio tích hợp trên chip và Nordic SoftDevice s140.
IMU 9 trục —
LSM9DS1trên Rev 1,BMI270+BMM150trên Rev 2. Driverimuđóng băng tự động phát hiện cả hai khi khởi động.LPS22HBcảm biến áp suất,HTS221/HS3003cảm biến nhiệt độ và độ ẩm,APDS9960cảm biến ánh sáng xung quanh/màu sắc/khoảng cách/cử chỉ, và microphone PDM MP34DT05.Cổng Micro USB để cấp nguồn, lập trình và REPL qua CDC.
22 chân I/O người dùng trên header Nano tiêu chuẩn —
TX/RX,D2–D13(số),A0–A7(tương tự).
Sơ đồ chân¶
Tham chiếu chân (pin)¶
Tên chân (pin) |
Tham chiếu |
Chức năng |
|---|---|---|
TX |
3.3 V |
UART1 TX |
RX |
3.3 V |
UART1 RX |
D2 |
3.3 V |
PWM |
D3 |
3.3 V |
PWM |
D4 |
3.3 V |
PWM |
D5 |
3.3 V |
PWM |
D6 |
3.3 V |
PWM |
D7 |
3.3 V |
PWM |
D8 |
3.3 V |
PWM |
D9 |
3.3 V |
PWM |
D10 |
3.3 V |
PWM |
D11 |
3.3 V |
PWM / SPI0 MOSI |
D12 |
3.3 V |
PWM / SPI0 MISO |
D13 |
3.3 V |
PWM / SPI0 SCK |
A0 |
3.3 V |
ADC / PWM |
A1 |
3.3 V |
ADC / PWM |
A2 |
3.3 V |
ADC / PWM |
A3 |
3.3 V |
ADC / PWM |
A4 / I2C_SDA |
3.3 V |
ADC / PWM / I2C0 SDA |
A5 / I2C_SCL |
3.3 V |
ADC / PWM / I2C0 SCL |
A6 |
3.3 V |
ADC / PWM |
A7 |
3.3 V |
ADC / PWM |
RESET |
3.3 V |
nhấn nút RESET trên bo mạch hoặc kéo về GND để đặt lại |
LED_BUILTIN |
— |
Đèn LED người dùng màu cam trên |
LED_RED |
— |
Kênh đỏ của LED RGB (mức thấp kích hoạt) |
LED_GREEN |
— |
Kênh xanh lá của LED RGB (mức thấp kích hoạt) |
LED_BLUE |
— |
Kênh xanh lam của LED RGB (mức thấp kích hoạt) |
Cảnh báo
Các chân I/O của Nano 33 BLE Sense chỉ hỗ trợ 3.3 V — chúng không chịu được 5 V. Đưa 5 V vào sẽ làm hỏng nRF52840.
Các chân nguồn¶
VIN — Đầu vào 4.5 – 21 V. Cấp nguồn cho bo mạch qua bộ điều áp tích hợp. Cũng được nối qua một diode từ đường 5 V USB, vì vậy USB và
VINcó thể hoạt động đồng thời mà không gây phản xung vào nhau.+5V — không được kết nối theo mặc định.
+3V3 — đầu ra bộ điều áp 3.3 V.
AREF — chân tham chiếu tương tự. Không được nối với nRF52840 trên bo mạch này — ADC luôn được tham chiếu đến 3.3 V.
GND — mass chung.
Nano 33 BLE Sense có thể được cấp nguồn theo hai cách:
Micro USB — cung cấp 5 V cho bộ điều áp trên bo mạch.
Chân VIN — cấp nguồn được điều chỉnh 4.5 – 21 V.
Ghi chú
Một cầu hàn ở mặt sau bo mạch được ghi nhãn VUSB kết nối +5V với đường 5 V USB. Đóng cầu hàn để chân header +5V thực sự mang điện 5 V.
Ghi chú
Một cầu hàn thường đóng ở đầu ra của bộ điều áp chuyển đổi 4.5–21 V trên bo mạch có thể được cắt để tắt bộ điều áp, cho phép cấp nguồn trực tiếp từ nguồn 3.3 V bên ngoài qua +3V3.
Chân phục hồi và gỡ lỗi¶
RESET — cả một pad lộ thiên và một nút RESET nhấn tạm thời ở mặt trên bo mạch, được kết nối với đường reset của nRF52840. Kéo về GND hoặc nhấn nút để đặt lại.
Nano 33 BLE Sense sử dụng double‑tap reset tiêu chuẩn của Arduino để vào bootloader của Arduino. Nhấn nhanh nút RESET hai lần — bo mạch vào chế độ bootloader và OpenMV IDE có thể nạp ảnh firmware mới.
Các tín hiệu SWD của nRF52840 được lộ ra trên các pad mạ lỗ ở mặt sau bo mạch. Tất cả các tín hiệu gỡ lỗi đều được tham chiếu 3.3 V.
Ngoại vi tích hợp¶
Đèn LED¶
Nano 33 BLE Sense có một LED RGB người dùng — điều khiển qua các kênh LED_RED, LED_GREEN và LED_BLUE được in trên bo mạch — cộng thêm một LED_BUILTIN màu cam riêng biệt trên D13. Cả bốn đều có thể điều khiển bằng phần mềm qua machine.LED
from machine import LED
LED("LED_RED").on()
LED("LED_GREEN").on()
LED("LED_BLUE").on()
LED("LED_BUILTIN").on()
Một đèn LED nguồn màu xanh lá riêng biệt trên bo mạch sẽ sáng bất cứ khi nào đường +3.3 V hoạt động và không thể điều khiển bằng người dùng.
Cảm biến camera¶
Firmware OpenMV trên Nano 33 BLE Sense hỗ trợ cảm biến CMOS song song OmniVision OV7670. Bo mạch không có cảm biến hình ảnh tích hợp — hãy kết nối module OV7670 với các chân header được in trên bo mạch liệt kê bên dưới và điều khiển qua module csi --- cảm biến camera
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()
Ghi chú
OV7670 cần 14 chân. Firmware kết nối chúng như sau:
Tín hiệu cảm biến |
Chân Nano 33 BLE Sense |
|---|---|
D0 |
|
D1 |
|
D2 |
|
D3 |
|
D4 |
|
D5 |
|
D6 |
|
D7 |
|
HSYNC |
|
VSYNC |
|
PXCLK |
|
MXCLK |
|
POWER |
|
RESET |
|
SCL |
|
SDA |
|
Bus điều khiển I²C của OV7670 chính là I²C 0 bên ngoài được lộ ra trên A5/A4. Cảm biến ở địa chỉ 7‑bit 0x21 — các thiết bị người dùng trên bus đó phải tránh địa chỉ này khi camera được kết nối.
IMU¶
IMU 9 trục được lộ ra qua module imu đóng băng, module này tự động phát hiện bo mạch có LSM9DS1 (Rev 1) hay BMI270 + BMM150 (Rev 2) và cung cấp một lớp imu.IMU thống nhất. Các cảm biến nằm trên bus I²C 1 nội bộ (P14 / P15):
import time
from machine import I2C, Pin
from imu import IMU
bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
sensor = IMU(bus)
while True:
print(sensor.accel()) # (x, y, z) in g
print(sensor.gyro()) # (x, y, z) in deg/s
print(sensor.magnet()) # (x, y, z) magnetometer
time.sleep_ms(100)
Để truy cập trực tiếp các tính năng như phát hiện chạm hoặc FIFO, hãy import driver đóng băng tương ứng (lsm9ds1, bmi270, hoặc bmm150) và khởi tạo nó trên cùng bus.
Cảm biến môi trường¶
Cảm biến áp suất (LPS22HB) và cảm biến nhiệt độ/độ ẩm (HTS221 trên Rev 1, HS3003 trên Rev 2) chia sẻ cùng bus I²C 1 nội bộ với IMU:
import time
from machine import I2C, Pin
from lps22h import LPS22H
from hts221 import HTS221
bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
lps = LPS22H(bus)
try:
hts = HTS221(bus)
except OSError:
from hs3003 import HS3003
hts = HS3003(bus)
while True:
print("pressure: %.2f hPa" % lps.pressure())
print("temperature: %.2f C" % lps.temperature())
print("humidity: %.2f %%" % hts.humidity())
time.sleep_ms(500)
Ánh sáng / màu sắc / khoảng cách / cử chỉ¶
Broadcom APDS9960 nằm trên cùng bus I²C 1 nội bộ và cung cấp cảm biến ánh sáng xung quanh, màu sắc RGB, khoảng cách và cử chỉ:
import time
from machine import I2C, Pin
from apds9960 import uAPDS9960 as APDS9960
bus = I2C(1, scl=Pin("P15"), sda=Pin("P14"))
apds = APDS9960(bus)
apds.enableLightSensor()
while True:
print("ambient light:", apds.readAmbientLight())
time.sleep_ms(250)
Microphone¶
Microphone PDM MP34DT05 tích hợp trên bo mạch được thu thập qua audio --- Mô-đun Âm thanh. Mỗi bộ đệm đến dưới dạng PCM 16-bit có dấu bytearray, sẵn sàng để đưa vào ulab/numpy để xử lý DSP:
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
Bluetooth¶
Radio Bluetooth LE 5.0 của nRF52840 chạy trên Nordic SoftDevice s140 và được lộ ra qua module kế thừa ubluepy — các API hiện đại bluetooth / aioble --- Async BLE không được bật trong bản build này. Cả hai vai trò peripheral (máy chủ GATT, quảng bá) và central (quan sát GAP / quét + kết nối) đều có sẵn.
Quảng bá dưới dạng peripheral với một dịch vụ Environmental Sensing và một đặc tính nhiệt độ có thể thông báo — hàm gọi lại event_handler kích hoạt khi kết nối, ngắt kết nối và ghi CCCD:
from ubluepy import Service, Characteristic, UUID, Peripheral, constants
from machine import LED
def event_handler(event_id, handle, data):
if event_id == constants.EVT_GAP_CONNECTED:
LED("LED_GREEN").on()
elif event_id == constants.EVT_GAP_DISCONNECTED:
LED("LED_GREEN").off()
periph.advertise(device_name="Nano 33", services=[svc])
svc = Service(UUID("181A")) # Environmental Sensing
char = Characteristic(UUID("2A6E"), # Temperature
props=Characteristic.PROP_NOTIFY | Characteristic.PROP_READ,
attrs=Characteristic.ATTR_CCCD)
svc.addCharacteristic(char)
periph = Peripheral()
periph.addService(svc)
periph.setConnectionHandler(event_handler)
periph.advertise(device_name="Nano 33", services=[svc])
Quét các thiết bị đang quảng bá gần đó ở vai trò central:
from ubluepy import Scanner
for entry in Scanner().scan(1_000): # 1 second window
print(entry.addr(), entry.rssi(), "dBm")
Xem tham chiếu ubluepy để biết API đầy đủ — UUID, Service, Characteristic, Peripheral, Scanner, ScanEntry, và không gian tên constants.
Tham chiếu bus¶
GPIO¶
Sử dụng machine.Pin để đọc hoặc điều khiển bất kỳ chân nào được in trên bo mạch. Đầu ra là CMOS 3.3 V — 15 mA mỗi chân, 25 mA tổng cộng trên tất cả 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())
Bất kỳ chân đầu vào nào cũng có thể kích hoạt ngắt khi có chuyển đổi cạnh:
def handler(pin):
print("triggered:", pin)
Pin("D3", Pin.IN, Pin.PULL_UP).irq(
handler, Pin.IRQ_FALLING | Pin.IRQ_RISING,
)
UART¶
Bus |
TX |
RX |
|---|---|---|
UART1 |
TX |
RX |
Sử dụng tên in trên bo mạch TX/RX với machine.UART
from machine import UART
uart = UART(1, baudrate=115200)
uart.write("hello")
uart.read(5)
I²C¶
Bus |
SDA |
SCL |
|---|---|---|
I2C0 |
|
|
I2C1 |
|
|
Cả hai bus đều cần truyền chân một cách rõ ràng cho machine.I2C
from machine import I2C, Pin
bus0 = I2C(0, scl=Pin("I2C_SCL"), sda=Pin("I2C_SDA"), freq=400_000)
bus0.scan()
bus1 = I2C(1, scl=Pin("P15"), sda=Pin("P14"), freq=400_000)
bus1.scan()
Ghi chú
Bus 1 là bus cảm biến nội bộ trên P14/P15 (không có trên header người dùng) — nó phục vụ IMU, cảm biến áp suất, cảm biến môi trường và APDS9960. Các driver cảm biến đóng băng sử dụng nó trực tiếp; code người dùng cũng có thể quét nhưng các địa chỉ đã được chiếm bởi các cảm biến trên bo mạch.
SPI¶
Bus |
MOSI |
MISO |
SCK |
CS |
|---|---|---|---|---|
SPI0 |
D11 |
D12 |
D13 |
D10 |
Đường CS không được điều khiển bởi ngoại vi SPI — cấu hình D10 là đầu ra và chuyển đổi thủ công xung quanh quá trình truyền:
from machine import SPI, Pin
spi = SPI(0, baudrate=10_000_000)
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)
Ghi chú
D13 còn được dùng như LED_BUILTIN màu cam — việc sử dụng SPI trên bus này sẽ làm đèn LED nhấp nháy theo nhịp của xung clock bus.
ADC¶
nRF52840 có tám kênh ADC 12‑bit (SAADC) được lộ ra trên A0–A7, tất cả đều được tham chiếu 3.3 V — read_u16 trả về 0–65535 tương ứng với 0–3.3 V tại chân. Chân AREF của bo mạch không được nối, vì vậy tham chiếu luôn là 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¶
nRF52840 lộ ra bốn ngoại vi PWM (PWM0–PWM3), mỗi cái điều khiển bốn kênh, tổng cộng 16 khe PWM phần cứng. Khác với các cổng có chức năng cố định, các ngoại vi định tuyến qua ma trận GPIOTE — bất kỳ GPIO nào cũng có thể là đầu ra PWM, vì vậy không có ánh xạ chân-đến-slice. Chi phí của sự linh hoạt đó là hai ràng buộc được baked vào silicon:
Tất cả bốn kênh trong một module chia sẻ một chu kỳ/tần số chung.
Mỗi kênh có chu kỳ nhiệm vụ và cực tính riêng.
Về mặt khái niệm, 16 khe trông như thế này:
Module |
Ch 0 |
Ch 1 |
Ch 2 |
Ch 3 |
|---|---|---|---|---|
PWM0 |
duty |
duty |
duty |
duty |
PWM1 |
duty |
duty |
duty |
duty |
PWM2 |
duty |
duty |
duty |
duty |
PWM3 |
duty |
duty |
duty |
duty |
Mỗi hàng chạy ở một tần số; bốn ô trong một hàng mỗi cái điều khiển một chân được chọn độc lập với chu kỳ nhiệm vụ riêng. Các hàng khác nhau có thể chạy ở các tần số hoàn toàn khác nhau.
Điều khiển bất kỳ chân nào được in trên bo mạch (hoặc các đèn LED tích hợp) qua machine.PWM
from machine import Pin, PWM
pwm = PWM(Pin("D3"), freq=1_000, duty_u16=32768)
Cảnh báo
Tự động cấp phát tiêu thụ cả một module mỗi lần gọi. Khi bạn tạo PWM mà không có kwargs device=/channel=, driver chiếm module trống đầu tiên và gắn chân của bạn vào kênh 0 của nó. Ba kênh còn lại của module đó ở trạng thái nhàn rỗi và chỉ có thể truy cập qua device=/channel= rõ ràng. Điều đó giới hạn các lần gọi PWM(Pin(...)) không có chỉ dẫn ở bốn trước khi driver báo ValueError: all PWM devices in use — mặc dù về mặt kỹ thuật vẫn còn mười hai khe trống.
Để sử dụng nhiều hơn bốn PWM, hoặc để cố tình chia sẻ tần số qua các chân, truyền device (0–3) và channel (0–3):
# Two PWMs on the same module → forced to share frequency,
# but each gets its own duty cycle.
pwm_a = PWM(Pin("D3"), device=0, channel=0,
freq=1_000, duty_u16=32768)
pwm_b = PWM(Pin("D5"), device=0, channel=1,
freq=1_000, duty_u16=16384)
# A third PWM on a separate module, free to pick any frequency.
pwm_c = PWM(Pin("D6"), device=1, channel=0,
freq=20_000, duty_u16=49152)
Chu kỳ nhiệm vụ chấp nhận duty (0–100%), duty_u16 (0–65535), hoặc duty_ns. Thêm invert=1 để đảo cực tính đầu ra (tiện dụng cho LED RGB kích hoạt mức thấp).
Ghi chú
Vì tần số là thuộc tính của từng module, việc gọi pwm.freq(new_freq) trên bất kỳ kênh nào của module sẽ chạy lại nrfx_pwm_init cho toàn bộ module và thay đổi tần số của mọi kênh khác chia sẻ module đó.
Ghi chú
Tần số cho phép trải dài khoảng 4 Hz đến 5.3 MHz, được dẫn xuất từ xung clock cơ sở 16 MHz với bộ chia tần 1/2/4/8/16/32/64/128 và bộ đếm chu kỳ 15‑bit. Driver tự động chọn số chia gần nhất — freq() báo cáo giá trị được yêu cầu, không phải giá trị thực sự đạt được.
Bus phần mềm bit‑banged¶
machine.SoftI2C và machine.SoftSPI hoạt động trên bất kỳ GPIO nào nếu bạn cần một bus bổ sung.
Cảm biến nhiệt (ngoài bo mạch)¶
Firmware bao gồm driver fir --- trình điều khiển cảm biến nhiệt (fir == hồng ngoại xa) cho các máy đo nhiệt hồng ngoại được kết nối bên ngoài:
MLX90621 — mảng hồng ngoại 16 × 4
MLX90640 — mảng hồng ngoại 32 × 24
MLX90641 — mảng hồng ngoại 16 × 12
AMG8833 — mảng hồng ngoại 8 × 8
Kết nối module với bus I²C của bo mạch và đọc khung hình bằng 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())
Driver fir chỉ giao tiếp với cảm biến qua I²C 0 — hãy kết nối module với các pad I2C_SCL / I2C_SDA (A5 / A4).
Thời gian¶
time¶
Module time hỗ trợ trễ blocking, ticks đơn điệu và đo thời gian đã trôi qua:
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)
Bộ định thời ảo¶
machine.Timer lên lịch các hàm gọi lại định kỳ hoặc một lần mà không tiêu thụ khe bộ định thời phần cứng. Truyền -1 làm id để sử dụng bộ định thời ảo (phần mềm):
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"))
Giá trị chu kỳ tính bằng mili giây. Gọi deinit() để dừng và giải phóng khe.
Đồng hồ thời gian thực¶
machine.RTC giữ thời gian thực qua các lần đặt lại. RTC của nRF52840 được gắn với bộ dao động trên chip và không sống sót sau khi mất nguồn hoàn toàn — hãy đặt thời gian ở mỗi lần khởi động nguội nếu điều đó quan trọng với ứng dụng của bạn:
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 đặt lại bo mạch nếu ứng dụng bị treo. Một khi đã khởi động nó không thể dừng hoặc cấu hình lại — hãy nạp định kỳ bên trong vòng lặp chính của bạn:
from machine import WDT
wdt = WDT(timeout=5_000) # 5 second window
while True:
# ...do work...
wdt.feed()
Thông tin khởi động và thời gian chạy¶
Cập nhật firmware¶
Nano 33 BLE Sense sử dụng double‑tap reset tiêu chuẩn của Arduino để vào bootloader của Arduino. Nhấn nhanh nút RESET hai lần — bo mạch vào chế độ bootloader và OpenMV IDE có thể nạp ảnh firmware mới.
Một tập lệnh đang chạy có thể vào lại bootloader theo yêu cầu bằng cách gọi machine.bootloader()
import machine
machine.bootloader()
Hệ thống tệp và thứ tự khởi động¶
Firmware Nano 33 BLE Sense gắn một hệ thống tệp duy nhất khi khởi động:
Flash nội — luôn được gắn tại
/flashvà được sử dụng làm thư mục làm việc. Chứamain.pyvàREADME.txttheo mặc định; được tạo ra ở lần khởi động đầu tiên.
Sau khi gắn, trình thông dịch chạy các tập lệnh từ /flash:
boot.pyđược thực thi ở mỗi lần soft reset.main.pyđược thực thi chỉ khi khởi động nguội, ngay sauboot.py.
main.py mặc định được cài sẵn trên bo mạch vừa được nạp firmware chỉ nhấp nháy kênh xanh lam của LED RGB người dùng như một nhịp tim (hai xung ngắn, khoảng ngắn), vì vậy bạn có thể biết firmware đã khởi động thành công mà không cần bất kỳ thiết bị nào được kết nối.
/flash không được lộ ra như một ổ đĩa lưu trữ USB mass-storage trên bo mạch này.
Kích thước bộ nhớ¶
Nano 33 BLE Sense được cài sẵn với:
/flash— hệ thống tệp FAT 64 KB, đọc/ghi.
Bản build Nano 33 BLE Sense không bao gồm ROMFS; hãy đặt các module Python trực tiếp trên /flash.
Thư viện phần mềm¶
Xem chỉ mục thư viện để biết danh sách đầy đủ các module — bao gồm cả những module duy nhất cho bản build Nano 33 BLE Sense.