Intel® Edison开发板不仅仅是一个兼容Arduino*的开发板,它还是一个运行Linux*的单板计算机,可以为Arduino草图提供完整的Linux功能。本文将探讨如何将Linux功能集成到Arduino草图中,以及如何利用现有代码简化物联网开发。
将从构建一个包含温度传感器、光传感器、LED和开关的简单传感器节点开始,然后将数据发布到互联网上使用MQTT。通过Node-Red展示一些基本的数据分析,触发事件并将命令发送回传感器节点。
Edison板附带的Linux发行版源自Yocto项目,这是一个为资源有限的嵌入式系统设计的小型Linux内核。
MQTT是一个轻量级的协议,用于机器对机器(M2M)通信。MQTT使用基于TCP/IP协议的发布/订阅消息转发模型。MQTT协议的核心是一个MQTT服务器或代理,可供发布者和订阅者访问。使用MQTT,可以构建一个传感器网络,其中各种传感器可以以消息的形式发布它们的传感器值,这些消息对每个传感器都是唯一的。执行器可以订阅不同的消息并据此采取行动。MQTT代理将负责将消息从发布者转发给订阅者。
例如:微控制器A可以读取开关的状态,并将开关的状态作为消息"switch = on"发布到MQTT服务器。互联网上的微控制器B订阅了MQTT消息"switch"。现在,每当用户按下开关时,微控制器A就会向MQTT代理发布消息。代理将消息转发给一系列订阅者。当微控制器B收到消息时,它可以解析内容,确定开关的状态,并相应地打开或关闭灯。
假设读者已经设置了他们的Edison板,并且熟悉标准的Linux操作。在Edison上构建Mosquitto相当直接。以下是在Edison上构建Mosquitto的步骤:
$> wget http://mosquitto.org/files/source/mosquitto-1.3.5.tar.gz
$> tar xzf mosquitto-1.3.5.tar.gz
$> cd mosquitto-1.3.5
$> make WITH_SRV=no
# 创建用户mosquitto
$> adduser mosquitto
$> cd test/broker
$> make test
$> cd ../../
$> cp client/mosquitto_pub /usr/bin
$> cp client/mosquitto_sub /usr/bin
$> cp lib/libmosquitto.so.1 /usr/lib
$> cp src/mosquitto /usr/bin
Mosquitto根目录中还有一个测试目标。然而,这个目标需要Python3,而Edison OS上没有Python3,一些后续测试将会失败。test/broker目录中的目标不需要Python3,将覆盖所有基本的MQTT操作。
Edison OS配置为自动启动rsmb代理。因此,默认的TCP端口1883已经被rsmb使用。将使用默认的MQTT端口测试Mosquitto客户端针对运行在Edison上的rsmb代理。稍后,将配置Mosquitto代理在不同的端口上运行,并进行测试。
要测试客户端,请打开两个到Edison的SSH连接。在第一个连接中,运行一个订阅本地Edison上运行的rsmb代理的'test'主题的mosquitto_sub客户端。
在第二个SSH连接中,向同一本地服务器上的'test'主题发布一条消息'Hello World!'。
应该会在运行mosquitto_sub程序的窗口中看到消息。请注意,mosquitto_sub客户端是持久的,并且会继续监听服务器的新消息,直到被终止。
上述测试表明,构建的mosquitto_sub和mosquitto_pub客户端可以正确地与本地rsmb MQTT服务器一起工作。
可以使用相同的命令,但使用带有-p 1993参数的mosquitto_sub和mosquitto_pub,测试在端口1993上运行的mosquitto代理。
在Intel Edison上构建并运行了mosquitto服务器和客户端。在随后的文章中,将开始开发利用刚刚构建的MQTT客户端的Arduino草图。
Mosquitto文档可以在找到。
关于Intel Edison板的详细信息可以在找到。
Intel® IoT Developer Program提供了知识、工具、套件和专家社区,帮助快速轻松地将创新想法转化为物联网解决方案。
立即开始使用Intel® IoT Developer Kit for Intel® Edison和Intel® Galileo平台。这些套件是多功能的、性能优化的、完全集成的端到端物联网解决方案,支持多种编程环境、工具、安全性、云连接和硬件。
要获取更多资源并了解新的Intel® IoT Developer Kit v1.0如何帮助简化物联网项目,请下载。