你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
你觉得这篇文章怎么样?
LoRaWAN传感器项目的更新,以测量室外温度。
The Things Node (135-9784) 运行得很好,让我在最近的第二次与“来自东方的野兽”(Beast from The East)的第二轮比赛中保持最新温度。我可以确认The Things Node是防水和防雪的。
现在有两个问题要注意 - 电池不断耗尽,我的合作伙伴一直在问她是否也能在她的手机上收到天气。
优化低功耗
首先要解决的是电力消耗问题。这个节点发送了很多我不感兴趣的数据,以及把LED灯的开关。我认为如果能阻止这些操作,就会延长电池的使用时间。
正如我在之前的博客中提到的,对Arduino的sketch我还是个新手,所以我认为最好的计划就是从我知道的sketch开始,然后根据我的要求修改。我在The Things Node论坛上做了一个快速的搜索,找到了一个有用的线程,由John Hallard启动,他让这个节点在一组电池上运行一个合理的时间——“The Things Node:新的低能量库开发”
这帮我在The Things Node 的GitHub网站找到了一个省电sketch。
即使考虑到这是一个省电的sketch,我认为可以通过停止做一些我不需要的东西——运动传感器,发光传感器,开关LED灯,来减少电池的额外寿命。
我开始把那些我不想要的东西拿出来,然后测试看看是否把它弄坏了……
在经过了相当多的尝试和错误之后,我最终得到了一个精简的、平均的sketch,这将会使电池续航时间相当长。
虽然这sketch看起来效果不错,但当我在早上查看温度时,它的读数超过了21。我知道现在是春天,但天气肯定不是那么暖和。在我把节点放出去之前,温度传感器在室内录制时似乎被卡住了。
我重新上传了这个sketch,这似乎让它回到了一个准确的读数,虽然这个节点现在又在里面了,所以我不知道它是否存在着低温的问题。然后我灵机一动,把它放在冰箱里,看看能得到什么。
这反过来又让我想到了另一个想法:我们有一个“工作冰箱”,时不时地进入过度驱动,冻结所有的内容。我们在工作中也有一个备用的Things Node。如果温度下降到1度以下,为什么不把它放在冰箱里,并设置一个短信或电子邮件提醒呢?我曾在一家咖啡厅工作,我的工作之一就是查看“分布在3个建筑周围的冰箱和冰箱的温度”,可以看到在一个餐饮环境中,物联网是多么的有用。
AllThingsTalk Maker
我决定尝试AllThingsTalk (ATT)作为分享数据的一种方式。我注册了一个AllThingsTalk制造商帐户,并添加了我的设计网络应用的集成。
我需要一个简单的Sketch来开始,所以我使用了同样的原则来处理我不需要的那些在基本的Sketch中的部分,作为the Things Node示例的一部分。
然后,我将我的节点作为一个设备添加到All Things Talk上,只需简单地复制和粘贴从TheThingsNode设备页面到ATT的表单中所需的详细信息…
一旦设备被添加,点击“设置”,“有效载荷格式”,我将勾选“使用ABCL…”框把我在the Things Node论坛上找到的这段代码放进去,然后保存起来。
{
"name": "temperature",
"sense": [
{
"asset": "temperature",
"value": {
"byte": 4,
"bytelength": 2,
"type": "integer",
"calculation": "val/100"
}
}
]
}
(感谢马克·斯坦利在《The Things Network论坛》上发表的一篇文章)
可以看到,通过点击设备页面上的调试链接,数据就会进入AllThingsTalk,但它并没有更新资产的读取。经过相当多的尝试和错误之后,我发现要把这个放在Advanced标签下的概要文件中。
{
"type": "integer",
"asset": "temperature",
"value": {},
"unit": "C"
}
一旦在我的手机上安装了ATT软件....
…我可以看到温度从结点清晰地读出。
OTAA 对比 ABP
一切都很好,直到我意识到,如果节点断开网络连接,AllThingsTalk集成就停止了工作。经过一番研究,我意识到ATT使用ABP(个性化的激活)而不是OTAA(过气激活)作为连接模式。我发现这一页解释了两者之间的区别。
作为一个有计算机网络经验的人,我理解它与固定IP地址或使用DHCP的区别是一样的。如果设备重新连接到事物网络,使用OTAA、Dev地址、网络会话密钥和应用程序会话密钥(ATT用来设置它与我的节点的连接)将重新生成。使用APB它们会保持不变。
这样做的结果是,要么需要更改节点在AllThingsTalk上的连接设置,如果它失去与网络的连接,或者我需要重新编写节点的草图来使用APB而不是OTAA。在尝试了我的极小草图和ABP one在事物节点示例中的混搭之后,我决定暂时使用前者。如果过程太过痛苦,就会返回重新编写节点,为节点画一个最小的ABP草图。
这对我来说是一个非常陡峭的学习曲线,有时也会让人沮丧,但是耐心和毅力也会得到回报。我学到了很多东西,已经在计划未来进入物联网的世界。