来QCon北京,现场感受“纯血鸿蒙”的魅力!席位有限,抓紧报名 了解详情
写点什么

通过乐鑫原生 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:20845
用户头像

发布了 1830 篇内容, 共 90.8 次阅读, 收获喜欢 73 次。

关注

评论

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

助力前端开发的 5 个实用网站

开源之巅

前端 提升能力

几个超火的编程网站,别错过!

程序员鱼皮

CSS JavaScript html 前端 后端

从0到1带你深入理解log4j2漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

Java&Go三种HTTP服务端端性能测试

FunTester

性能测试 Fasthttp 测试框架 FunTester HTTP服务

敏捷、协作与研发管理

LigaAI

敏捷 研发效能 SaaS 内容合集 技术专题合集

前端规范落地,团队级的解决方案

德育处主任

前端 代码规范 规范 eslint git规范

openEuler高琨:积极推动开源合规 助力供应链安全

科技热闻

首颗云原生边缘计算卫星升空,与KubeEdge一起探索“智慧太空”

科技热闻

第一财经年终总结

石云升

读书笔记 28天写作 12月日更

为什么?为什么要先问目的?(27/28)

赵新龙

28天写作

为什么很难得出结论

将军-技术演讲力教练

语音信号的频域分析

轻口味

28天写作 12月日更

ShardingSphere Mode 模式新起航:运行模式详解

SphereEx

开源 ShardingSphere SphereEx 运行模式 分布式治理

物联网资产管理系统解决方案

低代码小观

物联网 资产管理 CRM 企业管理系统 CRM系统

HarmonyOS(鸿蒙)——滑动事件之上下左右滑动

李子捌

28天写作 21天挑战 鸿蒙开发 12月日更

百度智能云 AI 公有云服务市场,连续五次第一!

百度大脑

人工智能

接口文档Swagger接入统一授权中心IdentityServer4

为自己带盐

swagger dotnet 28天写作 12月日更

蚂蚁自研移动端 xNN-OCR 技术演进与能力开放

阿里巴巴终端技术

OCR 移动端 端智能

Spring Boot 最核心的 25 个注解,都是干货!

CRMEB

57 K8S之自动弹性缩放

穿过生命散发芬芳

k8s 28天写作 12月日更

性能工具之15个常用的Linux文件系统命令

zuozewei

Linux Shell 12月日更

淘特 Flutter 流畅度优化实践

阿里巴巴终端技术

flutter 移动端 flutter 调试工具

低成本、低功耗、小体积433MHz数字量无线控制器

不脱发的程序猿

DIY 无线通信 智能硬件 创客开发

新一代人工智能院士高峰论坛-视觉预训练大模型及其在智慧城市中的应用分论坛顺利举办

OpenI启智社区

人工智能 智慧城市 预训练大模型

Rainbond通过插件整合ELK/EFK,实现日志收集

北京好雨科技有限公司

Kubernetes PaaS ELK Stack rainbond

龙蜥操作系统通过工信部电子标准院首批开源项目成熟度评估

OpenAnolis小助手

国产操作系统 龙蜥社区

绩效评估的why&how

mtfelix

28天写作

ClickHouse 存算分离架构探索

Juicedata

hdfs Clickhouse 分布式文件系统 云储存

从元宇宙到平行员工,人工世界推动的虚实分工利好RPA

王吉伟频道

RPA 机器人流程自动化 元宇宙 人机协作 虚实分工

从产品角度探索采控的快速交付

鲸品堂

交付工具

都在说边缘计算,它到底是用来干啥的?

火山引擎边缘云

云计算 边缘计算 虚拟化 算力

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