技术教程

如何使用TIGLIC嵌入式控制器对接MQTT实现IoT数据上报

picsum id: 954

MQTT协议简介

MQTT(消息队列遥测传输)是IoT领域最广泛使用的轻量级发布-订阅消息协议,特别适合带宽受限、网络不稳定的嵌入式环境。本教程将使用TIGLIC TG-MCU系列控制器,通过MQTT协议将传感器数据上报至阿里云IoT平台。

开发环境准备

  • TIGLIC TG-MCU100控制器(Cortex-M4内核)
  • 阿里云IoT平台账号(免费额度支持1百万消息/月)
  • Keil MDK 5或IAR EWARM开发环境
  • TIGLIC提供的MQTT客户端库(TG_MQTT_v2.1.zip)

核心代码示例

#include "tg_mqtt.h"
#include "tg_wifi.h"

// 阿里云IoT三元组
#define PRODUCT_KEY    "a1xxxxxxxx"
#define DEVICE_NAME    "tiglic_sensor_001"
#define DEVICE_SECRET  "xxxxxxxxxxxxxxxx"

void mqtt_publish_sensor_data(float temperature, float humidity) {
    char payload[128];
    snprintf(payload, sizeof(payload),
        "{"temperature":%.2f,"humidity":%.2f,"timestamp":%lu}",
        temperature, humidity, TG_GetTimestamp());
    
    TG_MQTT_Publish(
        "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post",
        payload,
        strlen(payload),
        QOS_1
    );
}

int main(void) {
    TG_System_Init();
    TG_WiFi_Connect("YourSSID", "YourPassword");
    TG_MQTT_Connect(PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET);
    
    while (1) {
        float temp = TG_Sensor_ReadTemperature();
        float humi = TG_Sensor_ReadHumidity();
        mqtt_publish_sensor_data(temp, humi);
        TG_Delay_ms(30000);  // 每30秒上报一次
    }
}

调试技巧

使用MQTT.fx桌面工具模拟订阅同一主题,可以实时查看设备上报的数据是否符合预期格式,无需等待云平台处理。

TIGLIC TG-MCU系列SDK已内置TLS加密支持,生产环境建议启用TLS防止数据被中间人截取。详细安全配置指南请参考TIGLIC开发者文档第7章。

发表回复