项目/活动
电赛
商城
文档笔记
仿真/工具
参考设计
AI助手
发布项目
登录
/
注册
首页
>
文档笔记
>
平台
Hackaday.io上的树莓派项目-Iota: 适合所有事物的互联网
收藏
分享
脑图
Hackaday.io上的树莓派项目-Iota: 适合所有事物的互联网
关于项目
项目简介:低成本物联网平台打造自己的智能家居
项目描述:Iota 旨在将物联网带给业余爱好者,采用经济实惠且易于使用的系统。通过使节点简单和便宜,Iota允许您把它们放在你家的任何地方,通过提供一个通用的界面,允许您监控,控制和自动化自己的智能房子。
项目作者:纳森. 安德鲁. 威廉斯
项目图片
项目细节
Iota 结合了廉价的 AVR 开发板和廉价的 nRF24L01+ 无线电模块,可创建传感器和"执行器"家庭网络,可通过您的房子打开和关闭。
随着时间的推移,您可以建立一个定制的智能家居,所有无线和设计为轻的电源,允许从2xAA电池的长期运行时间。
系统设计
Iota 的主要目标之一是使构建传感器和执行器节点网络变得简单。
将微控制器和无线电组合到发送简单消息是很容易的,但您必须为每个情况(您要发送的每个新消息)编写特殊代码。
因此,随着您添加更多节点、更多组合,代码变得更难编写,更难组合。
Iota 通过使用 MQTT-SN 协议提供更高级别的抽象,从而解决了这一问题,该协议允许发送不同的消息,而无需为每种情况提供特殊代码。
Iota 提供的另一件事是安全性。
默认情况下,Iota 中使用的无线电以纯文本形式发送消息,这意味着任何人都可以收听甚至注入自己的消息。
你可能不在乎你的邻居是否知道你的房间温度,但你肯定不希望他们在半夜打开和关闭你的灯!
为了保护您的网络,Iota 使用 AES 加密标准对节点和集线器之间的消息进行加密。
项目组件
2XnRF24L01+ 无线电模块
2XAVR ATMega328 16MHz 开发板。
2XCP2102 串行转换器 USB 2.0 到 TTL UART
项目日志
用例
家庭自动化
也许最明显的用例是自动化你的家。
根据时间、光水平、温度、湿度或其他任何您能感觉到的激活灯光、打开百叶窗甚至发送电子邮件的规则创建规则。
把传感器放在猫门上, 在推特上发布猫的动作。
在窗户上放一个光传感器,在阳光明媚时打开百叶窗,在天黑时关闭百叶窗
在每个房间使用温度传感器,并找出哪个房间最冷,使用信息来改善该房间的绝缘或加热
空气质量测量
使用 CO2 传感器和颗粒传感器,可以了解家中内外的空气质量。
工厂管理
跟踪植物的水位,打开水泵,在它们干燥时给它们浇水,并且你有一个自动花园。
智能玩具
如果你有年幼的孩子,你可能有很多玩具唱歌和闪光,即使你绊倒他们在半夜。
向他们添加 Iota 节点,并制定一个规则,在一定时间后自动关闭它们,甚至在播放时间结束时从手机控制它们!
智能遥控器
带红外 LED 的 Iota 节点可以成为电视、DVD 播放机等的遥控器。
几个规则后,你可以有序列,打开你的电视和DVD播放机,等待几秒钟,切换到DVD输入,然后点击播放。
现在,您可以通过手机控制这一切,而不是杂耍遥控器。
Iota 不限于一个设置的任务,其简单的设计允许你的创造力成为决定者。
安全
安全性是 Iota 的重要组成部分,我认为这是一个关键组成部分。
Iota 不仅仅是分布在你家里的传感器,它也可以控制东西,你最不想要的就是让你的邻居在早上 3 点"意外"地控制家里的灯光!
Iota 还允许制定复杂的规则,例如"如果晚上 8 点以后室温降至 X 以下,请打开我的电热毯"。
由于可能使用复杂的规则,系统的所有部分都需要保护,否则攻击者可以通过发送虚假的温度读数来控制事物。
安全 - 难以确保
将安全措施纳入 Iota 的强烈动机之一是,安全是很难得到保证
攻击者只需要在系统中找到一个漏洞,而编写代码的人必须尝试修复安全性中的所有漏洞。
通过从一开始就在 Iota 中包含安全性,每个人都从针对它执行的共享代码和修补程序中受益。
我们不会从一开始得到一切的权利, 但随着它得到改进和加强, 每个人都受益。
安全组件
Iota 的安全设计有三个主要部分:
加密
消息 ID
密钥交换
加密
当 Iota 通过无线电链路发送消息时,任何具有兼容无线电模块,甚至软件定义的无线电的人都可以收听发送的消息、重新发送消息或修改和重新发送它们。
加密使用数学算法和只有通信节点才能知道的密钥隐藏消息的内容。
这样可以防止攻击者读取和修改发送和接收的消息。
Iota 使用 AES 加密标准,该标准相当强大,同时仍然足够简单,可以在 8 位微型控制器上完成。
消息 ID
然而, 仅加密是不够的。
如果重复发送相同的消息,则每次邮件看起来都相同。
攻击者可能无法读取内容,但他们可以复制和重播消息,并且仍然影响您的系统。
这称为重播攻击。
只需向每条消息添加越来越多的数字(消息 ID),加密的消息每次会显著更改,即使其余消息保持不变。
接收节点知道它已经看到哪些消息 ID,并拒绝重复的消息 ID,从而防止重播攻击。
密钥交换
最后一个挑战是如何确保通信节点具有相同的密钥,而无需攻击者获取副本。
如果通过无线电链路发送密钥,则必须取消加密,在此期间攻击者可能正在侦听该密钥。
更好的选择是发送键"出带",这意味着通过不同的机制。
Iota 通过物理连接(如导线)实现此念。
当您要向 Iota 系统添加新节点时,请将其连接到集线器节点。
集线器生成新的随机密钥,然后通过有线连接将其发送到节点并保留副本。
这样可以防止攻击者监听密钥,从而保证密钥的安全。
设计 API
在这个项目的早期,我准备一致地交付很多,但我就是跟不上步伐。
在那些早期的某个地方, 我开始黑客一些 "测试代码" 在一起, 这是一个烂摊子。
因此,忽略 GitHub 中当前的代码,它全部被重写,但首先我需要预先设计。
传感器
现在,如果您正在构建一个纯传感器,则只需要发布方法。第一个发布方法向系统注册 MQTT 主题名称,从而为您提供该主题的数字 ID。从这里,你可以让你的代码坐在一个循环中采样,通过 Iota 发送它们,也许睡一会儿来节省电量。
驱动器
如果您的节点要执行某些操作(如打开某些操作),您将更加关注接收方法。第一个接收方法注册 MQTT 主题名称和回调。当节点发送消息时,Iota 将解码该消息并激活该主题名称的回调函数。这里的基本代码结构是注册您感兴趣的事件,并提供一个函数来对该事件采取行动,然后睡觉,直到 Iota 唤醒您,节省电池电量。
混合节点
当然,节点不必只是一个或另一个节点。在某些情况下,您可能需要传感器的东西和反应。对于这样的节点,您可以设置一个计时器来唤醒节点、进行测量、发送读数并返回睡眠状态。同时,您已注册了回调,该回调还将在收到传入消息时唤醒节点,以便您可以对它进行操作,并再次返回睡眠状态。
原型
我回到 Iota 工作, 在我的小女儿睡着后, 晚上工作, 在上班的午休时间。进展缓慢,我目前并不是我想得到的地方,但我至少有点要展示。我现在从面包板中解放出来了!
在右上是一个节点,目前没有任何传感器,在它左边是一个USB串行适配器来编程它。底部是EeePC集线器和无线电网络之间的桥梁。在这两种情况下,控制器板都是基于 AVR ATMega328 芯片的 Arduino Pro Mini 克隆。它以 16MHz 的速度运行,并且以该速度从 5v 运行,但由于收音机需要 3.3v,我在技术上对 AVR 的电压进行时钟,但到目前为止,它似乎是稳定的。事后看来,我应该得到3.3v版本,有一个较慢的水晶在船上,但如果速度证明有问题,我可以划分时钟通过软件,所以它应该不是一个问题。
步骤
从这里,我需要更新EeePC,并通过无线电与其他节点通信。
从那里,我想添加传感器和LED到节点,并继续开发MQTT-SN软件层,在集线器和节点之间通信。
......
评论
0 / 100
发表评论
查看更多
1503881740
2020-08-21
791
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
友情链接
STEP小脚丫
纳芯微电子
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号