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.

Arduino Nano 33 BLE Sense

Để 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ội1 MB flash nội.

  • Bluetooth LE 5.0 qua radio tích hợp trên chip và Nordic SoftDevice s140.

  • IMU 9 trụcLSM9DS1 trên Rev 1, BMI270 + BMM150 trên Rev 2. Driver imu đóng băng tự động phát hiện cả hai khi khởi động.

  • LPS22HB cảm biến áp suất, HTS221 / HS3003 cảm biến nhiệt độ và độ ẩm, APDS9960 cả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, D2D13 (số), A0A7 (tương tự).

Sơ đồ chân

Arduino Nano 33 BLE Sense Pinout

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 D13

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à VIN có 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_GREENLED_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

D10

D1

TX

D2

RX

D3

D2

D4

D3

D5

D5

D6

D6

D7

D4

HSYNC

A1

VSYNC

D8

PXCLK

A0

MXCLK

D9

POWER

A3

RESET

A2

SCL

A5 (I²C 0)

SDA

A4 (I²C 0)

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

I2C_SDA / A4

I2C_SCL / A5

I2C1

P14

P15

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 Vread_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 (PWM0PWM3), 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.SoftI2Cmachine.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 /flash và được sử dụng làm thư mục làm việc. Chứa main.pyREADME.txt theo 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 sau boot.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.