- 所需组件
- MLX90614与Raspberry Pi的接口
- Pi相机与Raspberry Pi的接口
- 使用Raspberry Pi设置SMTP电子邮件
- Pi的Python代码从MLX90614读取温度并发送带有图片的电子邮件
- 使用PI测量温度并发送邮件警报
自日冕爆发以来,确定是否受病毒感染的人变得非常困难。为了解决这个问题,通常使用温度设备来测量体温。这些设备具有非接触式红外温度传感器,可以在没有任何物理接触的情况下测量人体温度。
市场上有许多温度枪,但是当温度超过特定限制时,它们都不会向上级机构发出任何警报或电子邮件通知,以采取适当的措施。在此项目中,我们将连接一个红外温度传感器,并在任何特定人员的温度超过设定值时发送带有该人员图像的电子邮件警报。
在当今世界,物联网通过开发许多可以远程监控的系统,正在彻底改变我们的生活。在此项目中,我们将利用物联网的功能,并使用Raspberry Pi,MLX90614和PiCamera构建带有电子邮件警报的温度监控设备。
以前,我们还建立了其他类似的温度计来测量体温,您可以在这里找到它们。
- 使用MAX30205的基于Arduino的数字温度计
- 使用RFID和Arduino和MLX90614进行非接触式体温检查
- 使用Arduino的非接触式红外测温枪
- 使用Arduino的壁挂式非接触式温度计
- 使用Arduino和Android应用程序的智能温度计
所需组件
在这里,我们使用Raspberry Pi 3 Raspbian OS。前面已经讨论了所有基本的硬件和软件要求,您可以在Raspberry Pi简介和Raspberry PI LED闪烁中查找它,以开始使用,而我们还不需要:
- Raspberry Pi 3(任何版本都可以)。
- Pi相机。
- MLX90614-红外温度传感器。
- 连接电线。
- 面包板。
- 电源(5V,2A / 3A)
如果将项目分为多个部分,则该项目很简单。
- 理解和接口MLX90614与Raspberry pi。
- Pi Camera入门。
- 使用Raspberry pi设置SMTP电子邮件。
- 最终代码的开发和理解。
Raspberry Pi: Raspberry Pi是一种用于教育目的的信用卡大小的计算机。由于它的价格和惊人的规格,例如板载wifi,蓝牙和可编程的GPIO接头,以及创建应用程序的可能选项的数量,开发人员和电子爱好者都采用了它。您可以在Raspberry Pi简介和Raspberry PI LED闪烁中查找它,以开始启动过程。
MLX90614红外温度传感器:市场上有很多传感器可以为我们提供温度和湿度。该传感器与所有其他传感器的不同之处在于,它可以为我们提供物体温度,而其他传感器则可以提供环境温度。我们已将DHT11传感器和LM35广泛用于必须测量大气湿度或温度的许多应用中。
但是这里为了制造不需要物理接触并且可以测量物体温度而不是环境温度的温度枪,我们使用基于IR的MLX90614。要了解有关红外和红外传感器电路的更多信息,请点击链接。
MLX90614传感器是由Melexis Microelectronics集成系统制造的,它基于红外热电堆传感器的原理进行温度测量。这些传感器由内部嵌入的两个单元组成,以提供温度输出。第一个单元是具有红外检测器的传感单元,第二个单元是通过数字信号处理(DSP)执行数据计算的红外检测器。该传感器根据Stefan-Boltzmann定律工作,该定律根据温度解释黑体辐射的功率。简而言之,任何物体都会发出红外能量,其强度将与该物体的温度成正比。 MLX90614传感器将计算值转换为17位ADC并且可以使用I2C通信协议进行访问。这些传感器以0.02°C的分辨率校准测量环境温度以及物体温度。要了解有关MLX90614传感器功能的更多信息,请参阅MLX90614数据表。
MLX90614的功能:
- 工作电压:3.6V至5V
- 环境温度范围:-40°C至125°C
- 物体温度范围:-70°C至-382.2°C
- 分辨率/校准:0.02°C
- 17位ADC。
- I2C通讯。
MLX90614与Raspberry Pi的接口
首先,我们将下载成功连接MLX90614所需的库和软件包。
步骤1:从Raspberry Pi设置启用I2C。
键入 sudo raspi-config ,然后转到接口选项。
转到I2C选项并启用它。
步骤2:通过转到https://pypi.org/project/PyMLX90614/#files下载MLX90614的软件包/库,然后右键单击并复制链接地址。
转到RPI终端并键入wget,然后粘贴复制的链接,如下所示。
Wget
它将以zip文件名 'PyMLX90614-0.0.3.tar.gz' 下载该库。然后解压缩带有 tar -xf 文件名扩展名的文件夹,或使用以下命令执行相同的操作。
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安装
完成这些步骤后,只需使用以下给出的电路将MLX90614传感器与Raspberry pi连接即可。下面的Raspberry Pi MLX90614电路是使用压纹设计的。
如果连接和安装正确完成,我们可以使用命令 i2cdetect -y 1 来检查是否在I2C总线上获得了传感器地址值 。
如果一切正常,我们可以在终端上看到以下输出。
0x5A代表数据表中提到的传感器地址。数据表摘要显示了相同的内容,如下所示。
现在,我们将运行一个新文件,名为 mlxread.py, 并编写一个示例程序来检查来自传感器的数据。相同的代码如下。
从smbus2导入,从mlx90614导入SMBus导入MLX90614总线= SMBus(1)传感器= MLX90614(总线,地址= 0x5A)打印“环境温度:”,sensor.get_ambient()打印“对象温度:”,sensor.get_object_1()总线。关()
创建文件后,我们将使用python扩展名 python mlxread.py 运行它 。 我收到的输出如下所示。我多次运行该程序,以检查将鼠标移到其上时值是否发生变化。
哇,我们已经成功地将MLX90614与我们的Raspberry Pi进行了接口,您可以从上图确认。
Pi相机与Raspberry Pi的接口
步骤1:从Raspberry Pi设置启用相机。
键入 sudo raspi-config ,然后转到接口选项。
转到相机并启用相机。
现在,如下图所示连接相机模块。
步骤2:要检查摄像头是否正确连接,我们拍摄了一张测试图像并将其保存在桌面中(我们使用的是Full GUI Raspbian OS版本)
raspistill -o Desktop / image.jpg
这将使您的相机单击带有名称图像的图片并将其存储在桌面上。
使用Raspberry Pi设置SMTP电子邮件
在本部分中,我们将了解如何设置GMAIL帐户以在温度超过预定义的设置值后发送警报邮件。
SMTP是一种简单邮件传输协议,它是负责使用TCP / IP进行电子邮件服务的应用程序层协议。它具有发送和接收电子邮件的功能,并由Internet工程任务组(IETF)进行管理。
本教程仅适用于GMAIL帐户,为避免任何可能的错误,建议您使用新的Gmail帐户。
默认情况下,Google不允许用户使用python脚本发送电子邮件。为了使这项工作有效,我们必须通过进入帐户设置来启用一些安全性较低的应用程序。
步骤1:转到右上角,然后点击我的管理您的Google帐户。
步骤2:点击“安全性”,然后向下滚动到“ Less Secure App Access”。
步骤3:启用安全性较低的应用。
第4步:同样重复其他电子邮件ID,以从python脚本发送/接收电子邮件。
步骤5:下载所需的软件包。
sudo易于得到安装ssmtp中 命令和apt-get安装mailutils
如果在通过复制粘贴运行命令时遇到错误,请手动键入它。
步骤6:完成所有库的安装后,我们需要在 ssmtp.conf文件 中进行更改,我们必须在其中输入发件人的电子邮件详细信息
转到 sudo nano /etc/ssmtp/ssmtp.conf
向下滚动到最后并粘贴
mailhub = smtp.gmail.com:587 AuthUser = YourEmailAddress AuthPass = YourEmailPassword UseSTARTTLS = YES UseTLS = YES
我还分享了我的终端的屏幕截图,供您参考。
我只是使用一块面包板进行连接,当连接MLX90614和摄像机时,我的硬件设置看起来像他的。
Pi的Python代码从MLX90614读取温度并发送带有图片的电子邮件
python程序执行所有必要的操作以读取传感器数据,将其与阈值进行比较,授权电子邮件,然后发送带有图像的电子邮件。首先,我们将需要库,发送者和接收者的电子邮件声明。电子邮件可以通过smtplib发送,但是我们只希望将电子邮件与主题,正文和其他附件一起组织,这是借助多用途Internet邮件扩展(MIME)来完成的。完整的代码可以在本页底部找到。
导入RPi.GPIO作为gpio导入picamera导入时间从电子邮件中导入smtplib.MIMEMultipart从电子邮件中导入MIMEMultipart.MIMEText从电子邮件中导入MIMEText.MIMEBase从电子邮件中导入MIMEBase从电子邮件中导入编码器.mime.image从smbus2中导入MIMEImage从mlx90614中导入SMBus导入MLX90614
然后,我们定义发件人电子邮件地址,收件人电子邮件地址,电子邮件主题,正文和附件消息。
fromaddr =“ [email protected]”#相应地更改电子邮件地址toaddr =“ [email protected]”邮件= MIMEMultipart()邮件= fromaddr邮件= toaddr邮件=“温度值超出警报”正文=“请找到附件图片”
然后,我们创建一个函数,通过该函数可以发送电子邮件。
def sendMail(data):mail.attach(MIMEText(body,'plain'))打印数据dat ='%s.jpg'%data print dat附件= open(dat,'rb')image = MIMEImage(attachment.read ())attachment.close()mail.attach(image)服务器= smtplib.SMTP('smtp.gmail.com',587)server.starttls()server.login(fromaddr,“ test12345 @”)文本=邮件。 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)打印数据camera.capture('%s。 jpg'%data)camera.stop_preview()time.sleep(1)sendMail(data)
然后,我们使用PiCamera进行一些设置。
camera = picamera.PiCamera()camera.rotation = 0 camera.awb_mode ='auto'camera.brightness = 55
最后,我们有一个while(1)循环,它将无限运行。它将从MLX90614温度传感器读取数据,如果温度超过设定值,则调用 capture_image() 函数,然后调用 sendMail(data) 函数通过电子邮件发送图像捕获。
使用PI测量温度并发送邮件警报
硬件和软件准备就绪后,只需在pi上插入python代码(如下所示)即可。它将打印从传感器读取的温度值,如下所示。
如果物体温度超过阈值温度,那么我们的python程序将从相机拍摄图像,将其保存在树莓派上,并通过电子邮件共享。从树莓派发送的电子邮件示例如下所示。
您也可以在下面的视频中找到该项目的完整工作。希望您喜欢这篇文章,如果有任何疑问,请在下面的评论中留下,或者您也可以使用我们的论坛发布您的问题并与社区联系。