9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

通过乐鑫原生 SDK-ESP IDF 连接 AWS IoT 平台

  • 2019-10-10
  • 本文字数:3199 字

    阅读完需:约 10 分钟

通过乐鑫原生 SDK-ESP IDF 连接 AWS IoT 平台

背景介绍

在智能家居,可穿戴设备,消费电子产品领域。越来越多的客户需要选择一款具有 Wi-Fi 功能的 MCU 或 SoC 通过连接到云平台对消息进行处理和设备交互与管理。设备如何安全的连接到云平台上是实现物联网的第一步,也是非常重要的一步。


这篇 Blog 主要介绍如何使用 ESP32-DevKit 结合乐鑫原生的 ESP-IDF SDK 快速安全的链接 AWS 物联网 (IoT) 应用。


AWS IoT 服务介绍


AWS IoT 是一种托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。AWS IoT 可以支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。


乐鑫 ESP32 介绍


ESP32 是一套 Wi-Fi (2.4 GHz) 和蓝牙 (4.2) 双模解决方案,集成了高性能的 CPU 内核、超低功耗协处理器和丰富的外设。ESP32 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用和不同功耗需求。

部署方法

1.AWS IoT 配置(证书,终端节点)


2.ESP-IDF 开发环境搭建


3.ESP32-DevKit USB to VCP Driver 驱动安装


4.配置和使用 ESP-IDF 创建一个 AWS IoT 项目


5.编译和烧录


6.AWS 平台消息测试

1. AWS IoT 配置

1.1 证书生成与下载


这一步骤就是在 AWS 创建一个 things,然后生成并下载证书。不再赘述:


具体参考https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/iot-console-signin.html,步骤从登录 AWS IoT 控制台到将证书附加到事物。


然后我们会有 4 个证书。设备证书,公钥,私钥,CA 证书(这里 CA 证书就是我们看到证书内容),对证书需要做以下操作:


  • CA 证书保存:

  • 将 CA 证书内容复制并保存为 aws-root-ca.pem 的文件。

  • 设备证书和私钥:

  • 将 XXXX-private.pem.key 重命名为 private.pem.key

  • 将 XXXX-certificate.pem.crt 重命名为 certificate.pem.crt


保存好这 3 个证书,后面我们在烧录固件之前会用到。


1.2 终端节点


终端节点用于设备端连接 AWS IoT 平台,请记录终端节点。在 AWS IoT 控制台的设置中找到。


2. ESP-IDF 开发环境搭建

我们下面开始 ESP-IDF 开发环境的搭建,需要准备如下:


  • 工具链:用于编译 ESP32 应用程序。

  • ESP-IDF:包含 ESP32 API 和用于操作工具链的脚本。

  • 编译器:编写 C 语言的程序。

  • ESP32 开发板

  • 2.1 Windows 安装工具链(Toolchain)

  • 下载 Toolchain for Windows,https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip将 zip 压缩文件解压到 C:\,它会使用预先准备的环境创建一个 msys32 目录。运行 C:\msys32\mingw32.exe 打开一个 MSYS2 的终端窗口。该窗口的环境是一个 bash shell。创建一个 esp 目录作为开发 ESP32 应用的默认地址,运行命令:


mkdir -p ~/esp
复制代码


2.2 为 ESP32 设置开发环境 ESP-IDF


先进入到 esp 目录下,然后通过 GitHub 获取,运行命令,大概 5 分钟左右(取决于你的网速),运行命令:


cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
复制代码


执行结果如图:



2.3 设置 ESP-IDF 环境变量(Windows)


工具链程序使用环境变量 IDF_PATH 来访问 ESP-IDF。将用户配置文件脚本存放在 C:/msys32/etc/profile.d/ 目录中。目的是每次打开 MSYS2 窗口时,系统都执行这些脚本。


  • 在 C:/msys32/etc/profile.d/ 目录下创建一个新的脚本文件。将其命名为 export_idf_path.sh。

  • 确定 ESP-IDF 目录的路径。路径与系统配置有关,例如 C:\msys32\home\user-name\esp\esp-idf。

  • 在脚本中文件 export_idf_path.sh 加入 export 命令,例如:


export IDF_PATH="C:/msys32/home/user-name/esp/esp-idf"
复制代码


这里注意的是,将原始 Windows 路径中将反斜杠替换为正斜杠。



保存脚本。关闭 MSYS2 窗口并再次打开。输入以下命令检查是否设置了 IDF_PATH:


printenv IDF_PATH
复制代码



2.4 安装 Python 依赖包


ESP-IDF 所依赖的 Python 软件包位于 $IDF_PATH/requirements.txt 文件中,您可以通过运行以下命令来安装它们:


python -m pip install --user -r $IDF_PATH/requirements.txt
复制代码

3. ESP32-DevKit USB to VCP Driver 驱动安装

在创建 AWS IoT 项目之前我们需要确认 ESP32 的 CP210X USB to VCP Driver 是否安装。如果没有,请安装:https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers,当然 你的 ESP32 也有可能是 CH340 或者其他 Driver,请自行安装驱动。安装成功后,我们将开发版的接入到计算机,通过设备管理器可以看到 COM3:


4. 配置和使用 ESP-IDF 创建一个 AWS IoT 项目,方法如下:

示例项目 aws_iot_demo


串口配置


endpoint 设置


WIFI 与 IoT Client ID 设置


4.1 复制 subscribe_publish 项目到 esp 目录并重命名为 aws_iot_demo,subscribe_publish 所在目录在:


C:\msys32\home\user-name\esp\esp-idf\examples\protocols\aws_iot\subscribe_publish


将 Esp32 连接电脑,回到 MSYS2 命令界面到 aws_iot_demo 目录下:


cd ~/esp/aws_iot_demo/
复制代码


输入命令进入配置界面:


make menuconfig
复制代码


PS:第一次运行需要反映 5-10 秒钟的时间,不要关闭命令窗口。



4.2 串口配置


在菜单中,进入 Serial flasher config > Default serial port 配置串口(工程将会加载到该串口上)。输入自己的串口名称并回车确认选择,选择 < Save > 保存配置,然后选择 < Exit > 退出应用程序。



比如我的是 COM3,就输入 COM3。


4.3 下一步我们来做 AWS IoT Endpoint Hostname 设置,


Componet config > Amazon Web Service IoT Platform >复制 aws iot endpoint 并保存(在步骤 1.2 保存的终端节点 URL)。



4.4 然后做 WIFI 与 IoT Client ID 的配置


在 Example Configuration 设置有效的 WiFi SSID,WiFi Password 与 AWS IoT Client ID。



保存并退出到命令界面后需要等待一下完成配置:


5. 编译和烧录:

在烧录程序之前将以下证书,private.pem.key,certificate.pem.crt,aws-root-ca.pem (步骤 1.1)复制到 C:\msys32\home\user-name\esp\aws_iot_demo\main\certs 中(替换掉已有的 aws-root-ca.pem)


cd 到 aws_iot_demo 的目录下运行,


make flash
复制代码


在界面上出现 Connecting…字样时候(ESP32 led 信号灯闪)按住 boot 或 FLASH 按钮(ESP 的开发板右下角有一个 BOOT 或 FLASH 的按键),等到出现烧录的时候就可以松开了.烧录成功后如图:



烧录成功后通过 make monitor 命令来查看 “aws_iot_demo” 程序是否真的在运行,并是否成功打印消息。比如建立握手和连接的过程以及消息的打印。


make monitor
复制代码


6. AWS 平台消息测试

回到 AWS IoT 的控制台中,选择测试,订阅主题:test_topic/esp32,控制台下方会显示 ESP32 发送过来的消息:



也可以推送一个消息到 ESP32,编辑或使用默认消息:



回到 MSYS2 命令窗口,会收到一个 message 为 Hello from AWS IoT console.


小结

在本篇博文中,着重介绍了如何通过 ESP 原生的软件开发环境 ESP-IDF 帮助用户快速开发物联网 (IoT) 应用。实现了基于 ESP32 的智能家居或智能设备连接到云平台的第一步。无论国内的用户还是海外的用户都可以通过上述的方法连接到 AWS 的 IoT 平台上。


AWS IoT 平台拥有着十分丰富的功能,比如对消息加工处理的规则引擎功能,比如与设备端集成的 Alexa 智能音箱为我们的智能设备赋能。还有 AWS IoT Device Management,您可以轻松安全地大规模载入、组织、监控和远程管理 IoT 设备等等。限于篇幅,我们会持续更新。


相关文章:


《ESP-IDF Programming Guide》https://docs.espressif.com/projects/esp-idf/en/latest/index.html


作者介绍:


李强


AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广,在物联网和微软的技术栈有着广泛的设计和实践经验。在加入 AWS 之前,曾在东芝中国负责系统开发和运维工作,在微软中国负责中小企业的技术咨询和方案设计工作。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/sdk-esp-idf-aws-iot-connection/


2019-10-10 14:201402
用户头像

发布了 1929 篇内容, 共 155.0 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

腾讯用数字孪生技术,帮这群中学生打造了第一款应用

科技热闻

汽车及汽车零部件行业云MES解决方案

万界星空科技

解决方案 MES系统 汽车

对线面试官 - TCP_IP四层网络模型经典连环问

派大星

TCP/IP Java 面试题

从生成式AI到合成式AI ,MarTech下一步如何进化

ToB行业头条

精准测试探索 | 京东云技术团队

京东科技开发者

测试 精准测试 代码覆盖率 企业号 8 月 PK 榜 静态链路

实践指南-前端性能提升 270% | 京东云技术团队

京东科技开发者

性能优化 前端 企业号 8 月 PK 榜

数据库运维是什么意思?主要工作包含哪些?

行云管家

数据库 数据库运维 IT运维

直播弹幕源码开发很难?一招教你解决

山东布谷网络科技

直播源码

BeanDefinition解密:构建和管理Spring Beans的基石

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

明道云联合EMQ基于IIoT场景技术白皮书

明道云

产品管理经验分享:删掉 500 个产品待办事项后,我逃离了「假敏捷」

LigaAI

产品经理 敏捷开发 需求管理 产品管理 企业号 8 月 PK 榜

亚马逊云科技助力涂鸦智能出海,家庭能源管理系统(HEMS)将成智能家居新沃土

Lily

银河麒麟高级操作系统V10助力联通云建设打出组合拳

openEuler

Linux 云原生 操作系统 中间件 openEuler

2023 Gartner RPA魔力象限报告解读:国产厂商“破纪录”跃升意味着什么?

王吉伟频道

RPA Gartner RPA魔力象限 超自动化 AI大语言模型

一篇让小孩都看的懂的ChatGPT原理解析

小宝

大模型 ChatGPT

《操作系统实战 45 讲》笔记1——引导部分

袁世超

操作系统 Cosmos LMOS

用户空间协议栈设计和netmap综合指南

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

TypeChat入门指南:从安装到对话流程设计

星辰编程理财

typescript typechat

小灯塔系列-中小企业数字化转型系列研究-BPM测评报告

向量智库

所谓的职场抗压,到底咋回事

老张

职场经验

打造自己的站长在线工具箱

echeverra

站长工具

那些把爱好当事业的人,最后怎么样了?

最新动态

软件测试 | Object类-接收任意引用类型的对象

测吧(北京)科技有限公司

测试

第五期(2022-2023)传统行业云原生技术落地调研报告——央国企篇

York

容器 云原生 IT 平台工程 央国企数字化转型

岳阳等保测评机构有几家?在哪里?电话是多少?

行云管家

等级保护 等保测评 岳阳

柏睿数据再度入选Gartner《中国数据库管理系统市场指南》代表厂商

新消费日报

聚焦Web前端安全:最新揭秘漏洞防御方法 | 京东云技术团队

京东科技开发者

WEB安全 漏洞 前端安全 企业号 8 月 PK 榜 XXS

小灯塔系列-中小企业数字化转型系列研究——费控测评报告

向量智库

基于SDK方式的小程序监控

郑州埃文科技

网络性能

SaaS,PaaS和IaaS:有什么区别,应该使用哪个?

2D3D前端可视化开发

云计算 可视化 IaaS PaaS SaaS

vivo 场景下的 H5无障碍适配实践

vivo互联网技术

前端 H5 移动端适配 无障碍适配 体验提升

通过乐鑫原生 SDK-ESP IDF 连接 AWS IoT 平台_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章