MQTT 移植STM32+GPRS(串口透传)(三)

原创 2017年03月18日 11:46:46

昨天,去参观了AWE(中国家电及消费电子博览会),智能家居,智能插座、智能LED灯、智能摄像头、智能橱柜等等,大开眼界,原来这些别的公司的产品都正式投产了。还顺便打听了几家提供云服务的公司,他们一听MQTT就说支持MQTT的协议,2家开发通信模组的公司甚至直接可以提供支持MQTT的固件。看来我要加快了。
##开发环境:
stm32f103 + esp6288(固件中支持自动连接服务器) 裸机开发

##步骤
首先在 https://github.com/eclipse/paho.mqtt.embedded-c 下载源码![ ](http://omp77n3im.bkt.clouddn.com/MQTT_scoure.png)
MQTTPacket 文件全部添加到keil工程当中,参考samples提供的例子,删除不需要的头文件。
MQTTPacket/samples/transport.c和transport.h也要添加到工程中去,这是我们要改写的接口。
因为MQTT使用JSON打包封装的数据处理会很简单,因此还要下载一个基于c 的文件用于格式转换。
https://github.com/DaveGamble/cJSON 拷贝cJSON.c和cJSON.h到工程中。
改写串口中断接收函数,其中socket连接服务器是在串口转wifi模块中设置好服务器的ip和port,这样移植到gprs模块时会很方便。在每次串口中断中清定时器的计数值,同时接收长度变量加1,并约定在50ms内收不到数据,认为接收完成,完成标志位置1。
*transport.c中修改里面的四个接口:
![ ](http://omp77n3im.bkt.clouddn.com/MQTT_API.png)
open/close函数暂时用不到,里面初始化相应的AT命令。
transport_sendPacketBuffer();发送消息改成串口发送姐可以了
transport_getdata();要进行改写里面的recv()函数,因为要接收完成后才能处理,但因为官方源码构架比较严谨,而且相当有水准。因此等待接收完成,放在MQTTRead_package();外面去做。

###最后
当设置好这些,就可以订阅和发布了。完成相应的初始化和参数设置后主函数中while(1)执行等待读消息,timer3定时器中断中发送采集到的传感器数值,timer4定时器中断中发送ping报,不然服务器会认为超时而断开连接。
详细的步骤下篇继续,目前程序尚未完善暂不献丑。
######说明:在sectong公司期间的周末休息时间所整理。
版权声明:欢迎大家吐槽!

MQTT客户端移植到STM32

将mqtt移植到的单片机
  • Omega_Alpha
  • Omega_Alpha
  • 2016年04月15日 10:49
  • 10019

互联网推送服务原理:长连接+心跳机制(MQTT协议)

互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了...
  • clh604
  • clh604
  • 2014年03月01日 00:06
  • 54714

gprs模块用TCP实现MQTT协议(基于SIM900A)

mqtt部分: int strlen(char *str) { int len = 0; while (*str != '\0') { len++; ...
  • PZ0605
  • PZ0605
  • 2017年03月09日 18:05
  • 4122

STM32+MQTT协议功能实现

  • 2016年11月24日 14:53
  • 4.9MB
  • 下载

MQTT 移植STM32+GPRS(串口透传)(一)

# 硬件智能之 MQTT协议介绍与移植笔记(一) ##MQTT是什么? MQTT(MessageQueuing Telemetry Transport Protocol)即全称消息队列遥感传输...
  • qq_20251069
  • qq_20251069
  • 2017年03月12日 21:02
  • 3471

MQTT 移植STM32+GPRS(串口透传)(四)

在完成相应的初始化和参数设置后主函数中while(1)执行等待读消息,timer3定时器中断中发送采集到的传感器数值,timer4定时器中断中发送ping报文。接着上一篇继续,首先说移植需要的部分 ...
  • qq_20251069
  • qq_20251069
  • 2017年03月19日 22:15
  • 2174

几步实现stm32上面移植mqtt

最近项目需要,stm32上面使用到mqtt了,百度了下,发现网上资料还是挺少的,虽然有几份相关的资料,下载下来之后,看到了mqtt的底层代码竟然还有错误,这个问题导致了我后面一直调试不通,后来,我直接...
  • u013165704
  • u013165704
  • 2017年06月20日 21:00
  • 1296

QT移植mqtt

移植MQTT到QT环境中 一、项目下载链接
  • qq84395064
  • qq84395064
  • 2017年11月14日 20:32
  • 280

物联网核心之MQTT移植

在上一篇文章中,只是讲了MQTT的主要内容,至于怎么移植到STM32上,怎么使用才是最重要的关键。这里使用的平台是RT8711的WIFI SOC,使用的LWIP跟FreeRTOS,移植使用跟STM...
  • mzwhhwj
  • mzwhhwj
  • 2017年09月11日 23:01
  • 546

互联网推送服务原理:长连接+心跳机制(MQTT协议)

互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2014年09月03日 15:39
  • 24614
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MQTT 移植STM32+GPRS(串口透传)(三)
举报原因:
原因补充:

(最多只允许输入30个字)