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

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

我建了一个群,分享我个人做项目的经历和资源,纯个人爱好,一切免费,看自己空闲时间答疑,有想法的可以加QQ群280730348

本教程适合第一次玩阿里云的小伙伴,当然需要一定的C语言基础+库函数的调试经验,所有例程都是库函数来着。另外,本教程是基于本人的调试过程,参考了很多大佬的调试经验,如OnePiece&。很多东西,比如MQTT协议我也只是懂一部分,但是关于MQTT协议在代码中的实现,本教程可以以简单明了的方式教会你只需要改几个特定的参数就能实现与任何你新创建的简单产品的互联。码字不易,代码和所有此过程中要用到的东西均会在本篇文章发布完成后以资源包形式上传,请勿找我用邮箱发送,无需付费只需积分下载。
这里推荐一个关于MQTT协议的视频链接,想去听的可以去听一听,很有用,适合关于MQTT协议的入门了解。

https://www.bilibili.com/video/BV1k4411q7Cc?p=33&vd_source=2d589e389bf136cab5cd19c6640c6e3a


一、所用到的硬件设备

1.正点原子的ATK-ESP8266,这个淘宝上很多店都可以买到
在这里插入图片描述
2.单片机推荐使用STM32F103RCT6,当然也可以兼容STM32F103C8T6,关于物联网这一块的代码完全兼容C8T6,只是有部分代码我是用来做控制如OLED,BEEP,红外和超声波,这个后面程序介绍里面会讲解一下。
3.普通的USB-TTL的烧录模块
以上就是所需要的所有硬件,另加杜邦线几根即可

二、调试步骤

1.固件的烧录

首先明确一点,我从正点原子的官方技术确认过,一般ATK-ESP8266模块是自带的正点的原子云固件,可以轻松跟原子云联网但是却不支持MQTT的AT指令控制,因此当我们拿到了模块以后,做的第一件事情就是将烧录器件和ESP8266进行连接。
一般我们到手的ESP8266有六个引脚,分别是VCC,GND,TXD,RXD,RST,IO-0。前四个就不赘述,后面的RST代表复位,IO-0代表ESP8266的模式,非低电平的时候是运行模式,低电平的时候是下载固件模式。因此若我们想要下载固件至ESP8266里面,IO-0这个引脚也要接GND,与烧录模块的接法如下:
VCC——————+3.3V或+5V(根据你的模块可承受的供电电压来,我的是兼容两种电压)
GND——————GND
RXD——————TXD
TXD——————RXD
IO-0——————GND

总共五根线,RST不用接,确认好接线无误以后进行下一步。
下一步就是下载什么样的固件和用什么固件下载软件。固件的话自己可以搜MQTT协议AT指令的固件,也可以自己去主流一些连阿里云的商家官网看,如安信可等等,上面有相对应的固件,正点原子官方也提供了固件,但是我没用过,不知道对不对。
我所用的固件如下:
在这里插入图片描述
我所使用的固件下载软件如下:
在这里插入图片描述
解压后进去双击exe文件,等待自动加载
在这里插入图片描述
会出现这么一个界面,选择第一个就行(ESP8266 DownloadTool)
在这里插入图片描述
点击进去会出现这么一个画面,你只要把界面弄的跟我一致就行,第一个带感叹号的那里把刚刚截图中的bin文件加载进去,然后@里面填0x00000,下面的选项一致即可
在这里插入图片描述
点击下面的START按钮,当你按下START按钮以后,原本绿色带有IDLE等待的按钮会显示等待上电复位,这个时候你需要自己手动把ESP8266模块的VCC线拔下来一下,然后再插回去。这样再按一下START就会开始下载,最下面的进度条就会开始动,动完了以后你的固件就下载成功了。
这个时候不用担心,一般来说固件下载就搞定了,但是你还得验证一下它。
打开安信可的串口调试助手,界面如下:
在这里插入图片描述
在这里插入图片描述
利用串口发送数据,此处博主因为已经调试完毕,所以就没直接的发送数据界面了,但是连接串口以后,只要点击右上角的已经规定好的数据发送格式发送就可以了,有数据反馈回来就行了,比如AT+RST反馈回来ready就行,记住点一点运行模式,就可以得到了我们想要的结果。在这里固件和测试已经完成了。

2.创造阿里云的产品

当完成了固件的烧录以后,就得着手物联网平台了。这里贴一下阿里云的物联网平台地址
阿里云登录页
注册进去以后会出现这么一个画面(第一次注册可能不是这个样子,点击工作台就好了)
在这里插入图片描述
点击公共实例
在这里插入图片描述
点击设备管理中的产品,创建产品在这里插入图片描述
进入创建产品界面后,选择如下,当然也可以根据自己实际需求去搜,像温湿度采集单元都是已经集成好的
在这里插入图片描述
创建完产品以后选择设备,添加设备到我们刚创建的example产品下
在这里插入图片描述
点击确认以后,就会出现这么一个界面,先不用点击完成,先点击一键复制设备证书,这里面有我们设备的三元组信息,没有点击复制设备证书的也没事,等下在设备的界面也可以查看。
在这里插入图片描述
粘贴得到的结果如下:
在这里插入图片描述
目前设备处于未激活状态
在这里插入图片描述
这个时候我们先干一件事情,就是把我们的产品设置一些功能定义,用来发布信息到我们设置的功能上,具体先点击产品,查看我们所创建的产品,再点击功能定义就会进到一个界面里
在这里插入图片描述
点击编辑草稿,进入功能编辑页面
在这里插入图片描述
点击添加自定义功能
在这里插入图片描述
手动搜索温度,设置如图所示。记住,标识符很重要,通过32发信息上传到互联网上需要通过特定的语法去发送信息,而这个temp就是你所指定的信息发送对象,数据类型根据你要发的数据类型所设置
在这里插入图片描述
再以同样的方法添加湿度
在这里插入图片描述
定义好功能之后,就可以发布上线了,这样在设备里面就能看到你所定义的物模型数据
在这里插入图片描述
返回设备页面可清楚的看得物模型数据这里已出现温度和湿度两样,只不过由于还未激活,没有数据发送过来在这里插入图片描述

3.代码修改

第三步就是代码修改环节,总共有三个需要修改的地方,一步一步对照好,就不会出现问题
在这里插入图片描述
打开这个文件包里面的代码,需要修改的就三个地方,最上面stm32f10x_it.c的中断函数,以及mqtt.h文件中的三元组,还有wifi.h文件中的wifi名称及密码
在这里插入图片描述
mqtt.h需要更改的地方如下图所示,将我们所复制的三元组分别替换箭头处的定义,下面的TOPICname中的第二个和第三个也要替换成跟PRODUCTKEY和DEVICENAME相同。
在这里插入图片描述
不知道三元组的可以从自己的设备里面查看,将三元组复制代替替换以后如下图所示
复制以后如下图所示
在这里插入图片描述
接下来是wifi.h,将此处的SSID替换成你电脑所连的WIFI名称,PASS为WIFI密码(别来俺家蹭网(* ̄︶ ̄))
在这里插入图片描述
最后需要改写的就是stm32f103_it.c里面的中断函数,sprintf里面的shidu和xianshi_status为我上一个设备里面设定的功能定义名称,turang_shidu和xianshi_status是在单片机里面定义的全局变量,在此可替换成你想要传输的数据,如DHT11采集得到的温湿度数据。我们需要进行更改的就是params后面的shidu和xianshi_status两个东西
在这里插入图片描述
如图所示,改成跟我们之前功能定义里面相同的两个名称temp和humi
在这里插入图片描述
这样软件部分就完成了,下载程序进入单片机

4.最终的硬件连接及效果图

ATK-ESP8266的VCC建议接到单片机引脚的5V上(如果模块兼容5V的话,我3.3V好像有点问题)
ATK-ESP8266的TXD接到PA3
ATK-ESP8266的RXD接到PA2
ATK-ESP8266的RST接到PA4
GND接GND
在这里插入图片描述
下载程序后,目前物联网平台还没激活
在这里插入图片描述
此时按下单片机的复位键,等待一会儿,刷新一下设备的状态,即会显示在线
在这里插入图片描述
我们点击进去查看物模型数据,可见,我们所定义的数据已经传送到网站上,实际应用过程中只需将不断变化的变量按照赋值语句赋值就行了,数据就能不断变化,记得要勾选显示界面右边的实时刷新,这样才能收获一个实时的数据
在这里插入图片描述

在这里插入图片描述
可通过监控运维里面的日志观看自己的数据是否在刷新,记得产品要选你自己传输数据的产品,想看一次发送的日志就点击重置一下
在这里插入图片描述
至此,你的单片机就能够顺利连上阿里云啦

总结

本文只为了实现一个目的,就是让你快速连接上阿里云,将自己想要传输的数据传到阿里云上进行显示。阿里云还有很多功能,比如可以通过阿里云平台下发控制信息到单片机,从而实现某些功能,本质上就是利用MQTT协议进行消息的一个订阅和分发,在我的代码里面有关于下发信息的代码,但由于我本身所做的这个项目只需上传信息但没有下发信息,故未仔细进行调整。至于后面各位朋友如何去利用这个平台玩点花操作,就看大家自己的发挥了,希望大家顺利!!
资源的话点击我的主页查看资源哦,只需要几十个积分下载,里面包含固件和固件下载程序,以及串口下载助手及程序代码。方便的话也可以点点关注哦,在后面的日子我也会同步上传一些自己以前和现在正在做的开源项目,希望大家一起努力一起进步!

  • 20
    点赞
  • 195
    收藏
    觉得还不错? 一键收藏
  • 48
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值