【DigiKey好物畅享】Arduino UNO R4 :AI 图像识别与 LED 矩阵可视化系系统实践

【DigiKey好物畅享】Arduino UNO R4 WiFi & UNO Q:AI 图像识别与 LED 矩阵可视化系统实践

1. 项目背景与目标

在嵌入式端侧智能应用中,“AI 推理”与“实时交互显示”通常存在天然矛盾:

AI 推理需要较强算力、较高灵活性(适合 Linux / 高层运行环境)

LED 点阵显示与硬件驱动强调实时性、确定性(适合 MCU)

本项目基于 Arduino 官方 App Lab 的 **Image Classification(图像分类)**示例进行二次开发,构建了一个完整的端侧 AI 应用闭环:

用户通过 WebUI 上传图片

Linux 侧调用预训练模型完成图像分类推理

将识别结果映射为简短缩写(如 CAT / DOG / HUM / CAR 等)

通过 Bridge(RPC)下发到 MCU

MCU 驱动 13×8 LED 矩阵实时显示识别结果缩写

最终实现了一个“可交互、可演示、可扩展”的 AI + 双端协同系统。

2. 系统总体方案与双端分工

2.1 系统组成

系统由以下模块组成:

1. Web UI(浏览器端)

图片上传

置信度阈值设置

显示推理结果与置信度

2. Linux 应用(Python)

接收图片数据(Base64)

图像解码与预处理

调用 ImageClassification Brick 推理

解析推理结果并生成缩写

通过 Bridge RPC 调用 MCU 服务

3. MCU 固件(Sketch)

注册 RPC 服务接口(如 set_text)

将缩写字符渲染到 13×8 LED 矩阵

保证显示实时性与稳定性

2.2 双端优势体现

本项目重点体现了开发板“双处理器/双域协同”的优势:

Linux 侧优势(AI 与应用逻辑层)

便于接入现成 AI 模型/推理服务(ImageClassification Brick)

Python 开发效率高,适合快速验证、调试和扩展

便于实现复杂逻辑(如分类结果归并、TopK 投票、阈值策略等)

MCU 侧优势(硬件实时显示层)

点阵显示属于典型实时任务,MCU 可稳定驱动

与 Linux 解耦,显示刷新不受推理延迟影响

固件逻辑可控、稳定,不易因系统负载产生卡顿

通过这种架构分工,本系统实现了:

“AI 推理灵活性” + “硬件实时性” 的兼顾。

3.软件工程结构

项目基于 Arduino App Lab 示例扩展,主要目录结构如下:

image

其中:

python/main.py 运行于 Linux 环境,负责推理与业务逻辑

sketch/sketch.ino 运行于 MCU,负责点阵显示与 RPC 接收

4. AI 推理与结果处理(Python 端)

4.1 图像数据获取与预处理

Web UI 上传图片后,Python 侧接收 base64 编码的数据。为了避免不同图片格式(PNG/JPEG)与色彩模式(RGB/RGBA/灰度)差异导致推理不稳定,本项目采用统一预处理策略:

Base64 解码为 bytes

PIL 打开图像

强制转换为 RGB

4.2 图像分类推理调用

项目使用 Arduino App Lab 的 Image Classification Brick 调用预训练模型完成推理。推理输出为结构化结果,一般包含:

类别名称:class_name(detected object)

置信度:confidence

4.3 推理结果返回结构与解析

调试过程中发现,Brick 的返回结构可能为字典(dict)形式,例如:

{

‘classification’: [

{‘class_name’: ‘Persian cat’, ‘confidence’: ‘95.94’}

]

}

因此 Python 侧实现了统一的解析逻辑,用于兼容不同结构并稳定提取 Top1:

从 results[‘classification’] 提取第一个候选

获取 class_name 与 confidence

作为后续映射与显示的输入

4.4 detected object 的字符化归并策略

AI 输出的 detected object 并不局限于“猫 / 狗 / 人”,可能覆盖大量类别(如车辆、食物、设备、家居物品等)。但 13×8 LED Matrix 不适合显示长文本,因此本项目采用“语义归并 + 缩写显示”策略:

对 class_name 转小写并进行关键词匹配

将类别归并到有限的“显示域”

输出 3~4 字符缩写(便于点阵显示)

示例映射如下:

识别类别示例(class_name) 显示缩写

Persian cat / Tabby cat CAT

Dog / Retriever / Husky DOG

Person / Face HUM

Car / Truck / Bus CAR

Bicycle / Motorcycle BIKE

Pizza / Coffee / Food FOOD

Phone / Laptop / Camera DEV

Chair / Table / Sofa HOME

Tree / Bird / Nature NATR

其他类别 UNK

该策略优势:

LED 显示清晰、稳定、可读性强

AI 的“多类别识别能力”可通过 Web UI 展示完整 class_name 与 Top-K

MCU 端无需承载复杂分类逻辑,只负责显示,系统更可靠

4.5 Bridge RPC 下发机制

Python 端通过 Bridge 调用 MCU 端注册的服务接口,将缩写字符串下发:

服务名:set_text

参数:缩写字符串(建议 3~4 字符)

5. LED Matrix 显示设计(MCU 端)

5.1 13×8 LED Matrix 显示限制分析

开发板集成 LED Matrix 分辨率为 13×8(宽×高),显示能力受限:

宽度 13 列:传统 5×7 字体无法显示 3~4 字符

高度 8 行:可容纳 5 行字体并留出上下边距

若直接显示长文本,会出现截断或可读性差的问题

因此显示端需要面向硬件特性进行字体与排版优化。

5.2 3×5 字体方案

为实现 3~4 字符缩写在 13×8 上完整显示,本项目采用 3×5 字体:

每字符 3 列、5 行

最多 4 字符占用 12 列,适配 13 列宽度

字体在 8 行高度内垂直居中显示

5.3 三字符间距优化(+1 列空隙)

实践中发现:三字符缩写(CAT/DOG/HUM)若无间距,字符粘连影响可读性。

因此在 MCU 渲染逻辑中加入规则:

当字符数 = 3:字符间距 = 1 列

其他情况:间距 = 0(保证 4 字符仍能放下)

该策略计算验证:

三字符宽度 = 3×3 + 2×1 = 11 列

在 13 列上可居中显示并保留边距,清晰度显著提升

5.4 MCU 端 RPC 服务与显示流程

MCU 端主要流程:

初始化 LED Matrix

默认显示状态文本(如 WAIT)

注册 Bridge 服务:set_text

接收 Linux 侧发送的缩写字符串

调用 draw_text() 使用 3×5 字体写入帧缓冲

刷新点阵显示

6. 调试过程与问题定位

6.1 推理返回 None:runner 容器未启动

现象:Web UI 提示 “No results returned”。

日志显示 DNS 解析失败:无法解析 ei-classification-runner。

结论:推理 runner 容器未随 App 启动。

解决方法:在 App 中按正确方式添加/启用 Image Classification Brick,使 ei-classification-runner 容器启动并加入网络,推理恢复。

6.2 推理结果正确但 LED 无变化:结果结构解析不一致

现象:推理成功返回字典结构,但 LED 不变化。

原因:初版逻辑按 list 解析 results,未正确从 dict 中提取 class_name,导致显示逻辑一直走默认值。

解决方法:实现统一 _extract_top1() 解析函数,兼容 dict/list,提取 Top1 类别与置信度,并生成缩写后下发。

6.3 字符显示不完整:字体选型不匹配 13×8 分辨率

现象:使用 5×7 字体时,3~4 字符显示截断。

解决:改用 3×5 字体;针对 3 字符加入 1 列间距提高可读性,问题彻底解决。

7. 实验效果与展示

系统运行效果如下:

Web UI 可上传图片并显示推理结果(类别名称与置信度)

LED Matrix 能实时显示识别缩写(CAT/DOG/HUM/BIKE/FOOD/DEV/HOME/NATR/UNK 等)

识别结果与显示同步,系统运行稳定

8. 可扩展方向

在当前版本基础上可进一步扩展:

Top-K 轮播显示:将 Top3 缩写依次轮播,最后停留 Top1

置信度条显示:在点阵右侧用列条显示置信度等级

识别记录与导出:将识别类别与时间戳记录到存储介质,便于追溯

场景化联动:结合语音播报、蜂鸣器、提示灯实现多模态交互

归并策略增强:引入同义词表、TopK 投票、置信度门控等提升鲁棒性

9. 总结

本文基于 Arduino 双端架构完成了一套端侧 AI 图像识别与 LED 矩阵字符化显示系统的设计与实现。系统通过 Linux 侧完成 AI 推理与语义归并,MCU 侧完成实时点阵显示,并通过 Bridge RPC 进行低耦合通信,最终实现:

AI 推理能力(Image Classification)

可交互 Web UI 上传与结果展示

13×8 LED Matrix 清晰显示识别缩写

双端分工明确、系统稳定、便于扩展

该实践验证了双端协同在端侧 AI 场景中的工程价值,为后续更复杂的智能终端设计提供了可复用的参考架构与实现路径。