Spectrino:基于 Arduino Nano 33 BLE Sense 与 ESP8266 的 TinyML 与 IoT 无接触解决方案集
组件与材料
| 组件 | 数量 |
|---|---|
| Arduino Nano 33 BLE Sense | 1 |
| ESP8266 ESP-01 模块 | 1 |
| Arducam Mini 2MP Plus 摄像头 | 1 |
| MAX7219 点阵显示屏 (4合1, 32x8) | 1 |
| 蜂鸣器 | 1 |
| SG90/MG995 微型舵机 | 2 |
| Adafruit Micro-Lipo 充电板 | 1 |
| Adafruit 锂聚合物电池 | 1 |
| Arduino MKR WiFi 1010 | 1 |
| RGB 共阴极 LED | 1 |
| HC-SR04 超声波测距模块 | 1 |
所需工具
- 10 根 5cm 跳线
应用与在线服务
- Arduino Web Editor
- ThingSpeak API (IoT 数据看板)
- Edge Impulse Studio (TinyML 模型训练)
- TensorFlow / TensorFlow Lite
项目背景
疫情带来的挑战
COVID-19 疫情迫使全球实施社交距离,商场客流骤降导致大量零售、餐饮、娱乐业员工失业(仅美估计超 400 万)。对于无法远程办公的一线员工和商家,如何在保障安全的前提下维持运营成为核心难题。

核心痛点
- 开放场所人员密度未知,风险不可控
- 强制戴口罩、禁止接触仍有违规
- 人工测温距离近、数据不留存、效率低
- 电梯按钮、对讲机、排队等高频接触面污染风险高
本项目针对上述痛点,开发了六大无接触子系统,均基于 TinyML (TensorFlow Lite) 部署在 Arduino Nano 33 BLE Sense 上,配合 ESP8266 上传数据至 ThingSpeak 云端看板,实现实时监控与自动化响应。
六大子系统详解
1. 语音控制无接触电梯系统
动机:电梯按钮为高频接触面。超声波/手势方案存在误触发率高、需近距离操作等缺陷。语音指令“上/下”可远距离、高准确度触发。
模型训练:在 Edge Impulse Studio 采集“up”“down”各 1 分 30 秒(每样本 2 秒),窗口增量 300ms,采用 1D CNN (Keras) 分类。训练 100 epochs,准确率 91.2%,测试集准确率 75%。模型约 24-28KB,部署为 Arduino 库。


核心逻辑:
if (found_command[0] == 'up') {
digitalWrite(LEDG, LOW); // 绿灯亮
servo_7.write(0); // 舵机按下“上”键
delay(100);
digitalWrite(LEDG, HIGH);
servo_7.write(180); // 舵机复位
}
if (found_command[0] == 'down') {
digitalWrite(LEDG, LOW);
servo_7.write(0); // 舵机按下“下”键
delay(100);
digitalWrite(LEDG, HIGH);
servo_7.write(180);
}



2. 人脸识别智能对讲系统
动机:传统对讲机需按键呼叫,存在接触传播风险。采用人检测模型自动识别来访者并触发门铃。
模型:使用 TensorFlow 预训练人检测模型(三类:unused/person/notperson),输入 96x96 图像,网络结构:Depthwise Conv2D → Conv2D → Average Pool2D → Flatten。Arducam Mini 2MP Plus 采集图像,经 SPI 传输给 Nano 33 BLE Sense 推理。
响应逻辑:
uint8_t person_score = output->data.uint8[kPersonIndex];
uint8_t no_person_score = output->data.uint8[kNotAPersonIndex];
if (person_score > no_person_score) {
digitalWrite(LEDG, LOW); // 蜂鸣器响
digitalWrite(LEDR, HIGH);
myDisplay.print("Person"); // 矩阵屏显示"Person"
servo_8.write(0); delay(500); // 可选:舵机按下原对讲机视频键
servo_8.write(180);
}

3. 自主 IoT 体温监测系统
动机:人工测温距离近、无数据记录。采用 AMG8833 热成像模块 + HC-SR04 超声波检测入场人员,自动测温并上传 ThingSpeak,异常体温(>38.1℃)触发蜂鸣器报警并关闭闸机(舵机模拟)。
逻辑流:
ultra(); // 超声波测距
servo1.write(0); // 开闸
if (distance <= 20) {
float temp = amg.readThermistor();
Send_Data_To_ThingSpeak(temp);
if (temp > 38.1) {
servo1.write(180); // 关闸
digitalWrite(BUZZER, HIGH); // 报警
}
}


4. TinyML + IoT 排队管理系统
动机:商场限流依赖人工计数,无实时数据对外公开,顾客无法知晓等待时间与店内密度。
方案:入口/出口各部署一套人检测系统(Arducam + Nano 33 BLE Sense)。检测到人进入 → 舵机开闸 → 计数+1 → 上传 ThingSpeak。计数达 50 人上限 → 关闸 15 分钟 → LED 矩阵显示等待时间。出口同理减少计数。ThingSpeak 看板实时显示进/出人数,顾客可据此选择最佳到访时段。
等待时间估算算法:
X = 累计入场人数
Y = 累计出场人数
Z = 容纳上限 (50)
count = Z - (X - Y) // 负值表示超员
if (count < 0) wait_time = (-count) * 平均停留时间;
else wait_time = 0;

5. 口罩检测系统(基于人检测扩展)
动机:强化口罩合规。在 Edge Impulse 训练 MobileNetV2 0.35 分类器(mask/no_mask),数据集 813 张训练/487 张测试,量化后模型约 676KB,准确率 92.6%(测试集 98.15%)。部署于 Nano 33 BLE Sense,检测结果同上传 ThingSpeak 统计戴/未戴口罩趋势,辅助管理决策。

6. 超市货道人员检测与自主 UV 消毒系统
动机:病毒在物表可存活数天,人工消毒无法根据实时人流动态作业。在各货道部署人检测系统,根据人数阈值分级预警并触发 UV 消毒。
分级阈值示例(可按货品类型调整):
- 食品区:1-25 绿灯(安全) → 26-50 蓝灯(预警) → 51-75 红灯(污染) → 76-90 UV消毒 → >91 计数归零
- 服装区:1-50 绿 → 51-75 蓝 → 76-100 红 → 101-110 UV → >111 归零
- 电子区:1-75 绿 → 76-180 蓝 → 181-225 红 → 226-240 UV → >241 归零
数据实时上传 ThingSpeak,可叠加地图可视化,顾客可查看各区域实时密度与消毒记录。

商业价值与落地优势
- 降低人工成本,自动化限流、测温、消毒全流程
- 实时数据公开,重建顾客信心,促进客流恢复
- 数据驱动决策:依据时空密度动态调整防疫策略
- 成本远低于自主 UV 机器人,可利用现有摄像头接入,硬件可扩展性强
- 政府监管端可聚合多商场数据,宏观把控疫情风险
代码仓库
原理图





制造工艺
- 树莓派 3 接 DHT11 传感器上传数据到 ThingsIo.ai 云平台
- 用 Arduino UNO 和 OLED 显示屏制作经典 Pong 游戏:分步教程
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- Pixie:基于 Arduino Pro Mini 的 NeoPixel 智能腕表 - 极简 DIY LED 时钟
- 基于 Arduino Mega 与 Nextion 显示屏的交互式气象站
- TinyML 植物健康评估:Arduino Nano 33 BLE Sense + 步进电机扫描建模
- DIY Arduino 智能手表:打造属于你的 Apple Watch 风格腕表
- Arduino 驱动的真空荧光显示器(VFD)控制器套件
- Arduino Nano 驱动 128x64 OLED 实时运行康威生命游戏 (元胞自动机)
- Azure IoT智能游泳池监控系统:温度感知与远程控制
- 为物联网资产追踪解决方案选择正确无线协议
- 物联网追踪方案赋能敞车货运运营升级