ESP32连接阿里云MQTT

ESP32连接阿里云的gayhub链接
ESP32官网文档:可下载开发文档

文章目录

一、ESP32介绍

首先ESP32有辣么辣么多的优点:性能稳定,工作温度宽,电压自平衡;高集成度,将辣么多无线组件往身上放;超低功耗,陪你到天荒地老;wifi&蓝牙两位大佬一起陪你嗨,还有各种外设小姐姐任你挑选!!ESP32连接阿里云MQTT

二、搭建ESP32开发环境

附上ESP-IDF编程指南,里面详细讲解了如何构建开发环境,我就不赘述了。值得一提的是,在Windows下程序的编译是真滴慢(想要提升速度的话可以在编译时这样写 make -jN,N是你CPU核数),推荐Linux环境啦,但我不怎么用Linux所以就当是喝茶时间吧~
它默认用的IDE是mingw32.exe,当然习惯用vscode的也可以在它里面嵌入mingw32.exe的终端啦。具体操作步骤如下:

(一)、调出终端

File->Preferences->Settings->Features->Terminal然后点击Edit in settings.json,在它里面进行编辑。
ESP32连接阿里云MQTT

然后将对应位置的路径编辑成你msys2_shell.cmd的路径即可,最后按下Ctrl+`即可调出终端!
ESP32连接阿里云MQTT

还是不懂的话可以看第三章 Windows搭建ESP32开发环境(vscode)

(二)、代码补全

接下来是vscode的代码补全功能啦,按下键盘shift+ctrl+P点击Edit Configurations(JSON)配置路径。
ESP32连接阿里云MQTT

下面是我的配置,includePath用于编译,browse的路径用于代码补全。你们copy的时候记得将没有的路径去掉哦,还有将路径换成你自己的。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceRoot}",
                "D:/msys32/home/Administrator/esp/esp-idf/components",
                "D:/msys32/home/Administrator/esp/esp-idf/components/newlib/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/esp32/include",
                "${workspaceFolder}/components/user_driver/include",
                "C:/Program Files/Espressif/ESP-IDF Tools/toolchain/lib/gcc/xtensa-esp32-elf/5.2.0/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/driver/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/soc/esp32/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/freertos/include",
                "${workspaceFolder}/build/config",
                "D:/msys32/home/Administrator/esp/esp-idf/components/log/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/heap/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/soc/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/spi_flash/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/tcpip_adapter/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/lwip/include/lwip",
                "D:/msys32/home/Administrator/esp/esp-idf/components/lwip/include/lwip/port",
                "D:/msys32/home/Administrator/esp/esp-idf/components/vfs/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/nvs_flash/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/newlib/platform_include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/mbedtls/mbedtls/include",
                "D:/msys32/home/Administrator/esp/esp-idf/components/json/cJSON",
                "D:/msys32/home/Administrator/esp/esp-idf/components/wpa_supplicant/port/include",
                "D:/msys32/home/Administrator/esp/esp-aliyun/iotkit-embedded/**"
            ],
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": "",
                "path": [
                    "${workspaceRoot}",
                    "D:/msys32/home/Administrator/esp/esp-idf/components",    
                    "C:/Program Files/Espressif/ESP-IDF Tools/toolchain",
                    "D:/msys32/home/Administrator/esp/esp-aliyun/iotkit-embedded",
                    "D:/msys32/home/Administrator/esp/esp-aliyun/conn_mgr"
                ]
            },
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.16299.0",
            "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx64/x64/cl.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64"
        }
    ],
    "version": 4
}

之后你就可以愉快地进行开发啦!
ESP32连接阿里云MQTT

三、ESP32接入阿里云

下载完espressif的aliyun程序后,进入…\esp\esp-aliyun\examples\mqtt\mqtt_example,这是关于mqtt的例程,其实这部分接入的教程ESP32的readme已经写得很清楚了,我只讲一些细节好了。

(一)、编译项目

如果此时你已经将includePath的路径填充进去了,就可以开始编译。

在终端中输入make -j8进行代码编译,这个过程会很漫长,准备好小板凳看会电影或者喝几壶茶吧。

(二)、配置项目

编译成功后输入make menuconfig进行配置(如果编译失败就看下是什么头文件路径缺失了),界面如下,我们要配置wifi、烧写程序的端口和其他配置。当然想偷懒的话可以直接在sdkconfig.h里修改对应内容,代码如下,当然最好还是到menuconfig里面配置啦。

#define CONFIG_PARTITION_TABLE_FILENAME "partitions_esp32.csv"
#define CONFIG_PARTITION_TABLE_CUSTOM_FILENAME "partitions_esp32.csv"
#define CONFIG_IDF_TARGET "esp32"

#define CONFIG_WIFI_SSID "seanOY"
#define CONFIG_WIFI_PASSWORD "A614A614"

#define CONFIG_ESPTOOLPY_PORT "COM13"
#define CONFIG_MONITOR_BAUD_OTHER_VAL 115200
  • menuconfig界面
    ESP32连接阿里云MQTT

  • 串口配置
    ESP32连接阿里云MQTT

  • WIFI配置
    ESP32连接阿里云MQTT

  • CSV分区配置,方便用于后面修改配置物联网产品设备四组数
    ESP32连接阿里云MQTT

(三)、烧录程序

输入make flash,当弹出等待连接时按下ESP32上的boot键几秒松开即可开始烧录程序

(四)、配置四组数

接下来按照README.md里的操作将四组数烧录到你的ESP32。
如果你已经在阿里云物联网平台注册了你的产品(product)和设备(device)后获得四组数,分别是
DeviceName、DeviceSecret、ProductKey、ProductSecret。
然后进入…\esp\esp-aliyun\config\mass_mfg里拷贝single_mfg_config.csv到你的项目并填充你的四组数,更名为my_single_mfg_config.csv。

通过使用如下命令生成对应的 NVS 分区:

$IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py --input my_single_mfg_config.csv --output my_single_mfg.bin --size 0x4000

然后将其烧录到你的设备

$IDF_PATH/components/esptool_py/esptool/esptool.py write_flash 0x210000 my_single_mfg.bin

值得注意的是,如果你之前没有在menuconfig里面修改partition_esp32.csv会出现如下错误(我之前就遇到了)
ESP32连接阿里云MQTT

(五)、完成

输入make monitor打开监视器,如果出现如下信息则代表你成功啦!
ESP32连接阿里云MQTT

进入阿里云物联网平台发现设备上线,然后就开始尽情开发吧!
ESP32连接阿里云MQTT

四、其他make指令

在终端输入make help即可调出所有指令啦。
ESP32连接阿里云MQTT

上一篇:PipeCAD 简介


下一篇:搭建ESP-IDF生产环境