ESP对接阿里云物联网平台

一、前言

该教程介绍了三种esp系列模组对接Aliyun平台的使用方法,可根据您现有的模组进行选择:
1、 适用于ESP-IDFv4.4环境,支持模组型号:ESP32、ESP32-S2、ESP32-S3、ESP32-C3。
2、 适用于ESP-IDFv5.0环境,支持模组型号:ESP32、ESP32-S2、ESP32-S3、ESP32-C3、ESP32-C2。
3、 适用于ESP8266系列模组,支持模组型号:ESP8266。

二、 适用于ESP-IDFv4.4环境

1、教程说明

该教程主要使用“esp-aliyun”中的“mqtt_example”工程去实现与阿里云的对接,大致逻辑为:在“mqtt_example”工程中将需要修改的参数进行重新配置,然后将配置后的工程烧录进开发板;随后再进行证书的配置,根据配置好证书的文件再生成.bin文件,再次烧录进开发板,以对接阿里云平台;
需要注意的是此教程涉及到两次烧录过程,先烧录“mqtt_example”工程,再烧录配置文件生成的.bin文件。

2、环境

(1) IDF版本:ESP-IDFv4.4.3
(2) esp-aliyun版本:https://github.com/espressif/esp-aliyun.git
(3) 操作系统:WSL1、Ubuntu20.04
(4) 编辑编译工具:VSCode命令行
(5) 开发板:ESP32-WROOM-32D
(6) 开发板供电:USB

3、获取阿里云SDK与工程配置

(1) 下载阿里云SDK:git clone https://github.com/espressif/esp-aliyun.git
在这里插入图片描述
(2) 以esp-aliyun\examples\mqtt\mqtt_example为例 以下命令必须使用自己的路径
cd esp-aliyun\examples\mqtt\mqtt_example
在这里插入图片描述
(3) 设置目标芯片为esp32(C3、S2、S3均可选择)这里以esp32为例
idf.py set-target esp32
在这里插入图片描述
(4) 芯片配置
idf.py menuconfig
需要配置的有:WIFI_SSID, WIFI_PASSWORD、Serial flasher config、Partition Table

  • WIFI_SSID, WIFI_PASSWORD:idf.py menuconfig-> Example Configuration
    将图中的WiFi SSID和WIFI Password修改为自己的WiFi账号
    在这里插入图片描述
  • Serial flasher config:idf.py menuconfig->Serial flasher config
    将Flash size改为4MB
    在这里插入图片描述
  • Partition Table:idf.py menuconfig-> Partition Table
    选择为指定分区表:
    在这里插入图片描述
    并将分区表的名字选择为main函数中的partitions_esp32.csv:
    在这里插入图片描述

4、获取阿里云三元组

(1) 登录阿里云,前往物联网平台创建产品以及产品下的设备,获取到它的四个参数,创建产品设备参考链接:https://blog.csdn.net/qq_49864684/article/details/117114384

在这里插入图片描述
此处默认选择为一机一密烧录方式,如果需要一型一密烧录方式,可参考如下截屏:
在这里插入图片描述
(2) 生成bin文件:

  1. mass_mfg目录下有一个参考配置:single_mfg_config.csv,请复制自己的配置文件,例如:my_single_mfg_config.csv。
    (mass_mfg的位置:/esp-aliyun/config/mass_mfg
    在这里插入图片描述

  2. 复制一份自己的配置文件:cp single_mfg_config.csv my_single_mfg_config.csv
    在这里插入图片描述

  3. 用VSCode打开这个配置文件,使用自己的ProductKey、ProductSecret、DeviceName、DeviceSecret对my_single_mfg_config.csv进行修改:
    在这里插入图片描述
    config ,dsj3RuY74pgCBJ3zczKz1LaLK7RGApqh ,a10BnLLzGv4 ,pVfLpS1u3A9JM0go 修改为自己的阿里云设备三元组和ProductSecret参数,如下图所示:
    在这里插入图片描述
    一切准备工作完成,开始生成bin文件
    使用乐鑫官方工具生成bin文件:/esp-idf/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate ./my_single_mfg_config.csv ./my_single_mfg.bin 0x4000
    在这里插入图片描述
    此处打码的路径应选择你自己的,总之要使用到 “nvs_partition_gen.py generate” 这个工具才能生成bin文件。

5、编译和下载

(1) 回到刚刚的工程目录下: cd \esp-aliyun\examples\mqtt\mqtt_example
在这里插入图片描述
编译好了之后要先下载一遍程序:idf.py -p /dev/ttyS12 flash (需把/dev/ttyS12换成自己的端口号)
在这里插入图片描述(2) 下载好程序(2)下载好程序后把刚刚生成的固件再烧录进开发板:
4. 通过VSCode将.bin文件取出:
在这里插入图片描述
在这里插入图片描述
将bin文件放至桌面,使用flash download工具下载至开发板 (下载地址为0x210000)
在这里插入图片描述
下载完成之后,打开串口调试助手和阿里云平台,以确认阿里云是否对接成功:

6、根据提示,阿里云对接成功

在这里插入图片描述
在这里插入图片描述

三、适用于ESP-IDFv5.0环境

1、 环境

(1) IDF版本:ESP-IDFv5.0

(2) 使用工程:/esp-idf/examples/protocols/mqtt/ws/

(3) 操作系统:WSL1、Ubuntu20.04

(4) 编辑编译工具:VSCode命令行

(5) 开发板:ESP32-C2

(6) 开发板供电:USB

2、工程准备

(1)进入需要使用的工程:
cd ~/esp-idf/ examples/protocols/mqtt/ws/ (路径以你的idf版本为准,需要进入到“ws”这个工程)
在这里插入图片描述
(2) 设置目标芯片为esp32-c2(可选除esp8266外的所有模组)
在这里插入图片描述
(3) 芯片配置:idf.py menuconfig

需要配置的有: WIFI_SSID, WIFI_PASSWORD

  • WIFI_SSID, WIFI_PASSWORD: idf.py menuconfig-> Example Connection Configuration
    将图中的WiFi SSID和WIFI Password修改为自己的WiFi账号
    在这里插入图片描述(4)使用VScode打开“ws”工程
    在这里插入图片描述
    在这里插入图片描述

3、 获取阿里云mqtt连接参数

(1) 我们需要在阿里云中创建一个产品,随后在产品中获取到设备的mqtt连接参数,可将下面的链接复制到浏览器打开查看详情:https://blog.csdn.net/qq_49864684/article/details/117114384
(2) 在创建产品下的设备中获取到mqtt连接参数:
在这里插入图片描述
在这里插入图片描述

4、 编译和下载

(1) 回到刚刚用VScode打开的工程,找到“mqtt_app_start”函数,将获取到的mqtt连接参数对应填上即可:
在这里插入图片描述需要注意的是在填写mqttHostUrl和port时,需要如上图中的处理方式
(2) 确认填写正确后,开始编译和下载
(3) 打开串口调试助手,确定是否正常连接

5、 根据提示,阿里云对接成功

在这里插入图片描述
在这里插入图片描述

四、 适用于ESP8266系列模组

1、教程说明

由于ESP8266与上述的环境不搭配,所以本章教程仅适用于ESP8266对接阿里云;本章主要内容为:搭建适用于ESP8266的AT环境,在menuconfig中修改给mqtt分配的堆栈大小,将AT固件取出烧录进ESP8266开发板(模组),然后再输入相应的AT指令,使其对接阿里云平台。

在使用该教程时,需要先搭建一个AT环境, 参考地址:https://docs.espressif.com/projects/esp-at/zh_CN/release-v2.2.0.0_esp8266/Compile_and_Develop/How_to_clone_project_and_compile_it.html(将此连接复制到浏览器打开即可)

问: 为什么不直接使用官方AT固件,而需要搭建一个AT环境?
答: 因为官方AT固件给mqtt分配的堆栈大小不足,使用官方固件对接阿里云时会出现对接过程中堆栈溢出,从而导致开发板(模组)重启。)

2、环境

(1) ESP-AT版本:release/v2.2.0.0_esp8266

(2) AT版本:https://github.com/espressif/esp-at.git

(3) 操作系统:WSL1、Ubuntu20.04

(4) 编辑编译工具:VSCode命令行

(5) 开发板:ESP8266

(6) 开发板供电:USB

3、 工程准备

(1) 将AT环境搭建成功后,需要先使用脚本下载esp-at所需要的工具:

  • cd ~/esp-at/esp-idf
    ./install.sh
    在这里插入图片描述

(2) 下载完成后,再使用. ./export.sh激活环境。

(3) 随后回到“esp-at”目录,输入./build.py menuconfig,分别选择2、1、0。
在这里插入图片描述
在这里插入图片描述
(4) 修改mqtt的堆栈大小:Component config ->ESP-MQTT Configurations -> 将(2048) MQTT task stack size修改为 (4096) MQTT task stack size
在这里插入图片描述
(5) 保存退出后,对该工程进行编译:./build.py build
在这里插入图片描述
(6) 编译完成,将工程烧录进开发板: ./build.py -p/dev/ttyS3 flash(以串口号为COM3为例,需以自己的COM口为准)
在这里插入图片描述
(7) 烧录完成,根据官方资料得知ESP8266模组AT指令相应口为GPIO12和GPIO15,使用串口烧录器将对应的GPIO口反接后,即可开始进行调试
在这里插入图片描述
(8) 输入AT,返回OK时,即可开始对接mqtt(输入AT时,需要添加换行符\r\n)
在这里插入图片描述

4、 获取阿里云mqtt连接参数

(1) 我们需要在阿里云中创建一个产品,随后在产品中获取到设备的mqtt连接参数,可将下面的链接复制到浏览器打开查看详情:https://blog.csdn.net/qq_49864684/article/details/117114384

(2)在创建产品下的设备中获取到mqtt连接参数:
在这里插入图片描述
在这里插入图片描述

5、连接阿里云

  1. 设置WiFi模式为station:
    AT+CWMODE=1

  2. 连接AP:
    AT+CWJAP=“WT”,“0987654321”

  3. 配置参数:
    AT+CIPSNTPCFG=1,8,“ntp1.aliyun.com”

  4. 设置阿里云上mqtt参数中的“username”和“passwd”:
    AT+MQTTUSERCFG=0,1,“”,“kmJ8ABQN8U4NrOfGQtw9&i0uaa9euzCF”,“93385d703ab9efd2b2ca899a49ee60e0f97e05250706b8fdc9c7ed8c580437f8”,0,0,“”

  5. 设置阿里云上mqtt参数中的clientld:
    AT+MQTTLONGCLIENTID=0,92
    i0uaa9euzCF.kmJ8ABQN8U4NrOfGQtw9|securemode=2,signmethod=hmacsha256,timestamp=1681891166600|

  6. 设置阿里云上mqtt参数中的mqttHosturl和prot,连接阿里云:
    AT+MQTTCONN=0,“iot-06z00eytimhlzdy.mqtt.iothub.aliyuncs.com”,1883,0

6、 根据提示,阿里云对接成功

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值