iot mqtt协议_IoT MQTT协议教程:控制IoT项目中的远程外围设备

本文提供了一个教程,展示了如何通过MQTT协议控制远程物联网项目中的RGB Led矩阵。首先介绍MQTT协议及其在物联网中的作用,然后详细说明如何配置Ubidots云平台来处理RGB颜色分量,最后解释如何开发MQTT客户端,连接到Ubidots并管理LED矩阵。
摘要由CSDN通过智能技术生成

iot mqtt协议

IoT MQTT协议教程介绍了如何控制远程外围设备。 我们已经介绍了MQTT协议及其工作原理,并且我们已经知道IoT MQTT用于从远程传感器发送数据。 简要回顾一下,MQTT是遥测中使用的轻量级协议。 多个物联网平台支持MQTT与远程物联网板和传感器交换数据。 通常,IoT板使用MQTT连接到获取信息的IoT平台。

项目介绍

在这个项目中,我们以不同的方式使用MQTT,换句话说,我们希望使用MQTT控制IoT板(例如MKR1000)。 该项目的目标是使用MQTT远程控制RGB Led矩阵。
要构建此项目,我们将使用:

  • Arduino的MKR1000
  • 4×4 RGB LED矩阵

MKR1000将使用MQTT连接到Ubidots云平台。 该项目分为两个步骤:

  1. 使用Web界面配置Ubidots以处理RGB颜色分量
  2. 开发MQTT客户端以连接到Ubidots并管理RGB Led矩阵

在该项目的最后,我们使用Ubidots Web界面远程控制RGB Led矩阵。

配置物联网板

在第一步中,我们将配置Ubidots接口以处理三个颜色分量。 我们将使用滑块来控制它们。 让我们开始吧。 在继续之前,您必须使用此链接创建一个免费帐户。 登录该应用程序,然后单击“ 设备”以创建一个新设备。

我们使用RGB控制器作为设备名称。 设备充当数据容器,在这里我们可以对保存交换数据的变量进行分组。 设备准备好后,我们可以开始添加新变量:

我们创建三个变量:

  • 红色
  • 绿色
  • 蓝色

现在该创建仪表板了,我们将使用它们来控制这些变量值。 转到仪表板,然后单击添加。 为您的仪表板命名,然后开始添加控件。 在此项目中,我们添加了滑块,因此请单击添加新的小部件,然后单击滑块:

选择先前配置的设备(又名数据源):

选择RGB控制器,您将看到三个变量:

选择其中之一,然后对所有三个变量重复该过程。 最后,您将看到一个仪表盘,如下所示:

如何实现客户端以处理IoT MQTT协议

一旦配置了IoT平台,我们就可以将注意力集中在IoT MQTT客户端上。 该客户端从平台接收数据并管理RGB Led矩阵。 要创建客户端,我们使用以下库:

第一步是初始化Neomatrix,以提供一组信息,例如矩阵的宽度和高度以及引脚号。 在我们的情况下,使用MKR PIN 5连接RGB Led矩阵。

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(4, 4, 5,
                           NEO_MATRIX_TOP     + NEO_MATRIX_RIGHT +
                           NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
                          NEO_GRB + NEO_KHZ800);

请注意,前三个参数代表一行和一列中的LED数量。 使用matrix实例,我们可以为矩阵着色。

让我们实现MQTT客户端。 该项目使用MKR1000进行WIFI连接:

WiFiClient net;
MQTTClient mqttClient;

void setup() {
  Serial.begin(115000);  
  Serial.println("Configuring the net...");
  WiFi.begin("your WiFi SID", "your WiFi password");

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("Begin...");
  mqttClient.begin("mqtt://things.ubidots.com", net);
  matrix.begin();
  connect();
}

setup()方法中,我们只需初始化WiFi连接和mqttClient 。 要初始化mqtt客户端,我们必须设置MQTT服务器(Ubidots服务器地址)和net
connect()方法处理连接和MQTT主题订阅 。 根据Ubidots文档 ,在数据源(也称为设备)中定义的每个变量都有其自己的主题:

/v1.6/devices/_device_name/_variable_name/lv

请注意,主题末尾的lv代表last value 。 换句话说,我们只对控制RGB LED矩阵的最后一个变量值感兴趣。 在此项目中,应用程序必须订阅以下主题:

/v1.6/devices/RGBController/redColor/lv
/v1.6/devices/RGBController/greenColor/lv
/v1.6/devices/RGBController/blueColor/lv

所以connect()方法是:

void connect() {
  Serial.println("Connecting to MQTT....");
  if (mqttClient.connect("YOUR_UNIQUE_ID", "YOUR_UBIDOTS_TOKEN", "")) {
    Serial.println("MQTT client connected");
    int result = mqttClient.subscribe("/v1.6/devices/RGBController/redColor/lv");
    Serial.println(result);
    Serial.println("Subscribed red topic.");
    int result1 = mqttClient.subscribe("/v1.6/devices/RGBController/greenColor/lv");
    Serial.println(result1);
    Serial.println("Subscribed green topic.");
    int result2 = mqttClient.subscribe("/v1.6/devices/RGBController/blueColor/lv");
    Serial.println(result1);
    Serial.println("Subscribed blue topic.");
  }
  else {
    Serial.println("######### Client not connected ########");
  }
}

一旦应用程序连接到MQTT服务器并订阅了可变主题,我们就必须实现侦听来自MQTT服务器的值的方法。 为此,我们必须实现一个名为messageReceived(String topic, String payload, char * bytes, unsigned int length) 。 在这种方法中,应用程序必须执行以下任务:

  • 确定包含消息的主题
  • 将消息转换为颜色分量值
  • 控制RGB LED矩阵设置新颜色

这是方法的实现:

void messageReceived(String topic, String payload, char * bytes, unsigned int length) {
 
  if (topic.indexOf("redColor") >= 0) {
    red = atoi(bytes);
  }
  else if (topic.indexOf("greenColor") >= 0) {
    green = atoi(bytes);
  }
   else if (topic.indexOf("blueColor") >= 0) {
    blue = atoi(bytes);
  }
  matrix.fillScreen(matrix.Color(red,green,blue));
  matrix.show();
}

就这样。 在该方法的最后两行中,我们使用matrix实例以红色,绿色,蓝色分量标识的颜色填充RGB LED矩阵,并进行显示。

结论

希望在本文结尾处,您已获得有关IoT MQTT协议以及如何使用它来控制远程外围设备的知识。

翻译自: https://www.javacodegeeks.com/2017/03/iot-mqtt-protocol-tutorial-control-remote-peripherals-iot-project.html

iot mqtt协议

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值