合泰32-Onenet-WiFi模块-合泰单片机通过MQTT协议数据上云(二)
本篇目标
一、学习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协议数据上云(二)相关推荐
- 合泰32-Onenet-WiFi模块-合泰单片机通过MQTT协议数据上云(一)
本篇目标 一.调通合泰单片机串口(成功接收和发送数据) 二.通过WiFi模块连接到Onenet_MQTT服务器 合泰32串口 HT32F5XXX串口 如下表所示,HT32F52352芯片USART0. ...
- Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)
一.简介 随着移动物联网的发展,各场景下对于物联控制.数据上传.远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块--ESP8266,话不多少我们先来看看这个神奇的模块 ...
- 基于STM32单片机采集数据数据上云
前言 以往采集数据均是采用Arduino开发板.esp32wifi模块等,本次实验采用的是STM32单片机,STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex- ...
- STM32MP157实现串口接收数据上云-MP157连接4G模块和电脑
文章目录 前言 一.打开设备文件 二.串口初始化 三.多线程 四.程序的移植和执行 五.源码(转载请注明出处) 结语 前言 本篇分享: 这次将会用几篇博客分享STM32MP157实现串口接收数据上云的 ...
- 数据上云|OneMO DTU数传模组接入OneNET云平台操作详细过程
目录 前言 第一步.OneNET云平台基础搭建 第二步.DTU数传模组参数配置 第三步.成果展示 友友们,我要不再买一块补个仓,拉低成本?! 前言 最近在做物联网实训项目,要求将传感器的数据采集上传到 ...
- wifi模块和云端服务器的协议,wifi模块连接云端服务器的尝试(esp8266连thingSpeak)
本帖最后由 gada888 于 2017-3-31 13:28 编辑 前几天看到一个贴子说想用无线方式浇花,本人还和人家探讨,后来一想,自己都没做过,说的不跟空话一样,于是就是试着调试了一下wifi模 ...
- (过程超详细)适合新手的ATK-ESP8266+STM32F103系列单片机通过MQTT协议直连阿里云的教程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.所用到的硬件设备 二.调试步骤 1.固件的烧录 2.创造阿里云的产品 3.代码修改 4.最终的硬件连接及效果图 总 ...
- mqtt 域名连接_中国移动OneNet物联网平台,如何使用MQTT协议,进行连接
大家好,超子又和大家见面了,超子我能力有限,技术不高,有什么错误的地方,欢迎板砖.今天我们一起构建MQTT协议中的CONNECT报文,连接OneNet物联网平台,然后进行通信.前面的文章中,超子介绍阿 ...
- 设备接入ONENET(2)STM32 + ESP8266(MQTT协议)接入云 :使用 OneNET 官方麒麟座开发板例程
重要提示:由于OneNET版本迭代,导致鉴权方式可能变更,若程序无法连接,请参考官方手册或再OneNET论坛搜索相关内容 一.麒麟镇官方资料 麒麟座官方资料整理帖子:开发板资料下载,(长期更新,首次使 ...
最新文章
- python 笔记 之 sqlalchemy操作数据库-说明
- 深入了解softmax
- 0118——RTLabel和正则表达式
- 前端技术面——(js基础二)
- 2018-2019-1 20165234 《信息安全系统设计基础》第八周学习总结
- C#中如何截取Windows消息来触发自定义事件
- THUSC2019去不了记
- mybatis中的xml配置文件中sql语句里的比较符号需要用特殊标签包裹有比较大于和小于条件
- vue-cli2.9.6更新不了问题
- 原 Spring RestTemplate中几种常见的请求方式
- 计算机二级数据模拟表,2020年计算机二级《Access数据库程序设计》模拟题(5)...
- wow插件实现优雅的动画页面
- 智能小车 - DRV8833电机驱动模块
- 浅谈企业IT技术运营中台
- 《给青年的十二封信》 朱光潜 (摘录)
- [OHOS ERROR] FileNotFoundError: [Errno 2] No such file or directory: ‘python‘
- Python中随机梯度下降法
- 刘强东:京东高管降薪10%-20% 拿百亿投向基层员工
- 不必上抖音,AI Studio社区项目帮你完成简约风格迁移
- 笔迹识别(一 笔迹特征)
热门文章
- 陕西单招计算机考试试题,陕西省单招考试试题-单招考试试题
- DiskGenius(磁盘分区/数据恢复) 32位 V4.9.1 免费绿色版
- 第十七节:两片联级74HC595驱动16个LED灯的基本驱动程序
- 持续的敏捷转型--我们的经验
- python 中os.path 的一些路径常用函数
- 使用stram流从list集合中取出一个或两个属性值
- SAP之FPM卷五:FPM开发实例-完成主页面功能(1)
- 该如何去学编程?[转帖]
- win10家庭版,夜间模式打开无反应
- 2016太原UI设计师产品界面设计“低保真”图有哪些点?