24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 行业资讯>
- MQTT 入门
行业资讯
MQTT 入门
MQTT 入门
在当今连接设备无处不在的世界中,物(wù)联网(IoT) 一词已成為(wèi)“连接到互联网的小(xiǎo)部件”的事实上的描述。虽然这个美化的骆驼案例,首字母缩略词本身就很(hěn)漂亮,但“互联网连接设备”的含义遠(yuǎn)比人们意识到的要多(duō)。在本文(wén)中,我想深入探讨 IoT 设备中使用(yòng)的最流行的协议之一:MQ 遥测传输 (MQTT) 协议。我们将简要介绍它是什么,它是如何工作的,以及它与其他(tā)使用(yòng)的技术相比有(yǒu)何新(xīn)颖之处。
MQTT 是什么以及為(wèi)什么
在典型的客户端-服務(wù)器设置中,我们有(yǒu)一个将传感器数据发布到服務(wù)器的提供者(即设备本身)和一个请求从服務(wù)器查看传感器数据的消费者。MQTT 也不例外。它是一种用(yòng)于设备之间通信的轻量级协议。设备通常会将数据“发布”(即发送)到 MQTT“代理(lǐ)”(或服務(wù)器),然后将其保留以提供给其他(tā)设备或 Web 应用(yòng)程序。另一个设备或 Web 应用(yòng)程序将从 MQTT 代理(lǐ)“订阅”该数据集(即请求数据),然后 MQTT 代理(lǐ)将该数据传送给它们。把它想象成一个美化的 Web 服務(wù)器,有(yǒu)两个主要的例外:
数据包非常轻量级(提高了速度、效率和成本)
MQTT 可(kě)以使用(yòng)互联网以外的其他(tā)通信模式(例如蓝牙)
图 1:带有(yǒu)设备的 MQTT 代理(lǐ)
由于上述两个原因,MQTT 已成為(wèi)物(wù)联网设备非常流行的协议。从历史上看,人们会使用(yòng) HTTP POST/GET 请求来实现这种形式的设备-服務(wù)器通信,但这会限制他(tā)们使用(yòng)其他(tā)通信设备(如蓝牙或 ZigBee)的能(néng)力。由于 MQTT 在这方面是不可(kě)知的,我们现在可(kě)以使用(yòng) MQTT在基于网格的网络中拥有(yǒu)消息传递功能(néng),而无需连接到互联网
MQTT 入门
有(yǒu)很(hěn)多(duō)方法可(kě)以开始使用(yòng) MQTT,包括设计完整的端到端解决方案。為(wèi)了简单起见,我们将在本示例中使用(yòng) Adafruit 提供的免费 MQTT 代理(lǐ)服務(wù)。这将使我们能(néng)够专注于开发过程的客户端。要开始使用(yòng),您需要具备以下条件:
Arduino 设备(此示例使用(yòng)Arduino Uno)
支持互联网连接的 Arduino扩展板(即Arduino 以太网扩展板)或基于 Wifi 的 Arduino 兼容设备,例如ESP8266。
Arduino IDE软件
使用(yòng)Adafruit IO 的帐户。
為(wèi)了设置我们的环境,我们需要先做一些事情。让我们首先设置我们的硬件。我将使用(yòng)连接到本地网络的 Arduino Uno 和 Arduino Ethernet Shield。
图 2:并排放置 Arduino Uno 和 Arduino Ethernet Shield
我们需要在 Arduino 顶部堆叠以太网扩展板并将其插入网络,如下所示:
图 3:Arduino Uno 和 Arduino Ethernet Shield 连接在一起并插入
配置好硬件后,让我们打开 Arduino IDE 并安装必要的库。打开 Arduino IDE 并导航到工具 > 管理(lǐ)库...
图 4:管理(lǐ)库菜单选项
搜索 Adafruit MQTT 库并单击安装:
图 5:库管理(lǐ)器
系统还会提示您安装库依赖项。继续并单击“全部安装”。
图 6:库依赖项对话框
安装支持库后,您可(kě)以通过导航到文(wén)件 > 示例 > Adafruit MQTT 库 > mqtt_ethernet 打开示例。
图 7:mqtt_ethernet 示例的菜单导航
在这一点上,我们需要暂停并从我们的 Adafruit IO 帐户中获取我们的凭据。登录Adafruit IO并单击顶部的“我的密钥”:
图 8:My Key 菜单选项
现在回到您的 Arduino mqtt_ethernet草(cǎo)图示例,并使用(yòng)位于您的 Adafruit IO 帐户中的“用(yòng)户名”和“活动密钥”字段填写 AIO_USERNAME 和 AIO_KEY 字段。确保您的设备已连接,然后单击上传:
图 9:准备好上传的 Arduino Sketch
要查看设备的状态(并确保它已连接到 MQTT 代理(lǐ)),请导航到工具 > 串行监视器。您应该会看到如下所示的输出:
图 10:Arduino mqtt_ethernet 示例的串行监视器输出
此时我们已经确认数据已成功发送到 MQTT 代理(lǐ)。要查看服務(wù)器上的实际数据,让我们返回我们的 Adafruit IO 帐户并单击“Feeds”,然后单击“photocell”
图 11:Adafruit IO 馈送
我们现在可(kě)以实时捕获 Arduino 发送到 MQTT 代理(lǐ)的数据。我们也可(kě)以下载历史数据。
图 12:从 Arduino 发送到 MQTT 代理(lǐ)的实时和历史数据
恭喜!您现在已经设置了启用(yòng) MQTT 的设备并将您的数据发布到 MQTT 代理(lǐ)。现在进行下一步,构建您自己的自定义传感器并将数据发布到您的 MQTT 代理(lǐ)。
结论
我们了解了 MQTT 是什么、使用(yòng)它的原因以及如何在微控制器上实现它。我们还演示了如何开始使用(yòng)免费的 MQTT 代理(lǐ)服務(wù)并查看其服務(wù)器上的数据。您现在应该可(kě)以根据我们用(yòng)来将您自己的传感器数据发布到 MQTT 代理(lǐ)并在云上查看的示例开始您自己的 Arduino 草(cǎo)图。