AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

开源软件:释放创新的力量,改变数字世界的游戏规则

SEAL安全

开源软件 企业号10月PK榜

设备组件文件转换为EVE-NG环境的支持组件怎么操作呢

小魏写代码

一个平台搞定数据治理,让数据资产发挥价值

袋鼠云数栈

大数据 数据中台 数据治理 数据资产

软件测试|测试开发之路--UI 自动化常用设计模式

霍格沃兹测试开发学社

Infuse 7 Pro for Mac音视频播放器

展初云

播放器 Mac软件 Infuse

Amazon Lightsail 宣布为域注册和 DNS 自动配置提供支持

亚马逊云科技 (Amazon Web Services)

DNS cli VPS Amazon Lightsail Amazon Route 53

东莞理工学院第四届“火焰杯”软件测试高校就业选拔赛颁奖典礼

测试人

软件测试

用友签约索通发展,共建冶金行业新一代数智化智能工厂

用友BIP

你的Mac需要一次大扫除!试试App Cleaner & Uninstaller for Mac

Rose

App Cleaner 苹果mac系统优化 Mac清理工具

敏捷专题:新一代的汽车软件研发

DevOps和数字孪生

敏捷 仿真建模 汽车行业

聊聊性能测试的左移右移

老张

性能测试 稳定性保障 质量门禁

如何建设企业级API网关

RestCloud

API 网关 企业级低代码平台

用友携手厦门国会:引领智能会计新时代,共谱数字教育新篇章

用友BIP

智能会计

传统渠道DMS系统跟不上时代?是时候建立多级渠道运营系统了

用友BIP

渠道运营

用友&陕建数科携手共创,实现生态共赢!

用友BIP

数科公司

AI赋能,轻松出爆文!AI新闻创作新时代,你准备好了吗?

飞桨PaddlePaddle

新闻 AIGC 新闻写作

打造美团外卖新体验,HarmonyOS SDK持续赋能开发者共赢鸿蒙生态

HarmonyOS SDK

HarmonyOS

对话InfoQ,聊聊百度开源高性能检索引擎 Puck

百度Geek说

百度 开源

Proxifier for Mac(附Proxifier注册码):轻松实现全局代理,加速网络访问!

Rose

跨境电商 全局代理客户端 Proxifier破解版 Proxifier下载 Proxifier mac

Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队

京东科技开发者

消息队列 Kafk

Premiere Pro 2024 Mac版系统要求 PR2024中文破解补丁

Rose

Premiere Pro2024激活版 Premiere Pro 2024 pr2024破解版

软件测试|Python字符串的这些操作,你可都学会了?

霍格沃兹测试开发学社

Mac上用于网络数据流量分析和嗅探的软件 Debookee 8

展初云

Mac软件 网络数据分析

软件测试|Python绘图神器——Matplotlib使用教程(一)

霍格沃兹测试开发学社

概念回顾:混合负载均衡、全局服务器负载均衡、DNS 负载均衡、云负载均衡

NGINX开源社区

什么是混合负载均衡? 什么是 DNS 负载均衡? 什么是云负载均衡?

AdGuard for Mac(macOS上的广告拦截工具)中文版 支持M1/M2

Rose

AdGuard下载 Mac广告拦截 AdGuard Mac版

Vert.x教程(一):如何搭建一个web应用

Kevin_913

Java 教程 Vert.x

第21期 | GPTSecurity周报

云起无垠

软件测试|Python数据可视化神器——pyecharts教程(一)

霍格沃兹测试开发学社

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