游乐游手机版
首页/AI热点日报/热点详情

带邮件报警功能的温度监控设备制作教程

类型:热点整理2026-07-17
自新冠疫情爆发以来,如何快速、非接触式地识别体温异常者,已成为公共卫生领域亟待解决的核心难题。市面上常见的测温枪虽然能回答“谁发烧了”,但基本停留于单点测量——记录一个数字后就再无后续。一旦体温超标,既不会自动报警,也无法通知相关部门采取后续行动。 那么,有没有可能让测温设备自己“发声”呢?比如,当

自新冠疫情爆发以来,如何快速、非接触式地识别体温异常者,已成为公共卫生领域亟待解决的核心难题。市面上常见的测温枪虽然能回答“谁发烧了”,但基本停留于单点测量——记录一个数字后就再无后续。一旦体温超标,既不会自动报警,也无法通知相关部门采取后续行动。

那么,有没有可能让测温设备自己“发声”呢?比如,当检测到体温超过设定阈值时,它不仅能记录数据,还能主动将现场照片和报警信息通过邮件发送出去?本项目正是为此而设计。我们将借助物联网的思路,利用一块树莓派、一个MLX90614红外温度传感器,外加一个Pi摄像头,搭建一套能够自动发送邮件报警的温度监控装置。

所需组件

硬件清单并不复杂,核心就是这几样:

  • 树莓派3(任意版本均可)
  • Pi 摄像头模块
  • MLX90614 红外温度传感器
  • 杜邦线(连接线)
  • 面包板
  • 电源(5V,2A/3A)

如果把这个项目拆解来看,其实就四个关键步骤:理解并连接MLX90614与树莓派、搞定Pi摄像头、用树莓派配置SMTP邮件发送、最后编写核心逻辑代码。

关于树莓派

树莓派本质上就是一张信用卡大小的计算机,最初是为教育场景设计的,但由于价格实惠、内置Wi-Fi和蓝牙,再加上可编程的GPIO接口,在创客和开发者圈子里早已成为“万能小电脑”。入门相关的细节可以翻阅树莓派基础教程和LED闪烁案例,这里不再赘述。

MLX90614 红外温度传感器

市面上能测温度的传感器不少,比如常见的DHT11或LM35,它们测量的是环境温度。但这次我们需要测量的是物体温度——而且是非接触式。MLX90614正是为此而设计的。它由迈来芯微电子(Melexis)生产,利用红外热电堆原理工作:任何物体都会向外辐射红外能量,其强度与温度成正比(斯特藩-玻尔兹曼定律)。传感器内部集成了红外探测单元和数字信号处理单元,将计算结果转换为17位ADC,通过I2C协议对外输出。环境温度和物体温度都能测量,分辨率高达0.02°C。详细技术参数可查阅官方数据手册。

MLX90614 主要参数

  • 工作电压:3.6V ~ 5V
  • 环境温度范围:-40°C ~ 125°C
  • 物体温度范围:-70°C ~ 382.2°C
  • 分辨率:0.02°C
  • 17位ADC
  • I2C通信

MLX90614 与树莓派的连接

动手之前,先要在树莓派上开启I2C功能,并安装必要的库。

第一步:启用I2C
运行sudo raspi-config,进入“Interface Options”,找到I2C并启用。

第二步:下载并安装MLX90614的Python库
前往PyPI官网找到PyMLX90614库(地址:https://pypi.org/project/PyMLX90614/#files),复制下载链接。在树莓派终端中用wget下载:

wget https://files.pythonhosted.org/packages/67/8a/443af31ff99cca1e30304dba28a60d3f07d247c8d410822411054e170c9c/PyMLX90614-0.0.3.tar.gz

下载的是一个压缩包,解压:

tar -xf PyMLX90614-0.0.3.tar.gz

接着安装一些依赖包:

sudo apt-get install python-setuptools
sudo apt-get install -y i2c-tools

然后进入解压后的目录并安装:

cd PyMLX90614-0.0.3/
sudo python setup.py install

第三步:接线
按照下面这张Fritzing绘制的电路图,将MLX90614与树莓派的I2C引脚连接起来。

第四步:验证连接
使用命令i2cdetect -y 1扫描I2C总线,如果一切正常,应该能看到地址0x5A。

地址0x5A与数据手册一致。

第五步:编写测试程序
新建一个文件mlxread.py,输入以下代码:

from smbus2 import SMBus
from mlx90614 import MLX90614
bus = SMBus(1)
sensor = MLX90614(bus, address=0x5A)
print("环境温度:", sensor.get_ambient())
print("物体温度:", sensor.get_object_1())
bus.close()

保存后运行:python mlxread.py。多次运行,把手放到传感器前面,数值会随之变化。

看到变化的那一刻——MLX90614的通信就成功了。

Pi 摄像头与树莓派的连接

第一步:启用摄像头
同样在sudo raspi-config的“Interface Options”里找到Camera并启用。

第二步:连接摄像头
按官方图示插好排线。

第三步:测试摄像头
运行命令拍摄一张测试照片:raspistill -o Desktop/image.jpg。如果桌面上出现了图片,说明摄像头工作正常。

使用树莓派配置SMTP邮件发送

SMTP(简单邮件传输协议)是TCP/IP协议族中负责邮件收发的应用层协议。这里我们以Gmail为例(建议使用一个新账号,以免影响主账户)。默认情况下,Google不允许通过Python脚本直接发送邮件,需要先在账户设置中允许“不太安全的应用程序”访问。

步骤1:进入Google账户管理
点击右上角头像→“管理您的Google账号”。

步骤2:安全设置
在“安全”选项卡中,向下滚动找到“不太安全的应用程序访问”。

步骤3:开启访问
将其设为“允许”。

步骤4:准备收/发邮箱
建议用两个不同的邮箱分别作为发件人和收件人,避免混淆。

步骤5:安装必要软件包
在树莓派终端中运行:

sudo apt-get install ssmtp
sudo apt-get install mailutils

如果复制粘贴命令时报错,可以手动逐字输入。

步骤6:编辑ssmtp配置文件
打开/etc/ssmtp/ssmtp.conf

sudo nano /etc/ssmtp/ssmtp.conf

在文件末尾追加以下内容(替换为自己的邮箱和密码):

mailhub=smtp.gmail.com:587
AuthUser=你的邮箱地址
AuthPass=你的邮箱密码
UseSTARTTLS=YES
UseTLS=YES

参考截图:

所有硬件连接完成后,用面包板搭建的实物大致长这样:

Python代码:读取温度 → 拍照 → 发邮件

核心逻辑非常简单:树莓派持续读取MLX90614的物体温度,一旦超过预设阈值(代码中设为34°C,可根据需要调整),就调用摄像头拍摄一张照片,然后用SMTP将图片作为附件发送到指定邮箱。邮件内容包含主题和正文,图片文件名以时间戳命名。

代码中使用了smtplib发送邮件,MIMEMultipart来组织带有附件的邮件结构。下面是完整的Python代码:

import RPi.GPIO as gpio
import picamera
import time
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders
from email.mime.image import MIMEImage
from smbus2 import SMBus
from mlx90614 import MLX90614

fromaddr = "test2718test@gmail.com"  # 替换为你的发件邮箱
toaddr = "electrofunedu@gmail.com"    # 替换为你的收件邮箱

mail = MIMEMultipart()
mail['From'] = fromaddr
mail['To'] = toaddr
mail['Subject'] = "温度值超出警报"
body = "请查找附件图片"

def sendMail(data):
    mail.attach(MIMEText(body, 'plain'))
    print(data)
    dat='%s.jpg'%data
    print(dat)
    attachment = open(dat, 'rb')
    image = MIMEImage(attachment.read())
    attachment.close()
    mail.attach(image)
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(fromaddr, "test12345@")  # 替换为发件邮箱密码
    text = mail.as_string()
    server.sendmail(fromaddr, toaddr, text)
    server.quit()

def capture_image():
    data = time.strftime("%d_%b_%Y|%H:%M:%S")
    camera.start_preview()
    time.sleep(5)
    print(data)
    camera.capture('%s.jpg'%data)
    camera.stop_preview()
    time.sleep(1)
    sendMail(data)

camera = picamera.PiCamera()
camera.rotation = 0
camera.awb_mode = 'auto'
camera.brightness = 55

while 1:
    bus = SMBus(1)
    sensor = MLX90614(bus, address=0x5A)
    print("环境温度:", sensor.get_ambient())
    print("物体温度:", sensor.get_object_1())
    temp = sensor.get_object_1()
    bus.close()
    if temp > 34:
        capture_image()
        time.sleep(0.1)
    else:
        time.sleep(0.01)

运行与测试

将代码保存为temp_monitor.py,在树莓派上执行python temp_monitor.py。终端会持续打印当前的环境温度和物体温度。

当物体温度超过阈值(示例中为34°C)时,程序会自动拍摄一张照片,保存到当前目录,并发送一封包含图片附件的邮件。以下是收到的邮件示例:

至此,一套由树莓派驱动的非接触式体温监测、自动拍照并邮件报警的装置就完成了。整个流程完全自动化,可部署在出入口、会议室等需要持续监测体温的场所。如果配合云平台或数据库,还能进一步扩展为远程监控系统——这扇门打开了,玩法就多了。

来源:https://m.elecfans.com/article/1873736.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。