[Day 03] tinyML开发板介绍

目前tinyML基金会并没有指定特定的开发板或开发平台,也没有限制可以跑那些项目,只期望功耗能在毫瓦(mW)等级,用电池供电即可。接下来会帮大家介绍几块比较常见(平价)、各平台商支援较完整的开发板,其中大部份主晶片都是使用Arm Cortex-M系列MCU,从M0+到M7都有,也有非Arm系列的,以下简单列出数款值大家参考。

ps. 由於MCU规格大小性能差异颇大,所以可以运行何种模型及速度是否满足,须以实际布署为准。

  • Arduino Uno R3
  • Arducam Pico4ML(Raspberry Pi RP2040)
  • Seeeduino XAIO (SAMD21G18)
  • Eta ECM 3532
  • Silicon Labs Thunderboarrd Sense 2
  • Nordic nRF52840
  • Arduino Nano 33 BLE Sense (nRF52840)
  • Arduino Protenta H7 (STM32H747XI)
  • OpenMV Cam H7 (STM32H743VI)
  • Himax WE-I Plus (台湾厂商奇景光电)

常见tinyML开发板
Fig. 3-1 常见tinyML开发板。(OmniXRI整理绘制, 2021/8/14)

tinyML开发板主要规格比较
Fig. 3-2 tinyML开发板主要规格比较。(OmniXRI整理绘制, 2021/8/14)

在Arm Cortex-M系列中,皆为32bit MCU,依指令集效能(非工作时脉速度)来排名,大概为M0, M0+, M1, M3, M4, M7, M23, M33, M35P, M55,而其内建的程序码区(Flash)和静态随机记忆体(SRAM)通常不多,仅有数百KB到数MB而已,并会随着不同厂商及产品线会有不同配置。不过相较於一般仅有数十KB Code Flash及数KB的SRAM,这样的配置已相当不错,可做出相当多的应用。

从上面表格中可看出,Cortex-M的MCU的工作时脉通常不高,记忆体也不多,这使得运行tinyML前就要考虑是否能将模型及参数塞进程序码区,运行时所需的变数记忆体是否够用,同时要评估工作时脉(含平行指令数)推论速度是否能满足实际应用。当然这些评估工作有些亦由开发平台商提供的工具代劳,不须使用者头痛,待後面章节再行介绍。

目前在这麽多开发板中,其中又以Arduino Nano 33 BLE Sense被最多tinyML平台商支援,其主要原因如下所示:

  • 主晶片为Nordic nRF52840,其中以Arm Cortex-M4为主要核心,可支援浮点数运算,工作时脉64MHz, 1MB Flash, 256KB SRAM。
  • Arm Cortex-M4可支援Arm Mbed作业系统及Cortex单晶片软件介面标准CMSIS(Common Microcontroller Software Interface Standard),其中亦包括CMSIS-NN神经网路加速运算函式库。
  • 板子上有很多感测器,包括运动感测模组、麦克风(声音)、手势、色彩、近接(光电)、气压、温湿度等。
  • 具有2.4GHz 蓝牙低功耗模组(BT 5.0, BLE)可轻松连接到笔电或其它行动装置,方便传送资料及接收命令。
  • 板子体积很小,仅有45mm x 18mm,非常适合直接做成产品原型机。

Arduino Nano 33 BLE Sense规格表
Fig. 3-3 Arduino Nano 33 BLE Sense规格表。(OmniXRI整理绘制, 2021/8/14)

另外Arduino Nano 33还有两片兄弟板,分别为Nano 33 IoT, Nano 33 BLE,原则上和Nano 33 BLE Sense只差在感测器的支援数量不同,其它使用上都相同,更完整规格及使用说明可参见文末连结。

最後补充几个重要的tinyML开发平台商所支援的开发板清单。

Edge Impulse https://docs.edgeimpulse.com/docs/fully-supported-development-boards

  • ST B-L475E-IOT01A (IoT Discovery Kit)
  • Arduino Nano 33 BLE Sense
  • Eta Compute ECM3532 AI Sensor
  • Eta Compute ECM3532 AI Vision
  • OpenMV Cam H7 Plus
  • Himax WE-I Plus
  • Nordic Semiconductor nRF52840 DK
  • Nordic Semiconductor nRF5340 DK
  • Nordic Semiconductor nRF9160 DK
  • Silicon Labs Thunderboard Sense 2
  • Sony's Spresense
  • TI CC1352P LaunchPad
  • Arduino Portenta H7 + Vision shield (preview support)
  • Raspberry Pi 4
  • NVIDIA Jetson Nano
  • Seeed Wio Terminal (ATSAMD51)
  • Agora Product Development Kit
  • Arducam Pico4ML TinyML Dev Kit (PR2040)
  • Blues Wireless Swan (STM32L4+)

AITS (cAInvas) https://www.ai-tech.systems/cainvas/

  • Raspberry Pi 3
  • Arduino Nano 33 BLE Sense
  • STM32F4
  • STM32L4
  • STM32F3
  • Microchip AT91SAM9260
  • Infineon PSoC 6
  • NXP i.MX RT1060
  • NXP LPC5500

SensiML https://sensiml.com/documentation/firmware/

  • Arduino Nano 33 BLE Sense
  • Arm GCC Cortex M4/M7/A53
  • Microchip SAMD21 ML Eval Kit (SAM-IoT WG)
  • Nordic Thingy
  • QuickLogic Chilkat
  • QuickLogic QuickAI
  • QuickLogic QuickFeather
  • Raspberry Pi
  • Sillicon Labs Thunderboard Sense 2
  • SparkFun QuickLogic Thing Plus - EOS S3
  • ST SensorTile
  • ST SensorTile.Box
  • x86 Processors

Google TensorFlow Lite Microcontroller https://www.tensorflow.org/lite/microcontrollers

  • Arduino Nano 33 BLE Sense
  • SparkFun Edge
  • STM32F746 Discovery
  • Adafruit EdgeBadge
  • Adafruit TensorFlow Lite for Microcontrollers
  • Adafruit Circuit Playground Bluefruit
  • Espressif ESP32-DevKitC
  • Espressif ESP-EYE
  • Wio Terminal:ATSAMD51
  • Himax WE-I Plus EVB
  • Synopsys DesignWare ARC EM Software Development Platform

参考连结:


<<:  pure function

>>:  [DAY03] 建立 Datastore 和 Dataset (上)

[Day 29 ] SQLite 上

设置 Table 我们需要定义资料库名称与版本 将建立 Table 的 SQL 写在这 onCrea...

JSON介绍

今天要先介绍JSON的写法,明天的实作会取用今天建置好的JSON档介绍Methods和Compute...

RISC-V: 妈,我把脏脏的扣变成 CPU 的形状了!

有看月球转运站的夥伴应该有发现, 随着开发的进展,程序码已经变得有点不好看了。 今天就来对这段程序码...

Day 29

Vortex 现在我们有火焰了,但是呢如果今天我的火焰想要有点这种效果呢。 感觉有个台风在那里影响火...

Day3 Hello World + 基础布局分析

前言 记得学所有程序语言刚开始都是从Hello World开始的,所以我们的react也一定要从He...