今天小编给大家带来的是来自墨西哥的MakerVictorAltamirano为了解决宠物寄送过程中可能遇到的安全问题,而制作的“FollowMyPaws”项目,该项目可以在远程实时向用户发送宠物航空仓的各种信息。
材料清单
硬件:
SeeedStudioWioLTE
物联网SIM卡
适用于英特尔Edison的SeeedStudioGrove入门套件plus
DHT11温湿度传感器
软件:
arduinoIDE
SORACOMFunnel
AmazonWebServicesAWSIoT
AmazonWebServicesAWSLambda
AmazonWebServicesAWSSNS
AmazonWebServicesAWSS3
背景
FollowMyPaws:
有时我们需要通过包裹服务发送宠物。我们怎么能确保他们出现意外时即使处理呢?。因此,主要问题是:宠物在物流寄送服务中运输时会出现意外情况。但是通常又不得不使用该服务,我们怎么能确保他们在任何时候都没事呢?
解决方案
我将制作一个完整的物联网解决方案来监控宠物的环境,以确保它们在整个旅程中的健康。所有这些都与云平台集成,该平台除了实时显示包裹的状态外,还以固定的频率发送通知。
目前的监控解决方案仅限于无生命的包装,这使得对宠物的连续监控成为一种新奇事物。它很有用,因为多亏了这个系统,宠物主人可以100%确定他们的宠物会很好,并且可以在整个旅程中监控和跟踪它们。
硬件介绍
要将传感器连接到WIO,传感器必须具有Grove型输入,如以下链接中所示的输入。
对于这个项目,我已经有了“GroveStarterKitPlus”包,如下图所示。
内容:
建立的连接如下:
Grove软件包中包含的加速度计在连接到WIO时没有问题,因为它已经有了它的Grove适配器,我不得不破解它是DHT,因为我们没有Grove的DHT。
加速度计Grove版本:
DHTNo-Grove版本:
以下是将模块连接到grove电缆的方法:
Wio设置
我们将通过将SIM卡连接到适当的插槽中来准备WIOLTE。
找到SIM卡的插槽后,将SIM卡插入插槽(是的,保护您的IMEI和其他数据)。
一旦卡完全插入,就会看到这一点。
由于我们在WIOLTE中安装了SIM卡,因此我们将天线连接到下图所示的插槽。
完成此操作后,我们将准备好将模块与ArduinoIDE一起使用。
WioArduino设置:
这是在ArduinoIDE上安装WIOLTE的官方指南。非常清晰简洁,强烈建议试用它。
Arduino软件在Github上。
Soracom平台设置:
检查您的SIM卡是否已经连接到一个组非常重要,就我而言,我称之为HarvestGroup。
如果我们没有创建组,我们将创建一个组,如下图所示,如果我们不这样做,我们将无法执行AWSIoT配置。
自从创建了小组以来,就我而言,我们通过按“HarvestGroup”进入小组菜单,一旦进入,我们将看到以下内容。
在组菜单中,我们将输入选项“SORACOMFunnel”,此选项将允许我们访问与AWS服务的连接,所有凭证将在稍后的AWS配置中获得,因此请勿关闭此选项卡(请遵循)。
AWSIoT设置
第一步是创建一个允许我们与AWS通信的角色。
在角色配置中,我们需要授予对AWSIoT的访问权限。
在这里,我们可以看到可以与此角色一起使用的服务,在本例中,此策略只是一个示例。注意:如果您不确定要获取角色的策略,请选择策略(AWSIoTFullAccess)。
我们给新角色起了个名字。
我们进入AWSIoT控制台并转到“设置”部分。
进入“设置”部分后,我们将复制“端点”,这将在Soracom控制台选项卡中使用。
下一步是在AWSIoT和其他AWS服务(如Lambda、SNS和DynamoDB)之间创建连接。因此,为此,我们必须创建一个“规则”,该规则将用于在此服务和上述服务之间建立桥梁。
一旦我们有了规则,我们将如图所示对其进行配置。
在此选项卡中,我们将配置数据到达后要激活的lambda(在完成配置其他服务之前不要关闭)
AWSLambda设置
我们创建一个Lambda,如屏幕上所示(它非常直观,应该没有问题)。
lambda应该以这种方式看待,使用lambda的原因是因为我们需要处理从模块获取的数据,以通过消息和我们的Web平台给出响应(执行此过程2次,因为我们将配置2个lambda以连接到SNS和DynamoDB的服务)
第一个LambdaSNS服务:
这是向SNS发送通知的代码,稍后将在SNS配置中获取TopicARN。
第二个LambdaDynamoDB服务:
这是将数据发送到DynamoDB的代码。
AWSSNS设置
在SNS服务中,我们创建了一个主题
在SNS服务中,我们创建了一个主题。
由于我们创建了主题,因此我们可以在希望通知到达的位置创建订阅。
这是我们可以发送通知的所有方面的一个示例。
为您的第一个Lambda保存此ARN:
AWSDynamoDB设置:
对于这个项目和我们的WEB实现,我们需要在DynamoDB中创建2个表,因为一个表将用作数据存储,另一个表将用于可以在WEB平台中使用的临时变量。
对于此步骤,仅创建了两个表,如图所示:
WEB界面设置
Web平台可能看起来很简单,但它在与AWS交互的方式上有一个非常有趣的实现。
使用网页时最大的问题之一是具有临时变量,因为每次更新页面时,我们都会丢失变量存储的所有信息,但是在我的实现中,我直接从DynamoDB中提取数据,这要归功于提供AWS的javascript开发工具包,因此我可以将信息存储在数据库中,如上图所示,在名为“FMP”的数据库中,并保存临时变量和快速访问,以便部署和更新网页“FMPtemp”。
在显示网页时,调用FMPtemp数据库实时获取宠物的状态,并根据我们的算法确定宠物的一般状态,将通过颜色通知,如下图所示。
每图标代表以下内容:
温度:环境温度
加速度:最大加速度
空气Q:空气质量
湿润:空气湿气
颜色范围:
空气质量是使用以下公式计算的,使用简化版本来计算空气的露点,根据书籍,它必须小于90:
空气Q=0.5*(温度+61.0+((温度-68.0)1.2)+(湿润0.094))