×

可监测婴儿和宠物中暑预防的设备开源

消耗积分:0 | 格式:zip | 大小:0.09 MB | 2022-11-03

王兰

分享资料个

描述

介绍

该项目是为有婴儿、幼儿或宠物的父母和宠物主人设计的,他们可能需要在车内无人看管一段时间。当放置在车内时,该设备会监控热量水平和运动,以确保安全,避免过热。当车内温度升高到安全温度以上时,该设备将发送越来越紧急的文本通知。

虽然这并不能提供一个解决方案来冷却孩子或宠物以防止他们过热,但这确实有助于在死亡发生之前通知父母。

动机

自 1998 年以来,尤其是 2 岁以下的儿童,极易遭受中暑的危害。2018 年,据报道有 52 名儿童被困在过热的车辆内而死亡。即使车窗微开,车内温度也可以在 10 分钟内升高 20 度,在 30 分钟内升高 50 度。对于孩子的身体来说,它的升温速度要快三到五倍,这是一个严重的问题。在阅读了一篇阐述这个确切问题的文章后,我起初感到震惊和恐惧。对有多少人死亡感到震惊,并对还没有解决方案感到震惊。希望通过这个项目,它将成为创造新的安全可靠设备的垫脚石,以帮助确保他人的安全并帮助未来的孩子被困在过热的车辆内。

材料

某物

 
 
 
 
pYYBAGNiBLuAMG0kAAdWyj5BdI8776.jpg
 
1 / 5Adafruit GPS FeatherWing
 

粒子设置

使用 Boron 的快速入门指南将电路板注册到粒子云环境中。大约花了半天时间,才将 SIM 卡注册到本地蜂窝网络并能够从 Particle 控制台访问它。

粒子控制台如下图所示,列出了 Boron 设备以及通过 API 调用所需的信息。

 
pYYBAGNiBQmAOA9uAAGfL-QzgDE935.jpg
粒子控制台
 

为了通过 Visual Studio Code 使用 Particle IDE、WEB 或 IDE,您需要 Personal Access Token 字符串,您可以通过在控制台上选择 WEB IDE 并选择 IDE 底部的设置齿轮找到它,您将在顶部看到个人访问令牌。在下图中,它已被编辑掉,因为它是个人令牌。

 
pYYBAGNiBQyASzsJAACjVtwiWaM969.jpg
个人访问令牌
 

获得 PAT 后,使用 Visual Studio Code 环境就像登录到您的 Particle 帐户一样简单。

为了安装和配置您的桌面 IDE,请遵循此处的简单指南

最后,将以下库包含到您的项目中:Adafruit_ILI9341、Adafruit_DHT 和 Adafruit_mfGFX。确保使用这些名称,因为搜索非常挑剔。该程序显示 Twilio,但实际上并没有使用它,所以忽略添加该库。

编码现实

编码需要与现实中的实际事件相匹配。在这种情况下,汽车的内部温度在夏季阳光明媚的日子里,温度高达 110 华氏度。

以下参考资料用于找到最佳温度范围,来自 NBC 新闻:“热车中的死亡:事实、数据和预防”、WhatToExpect:“保护您的孩子免受极端高温”和“为什么将孩子留在车内如此危险”。

首先,一组常量定义了温度阈值、要发送的消息数量和消息之间的时间间隔。

//Define constants for device status    
#define STATUS_UNKNOWN  0    
#define STATUS_OK       1    
#define STATUS_WARNING  2    
#define STATUS_DANGER   3    
#define STATUS_PANIC    4    
//Define constants for temperature strenght    
#define RANGE_OK        81    
#define RANGE_WARNING   89    
#define RANGE_DANGER    99    
#define WARNING_TIME 5 //mins    
#define MSG_WARNING_MAX 4 //every 5 mins    
#define WARNING_MAX_TIME 15    
#define DANGER_TIME 3 //every 3 mins.    
#define DANGER_MAX_TIME 15 //after that it becomes panic.     
#define MSG_DANGER_MAX 5    
#define PANIC_TIME 1  //every minute    
unsigned long thresholdTime=5000;    
unsigned long warningThreshold = 1000*60*WARNING_MAX_TIME;    
unsigned long dangerThreshold = 1000*60*DANGER_MAX_TIME;    
unsigned long warningTriggerThrs = 1000*60*WARNING_TIME;    
unsigned long dangerTriggerThrs = 1000*60*DANGER_TIME;      
unsigned long panicTriggerThrs = 1000*60*PANIC_TIME;

The首先检查确保温度低于正常范围(82 华氏度);如果温度低于然后将环境变量重置为正常状态。

if (f < RANGE_OK)    
   {    
     if (eventStatus != STATUS_OK)    
     {    
       eventStatus = STATUS_OK;    
       msgCounterWarning = 0;    
       msgCounterDanger = 0;    
       eventStartTimer = 0;    
       eventTimer = 0;    
     }    
   }

如果温度达到警告范围 (82 - 89 华氏度),则会向直接触点发送警告消息,并启动 5 分钟的计时器。系统将每 5 分钟发送一条消息。

else if (f > RANGE_OK && f <= RANGE_WARNING)    
   {    
       if (eventStatus != STATUS_WARNING)    
       {    
         eventStatus = STATUS_WARNING;    
         msgCounterWarning = 0;    
         msgCounterDanger = 0;    
         eventStartTimer = millis();    
         eventTimer = 0;    
         sendWarning(f);    
       }    
       else    
       {    
         eventTimer = millis();    
         if ((eventTimer - eventStartTimer) < warningThreshold)    
         {    
           if ((eventTimer - eventLastTimer) > warningTriggerThrs)    
           {    
             sendWarning(f);    
             msgCounterWarning++;    
             eventLastTimer = eventTimer;    
           }    
         }    
       }    
   }

如果温度达到危险范围(90 到 99 华氏度),则每 3 分钟向直接联系人和 Twilio 中的第一个紧急号码寄存器发送一条危险消息。紧急号码将接收设备的位置(只要GPS锁定卫星),然后紧急号码可以联系直接联系人或开车到设备所在的位置,或联系紧急当局。系统将在 Danger 状态下尝试最多 15 分钟,然后升级为 Panic 状态,第三个人和第二个紧急联系人将收到一条短信,以及设备位置。

else if (f > RANGE_WARNING && f < RANGE_DANGER)    
   {    
       if (eventStatus == STATUS_PANIC)    
       {    
           eventTimer = millis();    
           if ((eventTimer - eventLastTimer) > panicTriggerThrs)    
           {    
             sendPanic(f);    
             msgCounterDanger++;    
             eventLastTimer = eventTimer;    
           }    
       }    
       else    
       {    
         if (eventStatus != STATUS_DANGER)    
         {    
           eventStatus = STATUS_DANGER;    
           msgCounterWarning = 0;    
           msgCounterDanger = 0;    
           eventStartTimer = millis();    
           eventTimer = 0;    
           sendDanger(f);    
         }    
         else    
         {    
           eventTimer = millis();    
           if ((eventTimer - eventStartTimer) < dangerThreshold)    
           {    
             if ((eventTimer - eventLastTimer) > dangerTriggerThrs)    
             {    
               sendDanger(f);    
               msgCounterDanger++;    
               eventLastTimer = eventTimer;    
             }    
           }    
           else    
           {    
             eventStatus = STATUS_PANIC;    
             sendPanic(f);    
           }    
           if (msgCounterDanger > MSG_DANGER_MAX)    
           {    
             eventStatus = STATUS_PANIC;    
             sendPanic(f);    
           }    
         }    
       }    
   }

如果温度升至紧急范围(99 华氏度及以上),则会向第三人发送紧急消息,并与设备位置的第二个紧急联系人联系。此消息将每分钟发送三条消息,直到温度降至安全范围。

else if (f > RANGE_DANGER)    
   {    
       if (eventStatus != STATUS_PANIC)    
       {    
         eventStatus = STATUS_PANIC;    
         msgCounterWarning = 0;    
         msgCounterDanger = 0;    
         eventStartTimer = millis();    
         eventTimer = 0;    
       }    
       else    
       {    
           eventTimer = millis();    
           if ((eventTimer - eventLastTimer) > panicTriggerThrs)    
           {    
             sendPanic(f);    
             msgCounterDanger++;    
             eventLastTimer = eventTimer;    
           }    
       }    
   }

位置链接的创建使用等于空格 ASCII 的 %20 字符代码,以便正确格式化字符串。

这是 Visual Studio Code 设置的快照。

 
poYBAGNiBQ6AH9o6AAFH2s2l304980.jpg
视觉工作室代码
 

WebHook 集成

Webhook 是一种 API,它允许您在数据可用时发送数据,而无需您发送数据请求。一旦温度传感器达到某个值,此功能适合我们通过 Twilio 发送 SMS 的需要。

Twilio 的 Webhook 允许我们向特定联系人发送短信。

粒子仪表板允许通过从菜单中选择集成来创建 Webhook。下图显示了用户界面。

 
poYBAGNiBRSAAkViAABxvQobBOQ938.jpg
粒子集成页面
 

选择 Webhook,然后选择新集成。下面,您可以看到触发温度事件时为每个联系人创建的三个 Webhook。

 
poYBAGNiBReAPEmSAABcFaa43ko367.jpg
Webhook 集成页面
 

选择 New Integration 会显示 Webhook 模板,您可以从这里按照“使用 Particle Electron 发送 SMS 和 MMS 消息”的说明为 Webhook 添加适当的参数。

 
 
 
 
poYBAGNiBR-AbB5gAACYbLIQiSY280.jpg
 
1 / 2Twilio 模板的 Webhook
 

特维利奥

使用 Twilio,一个可通过云访问的 API 开发人员平台,我们购买了一个支持 SMS 的号码。当温度传感器返回指定范围内的某些值时,此号码会向预定联系人发送警告消息。

以下是注册和购买电话号码后的 Twilio 仪表板。请注意,在右上角您可以看到一个名为“已验证号码”的链接,您必须添加 Twilio 可以与之通信的号码才能发送短信。使用未经验证(注册)的数字将导致无效的 Webhook 执行。

 
poYBAGNiBSGAfAVaAAElf1l0Xeo779.jpg
Twilio 仪表板
 

由于隐私原因,已验证的号码已被删除,但在您输入短信发送的验证码验证号码后,您将看到以下列表显示这些号码。

 
pYYBAGNiBSWANsOsAABrXF2csEM222.jpg
验证号码
 

现在让我们把它们放在一起。

把所有的放在一起

某物

以下快照显示了在旧婴儿座椅上安装传感器以进行测试。

压力传感器安装在座椅底部和靠背上,这些传感器的校准是必要的,尽管不可能,因为我们只有毛茸茸的测试对象。

 
 
 
 
pYYBAGNiBX6AfzZdAA7VzTx3ZLk580.jpg
 
1 / 9第一个重量传感器
 

测试

以下视频显示了使用吹风机提高温度的系统测试。

您可以看到注册号码随着状态从警告-->危险-->恐慌-->正常状态的变化及时收到短信。

 

 

这是一条关于紧急状态的 SMS 消息,其中设备的位置通过链接链接到谷歌地图。

 
pYYBAGNiBYGAWVnzAAFA5r9SGIM706.jpg
带有位置的短信文本。
 

结论

除了用作确保车内婴儿、幼儿和宠物安全的系统外,该设备还可以用于长期独自在家的老人或宠物。该设备可以监测房屋内的温度,并确保热量水平不会达到危险水平。虽然与被困在过热汽车中的婴儿相比,家中的中暑并不致命,但保持谨慎和知识渊博仍然很重要。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !