小程序入门 MQTT物联网协议 publish 和订阅subscribe onenet 阿里云 百度云 基于GPRS模块(SIM800C/SIM900A/SIM868等)和STM32主控芯片
本文基本公开了如何移植MQTT物联网协议到STM32平台上,并结合GPRS模块(SIM800C/SIM900A/SIM868等)实现publish和订阅topic从onenet,阿里云,百度云等。如果不想移植,可以在如下淘宝链接中直接购买源代码,全部源码+资料300,全部源码+资料包售后500元。
物联网开发板裸板只要168,套餐可自己搭配。
淘宝链接:https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.120c4831Ic87Zt&id=598106907055
配套物联网开发板链接:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.29e71debNLqzWg&id=583890254748
当然,也承接定制开发,价格跟需求难度及开发周期相关,具体可小窗博主或淘宝咨询。
一、代码适用范围
1. 设备端:
- 主控芯片为STM32F103C8T6,但是兼容所有STM32芯片中。
- 通信模块为sim800c或sim868,代码兼容,868多个GPS 使能代码和获取GPS信息及解析代码。
- 主控与通信模块连接4个引脚:GPS使能,GPRS使能,及串口3 TXD和RXD。串口3用于通信。
2. 服务器:
- 支持onenet
- 支持aliyun
- 支持baiduyun
3. 手机端:
- 小程序:目前已开发onenet,获取数据流,数据点,topic订阅与发布,控制终端等功能。aliyun,baiduyun待开发。
- app:用开源标准的mqtt 协议 apk。
二、MQTT 物联网协议使用
1. MQTT协议简介:
MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的,已成为 IoT 通信的标准。
初识 MQTT IBM简介的很好:我就不多分享了,有兴趣的可以参考链接:
https://www.ibm.com/developerworks/cn/iot/iot-mqtt-why-good-for-iot/index.html
2. 分享一个很好用的mqtt库:Paho
设备端的mqtt协议移植,就是参考https://github.com/eclipse/paho.mqtt.embedded-c移植而来。
整体移植过程:
下载src源码:https://github.com/eclipse/paho.mqtt.embedded-c/tree/master/MQTTPacket/src

添加到keil工程中。
添加onenet、aliyun、baiduyun等调试接口,以及sim模块,at指令控制部分,调试代码。
调试过程过于复杂且消耗时间,这里就不详细说明了。
这里贴一张移植后的目录结构图:

测试aliyun,baiduyun,onenet验证皆OK。
设备端验证代码publish 稳定,测试三天未掉线。
3. 以onenet为例:
设备端连接onenet:只需修改:如下部分即可。分别对应onenet服务器端的设备id,产品id和api-key。

4. 小程序demo
源程序实现如下功能:
- 添加设备
- 二维码识别获取设备id
- 显示继电器状态
- 获取设备数据流
- 发送topic
- 远程控制继电器
小程序需要修改部分:
- appid:修改为自己申请小程序后,生成的appid。

- master-apikey,改为onenet创建产品后生成的master-apikey即可。

然后就可以编译测试。
三、实现效果
1. 设备端:
上电,开机设备初始化,联网,tft屏显示二维码。
2. 服务器端:
onenet/aliyun/baiduyun起到数据接收与转发作用。
3. 手机端:
打开小程序,显示添加设备页面。

点击添加设备后,会出现二维码扫描页面,扫描设备上的二维码后,即可出现控制页面:

点击按钮即可控制设备端的继电器开关,从而控制led或电机或风扇等的开关。
如有疑问,欢迎评论或淘宝详聊。
小程序入门 MQTT物联网协议 publish 和订阅subscribe onenet 阿里云 百度云 基于GPRS模块(SIM800C/SIM900A/SIM868等)和STM32主控芯片的更多相关文章
- 编写 python 小程序,将LOL官网的皮肤保存下来,上传百度云,记录那些强撸灰飞烟灭的日子
to 撸的血泪史:大学四年几乎都在宿舍打撸,So,把官网的皮肤都保存下来,存到百度云,就当一种纪念 编辑器:pycharm 用到的包:urllib.request, requests, json, r ...
- 天河微信小程序入门:阿里云tomcat免费配置https
天河君在第一时间通过了微信小程序验证,开启了我的微信小程序之旅.因为天河君之前是一名后端狗,对前端不是很了解,所以几乎可以认为是从零开始学做微信小程序.也希望有志在微信小程序方向做点事情的朋友能够和我 ...
- 天河微信小程序入门《四》:融会贯通,form表单提交数据库
天河在阔别了十几天之后终于又回来了.其实这篇文章里的demo是接着(天河微信小程序入门<三>)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来.放到今天来看,从前台提交数据到数 ...
- 天河微信小程序入门《三》:打通任督二脉,前后台互通
原文链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=505&extra=page%3D1 天河君在申请到https ...
- 我的微信小程序入门踩坑之旅
前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...
- 微信小程序入门正确姿势(一)
[未经作者本人同意,请勿以任何形式转载] >>>前言 这是 [认真学编程] 系列的 第4篇 文章(微信小程序入门系列),欢迎点赞分享.写留言,这些都是对我最好的支持. 本系列适合有一 ...
- 微信小程序入门篇
微信小程序入门篇: 准备工作 IDE搭建 就不多说了,没有内测码去下载个破解版吧,我用了一下,学习完全够了!IDE破解版+安装教程 图片发自简书App 知识准备 JavaScrip还是要看看的,推荐教 ...
- 微信小程序入门案例
本文通过具体的实例记录微信小程序的入门知识. 1.特点 不需要安装 依赖微信应用 更接近原生APP 丰富的框架及API可达到快速开发的目的 2.工具使用 在开发的过程中可以使用微信开发者工具,更加直观 ...
- 微信小程序 | 49,小程序入门集锦系列文章20篇
以下20篇文章,都是关于微信小程序的文章,以入门常见问题为主.如发现谬误,请与笔者联系. [小程序入门集锦]1,微信小程序在哪里打开 [小程序入门集锦]2,小程序商店 [小程序入门集锦]3,微信小程序 ...
随机推荐
- SQL 修复表
alter database dcdata set single_user with rollback immediate设置为单用户模式然后执行修复.DBCC CHECKTABLE(ZLBZSGPH ...
- HDU 6045 - Is Derek lying | 2017 Multi-University Training Contest 2
/* HDU 6045 - Is Derek lying [ 分析 ] 题意: 有N个问题, 每个问题有A,B,C三种答案,答对加一分,答错不加分 给出甲乙两人的答案,给出两人的分数先x, y,问分数 ...
- 有效的结构化思维训练,MECE分析法
MECE原则,表达精准分类与全面性的有效利器 结构化思维的本质就是逻辑,其目的在于对问题的思考更完整.更有条理,它帮助我们一个一个找到线头,理清思路,探求事物之间的相互联系.MECE分析法是一种结构化 ...
- BZOJ 4004: [JLOI2015]装备购买 高斯消元解线性基
BZOJ严重卡精,要加 $long$ $double$ 才能过. 题意:求权和最小的极大线性无关组. 之前那个方法解的线性基都是基于二进制拆位的,这次不行,现在要求一个适用范围更广的方法. 考虑贪心 ...
- 2019牛客暑期多校训练营(第一场)I dp+线段树
题意 给出n个点,每个点有a,b两个属性,让你从左下角到右上角划一条线,线的左边每个点的贡献是\(a_i\),线的右边每个点的贡献是\(b_i\),使得两部分的总和最大. 分析 找一条折线将点分割开, ...
- delphi中Tkbmmemtable数据转成SQL脚本
unit UMemtableToSql; interface uses SysUtils, Classes, DB, kbmMemTable, Variants, Dialogs, SuperObje ...
- JavaWeb-SpringSecurity初认识
Spring Security 安全 百度百科 功能:Spring Security对Web安全性的支持大量地依赖于Servlet过滤器.这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安 ...
- CodeForces 754D Fedor and coupons ——(k段线段最大交集)
还记得lyf说过k=2的方法,但是推广到k是其他的话有点麻烦.现在这里采取另外一种方法. 先将所有线段按照L进行排序,然后优先队列保存R的值,然后每次用最小的R值,和当前的L来维护答案即可.同时,如果 ...
- 一步一步实现一个Promise A+规范的 Promise
2015年6月,ES2015(即ES6)正式发布后受到了非常多的关注.其中很重要的一点是 Promise 被列为了正式规范. 在此之前很多库都对异步编程/回调地狱实现了类 Promise 的应对方案, ...
- Nginx事件管理之事件处理流程
1. 概述 事件处理要解决的两个问题: "惊群" 问题,即多个 worker 子进程监听相同端口时,在 accept 建立新连接时会有争抢,引发不必要的上下文切换, 增加系统开销. ...