基于麒麟座开发板2.0的mqtt实现例程

singularity singularity     2022-08-25     605

关键词:

链接--->https://sanwen8.cn/p/649shZ1.html

OneNET现已全面适配标准MQTT协议,相信这一功能的增加会**便于开发者进行设备的接入。


OneNET提供了MQTT的C语言版本的SDK供大家使用,接下来我们将利用该SDK,将MQTT协议移植到麒麟座开发板上,希望这边文章能对希望使用MQTT接入OneNET的开发者提供一定帮助。?

(本文中使用的SDK、调试工具、以及说明文档,均可以在官网文档中心中的MQTT专区下载)

 

 下载SDK 

(一)

 

? 首先进入我们的MQTT说明专区,找到C语言SDK下载链接,下载SDK。

技术分享

其中:
mqtt/config.h 

mqtt/mqtt.h  

mqtt/mqtt_buffer.h  

src/mqtt.c   

src/mqtt_buffer.c  

为MQTT相关的.c 以及.h文件sample/c/sample.c  是使用示例文件

 

   — 代码的移植

(二)

 

? 将上述.c 以及 .h 文件复制到 开发板的工程中 Protocol/mqtt目录下,在工程中添加mqtt.c以及mqtt_buffer.c文件(记得修改Include Path 路径)


? 由于SDK是在linux环境下编译以及测试的,移植到STM32环境下带来了平台的差异性。


? 主要记得修改如下地方:
1、修改MQTT相关的.h文件的include路径,使之与工程环境相匹配
2、屏蔽掉原来的assert函数,和inline关键字
3、修改分配的缓冲区的大小
    主要是  MqttSample_Init()函数中的Mqtt_InitContext() 函数,SDK中分配了 1<<20大小的字节,由于STM32资源有限,这里需要改小一点,本例中为1000字节。
4、修改接口的初始化、收、发函数。
    原SDK是在linux系统中利用网口来实现通信,而开发板中使用串口连接通信模块的形式实现通信,相关的函数都需要作相应的修改,详见代码文件。

 

— 代码示例 —

(三)

 

技术分享 

(1)源代码如下:

在平台创建一个公开协议产品(设备接入协议类型选择MQTT协议),这里不介绍产品创建过程,请参考平台文档中心“接入帮助”部分的相关内容。

技术分享 

(2)本例中的代码流程如下图:

技术分享技术分享 

(3)开发板资源分配如下:

技术分享

代码中需要修改的参数位置:
main.c   
line 40:

技术分享

line 789

技术分享

esp8266.h  
line1 :

技术分享

 

 

— SDK使用示例 —

(四)

 

? MQTT连接

技术分享

? MQTT订阅

技术分享

? MQTT发布消息

技术分享

? MQTT回复命令

技术分享

? MQTT上传数据

技术分享

? 接收数据解析

技术分享

 

— 代码接入测试 —

(五)

 

? 使用MQTT simulate device 来模拟同产品目录下的另外一个设备

技术分享

  ? 打开设备电源,在调试串口目录下可以看到调试信息

技术分享技术分享技术分享技术分享技术分享

? 使用模拟设备与平台建立连接

技术分享

可以看到产品topic列表中已经有开发板所创建的 test_topic(订阅自动创建)

 

— topic发布以及接收测试 

(六)

 

? 在订阅框中输入key_press ,点击订阅(该topic为开发板按键发布消息的topic)

技术分享

? 按下开发板上的key2,见调试信息:

技术分享

? 触发消息之后,在模拟器侧,就可以收到该topic的消息了

技术分享

? 使用模拟软件,向test_topic发送一则消息

技术分享

? 在开发板侧,可以从调试信息中看到,已经收到了该topic消息

技术分享

至此,topic的订阅与发布测试已完成。

 

— 命令下发与应答测试 —

(七)

 

? 在线发送命令给开发板

技术分享


? 在调试信息中可以看到以及接收了该命令并成功解析

技术分享

? 此时LED7已经被点亮

技术分享

 















基于infineon开发板实现rt-thread物联网demo(代码片段)

简介这是一个基于 CY8CPROTO-062-4343W 开发板+ RT-Thread 实现的物联网DEMO。本文将介绍如何一步步从零搭建一个物联网demo。下图是整体的设计框图,使用 RW007 用于网络通信,使用 MQTT 协议连接One-Net物联网平台。在主... 查看详情

hdmi1.4/2.0subsystem官方例程的建立

...MI视频转成LVDS7:1视频。视频输入接口采用的是HDMI4K输入,基于XilinxK7325t的高速收发器,特点是无需外围HDMI接收芯片,大大简化了硬件设计。该视频接口转换模块如图1所示,其中k7核心板型号为MP5650,底板和核心板均为明德扬自研... 查看详情

嵌入式linux应用初步移植mqtt到ubuntu和linux开发板(代码片段)

1.概述​本篇主要是记录将MQTT移植安装到百问网STM32MP157开发板上,并且是跑一下MQTT的一个例程来验证,要完成本次移植安装,必须要保证电脑和开发板都能上网。。2.软件平台​本次使用的是Ubuntu18.04,是由百问... 查看详情

基于mqtt协议谈谈物联网开发

...(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于TCP/IP实现发布/订阅模式的应用层协议,其主要特点有:(1)基于发布/订阅模式,应用程序解耦;(2)基于TCP/IP建立网络连接;(3)协议交换最小化,降低网络流量; 2.基于MQTT协议... 查看详情

在developerkit开发板上运行blink例程(代码片段)

...么样在VScode环境下,将AliOSTings提供的blink例程在Developerkit开发板上运行起来。DeveloperKit开发板在例程中分别用到两个led和一个按钮,上图中用红色的框标识出来。本文将介绍怎么样在VScode环境下,将AliOSTings提供的blink例程在Develo... 查看详情

简单实现掌控板抢答器实验

...目的及要求实现掌控板抢答器功能。二、实验原理与内容基于TinywebDB实现云数据库出题基于掌控板实现按键抢答和判题基于MQTT实现多端同步通讯三、实验软硬件环境硬件:掌控板软件:Mind+四、实验过程(实验步... 查看详情

嵌入式linux应用初步移植mqtt到ubuntu和linux开发板(代码片段)

1.概述​本篇主要是记录将MQTT移植安装到百问网STM32MP157开发板上,并且是跑一下MQTT的一个例程来验证,要完成本次移植安装,必须要保证电脑和开发板都能上网。。2.软件平台​本次使用的是Ubuntu18.04,是由百问... 查看详情

esp8266at指令开发(基于stc89c52单片机):测试下诱人的程序(51单片机,8266,mqtt远程通信控制)

  前言  实现的功能,APP通过SmartConfig给Wi-Fi模块配网并绑定设备,然后通过MQTT远程控制开发板的继电器,  简而言之:  51单片机+ESP8266用AT指令实现实现MQTT,(连接的本人云服务器上的MQTT服务器软件)  ESP8266订阅的主题... 查看详情

基于ssm框架图书馆预约占座系统的设计与实现(附源码论文)

摘要图书馆是学校信息化的重要场所,是科学研究的中心、图书中心、文献中心,高校的三大支柱之一。占座行为一直是图书馆管理的“心病”,乱占图书馆座位现象严重影响图书馆的管理。为保证图书馆自习室座位与日益多的学生... 查看详情

基于itop-4412开发板(精英版)恢复出厂设置

准备工作虚拟机:VM-Ware15.0pro操作系统:UbuntuLinux16.04工作文件夹:/home/用户名/work准备TF卡一张、读卡器一个一、iTop-4412硬件设置1、确定开发板类型Exynos4412的存储器有两种封装形式POP(左)和SCP(右)&... 查看详情

esp8266at指令开发(基于stc89c52单片机):关于上一节mqtt底层封包解包源码使用说明

   前言  请先看这一节了解一下MQTT  https://www.cnblogs.com/yangfengwu/p/11762642.html (了解MQTT)  如果自己有兴趣可以自己去安装MQTT软件  然后让自己的设备通过自己的服务器进行通信  或者根据文章直接连接... 查看详情

基于mqtt协议进行应用开发

官方协议有句如下的话来形容MQTT的设计思想:“Itisdesignedforconnectionswithremotelocationswherea"smallcodefootprint"isrequiredorthenetworkbandwidthislimited.”MQTT:开源、可靠、轻巧、简单,MQTT的传输格式非常精小,最小的数据包只有2个比特,且无... 查看详情

stm32f407学习板开发板全部例程+原理图

源:STM32F407学习板开发板全部例程+原理图 查看详情

安信可esp32-a1s开发板适配百度dueros例程实现在线语音功能(代码片段)

文章目录前言一、准备工作1.硬件准备2.软件准备二、验证ESP-ADF是否正常1.代码简单修改2.播放MP3测试三、dueros例程适配1.替换连接文件2.内存卡准备3.代码修改(1)屏蔽触摸按键(2)修改唤醒提示音4.修改lyrat_v4_3... 查看详情

迅为itop-4418/6818开发板-驱动-实现gpio扩展

...的GPIO的输入和输出。另外必须要先看文档“迅为iTOP-4418开发板和6818开发板-驱动-GPIO输入输出和例程_V1.X”。1GPIO扩展的内核配置在底板上,引出的扩展口有J6(camera口),J38(GPIO/CAN/485),另外如果自己做底板,假如不使用WIFI等... 查看详情

简单实现掌控板抢答器实验

...目的及要求实现掌控板抢答器功能。二、实验原理与内容基于TinywebDB实现云数据库出题基于掌控板实现按键抢答和判题基于MQTT实现多端同步通讯三、实验软硬件环境硬件:掌控板软件:Mind+四、实验过程(实验步... 查看详情

基于ufun开发板的心率计qt上位机的实现(代码片段)

前言上两周利用周末的时间,分别写了基于uFUN开发板的心率计(一)DMA方式获取传感器数据和基于uFUN开发板的心率计(二)动态阈值算法获取心率值,介绍了AD采集传感器数据和数据的滤波处理获取心率值。这篇文章主要是介... 查看详情

乐鑫esp8266模块micropython开发板mqtt物联网人工智能最小系统(代码片段)

简介:※对于购买自网络的基于ESP8266的实验模块进行了初步的测试,它其中的一些示例进行了练习。特别是对于基于ESP8266的特殊的一些外设的测试。关键词:ESP8266,MicroPython#mermaid-svg-xmpqKnO8DskEwBON.labelfont-family:\'t... 查看详情