前言

本教程适合第一次玩阿里云的小伙伴,当然需要一定的C语言基础+库函数的调试经验,所有例程都是库函数。另外,本教程是基于本人的调试过程,参考了很多大佬的调试经验,如OnePiece&。很多东西,比如MQTT协议我也只是懂一部分,但是关于MQTT协议在代码中的实现,本教程可以以简单明了的方式教会你只需要改几个特定的参数就能实现与任何你新创建的简单产品的互联。

硬件设备

所用到的硬件设备

  • 正点原子的ATK-ESP8266,这个淘宝上很多店都可以买到
  • 单片机推荐使用STM32F103RCT6,当然也可以兼容STM32F103C8T6,关于物联网这一块的代码完全兼容C8T6,只是有部分代码我是用来做控制如OLED,BEEP,红外和超声波,这个后面程序介绍里面会讲解一下。
  • 普通的USB-TTL的烧录模块

以上就是所需要的所有硬件,另加杜邦线几根即可

调试步骤

固件的烧录

首先明确一点,我从正点原子的官方技术确认过,一般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指令的固件,也可以自己去主流一些连阿里云的商家官网看,如安信可等等,上面有相对应的固件,正点原子官方也提供了固件,但是我没用过,不知道对不对。

我所用的固件如下:

image-20250211165205986

我所使用的固件下载软件如下:

image-20250211165247101

解压后进去双击exe文件,等待自动加载

image-20250211165336204

会出现这么一个界面,选择第一个就行(ESP8266 DownloadTool)

image-20250211165357605

点击进去会出现这么一个画面,你只要把界面弄的跟我一致就行,第一个带感叹号的那里把刚刚截图中的bin文件加载进去,然后@里面填0x00000,下面的选项一致即可

image-20250211165604328

点击下面的START按钮,当你按下START按钮以后,原本绿色带有IDLE等待的按钮会显示等待上电复位,这个时候你需要自己手动把ESP8266模块的VCC线拔下来一下,然后再插回去。这样再按一下START就会开始下载,最下面的进度条就会开始动,动完了以后你的固件就下载成功了。

这个时候不用担心,一般来说固件下载就搞定了,但是你还得验证一下它。

打开安信可的串口调试助手,界面如下:

image-20250211165655415

利用串口发送数据,此处博主因为已经调试完毕,所以就没直接的发送数据界面了,但是连接串口以后,只要点击右上角的已经规定好的数据发送格式发送就可以了,有数据反馈回来就行了,比如AT+RST反馈回来ready就行,记住点一点运行模式,就可以得到了我们想要的结果。在这里固件和测试已经完成了。

创造阿里云的产品

当完成了固件的烧录以后,就得着手物联网平台了。这里贴一下阿里云的物联网平台地址

https://account.aliyun.com/login/login.htm?oauth_callback=https://iot.console.aliyun.com/lk/summary/new&lang=zh

注册进去以后会出现这么一个画面(第一次注册可能不是这个样子,点击工作台就好了)

image-20250211165938646

点击公共实例

image-20250211170029080

点击设备管理中的产品,创建产品

image-20250211170109737

进入创建产品界面后,选择如下,当然也可以根据自己实际需求去搜,像温湿度采集单元都是已经集成好的

image-20250211170213265

创建完产品以后选择设备,添加设备到我们刚创建的example产品下image-20250211170308532

点击确认以后,就会出现这么一个界面,先不用点击完成,先点击一键复制设备证书,这里面有我们设备的三元组信息,没有点击复制设备证书的也没事,等下在设备的界面也可以查看。image-20250211170338041

粘贴得到的结果如下:

image-20250211170358788

目前设备处于未激活状态

image-20250211170428669

这个时候我们先干一件事情,就是把我们的产品设置一些功能定义,用来发布信息到我们设置的功能上,具体先点击产品,查看我们所创建的产品,再点击功能定义就会进到一个界面里image-20250211170511646

点击编辑草稿,进入功能编辑页面

image-20250211170537270

点击添加自定义功能

image-20250211170556937

手动搜索温度,设置如图所示。记住,标识符很重要,通过32发信息上传到互联网上需要通过特定的语法去发送信息,而这个temp就是你所指定的信息发送对象,数据类型根据你要发的数据类型所设置

image-20250211170830293

再以同样的方法添加湿度

image-20250211170900008

定义好功能之后,就可以发布上线了,这样在设备里面就能看到你所定义的物模型数据

image-20250211171043349

返回设备页面可清楚的看得物模型数据这里已出现温度和湿度两样,只不过由于还未激活,没有数据发送过来

image-20250211171115911

代码修改

第三步就是代码修改环节,总共有三个需要修改的地方,一步一步对照好,就不会出现问题

image-20250211171755728

打开这个文件包里面的代码,需要修改的就三个地方,最上面stm32f10x_it.c的中断函数,以及mqtt.h文件中的三元组,还有wifi.h文件中的wifi名称及密码

image-20250211171830366

mqtt.h需要更改的地方如下图所示,将我们所复制的三元组分别替换箭头处的定义,下面的TOPICname中的第二个和第三个也要替换成跟PRODUCTKEY和DEVICENAME相同。

image-20250211171913773

不知道三元组的可以从自己的设备里面查看,将三元组复制代替

image-20250211171930151

复制以后如下图所示

image-20250211172048399

接下来是wifi.h,将此处的SSID替换成你电脑所连的WIFI名称,PASS为WIFI密码(别来俺家蹭网(* ̄︶ ̄))

image-20250211172152810

最后需要改写的就是stm32f103_it.c里面的中断函数,sprintf里面的shidu和xianshi_status为我上一个设备里面设定的功能定义名称,turang_shidu和xianshi_status是在单片机里面定义的全局变量,在此可替换成你想要传输的数据,如DHT11采集得到的温湿度数据。我们需要进行更改的就是params后面的shidu和xianshi_status两个东西

image-20250211172218480

如图所示,改成跟我们之前功能定义里面相同的两个名称temp和humi

image-20250211172253472

这样软件部分就完成了,下载程序进入单片机

最终的硬件连接及效果图

ATK-ESP8266的VCC建议接到单片机引脚的5V上(如果模块兼容5V的话,我3.3V好像有点问题)
ATK-ESP8266的TXD接到PA3
ATK-ESP8266的RXD接到PA2
ATK-ESP8266的RST接到PA4
GND接GND

image-20250211172402590

下载程序后,目前物联网平台还没激活

image-20250211172429854

此时按下单片机的复位键,等待一会儿,刷新一下设备的状态,即会显示在线

image-20250211172450352

我们点击进去查看物模型数据,可见,我们所定义的数据已经传送到网站上,实际应用过程中只需将不断变化的变量按照赋值语句赋值就行了,数据就能不断变化,记得要勾选显示界面右边的实时刷新,这样才能收获一个实时的数据

image-20250211172514563

image-20250211172549607

可通过监控运维里面的日志观看自己的数据是否在刷新,记得产品要选你自己传输数据的产品,想看一次发送的日志就点击重置一下

image-20250211172613059

至此,你的单片机就能够顺利连上阿里云啦

总结

本文只为了实现一个目的,就是让你快速连接上阿里云,将自己想要传输的数据传到阿里云上进行显示。阿里云还有很多功能,比如可以通过阿里云平台下发控制信息到单片机,从而实现某些功能,本质上就是利用MQTT协议进行消息的一个订阅和分发,在我的代码里面有关于下发信息的代码,但由于我本身所做的这个项目只需上传信息但没有下发信息,故未仔细进行调整。至于后面各位朋友如何去利用这个平台玩点花操作,就看大家自己的发挥了,希望大家顺利!!

链接如下,大家自行取用。

通过网盘分享的文件:post1资料合集
链接: https://pan.baidu.com/s/1fFpYjJ2Z9ifmyFE8SLvD6Q 提取码: ym7c
–来自百度网盘超级会员v6的分享