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.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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、 根据提示,阿里云对接成功

在这里插入图片描述

<think>好的,用户需要寻找与Linux、Android和ESP-IDF相关的开发资料或教程。首先,我要根据用户提供的引用内容来寻找相关的资源。用户提到了ESP-IDF的开发环境搭建、MQTT连接AWS云的例子,以及Android中使用Paho库的MQTT客户端示例。 首先,针对ESP-IDF部分,引用1和引用3提到了ESP32-S2/S3模组和开发板的使用,还有USB连接的引脚配置。用户可能对ESP-IDF的基础教程和具体例程感兴趣,比如显示字符串、编译流程等。引用2中的MQTT连接AWS云的例子也是一个关键点,需要推荐相关的代码仓库或教程。 然后是Linux方面,用户可能想要嵌入式Linux开发的内容,比如驱动开发、系统移植或应用开发。需要推荐一些权威的资源,比如Linux内核文档、嵌入式Linux Wiki,以及Yocto项目等工具。 对于Android部分,引用4提到了使用Paho库实现MQTT客户端,这可能涉及到Android应用开发与物联网设备的通信。需要推荐Android官方文档、MQTT客户端示例库,以及结合ESP32与Android的教程,比如蓝牙或Wi-Fi通信的例程。 接下来要确保推荐的资源涵盖这三个方面,并且每个部分都有具体的示例代码或教程链接。同时,用户可能需要一些综合项目,将Linux、Android和ESP-IDF结合起来,比如智能家居系统,这需要整合嵌入式设备、移动应用和服务器通信。需要查找是否有开源项目或教程涵盖这些技术栈。 还要注意检查提供的引用链接是否有效,比如GitHub仓库是否存在,教程是否更新。比如引用4中的MQTT-Client-Examples仓库,需要确认是否有Android和ESP-IDF的示例。同时,用户可能对AWS IoT Core或EMQX的集成感兴趣,需要推荐相关文档。 最后,组织回答的结构,分点列出每个领域的资源,并附上相关引用和链接,确保用户能够找到所需的资料。同时,生成相关问题,帮助用户深入探索每个领域的具体应用或高级主题。</think>### Linux、Android与ESP-IDF开发资源推荐 #### 一、ESP-IDF开发 1. **ESP-IDF官方文档** ESP-IDF是乐鑫官方物联网开发框架,支持ESP32/ESP32-S系列芯片。文档包含环境搭建、API参考、示例代码等。 - 关键内容:环境配置(如引用[1]提到的编译流程)、外设驱动(如引用[3]的USB引脚配置)、Wi-Fi/BLE协议栈 - 示例代码: ```c // 示例:ESP-IDF中MQTT连接AWS云(引用[2]) esp_mqtt_client_config_t mqtt_cfg = { .uri = "mqtts://your-aws-endpoint", .cert_pem = (const char *)aws_root_ca_pem, }; esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg); ``` - 资源链接:[ESP-IDF官方GitHub](https://github.com/espressif/esp-idf) 2. **MQTT与云端连接** - **AWS IoT集成**:参考引用[2]的ESP32连接AWS云示例,需配置证书和策略文件,代码仓库见[EMQX MQTT示例库](https://github.com/emqx/MQTT-Client-Examples)(引用[4])。 - **本地代理**:可使用EMQX或Mosquitto搭建私有MQTT服务器。 --- #### 二、Linux嵌入式开发 1. **Linux驱动与系统移植** - 推荐资源: - 《Linux设备驱动程序》(书籍):涵盖字符设备、GPIO控制等。 - [Linux内核文档](https://www.kernel.org/doc/html/latest/):包含设备树(Device Tree)配置、内核模块开发。 - 示例:通过GPIO控制外部传感器(类似引用[3]的USB引脚映射)。 2. **嵌入式Linux工具链** - **Yocto项目**:用于构建定制化Linux镜像,支持ARM/X86架构。 - **Buildroot**:快速生成轻量级Linux系统,适合资源受限设备。 --- #### 三、Android开发与物联网集成 1. **Android与MQTT通信** - **Paho Android库**(引用[4]):实现设备与手机端数据同步,示例代码: ```java // MQTT连接配置 MqttAndroidClient client = new MqttAndroidClient(context, "tcp://broker.emqx.io:1883", "android-client"); IMqttToken token = client.connect(); ``` - 教程:[Eclipse Paho Android文档](https://github.com/eclipse/paho.mqtt.android) 2. **Android与ESP32交互** - **蓝牙通信**:通过BLE协议传输传感器数据,参考[ESP-IDF蓝牙例程](https://github.com/espressif/esp-idf/tree/master/examples/bluetooth)。 - **Wi-Fi直连**:基于Socket实现Android与ESP32的直接通信。 --- #### 四、综合项目参考 1. **智能家居系统** - 技术栈:ESP32(传感器控制)+ Linux网关(数据处理)+ Android App(用户交互)。 - 开源项目:[Home Assistant](https://www.home-assistant.io/)(支持ESP-IDF设备集成)。 2. **工业监控系统** - 实现方式:ESP32采集数据 → MQTT发送至Linux服务器 → Android端实时显示。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值