在大流行期间,人们被要求在任何当地市场或杂货店进行体温检查,这通常由另一个人完成。这对于人与人之间的互动来说可能是一种冒险的做法。为了降低这种风险,我们开发了一个温度接入点,它可以自动检测人员并邀请他们检查体温,远程测量,然后将其显示在高对比度(有机发光二极管)OLED 显示屏上,无需任何人为干预。
选择AVR128DA48进行开发是因为板载外设种类繁多且 I/O 引脚充足。AVR® DA 利用其板载 12 位 ADC 测量来自无源红外 (PIR)传感器的输出以唤醒。
为了加快开发速度,我们使用了 AVR128DA 的Curiosity Nano 评估板。Curiosity Nano 是一种低成本的开发工具,可拆分设备上的 I/O,并包括一个专用的板载 USB 编程器。除了 Nano,还使用了Curiosity Nano 基板。该板可方便地访问 3 个 MikroBUS™ 串行接口,以便于连接开发板。在此应用中,使用了OLED C 显示器、红外温度计 (IrThermo)和被动红外 (PIR) click 。
为了检测一个人何时进入建筑物,需要一种非接触式的感应方式。此外,该系统将充当大楼的看门人,拒绝发烧的人进入。由于存在通过身体接触传播疾病的风险,机械开关或磁簧开关不适合此应用。
相比之下, PIR 传感器会生成一个低电平模拟信号,该信号与其视野中的物体温度相关,如下所示。
其视野内温度总和的突然变化(例如有人进入)会干扰传感器,并导致输出电平发生变化。PIR 传感器板带有一个模拟前端,可将输出信号的比例增加到可以使用板载 12 位 ADC 可靠测量的水平。
为了减少与 PIR 传感器变化相关的处理开销,ADC 的窗口比较器用于检查 ADC 的值是否在设定值范围之内(或之外)。当值超出正常范围时,会触发中断,将设备从睡眠中唤醒以开始处理。
虽然 PIR 传感器确实会产生与其视野中的 IR 量相关的输出,但它对于测量人的温度来说太不精确了。为了准确测量人的温度,使用了红外温度计点击板。该板有一个数字高精度红外温度计,可通过 I2C 或通过 PWM 输出进行通信。在这个应用程序中,使用了 I2C 通信。
一旦测量了人的体温,屏幕上就会打印一条消息,指示该人的体温以及是否允许进入建筑物。可以将蜂鸣器连接到该板上以指示各种事件,例如门解锁或访问被拒绝。蜂鸣器的音调因事件而异。如果门“解锁”,Curiosity Nano 上的 LED 会亮起。
通常 AVR128DA 处于睡眠模式。PIR 传感器在睡眠时由 ADC 连续采样。当采样值超过设置的窗口阈值时,设备会从睡眠中唤醒。入睡后,红外温度计立即测量房间的环境温度,然后测量传感器前面的人(或物体)的温度,并比较是否:
在温差过小的情况下,系统最终会超时并返回睡眠,因为这是一个误报。在另外两种情况下,存在足够的温差来确定一个人正在寻求访问。IR温度计用于测量他们的温度REPEATED_MEAS次,记录最大值。最大值用于确定是否应允许某人进入建筑物。对于不发烧的人,蜂鸣器响起,门“解锁”。OLED 屏幕显示他们的温度和指示门已打开的消息。对于发烧的人,蜂鸣器会发出不同的声音,OLED 屏幕会显示他们的体温和“拒绝访问”的消息。
作为安装开发工具的替代方法,存储库中的 .hex 文件可以像 USB 驱动器一样拖放到 Curiosity Nano 上。nano 将自动对 AVR DA 进行编程和配置。如果使用此选项,只需执行步骤 1 和 4。
关闭电源后,将 3 个卡扣插入 Curiosity Nano 适配器,如下所示。将 AVR128DA48 Curiosity Nano 插入插座。如果您没有下载固件,请下载固件并将其解压缩 到您选择的文件夹中。
通过 MicroUSB 电缆将 Curiosity Nano 连接到您的开发计算机,例如这个,然后启动 MPLAB® X。转到 File > Open Project 并导航到解压缩的文件夹。双击文件夹将其打开。如果左侧栏中的项目名称不是粗体,请在项目右侧并选择“设置为主项目”。建议关闭其他当前打开的与项目无关的文件,以免混淆。
单击工具栏中的MPLAB 代码配置器 (MCC)按钮以启动 MCC。MCC 将向您显示设备上外围设备的配置。
注意:如果此按钮在 MPLAB 中不可见,则可能未安装 MCC。要安装,请转至工具 > 插件 > 可用插件 > MPLAB 代码配置器。安装完成后,重新启动 MPLAB。
首先,构建项目。您可以单击构建(按钮 A)或构建并清理(按钮 B)。构建和清理将删除缓存的编译器和链接器文件,这有时会导致构建错误。要对设备进行编程,请单击指向微控制器的箭头(按钮 C)。
按下编程按钮后,MPLAB 可能会要求选择工具。为 AVR128DA 选择 Curiosity Nano。在大多数情况下,首次使用 nano 进行编程需要对 nano 进行固件更新,该固件将自动安装。编程后,程序自动运行。
注意:如果 Nano 固件更新过程中发生错误,请从 PC 上拔下 nano 并重新启动 MPLAB。重新连接 nano 并重复步骤 3。
注意:如果 nano 的选项显示为灰色,则可能需要更新 DFP 文件。转到工具 > 包并检查 AVR-Dx_DFP 以查看它是否已安装并且是最新的。此程序已使用 DFP 1.2.52 和 1.3.65 进行了测试。
编程后,演示应立即生效。PIR click 产生与环境温度相关的模拟电压。如果该值超过阈值,则设备会收到中断并从睡眠中唤醒。OLED 显示屏打开并提示用户站在红外温度计前面点击。如果温度接近或等于环境温度,系统会将其标记为误报并返回睡眠状态。当检测到一个人时,IR 温度计测量温度 REPEATED_MEAS 次以找到最大值。如果最高温度在正常温度范围内,屏幕将打印“Door Opened”并发出蜂鸣声。如果温度升高,屏幕上会打印“拒绝访问”并发出不同的声音。
项目中的“constants.h”文件包含程序中使用的常量。可以调整其中一些值,以便在温度可能不同的不同环境中获得更好的性能。下面的列表具有关键的可调常数:
· TEMP_GOOD(默认 37.3)——设置允许进入的最高温度。
· TEMP_DIFF(默认 3.4)——设置 IR Thermo 传感器的阈值以确定是否有人在场。
· TEMP_HIGH (默认42.0) – 设置红外温度计认为有效的最高温度。
· TEMP_LOW(默认为 32.0)——设置红外温度计认为有效的最低温度。
· TIMEOUT_MEAS(默认为 300)——设置在将事件视为错误检测之前要进行的测量次数。
· REPEATED_MEAS(默认为 100)——设置检测到人时要进行的测量次数。记录最高值以进行比较。
· ADC_LOW_THRSHOLD(默认为 0x9)——设置 ADC 运动检测窗口的低阈值。
· ADC_HIGH_THRESHOLD(默认为 0xF3C)——设置 ADC 运动检测窗口的高阈值。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !