0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Wio LTE的宠物物流安全卫士设计案例

柴火创客空间 来源:柴火创客空间 2024-11-12 09:46 次阅读

今天小编给大家带来的是来自墨西哥的Maker Victor Altamirano为了解决宠物寄送过程中可能遇到的安全问题,而制作的“Follow My Paws”项目,该项目可以在远程实时向用户发送宠物航空仓的各种信息

材料清单

硬件

SeeedStudioWioLTE

物联网SIM

适用于英特尔 Edison 的 Seeed Studio Grove 入门套件 plus

DHT11温湿度传感器

软件:

arduinoIDE

SORACOM Funnel

Amazon Web Services AWS IoT

Amazon Web Services AWS Lambda

Amazon Web Services AWS SNS

Amazon Web Services AWS S3

背景

Follow My Paws:

有时我们需要通过包裹服务发送宠物。我们怎么能确保他们出现意外时即使处理呢?。因此,主要问题是:宠物在物流寄送服务中运输时会出现意外情况。但是通常又不得不使用该服务,我们怎么能确保他们在任何时候都没事呢?

解决方案

我将制作一个完整的物联网解决方案来监控宠物的环境,以确保它们在整个旅程中的健康。所有这些都与云平台集成,该平台除了实时显示包裹的状态外,还以固定的频率发送通知。

目前的监控解决方案仅限于无生命的包装,这使得对宠物的连续监控成为一种新奇事物。它很有用,因为多亏了这个系统,宠物主人可以 100% 确定他们的宠物会很好,并且可以在整个旅程中监控和跟踪它们。

硬件介绍

要将传感器连接到 WIO,传感器必须具有 Grove 型输入,如以下链接中所示的输入。

https://www.seeedstudio.com/catalogsearch/result/index/?cat=890&q=Grove

对于这个项目,我已经有了“Grove Starter Kit Plus”包,如下图所示。

内容:

41d7bdde-905a-11ef-a511-92fbcf53809c.jpg

建立的连接如下:

41f9e058-905a-11ef-a511-92fbcf53809c.png

Grove 软件包中包含的加速度计在连接到 WIO 时没有问题,因为它已经有了它的 Grove 适配器,我不得不破解它是 DHT,因为我们没有 Grove 的 DHT。

加速度计 Grove 版本:

422195b2-905a-11ef-a511-92fbcf53809c.jpg

DHT No-Grove 版本:

42540632-905a-11ef-a511-92fbcf53809c.jpg

以下是将模块连接到 grove 电缆的方法:

429d1f52-905a-11ef-a511-92fbcf53809c.jpg

Wio设置

我们将通过将SIM卡连接到适当的插槽中来准备WIO LTE。

42d1da58-905a-11ef-a511-92fbcf53809c.jpg

找到SIM卡的插槽后,将SIM卡插入插槽(是的,保护您的IMEI和其他数据)。

42faf640-905a-11ef-a511-92fbcf53809c.jpg

一旦卡完全插入,就会看到这一点。

4333c0ba-905a-11ef-a511-92fbcf53809c.jpg

由于我们在WIO LTE中安装了SIM卡,因此我们将天线连接到下图所示的插槽。

435b5cb0-905a-11ef-a511-92fbcf53809c.jpg

完成此操作后,我们将准备好将模块与Arduino IDE一起使用。

Wio Arduino设置:

这是在Arduino IDE上安装WIO LTE的官方指南。非常清晰简洁,强烈建议试用它。

https://github.com/Seeed-Studio/Wio_LTE_Arduino_Library

Arduino软件在Github上。

Soracom平台设置:

检查您的SIM卡是否已经连接到一个组非常重要,就我而言,我称之为Harvest Group。

438716a2-905a-11ef-a511-92fbcf53809c.jpg

如果我们没有创建组,我们将创建一个组,如下图所示,如果我们不这样做,我们将无法执行 AWS IoT 配置。

43b2ac7c-905a-11ef-a511-92fbcf53809c.jpg

自从创建了小组以来,就我而言,我们通过按“Harvest Group”进入小组菜单,一旦进入,我们将看到以下内容。

43d4aafc-905a-11ef-a511-92fbcf53809c.jpg

在组菜单中,我们将输入选项“SORACOM Funnel”,此选项将允许我们访问与AWS服务的连接,所有凭证将在稍后的AWS配置中获得,因此请勿关闭此选项卡(请遵循)。

43f69ae0-905a-11ef-a511-92fbcf53809c.jpg

AWS IoT 设置

要与 AWS IoT 通信,我们需要在 IAM 控制台中创建一个角色,以便授权 Soracom 访问我们的控制台。

第一步是创建一个允许我们与 AWS 通信的角色。

4426d340-905a-11ef-a511-92fbcf53809c.jpg

在角色配置中,我们需要授予对 AWS IoT 的访问权限。

444462a2-905a-11ef-a511-92fbcf53809c.jpg

在这里,我们可以看到可以与此角色一起使用的服务,在本例中,此策略只是一个示例。注意:如果您不确定要获取角色的策略,请选择策略 (AWSIoTFullAccess)。

446f8162-905a-11ef-a511-92fbcf53809c.jpg

我们给新角色起了个名字。

44967dc6-905a-11ef-a511-92fbcf53809c.jpg

我们进入 AWS IoT 控制台并转到“设置”部分。

44bf788e-905a-11ef-a511-92fbcf53809c.jpg

进入“设置”部分后,我们将复制“端点”,这将在 Soracom 控制台选项卡中使用。

下一步是在 AWS IoT 和其他 AWS 服务(如 Lambda、SNS 和 DynamoDB)之间创建连接。因此,为此,我们必须创建一个“规则”,该规则将用于在此服务和上述服务之间建立桥梁。

44eab490-905a-11ef-a511-92fbcf53809c.jpg

一旦我们有了规则,我们将如图所示对其进行配置。

450949c8-905a-11ef-a511-92fbcf53809c.jpg

在此选项卡中,我们将配置数据到达后要激活的 lambda(在完成配置其他服务之前不要关闭)

452fa3de-905a-11ef-a511-92fbcf53809c.jpg

AWS Lambda 设置

我们创建一个 Lambda,如屏幕上所示(它非常直观,应该没有问题)。

45589a0a-905a-11ef-a511-92fbcf53809c.jpg

lambda 应该以这种方式看待,使用 lambda 的原因是因为我们需要处理从模块获取的数据,以通过消息和我们的 Web 平台给出响应(执行此过程 2 次,因为我们将配置 2 个 lambda 以连接到 SNS 和 DynamoDB 的服务)

458ab648-905a-11ef-a511-92fbcf53809c.jpg

第一个 Lambda SNS 服务:

这是向 SNS 发送通知的代码,稍后将在 SNS 配置中获取 TopicARN。

console.log('Loading function'); // Load the AWS SDK var AWS = require("aws-sdk"); // Set up the code to call when the Lambda function is invoked exports.handler = (event, context, callback) => { // Load the message passed into the Lambda function into a JSON object var eventText = JSON.parse(JSON.stringify(event, null, 2)); // Log a message to the console; you can view this text in the Monitoring tab in the Lambda console or in the CloudWatch Logs console // Create a string, extracting the click type and serial number from the message sent by the AWS IoT button // Write the string to the console var temp=parseInt(eventText.temperature) var acc=parseInt(eventText.accelerometer) var moi=parseInt(eventText.moisture) var air=parseInt(eventText.air) var id=eventText.ID var myarray=[0,0,0,0] if(temp<15) { myarray[0]=4 } else if(temp >= 15 && temp < 18) { myarray[0]=3 } else if(temp >= 18 && temp < 19) { myarray[0]=2 } else if(temp >= 21 && temp < 24) { myarray[0]=1 } else if(temp >= 24 && temp < 26) { myarray[0]=2 } else if(temp >= 26 && temp < 28) { myarray[0]=3 } else if(temp >= 28) { myarray[0]=4 } temp=temp*1.8+32 if(acc<3) { myarray[1]=1 } else if(acc >= 3 && acc < 6) { myarray[1]=2 } else if(acc >= 6 && acc < 10) { myarray[1]=3 } else if(acc >= 10) { myarray[1]=4 } if(moi<20) { myarray[3]=4 } else if(moi >= 20 && moi < 30) { myarray[3]=3 } else if(moi >= 30 && moi < 40) { myarray[3]=2 } else if(moi >= 40 && moi < 50) { myarray[3]=1 } else if(moi >= 50 && moi < 65) { myarray[3]=2 } else if(moi >= 65 && moi < 80) { myarray[3]=3 } else if(moi >= 80) { myarray[3]=4 } air=0.5 * (temp + 61.0 + ((temp-68.0)*1.2) + (moi*0.094)) if(air<90) { myarray[2]=1 } else if(air >= 90 && air < 102) { myarray[2]=2 } else if(air >= 102 && air < 122) { myarray[2]=3 } else if(air >= 122) { myarray[2]=4 } var mess=""; if(myarray[3]==1 || myarray[2]==1 || myarray[1]==1 || myarray[0]==1) { mess="Your dog goes in perfect travel conditions" } if(myarray[3]==2 || myarray[2]==2 || myarray[1]==2 || myarray[0]==2) { mess="Your dog is in good condition" } if(myarray[3]==3 || myarray[2]==3 || myarray[1]==3 || myarray[0]==3) { mess="Your dog is fine but the travel conditions are not the best." } if(myarray[3]==4 || myarray[2]==4 || myarray[1]==4 || myarray[0]==4) { mess="Your dog is fine but travel conditions should improve" } // Create an SNS object var sns = new AWS.SNS(); console.log("Received event:",JSON.stringify(myarray, null, 2),air); var params = { Message: mess, TopicArn: "YOURSNSENDPOINT" }; sns.publish(params, context.done); };

第二个 Lambda DynamoDB 服务:

这是将数据发送到 DynamoDB 的代码。

console.log('Loading function'); var AWS = require("aws-sdk"); exports.handler = (event, context, callback) => { var eventText = JSON.parse(JSON.stringify(event, null, 2)); var temp=parseInt(eventText.temperature) var acc=parseInt(eventText.accelerometer) var moi=parseInt(eventText.moisture) var air=0 var id=eventText.ID var myarray=[0,0,0,0] if(temp<15) { myarray[0]=4 } else if(temp >= 15 && temp < 18) { myarray[0]=3 } else if(temp >= 18 && temp < 19) { myarray[0]=2 } else if(temp >= 21 && temp < 24) { myarray[0]=1 } else if(temp >= 24 && temp < 26) { myarray[0]=2 } else if(temp >= 26 && temp < 28) { myarray[0]=3 } else if(temp >= 28) { myarray[0]=4 } temp=temp*1.8+32 if(acc<3) { myarray[1]=1 } else if(acc >= 3 && acc < 6) { myarray[1]=2 } else if(acc >= 6 && acc < 10) { myarray[1]=3 } else if(acc >= 10) { myarray[1]=4 } if(moi<20) { myarray[3]=4 } else if(moi >= 20 && moi < 30) { myarray[3]=3 } else if(moi >= 30 && moi < 40) { myarray[3]=2 } else if(moi >= 40 && moi < 50) { myarray[3]=1 } else if(moi >= 50 && moi < 65) { myarray[3]=2 } else if(moi >= 65 && moi < 80) { myarray[3]=3 } else if(moi >= 80) { myarray[3]=4 } air=0.5 * (temp + 61.0 + ((temp-68.0)*1.2) + (moi*0.094)) if(air<90) { myarray[2]=1 } else if(air >= 90 && air < 102) { myarray[2]=2 } else if(air >= 102 && air < 122) { myarray[2]=3 } else if(air >= 122) { myarray[2]=4 } // Set the region AWS.config.update({region: 'ap-northeast-1'}); // Create the DynamoDB service object var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'}); var params = { TableName: 'FMPtemp', Item: { 'ID' : {S: id}, 'Array' : {S: JSON.stringify(myarray, null, 2)} } }; // Call DynamoDB to add the item to the table ddb.putItem(params, function(err, data) {if (err) {} else {}}); };

AWSSNS设置

在SNS服务中,我们创建了一个主题

45a94752-905a-11ef-a511-92fbcf53809c.jpg

在 SNS 服务中,我们创建了一个主题。

45c554f6-905a-11ef-a511-92fbcf53809c.jpg

由于我们创建了主题,因此我们可以在希望通知到达的位置创建订阅。

45ecefac-905a-11ef-a511-92fbcf53809c.jpg

这是我们可以发送通知的所有方面的一个示例。

460b8cbe-905a-11ef-a511-92fbcf53809c.jpg

为您的第一个 Lambda 保存此 ARN:

462c2122-905a-11ef-a511-92fbcf53809c.jpg

AWS DynamoDB 设置:

对于这个项目和我们的 WEB 实现,我们需要在 DynamoDB 中创建 2 个表,因为一个表将用作数据存储,另一个表将用于可以在 WEB 平台中使用的临时变量。

对于此步骤,仅创建了两个表,如图所示:

46556c08-905a-11ef-a511-92fbcf53809c.jpg

WEB界面设置

Web 平台可能看起来很简单,但它在与 AWS 交互的方式上有一个非常有趣的实现。

使用网页时最大的问题之一是具有临时变量,因为每次更新页面时,我们都会丢失变量存储的所有信息,但是在我的实现中,我直接从 DynamoDB 中提取数据,这要归功于提供 AWS 的 javascript 开发工具包,因此我可以将信息存储在数据库中, 如上图所示,在名为“FMP”的数据库中,并保存临时变量和快速访问,以便部署和更新网页“FMPtemp”。

在显示网页时,调用FMPtemp数据库实时获取宠物的状态,并根据我们的算法确定宠物的一般状态,将通过颜色通知,如下图所示。

467c9bfc-905a-11ef-a511-92fbcf53809c.jpg

每图标代表以下内容:

温度:环境温度

加速度:最大加速度

空气Q:空气质量

湿润:空气湿气

颜色范围:

46ab553c-905a-11ef-a511-92fbcf53809c.jpg

空气质量是使用以下公式计算的,使用简化版本来计算空气的露点,根据书籍,它必须小于 90:

空气 Q=0.5 * (温度 + 61.0 + ((温度-68.0)1.2) + (湿润0.094))

最终产品

我们将温度传感器组装在外壳中。

42540632-905a-11ef-a511-92fbcf53809c.jpg

422195b2-905a-11ef-a511-92fbcf53809c.jpg

471dc6a8-905a-11ef-a511-92fbcf53809c.jpg

47493d7e-905a-11ef-a511-92fbcf53809c.jpg

476c6646-905a-11ef-a511-92fbcf53809c.jpg

47975b58-905a-11ef-a511-92fbcf53809c.jpg

---end---

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

    关注

    15

    文章

    1358

    浏览量

    177843
  • SIM卡
    +关注

    关注

    6

    文章

    284

    浏览量

    28679
  • DHT11
    +关注

    关注

    19

    文章

    277

    浏览量

    57577

原文标题:创客项目秀|基于 Wio LTE的宠物物流安全卫士

文章出处:【微信号:ChaiHuoMakerSpace,微信公众号:柴火创客空间】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [原创]求高级骗子当师傅!共同对抗贷款安全卫士的攻击!

    一直以来我就靠骗人卫生,最近却被易贷中国贷款安全卫士给曝光了,靠,气死我了!易贷中国拿现金奖励那些举报贷款骗子,和推荐朋友举报贷款骗子的人,真实吃饱了没事干!这不是跟我们这些靠这行为生的人做对么?特在此,开此帖,求高级骗术专家,收我做徒弟,我要骗光别人的钱财!拜师!
    发表于 05-18 17:16

    【云智易申请】家庭安全卫士

    申请理由:作为整个项目的主控制板!项目描述:便 携式安全卫士是一套便捷的安防系统。本套系统主要有五大子系统构成,分别为主控制系统、安防便贴系统、GSM远程控制与报警系统、WiFi图像采集系统以
    发表于 07-31 15:23

    近电防触碰报警器,给工作人员安排了一位“安全卫士

    发生。近电防触碰报警器的使用,无非是给工作人员安排了一位“安全卫士”。解决了触电方面的顾虑,在施工的过程中,工程人员不用再承担太多的压力,工作效率也将有所提升。 -END-
    发表于 10-27 14:30

    360安全卫士5.0绿色版免费下载

    360安全卫士是由奇虎公司推出的完全免费的安全类上网辅助工具软件,它拥有查杀流行木马、清理恶评及系统插件,管理应用软件,卡巴斯基杀毒,系统实时保护,修复
    发表于 12-10 16:24 0次下载
    360<b class='flag-5'>安全卫士</b>5.0绿色版免费下载

    360安全卫士7.7下载_官网最新

    360安全卫士是当前功能最强、效果最好、最受用户欢迎的上网必备安全软件。由于使用方便,用户口碑好,目前4.2亿中国网民中,首选安装360的
    发表于 03-12 21:11 39次下载
    360<b class='flag-5'>安全卫士</b>7.7下载_官网最新

    360安全卫士v7.5 Beta版

    亲爱的广大360用户,360安全卫士7.5beta版发布功能及改进说明如下: 【网盾】 1、新增下载云安全保护功能,全面支持360安全浏览器、IE浏览器、迅雷、QQ旋风、网际
    发表于 09-02 09:32 0次下载

    AVR单片机居家安全卫士系统软硬件架构分析

    1.设计方案目标: 智能居家安全卫士系统是利用先进的计算机技术、综合布线技术、依照人体工程学原理,融合个性需求,将与家居生活有关的各个子系统有机地结合在一起,实现以人为本的全新家居生活体验。高性能
    发表于 10-16 15:48 0次下载
    AVR单片机居家<b class='flag-5'>安全卫士</b>系统软硬件架构分析

    汽车安全卫士,包括酒精检测,疲劳检测,空气质量检测

    1.1 引言 本方案基于Atmel Studio 5及AVR平台,设计一个融合酒精检测、疲劳检测和车内空气质量检测为一体的汽车安全卫士系统,通过对驾驶员呼出气体的酒精浓度检测判断是否允许启动汽车
    发表于 11-20 15:53 4次下载
    汽车<b class='flag-5'>安全卫士</b>,包括酒精检测,疲劳检测,空气质量检测

    360安全卫士宣布,区块链平台EOS的一系列存在高危安全漏洞

    360安全卫士发文宣布公司Vulcan(伏尔甘)团队发现了区块链平台EOS的一系列高危安全漏洞。
    发表于 06-25 17:30 841次阅读

    使用Wio终端扩展Arduboy

    电子发烧友网站提供《使用Wio终端扩展Arduboy.zip》资料免费下载
    发表于 11-03 09:24 0次下载
    使用<b class='flag-5'>Wio</b>终端扩展Arduboy

    WAYON维安保险丝-便携式电子设备的“安全卫士”!

    便携式电子设备的“安全卫士”!WAYON维安保险丝:贴着用,很放心
    的头像 发表于 01-06 13:01 1376次阅读
    WAYON维安保险丝-便携式电子设备的“<b class='flag-5'>安全卫士</b>”!

    电脑中毒了怎么办?杀毒软件推荐安心快捷的360管家

    电脑安全软件哪个好用?电脑中毒了怎么办?选择360安全卫士极速版,轻松快捷就能消灭各类病毒,该软件首创即扫即清功能,操作简单方便,同时优化了底层扫描逻辑,让扫描速度可以更加迅速,能够更快捷地搜索病毒
    的头像 发表于 04-07 09:27 664次阅读

    千方鲲巢·安全卫士守护每一个“三无”路口、路段的交通安全

    为了你的安全 守护“三无”路口、路段的安全怎能少了我 千方鲲巢·安全卫士   来看看“鬼探头”最害怕的我有哪些绝招 绝招1:声光字预警 道路安全守护神 拥有黄闪警示灯/红蓝闪灯、语音
    的头像 发表于 08-15 09:08 1031次阅读

    电梯智能安全卫士,为安全出行保驾护航

    电梯智能安全卫士应运而生。它不仅解决了传统电梯管理存在的问题,还为电梯的安全运行提供了强有力的保障。
    的头像 发表于 10-17 10:29 497次阅读

    办公楼园区双屏电梯安全卫士:守护高效与安全的智慧新篇章

    在现代化的办公楼园区中,电梯不仅是连接不同楼层的交通工具,更是衡量楼宇智能化水平的重要标尺。随着科技的飞速发展,双屏电梯安全卫士作为一种创新的安全管理系统,正逐步成为办公楼园区的新标配,为日常办公生活带来前所未有的便捷与安全
    的头像 发表于 10-09 10:30 229次阅读