亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino Nano + TPA81 热堆阵列 + 8×PIR 传感器构建手势/动作检测器

所需元件与物料

Arduino Nano R3×1
TPA81 Devantech 8 像素热堆阵列传感器 (I2C)×1
HC-SR505 迷你 PIR 人体红外传感器 (低成本替代方案)×8
0.96" SPI OLED 显示屏 (128x64, SSD1306)×1
面包板、公母杜邦线若干

软件工具

原理与应用

被动红外 (PIR) 传感器工作原理

任何绝对零度以上的物体都会发射红外辐射。PIR 传感器不主动发射能量,而是接收视场内物体辐射的红外热能。典型应用:安防报警、感应灯。
TPA81 特点:8 个热堆元件排成一行,视场约 12° (带硅透镜),可同时测量 8 个相邻点的温度,分辨率 1°C,能在 2 米外探测蜡烛火焰,不受环境可见光干扰。本质是一个 8 像素的热成像仪。

Arduino Nano + TPA81 热堆阵列 + 8×PIR 传感器构建手势/动作检测器
TPA81 视场与像素排布

低成本替代方案

若 TPA81 预算不足,可用 8 个 HC-SR505 (拆去菲涅耳透镜) 并联到 8 个数字输入引脚,轮询读取,亦可实现类似 8 像素热成像,但需自行处理采样时序。

Arduino Nano + TPA81 热堆阵列 + 8×PIR 传感器构建手势/动作检测器

代码开发三阶段

阶段 1: 读取 TPA81 原始温度

#include 
#include 
TPA81 tpa;
void setup() {
  Serial.begin(9600);
  Wire.begin();
}
void loop() {
  Serial.print(tpa.getAmbient()); Serial.print(" "); // 环境温度
  for (int i=1;i<=8;i++) { Serial.print(tpa.getPoint(i)); Serial.print(" "); }
  Serial.println();
  delay(100);
}

串口绘图器可观察 8 通道温度波形。将手放在传感器前,对应像素温度升高 (约 29-32°C)。

阶段 2: 简单阈值可视化 (串口绘图器显示手势轮廓)

void loop() {
  Serial.print(tpa.getAmbient()); Serial.print(" ");
  for (int i=1;i<=8;i++) {
    if (tpa.getPoint(i) > 29) Serial.print("# "); else Serial.print(". ");
  }
  Serial.println();
  delay(100);
}

手在传感器前左右移动,串口会显示类似热成像的 "#" 轨迹。

阶段 3: 手势识别算法 + OLED 显示音量条

算法核心:
1. 待机态:8 像素全高于阈值 (sum==8) 置标志位 sflag=1
2. 检测到非全高 (sum!=8) 且 sflag==1 → 进入手势记录态
3. 连续采样 (50ms 间隔) 记录每像素随时间的触发计数 gesture[8][gcount]
4. 手势结束 (sum==8) 后,将 8 像素两两合并为 4 组 (0+1, 2+3, 4+5, 6+7),再合并为左半 (0-3) 与右半 (4-7) 总计数 tgesture[0] 与 tgesture[4]
5. 若左半计数 > 右半 → 判定为「右划/音量+」;反之「左划/音量-」
6. 音量值 (1-11) 对应 11 幅预存位图 (v1~v11, PROGMEM) 显示在 OLED 上

// 关键变量
int gesture[8][20], tgesture[8], sum=0, sflag=0, gcount=0, vol=5;
// v1~v11 为 128x64 位图数组 (PROGMEM, 此处省略,完整代码见下载)

void loop() {
  // 1. 采样 8 像素
  sum=0;
  for (int i=0;i<8;i++) {
    if (tpa.getPoint(i+1)>29) { gesture[i][0]=1; sum++; } else gesture[i][0]=0;
  }
  // 2. 待机/启动判断
  if (sum==8) { sflag=1; }
  else if (sflag==1) {
    // 手势记录循环
    gcount=0; sum=0;
    while (sum<8) {
      sum=0;
      for (int i=0;i<8;i++) {
        if (tpa.getPoint(i+1)>29) { gesture[i][gcount]=1; sum++; }
        else gesture[i][gcount]=0;
      }
      gcount++; delay(50);
    }
    // 3. 统计左右半侧积分
    for (int c=0;c<8;c++) for (int z=0;z
Arduino Nano + TPA81 热堆阵列 + 8×PIR 传感器构建手势/动作检测器
手在 TPA81 前左右滑动控制音量条

进阶拓展

同理可扩展识别:点击、拖拽、拉伸、旋转等手势,映射到不同控制指令 (如翻页、缩放、开关灯等)。

依赖库下载

库文件较大,仅提供下载链接,需在 Arduino IDE 中通过“添加 .ZIP 库”安装。

制造工艺

  1. 树莓派 PIR 运动传感器控制 LED 实战指南
  2. 掌握树莓派 GPIO:在 B+/Model 2 上接入 PIR 运动传感器
  3. HC‑SR501 PIR 运动传感器与树莓派接线、校准与 Python 编程全指南
  4. DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
  5. 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
  6. 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
  7. 互动 LED 矩阵门显:PIR 触发节日问候 + 待机特效
  8. Arduino Cloud 传感器塔:温度、动作与气体监测
  9. 基于 Arduino Nano 的智能运动感应水枪
  10. 基于Arduino、Windows IoT与Azure云的高级跌倒检测系统
  11. Arduino传感器:类型、应用与实战项目
  12. PIR传感器电路工作原理、设计与实际应用全解析