本篇目标

一、学习MQTT协议
二、发送温度湿度数据到OneNET

准备材料

感觉麻烦的小伙伴请移步到文末,那里有整个工程的链接。

(关于串口和WiFi部分的内容,可以查看前一篇博文,链接:这个是传送大门)

一、合泰例程
链接:https://leoeinstein.lanzous.com/iEbgskvq6pi

二、OneNET例程
链接:https://leoeinstein.lanzous.com/it2D4kzs1gf

这个是在onenet论坛里面下载的,包含有麒麟座开发板的一些工程,里面几乎包含了所有onenet支持协议的通信例程,有需要的同学可以下载。

MQTT协议

推荐博文

一、IoT – (七)MQTT协议详解
这篇在理论的层面上讲得比较详细的,可以看看看。

二、MQTT协议-MQTT协议解析(MQTT数据包结构)

这篇主要结束了MQTT协议的数据包结构,我们写程序的时候需要参考到的。

报文格式

查看OneNET平台的V2.6版本的MQTT协议书可知,支持的报文格式有7种。

OneNET官网文档:https://open.iot.10086.cn/doc/multiprotocol/book/develop/mqtt/device/doc-tool.html

Type 内容
1 JSON格式1字符串
2 二进制数据
3 JSON格式2字符串
4 JSON格式3字符串
5 自定义分隔符
6 带时间自定义分隔符
7 可离散浮点数数据流

中文版的MQTT协议文档
链接:https://pan.baidu.com/s/1NY7fDD7cUbTY2J351v45NA
提取码: kefy

代码实现

引脚连接

这次用的是USART0 口,才发现USART1的RX引脚PA5用跳线帽接到了DAP_Tx,如果需要用到的话需要接到RS232_Tx,就可以用了。

ESP8266 HT32
RX PA2
TX PA3
3.3V 3.3V
GND GND

合泰的延时函数

之前下载过一些合泰的工程例程,发现里面的延时函数没有用定时器来实现延时的,而是用软件来延时的。这样的话延时时间不准确,从而可能会导致程序会出现一些未知的错误。

因此在这里贴出定时器/计数器的延时实现。

有时候用用国产芯片还是不错了,现在的stm32很贵![狗头保护]

delay.c

#include "delay.h"
#include "usart.h"/* Private variables ---------------------------------------------------------------------------------------*/
static vu32 DelayTime;
/* Private function prototypes -----------------------------------------------------------------------------*/
void Delay(u32 nTime);
void TimingDelay(void);void delay_init()
{/* SYSTICK configuration */SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);       // Default : CK_AHB/8SYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000); // (CK_AHB/8/1000) = 1ms on chipSYSTICK_IntConfig(ENABLE);                          // Enable SYSTICK Interrupt}
void delay_ms(u32 nTime)
{/* Enable the SysTick Counter */SYSTICK_CounterCmd(SYSTICK_COUNTER_CLEAR);SYSTICK_CounterCmd(SYSTICK_COUNTER_ENABLE);DelayTime = nTime;while(DelayTime != 0);/* Disable SysTick Counter */SYSTICK_CounterCmd(SYSTICK_COUNTER_DISABLE);/* Clear SysTick Counter */SYSTICK_CounterCmd(SYSTICK_COUNTER_CLEAR);
}/*********************************************************************************************************//*** @brief  Decrements the TimingDelay variable.* @retval None***********************************************************************************************************/
void TimingDelay(void)
{if(DelayTime != 0){DelayTime--;}
}

其实这个在合泰官方例程了也有,就在example–>SYSTICK文件里面,经过简单的移植、修改就可以了。

这个的定时中断服务函数在 ht32f5xxxx_01_it.c 里面!

需要例程的同学可以在这里下载:
https://blog.csdn.net/LiangWF22/article/details/113181696

OneNET部分代码

void OneNet_SendData(void) from onenet.c

//==========================================================
//  函数名称:    OneNet_SendData
//
//  函数功能:    上传数据到平台
//
//  入口参数:    type:发送数据的格式
//
//  返回参数:    无
//
//  说明:
//==========================================================
void OneNet_SendData(void)
{MQTT_PACKET_STRUCTURE mqttPacket = {NULL, 0, 0, 0};                                               //协议包char buf[128];short body_len = 0, i = 0;UsartPrintf(USART_DEBUG, "Tips: OneNet_SendData-MQTT\r\n");memset(buf, 0, sizeof(buf));body_len = OneNet_FillBuf(buf);                                                                    //获取当前需要发送的数据流的总长度if(body_len){if(MQTT_PacketSaveData(DEVID, body_len, NULL, 5, &mqttPacket) == 0)                            //封包{for(; i < body_len; i++)mqttPacket._data[mqttPacket._len++] = buf[i];ESP8266_SendData(mqttPacket._data, mqttPacket._len);                                  //上传数据到平台UsartPrintf(USART_DEBUG, "Send %d Bytes\r\n", mqttPacket._len);MQTT_DeleteBuffer(&mqttPacket);                                                           //删包}elseUsartPrintf(USART_DEBUG, "WARN:   EDP_NewBuffer Failed\r\n");}}

实现效果

效果

因为手上的温湿度传感器坏了,这个数据仅仅是测试的,如果用到的话需要自己修改温湿度传感器对应的函数!

OneNET平台数据流显示界面:

串口信息打印输出如下:

存在问题

一、上传图片的时候合泰芯片会卡住,不能执行代码,不清楚是代码的问题还是合泰32的问题,有空再看看。[狗头\sm]

工程链接

链接1:https://download.csdn.net/download/LiangWF22/14951875

链接2:https://leoeinstein.lanzous.com/iXpNqkzxikb

2021年1月28日

合泰32-Onenet-WiFi模块-合泰单片机通过MQTT协议数据上云(二)相关推荐

  1. 合泰32-Onenet-WiFi模块-合泰单片机通过MQTT协议数据上云(一)

    本篇目标 一.调通合泰单片机串口(成功接收和发送数据) 二.通过WiFi模块连接到Onenet_MQTT服务器 合泰32串口 HT32F5XXX串口 如下表所示,HT32F52352芯片USART0. ...

  2. Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)

    一.简介 随着移动物联网的发展,各场景下对于物联控制.数据上传.远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块--ESP8266,话不多少我们先来看看这个神奇的模块 ...

  3. 基于STM32单片机采集数据数据上云

    前言 以往采集数据均是采用Arduino开发板.esp32wifi模块等,本次实验采用的是STM32单片机,STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex- ...

  4. STM32MP157实现串口接收数据上云-MP157连接4G模块和电脑

    文章目录 前言 一.打开设备文件 二.串口初始化 三.多线程 四.程序的移植和执行 五.源码(转载请注明出处) 结语 前言 本篇分享: 这次将会用几篇博客分享STM32MP157实现串口接收数据上云的 ...

  5. 数据上云|OneMO DTU数传模组接入OneNET云平台操作详细过程

    目录 前言 第一步.OneNET云平台基础搭建 第二步.DTU数传模组参数配置 第三步.成果展示 友友们,我要不再买一块补个仓,拉低成本?! 前言 最近在做物联网实训项目,要求将传感器的数据采集上传到 ...

  6. wifi模块和云端服务器的协议,wifi模块连接云端服务器的尝试(esp8266连thingSpeak)

    本帖最后由 gada888 于 2017-3-31 13:28 编辑 前几天看到一个贴子说想用无线方式浇花,本人还和人家探讨,后来一想,自己都没做过,说的不跟空话一样,于是就是试着调试了一下wifi模 ...

  7. (过程超详细)适合新手的ATK-ESP8266+STM32F103系列单片机通过MQTT协议直连阿里云的教程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.所用到的硬件设备 二.调试步骤 1.固件的烧录 2.创造阿里云的产品 3.代码修改 4.最终的硬件连接及效果图 总 ...

  8. mqtt 域名连接_中国移动OneNet物联网平台,如何使用MQTT协议,进行连接

    大家好,超子又和大家见面了,超子我能力有限,技术不高,有什么错误的地方,欢迎板砖.今天我们一起构建MQTT协议中的CONNECT报文,连接OneNet物联网平台,然后进行通信.前面的文章中,超子介绍阿 ...

  9. 设备接入ONENET(2)STM32 + ESP8266(MQTT协议)接入云 :使用 OneNET 官方麒麟座开发板例程

    重要提示:由于OneNET版本迭代,导致鉴权方式可能变更,若程序无法连接,请参考官方手册或再OneNET论坛搜索相关内容 一.麒麟镇官方资料 麒麟座官方资料整理帖子:开发板资料下载,(长期更新,首次使 ...

最新文章

  1. python 笔记 之 sqlalchemy操作数据库-说明
  2. 深入了解softmax
  3. 0118——RTLabel和正则表达式
  4. 前端技术面——(js基础二)
  5. 2018-2019-1 20165234 《信息安全系统设计基础》第八周学习总结
  6. C#中如何截取Windows消息来触发自定义事件
  7. THUSC2019去不了记
  8. mybatis中的xml配置文件中sql语句里的比较符号需要用特殊标签包裹有比较大于和小于条件
  9. vue-cli2.9.6更新不了问题
  10. 原 Spring RestTemplate中几种常见的请求方式
  11. 计算机二级数据模拟表,2020年计算机二级《Access数据库程序设计》模拟题(5)...
  12. wow插件实现优雅的动画页面
  13. 智能小车 - DRV8833电机驱动模块
  14. 浅谈企业IT技术运营中台
  15. 《给青年的十二封信》 朱光潜 (摘录)
  16. [OHOS ERROR] FileNotFoundError: [Errno 2] No such file or directory: ‘python‘
  17. Python中随机梯度下降法
  18. 刘强东:京东高管降薪10%-20% 拿百亿投向基层员工
  19. 不必上抖音,AI Studio社区项目帮你完成简约风格迁移
  20. 笔迹识别(一 笔迹特征)

热门文章

  1. 陕西单招计算机考试试题,陕西省单招考试试题-单招考试试题
  2. DiskGenius(磁盘分区/数据恢复) 32位 V4.9.1 免费绿色版
  3. 第十七节:两片联级74HC595驱动16个LED灯的基本驱动程序
  4. 持续的敏捷转型--我们的经验
  5. python 中os.path 的一些路径常用函数
  6. 使用stram流从list集合中取出一个或两个属性值
  7. SAP之FPM卷五:FPM开发实例-完成主页面功能(1)
  8. 该如何去学编程?[转帖]
  9. win10家庭版,夜间模式打开无反应
  10. 2016太原UI设计师产品界面设计“低保真”图有哪些点?