非接触体温筛查闸机:Arduino MKR1000 + 红外测温 + 舵机控制
组件与材料
| Arduino MKR1000 | ×1 |
| DFRobot 非接触红外测温传感器 (MLX90614) | ×1 |
| SG90 微型舵机 | ×1 |
| 跳线若干 | ×1 |
所需工具
- 热熔胶枪、电烙铁
软件与平台
- Arduino IDE
- VS Code Arduino 扩展
项目背景
针对 COVID-19 疫情需求,设计一款自动测温闸机:人员通过时非接触测量体温,若超过 99°F (37.2℃) 则自动关闭闸门并报警,适用于车站、医院、商场等场所。成本远低于热成像仪。

工作原理
- 闸门常态开启
- 红外传感器安装于闸顶中央,测量过人额头温度
- MKR1000 读取温度,若 > 99°F,驱动舵机关闭闸门 1 秒并触发蜂鸣器
- 否则保持闸门开放
物料清单 (BOM)
- 红外测温传感器 (MLX90614)
- SG90 舵机
- Arduino MKR1000
- PVC 板材(制作闸机外壳)
- 跳线、美工刀、胶水

电路原理图

代码
#include <Wire.h>
#include <Adafruit_MLX90614.h>
#include <Servo.h>
Servo myservo;
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
double temp;
int buzzer = 2;
void setup() {
Serial.begin(115200);
Serial.println("MLX90614 Test");
pinMode(buzzer, OUTPUT);
myservo.attach(5); // MKR1000 Pin 5
myservo.write(0); // 闸门打开
mlx.begin();
}
void loop() {
digitalWrite(buzzer, HIGH); // 蜂鸣器常响(低电平触发时改为 LOW)
myservo.write(0); // 保持开启
temp = mlx.readObjectTempF(); // 读取华氏度
if (temp > 90) { // 阈值约 32.2℃,实际建议设 99°F
Serial.println("HIGH TEMPERATURE");
digitalWrite(buzzer, LOW); // 报警
myservo.write(95); // 关闭闸门
delay(1000);
}
Serial.print(temp); Serial.println(" *F");
delay(500);
}
原理图
制造工艺
- 树莓派专业温度监测:基于 DS18B20 传感器的完整指南
- 树莓派精准监测机柜温度:DS18B20 多点部署实战
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- Arduino + DHT11 + 以太网盾板温湿度数据记录仪
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
- 校园智能体温监测系统 - 精准、实时、安全的学生健康守护方案
- Arduino + TEA5767 打造 FM 收音机:Nokia 5110 显频谱/信号强度/立体声