4、开发环境搭建:TensorFlow Lite Micro环境配置、Arduino IDE与PlatformIO安装、ESP-IDF环境搭建、STM32CubeIDE配置、串口驱动与调试工具安装

说实话,搭建开发环境这件事,看着琐碎,但却是整个TinyML项目里最绕不开的一步。我见过太多人,模型跑通了,结果烧录到板子上死活没反应,最后发现是环境没配好。嗯,咱们今天就把这事一次性搞定。

4.1 TensorFlow Lite Micro环境配置

TensorFlow Lite Micro,简称TFLM,是专门为微控制器设计的推理引擎。它不依赖操作系统,内存占用极小。我个人习惯用源码编译的方式搭建,这样可控性最强。

第一步:拉取源码

git clone https://github.com/tensorflow/tflite-micro.git
cd tflite-micro

第二步:安装依赖

你需要Python 3.8以上版本,以及pip。我建议用虚拟环境,避免污染系统Python。

python3 -m venv tflm_env
source tflm_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

第三步:编译测试

以ESP32为例,运行以下命令验证环境是否正常:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=esp generate_hello_world_make_project
我的经验: 第一次编译会比较慢,因为要下载交叉编译工具链。别急,喝杯咖啡的功夫就好了。如果卡住,检查网络代理设置。

4.2 Arduino IDE与PlatformIO安装

这两个工具是嵌入式开发的「瑞士军刀」。Arduino IDE适合快速验证,PlatformIO则更适合大型项目。

4.2.1 Arduino IDE

去官网下载最新版,安装过程没什么好说的。但要注意一点:安装完成后,一定要添加ESP32开发板支持

  1. 打开Arduino IDE,进入「文件」→「首选项」
  2. 在「附加开发板管理器网址」中添加:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. 进入「工具」→「开发板」→「开发板管理器」,搜索ESP32并安装
避坑指南: 我曾经因为网络问题,添加JSON链接后一直下载失败。后来换了手机热点才搞定。如果你也遇到类似情况,试试换个网络环境。

4.2.2 PlatformIO

PlatformIO是VS Code的插件,但功能远不止于此。它支持超过1000种开发板,而且依赖管理做得很好。

# 安装VS Code后,在扩展商店搜索PlatformIO IDE
# 安装完成后重启VS Code

创建新项目时,选择你的开发板型号。比如ESP32-DevKitC,PlatformIO会自动下载对应的工具链和库。

为什么我推荐PlatformIO? 说白了,它帮你省去了手动配置编译器的麻烦。你只需要写代码,剩下的交给它。对于TinyML项目,我们经常需要切换不同平台,PlatformIO的跨平台支持简直是救星。

4.3 ESP-IDF环境搭建

ESP-IDF是乐鑫官方的物联网开发框架。如果你要用ESP32跑TinyML,这个环境是绕不开的。为什么?因为TFLM对ESP32的官方支持就是基于ESP-IDF的。

安装步骤:

# Linux/Mac
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh
. ./export.sh

# Windows
# 推荐使用ESP-IDF PowerShell环境,安装包在官网下载

安装完成后,运行一个示例项目测试:

cp -r $IDF_PATH/examples/get-started/hello_world .
cd hello_world
idf.py set-target esp32
idf.py menuconfig
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor

我的习惯: 每次打开新终端,我都会先执行 . ./export.sh。不然idf.py命令会找不到。你可以把它加到.bashrc里,省得每次都手动敲。

4.4 STM32CubeIDE配置

STM32CubeIDE是ST官方推出的集成开发环境,基于Eclipse。说实话,它有点重,但功能确实强大。对于TinyML项目,我们主要用它来生成初始化代码和调试。

安装要点:

  1. 从ST官网下载安装包,注意选择对应操作系统版本
  2. 安装过程中会提示安装驱动,全部勾上
  3. 首次启动时,选择工作空间目录。我建议单独建一个文件夹,别和项目混在一起

配置TFLM支持:

STM32上跑TFLM,需要手动添加源码。我一般这样做:

# 在项目根目录创建third_party文件夹
mkdir -p third_party
cd third_party
git clone https://github.com/tensorflow/tflite-micro.git

然后在CubeIDE中,右键项目→Properties→C/C++ Build→Settings,添加头文件路径和源文件路径。

注意: STM32的RAM通常很小,比如STM32F4系列只有192KB。加载TFLM模型时,一定要先算好内存占用。我曾经在STM32F407上跑一个80KB的模型,结果堆栈溢出,查了两天才发现是内存分配问题。

4.5 串口驱动与调试工具安装

串口是嵌入式开发的「眼睛」。没有它,你根本不知道板子在干什么。

4.5.1 串口驱动

常见的USB转串口芯片有CP2102、CH340、FT232等。不同芯片需要不同驱动:

芯片型号 驱动名称 下载方式
CP2102 CP210x Universal Windows Driver Silicon Labs官网
CH340 CH340/CH341 USB driver 南京沁恒官网
FT232 FTDI VCP Driver FTDI官网

我的建议: 买开发板时,尽量选CP2102或FT232的。CH340虽然便宜,但驱动在Linux下偶尔会出问题。你想想看,调试时突然连不上串口,多耽误事。

4.5.2 调试工具

我常用的调试工具有三个:

  • PuTTY:Windows下最轻量的串口终端,支持SSH和串口
  • screen:Linux/Mac下的命令行串口工具,一行命令搞定
  • CoolTerm:跨平台,支持数据记录和波形显示,调试传感器数据时特别好用

用screen连接串口的命令:

# 先查看串口设备
ls /dev/tty*

# 连接,波特率通常为115200
screen /dev/ttyUSB0 115200

# 退出:Ctrl+A,然后按K

调试小技巧: 在TinyML项目中,我习惯在模型推理前后打印时间戳,用来计算推理耗时。比如:

uint32_t start = micros();
model.Infer();
uint32_t end = micros();
Serial.printf("Inference time: %d us\n", end - start);

这样你就能直观地看到模型在板子上的实际表现,而不是靠猜。

好了,环境搭建这块就这些。看起来步骤多,但只要你按顺序来,基本不会出大问题。下一章咱们开始写第一个TinyML程序——让LED灯根据手势亮灭。嗯,那才是真正有意思的部分。


公众号:蓝海资料掘金营,微信deep3321