[Day 08] tinyML开胃菜Arduino IDE上桌(上)

书接上回,讲了一大堆如何做出好吃的AI咖哩饭,那到底要如何开始才能当上新一代的「AI食神」呢?

首先要到中国厨艺学院(少林寺後厨)打杂洗碗(收集资料)一年,买菜洗菜(清洗资料),端盘子跑堂(依作业流程工作)一年,切菜备料(资料预处理)一年,才能开始拿勺子炒菜(建模调参),学习各种菜式(模型、应用),再让客人、酸民刷几年差评(布署、重训),大概就能出师了。什麽?不能速成吗?那我还是去买个AI咖哩调理包(如AWS, Azure, GCP等云端AI API服务)来装模作样一下,三分钟就可上桌,口味还很稳定(只是不太能变),价钱更是便宜。唉!现在年轻人真是没有耐性啊!

为了让大家快一点(还剩22天)学会如何做出一个好吃的爆浆濑尿虾牛丸(tinyML)的步骤及开发出自己专属的口味(客制化应用),接下来会分别介绍外皮牛肉丸(Arm Cortex-M MCU硬体及程序开发)和核心濑尿虾(AI原理、算法实现)的作法,希望透过这样交替式学习能让大家更快上手。

在开始之前,先来点开胃菜,先了解一下後续tinyML实做所需用到的硬体开发板、开发工具及环境,至於tinyML整合型开发平台需要铺垫更多基础知识,就留待下回分解了。

【硬体开发板选用】

後续范例会以**Arduino Nano 33 BLE Sense(以下简称BLE Sense)**为基准,相关规格可参考[Day 03]说明。更完整的规格及使用说明可参考Arduino官网介绍。

那为什麽选用这块开发板呢?有以下几个原因。

  • 主晶片内核是Arm Cortex-M4F(带浮点运算功能),工作时脉中等,为64MHz。
  • 可以运行Arm Mbed作业系统,方便程序跨不同厂牌Arm Cortex-M晶片执行。
  • 支援CMSIS, CMSIS-NN函式库,可免除不同厂牌Arm Cortex-M晶片开发工具不同。
  • 程序码(FLASH) 1M Byte及随机记忆体区(SRAM) 256K Byte,不会太小,可容纳较大的模型及参数。
  • 板上内建多种感测器,如温湿度、气压、近接、手势(平移方向)、色彩(RGB亮度)、麦克风、九轴(惯性、角加速度、地磁各三轴)运动感测器等,方便开发各种应用。如不需这麽多感测器,可改用Arduino Nano 33 IoT或Arduino Nano 33 BLE。
  • 体积小,仅有18mm x 45mm,方便制作各种穿戴式应用。
  • 为最多tinyML开发平台(如Edge Impulse, SensiML等)和工具(TensorFLow Lite Micro, Arduino IDE等)支援。
  • 另外可使用传统开发工具组合不使用Arm MBed作业系统,如Keil C或IAR配合J-Link等除错工具,加上Nodic提供的开发板支援套件(Board Support Package, BSP)或Arm CMSIS函式库来开发。这个路线可能比较适合已经很熟悉Arm Cortex-M MCU程序开发的工程师。为了缩短学习曲线,会采前项tinyML开发平台的方式来进行范例教学。

那里有在卖呢?可自行到露天、虾皮上查询,这里不特别推荐特定供应商。不过请不要直接用Arduino官网售价来换算,毕竟厂商进口还是有一些成本在的。

咦!这个开发板好像有点贵,有没有别的板子可支援?当然有,可参考[Day 03]说明,只是後续的范例会先以这块板子为主。

【软件开发工具选用】

「工欲善其事,必须利其器」,虽然Arm有很多整合开发环境(Integrated Development Environment, IDE)工具商支援(如IAR, Keil C, MDK等),方便写程序、编译、除错、烧录等工作一次搞定,但既然这块板子冠名Arduino,那首选开发环境当然是选Arduino IDE罗!简单好上手,还可和平常Arduino的开发流程完全相容,另外也可以轻易和各式各样的感测器和周边连结,方便tinyML输入和输出。

Arduino IDE目前它有云端版单机版(目前稳定版本为1.8.16, 预先评估版为2.0.0-beta),如果只是一般Arduino入门级开发板,则云端版注册一个帐号,单机版下载安装完成,就可以开始使用。不过要使用BLE Sense则会多几个安装步骤,以下简单说明。

云端版IDE

Arduino云端版IDE操作画面
Fig. 8-1 Arduino云端版IDE操作画面。(OmniXRI整理绘制, 2021/9/22)

如上图Fig. 8-1所示,首先进到Arduino创作者网站,按下上角的[Login](步骤1)进入登入画面。如果你还没有注册帐号,可先按[Create One](步骤2)创建一个,按照画面指示输入基本资料就可以产生一个新帐号,或者直接使用你的Google或Apple帐号(步骤2b)登入亦可。若你已创建好帐号,下一次就可直接输入帐号(电子信箱)和密码就可登入系统(步骤2a)。登入後,可按右上角的符号,选择进入网页编辑器(Web Editor)(步骤3),或者按画面中间按钮亦可。

进入网页编辑器後左半边为主要选单,包括程序管理区(Sketchbook)、周边范例码(Examples)、特殊函式库(Libraries)、序列监视器(Monitor)、函式使用参考(Reference)、操作辅助说明(Help)、编辑器设定值(Preferences)、MCU资源使用(Features usage)。而右半边上方可选择对应的开发板,中间则为程序开发区,下方则为编译程序相关讯息区。

再来要确定云端编辑器能顺利连接到BLE Sense开发板,取用一条Micro USB的缆线(注意不要拿到只能充电不能通讯的线)连接电脑和开发板,在Windows环境下,正常状况会听到电脑叮咚一下,侦测到新的硬体,此时利用「装置管理器」(以滑鼠移到Windows左下方符号上,再以右键点击)应该会看到「连接埠(COM和LPT)」新增了一个「USB序列装置(COMx)」(x指埠号,每次有可能不同),表示电脑已经认到开发板的虚拟序列埠。若没看到新增COM埠,可再重新插拔一下,令开发板重新连接。

接着我们就可点击云端编辑器上方的栏位选择开发板型号,如下图Fig. 8-2所示,会出现一大堆Arduino的开发板型号,只需输入BLE,就会筛选到只剩Arduino Nano 33 BLE,这个选项可支援三种板子包括Arduino Nano 33 IoT, BLE, BLE Sense。选好点击OK後,会发现出现连线失败的图案,此时重新刷新一下网页,就会出现一个黄色的警告讯息,说你忘了开Arduino Agent,按[LEARN MORE]进入後,会请你检查左下角常驻程序是否有一个Arduino Agent的(白色的Arduino LOGO)符号,若没有则必须重新安装。

Arduino Nano 33 BLE Sense开发板连线失败及检查步骤
Fig. 8-2 Arduino Nano 33 BLE Sense开发板连线失败及检查步骤。(OmniXRI整理绘制, 2021/9/22)

接着依画面上指示,如图Fig. 8-3所示,依序下载Arduino Agent并双击安装,完成後重新重新回主画面就会看到连线失败的符号消失了。若仍失败,请检查Agent是否有启动在常驻区,若无则滑鼠左键点击左下角Windows符号,切到Arduino Create Agent项目下,点击Arduino Create Agent重新启动即可。

安装Arduino Agent步骤
Fig. 8-3 安装Arduino Agent步骤。(OmniXRI整理绘制, 2021/9/22)

注:单机版IDE及写个范例来测试工作环境就留待下篇继续说明。

参考连结

Arduino Nano 33 BLE Sense
Getting started with the Arduino Nano 33 BLE Sense
Arduino 云端版 IDE
Arduino 单机版 IDE


<<:  [Tableau Public] day 23:台湾姓氏分布分析-1

>>:  Day07-生命周期

Day 16 ml5.js

跑范例环节...这次是 ml5.js,本来想直接学TensorFlow.js 的, 但途中得知ml5...

Material UI in React [Day 10] Inputs (Text Field) 文本输入框

Text Field TextField 包装组件是一个完整的表单控件,包括标签、输入和帮助文本,它...

标记式语言(Markup Language)

标准通用标记式语言(Standard Generalized Markup Language, SG...

自我笔记 - django 系列 [模型基础篇]

django - Models 本篇说明 django 使用资料库的方式 以及应用面会使用到的多资料...

Install Filebeat

Filebeat是用於转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监...