




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、首页博问专区闪存班级代码改变世界21淘宝优秀不够,你是否无可替代知识从未如此。 烂程序员关心的是代码,-淘宝关心的是数据结构和它们之间的关系 -本人随笔 - 741, 文章 - 0, 评论 - 315, 阅读 - 181万111-STM32+ESP8266+AIR202基本篇-移植单片机MQTT包,实现stm32+esp8266连接MQTT服务器(透传和非透传模式下)<p><iframe name="ifd" src="frameborder="0" scrolling="auto" width="
2、;100%" height="1500"></iframe></p>"基本篇(MQTT通信,Android,小程序,ESP8266,GPRS,NB-IOT,服务器搭建) 方案技术支持:技术论武天地技术开源必看 基础开源基础开源基础开源基础开源基础开源基础开源:数据处理思想和程序架构:学习Android:小程序开发入门篇:NB-IOT Air302 LUA开发:ESP8266 SDK开发:ESP8266 LUA开发:MySQL数据库应用-以上为基础公开,基础公开全部开源,请自行学习!-基本篇篇章:STM32+ESP8266+A
3、ri302(NB-Iot)基本篇(自建物联网平台)基本(篇篇章:STM32+ESP8266+Ari302(NB-Iot)基本物联网平台)篇升级篇篇章:STM32+ESP8266+Ari302(NB-Iot)OTA(自建物联网平台)升级篇终端管理篇篇章:STM32+ESP8266+Ari302(NB-Iot)终端管理篇 (自建物联网平台)1-硬件使用说明2-整体运试-APP使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现通信2-整体运试-小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现通信2-整体运试-APP扫码绑定Air30
4、2(NB-IOT),并通过MQTT和Air302(NB-IOT)实现2-整体运通信试-小程序扫码绑定Air302(NB-IOT),并通过MQTT和Air302(NB-IOT)实现通信2-整体运试-APP使用SmartConfig配网绑定ESP8266,并通过MQTT和ESP8266实现通信01-MQTT协议01-服务器基本搭建-云服务器(电脑)(Windows系统)01-服务器基本搭建-云服务器(电脑)(Linux系统)02-服务器基本搭建-安装MQTT软件(.Windows系统)02-服务器基本搭建-安装MQTT软件(Linux系统)111-移植单片机MQTT包,实现stm32+esp826
5、6连接MQTT服务器(透传和 非透传模式下)8266(88) MQTT(50) GPRS(33) SDK(29) Air202(28)云服务器(21) ESP8266(21) Lua(18)小程序(17) STM32(16)随笔分类Android(22) Android 开发(8) C# 开发(4)CH395Q学习开发(17)CH579M学习开发(7) ESP32学习开发(8) ESP8266 AT指令开发(基于STC89C52单片机)(3)ESP8266 AT指令开发(基于STM32)(1)ESP8266 AT指令开发基础入门篇备份(12)ESP8266 LUA语言开发(13)ESP8266
6、 LUA开发基础入门篇备份(22)导航博客园首页 新随笔订阅管理公告渡我不渡她 - Not available00 00 / 03:411 渡我不渡她2 小镇姑娘3 PDD洪荒之力昵称:园龄: 5年9 粉丝: 629关注: 1搜索找找看 谷歌搜索ESP8266 SDK开发(32)ESP8266 SDK开发基础入门篇备份(30)GPRS Air202 LUA开发(11) HC32F460(华大) + BC260Y(NB-IOT) 物联网开发(5)NB-IOT Air302 AT指令和LUA语言开发(25) PLC(三菱PLC)基础入门篇(2) STM32+Air724UG(4G模组)物联网开发(
7、43)STM32+BC26/260Y物联网开发(37) STM32+CH395Q(以太网)物联网开发(21)STM32+ESP8266(ZLESP8266物联网开发(1)STM32+ESP8266+AIR202/30升级方案(16) STM32+ESP8266+AIR202/30终端管理方案(6)STM32+ESP8266+Air302物联网开发(64) STM32+W5500+AIR202/302基本方案(25)STM32+W5500+AIR202/302升级方案(6) UCOSii操作系统(1) W5500 学习开发(8) 编程语言C#(11)12- 功能测试-APP使用SmartConf
8、ig配网绑定ESP8266,并通过MQTT和ESP8266实现通信13- 功能测试-APP扫码绑定Air202(GPRS),并通过MQTT和Air202实现 通信(兼容SIM800)14- 功能测试-APP扫码绑定Air302(NB-IOT),并通过MQTT和Air302(NB- IOT)实现通信21-服务器反向-服务器安装Nginx(.Windows系统)22- 服务器反向-23- 服务器反向-24- 服务器反向-,配置备案申请SSL25-服务器反向-web服务器配置https(.Windows系统)25-服务器反向-web服务器配置https(Linux系统)26-服务器反向-Nginx配
9、置反向(.Windows系统) 26-服务器反向-Nginx配置反向(Linux系统)31- 功能测试-小程序使用APUConfig配网绑定ESP8266,并通过MQTT 和ESP8266实现通信32- 功能测试-小程序扫码绑定Air202(GPRS),并通过MQTT和Air202实现通信(兼容SIM800)33- 功能测试-小程序扫码绑定Air302(NB-IOT),并通过MQTT和Air302 实现通信40-关于SSL41-服务器单向SSL认证-MQTT服务器配置SSL单向认证(.Windows系统)41-服务器单向SSL认证-MQTT服务器配置SSL单向认证(Linux系统)41-功能测
10、试-Android以SSL单向认证方式连接MQTT服务器(不校验服务器)编程语言Lua 门篇(6)语言基础入说明此节适用于所有支持TCP通信的模组!编程语言Python(1)单片机(LPC1778)LPC1778(2)单片机(MSP430)开发基础入门篇(4)单片机(STC89C51)单片机开发板学习入门篇(3)单片机(STM32)基础入门篇(3) 单片机(STM32)综合应用系列(16)电路模块使用说明(11) 感想(6)软件安装使用: MQTT(8)软件安装使用: OpenResty(6)准备一份程序(先看透传版)透传版就是配置好模组以后直接数据给模组,模组就把信息直接转发到网络模组从网络
11、接收到数据就直接输出.最新评论1. Re:单片机模块化程序: 看看是不是你想要的按键处理不见了-2. Re:C#开发: 通信篇-TCP客户端1.准备一份已经实现TCP通信的程序感谢,直接就用上了-Zfen阅读排行榜1. ESP8266使用详解(AT,LUA, SDK)(172677)2. 1-安装MQTT服务器(Windo ws),并连接测试(98560)3. ESP8266刷AT固件与node mcu固件(64559)4. 用ESP8266+android,制作的WIFI小车(ESP8266篇)(64013)5. 有人WIFI模块使用详解(384 63)2.TCP连接注:因为是WiFi模块,
12、所以需要连接路由器(连接的路由器名称和根据的修改)连接的IP地址是MQTT服务器的地址+单片机+路由器之统(31294)推荐排行榜1. C#委托+回调详解(9)2. 用ESP8266+android,制作的WIFI小车(ESP8266篇)(8)3. 用ESP8266+android,制作的WIFI小车(Android 软件)(6)4. ESP8266使用详解(AT,LUA, SDK)(6)5. 关于TCP和MQTT之间的转换(5)连接TCP以后模块进入透传模式2.我把网络接收的数据缓存到了环形队列6. (一)基于的MQTT远程 (Android 连接MQTT服务器,ESP8266连接MQTT服
13、务器实现 通信简单的连接通信)(35880)7. 关于TCP和MQTT之间的转换(33108)8. C#中public与private与stat ic(32262)9. android 之TCP客户端编程(31841)10. android端+eps8266开始移植1.把这节里面的mem和MQTT文件夹拷贝到工程目录注:我提供的STM32F10xTemplate工程里面已经有了mem,可不用拷贝2.把mem和MQTT添加到工程3.写上下面的程序注:MQTT信息根据的修改#include "mqtt.h"char mqtt_connect_flag=0;/1:Á
14、172;½ÓÉÏMQTT·þÎñÆ÷ 0:δÁ¬½ÓÉÏMQTT·þÎñÆ÷ char mqtt_id50 = "11223344"/ClientIDchar mqtt_username20 = "yang"/Óû§Ãû char mqtt_passwor
15、d50 = "11223344"/ÃÜÂë char mqtt_keepalive = 30;/ÐÄÌø°üʱ¼äunsigned char mqtt_publish_topic30=""/´æ´¢MQTT·¢²¼µÄÖ÷Ìâunsigned char mqtt_subscri
16、be_topic30=""/´æ´¢MQTT¶©ÔĵÄÖ÷Ìâ/*¶©ÔÄÖ÷Ìâ³É¹¦*/void subscribedCb(int pdata) printf("rn³É¹¦¶©ÔÄÖ÷Ì
17、226;rn");/*¶©ÔÄÖ÷Ìâʧ°Ü*/void failsubscribedCb(int pdata) printf("rn¶©ÔÄÖ÷Ìâʧ°Ürn");/*·¢²¼³É¹¦*/void PublishedCb() printf(&q
18、uot;rn·¢²¼³É¹¦rn");/*Á¬½ÓÉÏMQTT»Øµ÷º¯Êý*/ void MqttConnect()printf("rnÁ¬½Ó³É¹¦* mqtt_connect_flag = 1;/*MQTT¶Ï¿ªÁ
19、172;½Ó»Øµ÷*/ void MqttDisConnect()printf("rnÁ¬½Ó¶Ï¿ª* mqtt_init(&mymqtt);mqtt_connect_flag=0;/* brief* paramMQTT½ÓÊÕÊý¾Ý»Øµ÷topic:Ö÷Ìâ4.把mqtt
20、_time_data(&mymqtt); 放到1ms定时器里面/Á¬½ÓÉÏMQTT·þÎñÆ÷if(mqtt_connect_flag)mqtt_send_function(&mymqtt);/ÌáÈ¡·¢ËÍ»º´æµÄMQTTÐÒé mqtt_keep_alive(&mymqtt
21、);/´¦Àí·¢ËÍÐÄÌø°ü* paramtopic_len:Ö÷Ìⳤ¶È* paramdata:½ÓÊÕµÄÊý¾Ý* paramlengh:½ÓÊÕµÄÊý¾Ý
22、79;¤¶È* retval None* warning None* example*/void MqttReceive(const char* topic, uint32_t topic_len,const char *data, uintvoid MqttConnect(void);/Á¬½ÓÉÏMQTT»Øµ÷void MqttDisConnect(void);/MQTT¶Ï¿ªÁ¬½
23、11;»Øµ÷ void subscribedCb(int pdata);/¶©Ôijɹ¦»Øµ÷ void failsubscribedCb(int pdata);/¶©ÔÄʧ°Ü»Øµ÷ void PublishedCb(void);/³É¹¦·¢
24、178;¼ÏûÏ¢»Øµ÷void MqttReceive(const char* topic, uint32_t topic_len,const char *data, uintmqtt_init(&mymqtt); mqtt_connect_reg(&mymqtt,MqttConnect);/×¢²áÁ¬½Ó»Øµ÷º¯Êý m
25、qtt_disconnect_reg(&mymqtt,MqttDisConnect);/×¢²á¶Ï¿ªÁ¬½Ó»Øµ÷º¯Êý mqtt_received_reg(&mymqtt,MqttReceive);/×¢²á½ÓÊÕÊý¾Ý»Ø
26、81;÷º¯Êý5. 在mqtt.c里面替换的tcp数据函数注:单片机是通过串口2和模组通信关于下面的 mymqtt.timer_out_send = 0; 这个是预防有的模块数据之后需要等待,按照提示修改就可以wifi模块透传模式下每条数据的时间间隔需要保持在20ms以上,所以我直接设置的206. 编写组合连接MQTT协议函数7.连接上TCP服务器以后每隔一段时间器MQTT连接协议给服务8.把模组接收的网络数据交给mqtt处理函数处理注:在未连接上mqtt服务器交给 mqtt_function_connect_ack函数(该函数连接会调用的m
27、qtt连接回调)注:在连接上mqtt服务器交给 mqtt_read_function 函数9.把代码测试10.断线重连典型处理方式:在TCP断开的时候需要重新连接TCP,然后再连接MQTT 在MQTT断开的时候让模组也重新连接TCP.现在wifi模组是透传模式,模组返回tcp断开的信息了,所以就只在mqtt断开连接回调里面重新让tcp连接11.订阅主题和发布消息12.提示只要是连接上MQTT服务器了,可以在任意地方调用订阅和发布函数.打包的信息都缓存到了内部的缓存管理里面,缓存管理使用的是我在环形队列基础上封装的 BufferManage13.如果的MQTT数据包超过500不超过16383字节
28、,则只需要修改数据缓存大小mqtt_send_buff_len是每个数据包的长度(假设的数据包最大是800,则可以设置为802)send_buff_loop_len 是保存每个数据包数组的长度(一般设置为mqtt_send_buff_len的整数倍)14.如果的MQTT数据包超过16383字节,则还需要修改底层当前是使用两字节保存数据个数15.接收数据,如果内存充足,推荐的处理方式现在看非透传版透传版和非透传版只是版的基础上修改和接收数据的方式不一样,所以就在透传 1.首先模块资料2.TCP连接改为非透传多模式(使用的socket 0 进行的连接)3.改一下接收数据的地方,咱使用另外一个缓存只网络数据3.改一下连接协议的方式4.串口接收处理数据改一下上面只处理连接上MQTT服务器前和连接中出现的问题下面是把网络数据交给MQTT处理函数处理5.现在应该可以连接上MQTT服务器了6.接着修改这里面这里也需要改为先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025化肥购销合同(农作物施用)
- 建筑工程装修施工总承包合同
- 民用航空器维修岗位技能试题及答案
- 在校实习工作认证书(5篇)
- 高级审计师备考共同体试题及答案
- 注册安全工程师案例分析培训
- 人身保险核保与理赔(上)
- 基本药物制度宣传活动工作总结模版
- 月度个人工作总结模版
- 2025年地方政府房屋买卖合同范本
- 电力安全工作规程发电厂和变电站电气部分
- 数字贸易学 课件 第5章 数字服务贸易
- DB11∕T 848-2023 压型金属板屋面工程施工质量验收标准
- 孕妇乳母的饮食调理
- 2023年国家卫生健康委统计信息中心招聘3人笔试《行政职业能力测验》模拟试卷答案详解版
- 奶茶分析报告
- 小学生反诈知识宣传课件
- 2023肝硬化腹水诊疗指南(完整版)
- 颜真卿《劝学》ppt课件1
- 氢气储存和运输 课件 第1、2章 氢气存储与运输概述、高压气态储运氢
- 护士执业注册培训合格证明
评论
0/150
提交评论