文章目录
- 一 、前言
- 二 、准备材料
- 三 、亚马逊账号新建物品
- 3.1 申请亚马逊账号
- 3.2 创建单个物品
- 3.3 创建证书
- 四 、编译AT固件源码
- 4.1 搭建AT固件源码的二次开发环境
- 4.2 拉取AT固件源码
- 4.3 替换亚马逊连接证书
- 4.4 编译
- 五 、连接通讯
- 有任何疑问联系邮箱或文章留言,不要私信我,本博客已经屏蔽私信!多多支持!
一 、前言
本博文于 2021.2.25 更新,转载于:
二 、准备材料
三 、亚马逊账号新建物品
3.1 申请亚马逊账号
登录亚马逊云 https://aws.amazon.com/cn , 申请亚马逊账号比较费事,多和度娘打招呼就能解决,此处不便多说了。
3.2 创建单个物品
有了亚马逊账号之后,记得保管好,后面对接还要用到。下一步,切换进入AWS IOT 管理中,如下图创建单个物品。
给物品取个名字,叫“esp_test”,其余默认,点击下一步如下图:
3.3 创建证书
创建证书是最关键的一步,如下图操作
需要三个证书,其中2个证书为这个界面下载,还有一个是根证书,根证书可以从文章尾获取;
获取MQTT连接的域名:
四 、编译AT固件源码
4.1 搭建AT固件源码的二次开发环境
打开网址 环境搭建 参考里面的教程,或者你来我这篇文章看看:
《体验下 Linux搭建 ESP8266_RTOS_SDK 3.0 最新环境的搭建和编译吧》
- 注意点1:这里尤其要注意必须更新到
xtensa-lx106-elf-gcc-8.4.0
的编译工具链,否则会报错误; - 注意点2:
python
版本 >3.8.0
,可以通过指令python -v
查看当前安装版本; - 注意点3:还要安装一个
python
处理表格库:python -m pip install pyyaml xlrd
4.2 拉取AT固件源码
使用git克隆下载:
git clone https://github.com/espressif/esp-at
不需要手动去拉取SDK源码,因为脚本会自动下载;
4.3 替换亚马逊连接证书
在亚马逊平台新建一个物品,创建证书,具体如何创建,看前面章节;
AmazonRootCA1.pem
替换components/customized_partitions/raw_data/mqtt_ca/mqtt_ca.crt
xxx.cert.pem
替换components/customized_partitions/raw_data/mqtt_cert/mqtt_client.crt
xxx.private.key
替换components/customized_partitions/raw_data/mqtt_key/mqtt_client.key
- 注意:不需要重命名一样的文件;
4.4 编译
- 指令一览表:
-
rm -rf build sdkconfig
:删除全部编译产物; -
./build.py menuconfig
:选择编译平台 -
./build.py flash
: 编译并烧录 -
./build.py build
: 仅仅编译,不烧录 -
./build.py erase_flash
: 擦除固件;如果提示ota data partition invalid
,可以运行这个指令;
- ①指定编译平台:执行
./build.py menuconfig
,选择平台为ESP8266
,选择下载配置,另外,MQTT协议任务栈的大小要设置为4096
,设置步骤可以见下动图;
- ②编译并下载:执行
./build.py flash
,慢慢等待编译,尤其要注意编译日志是否把尴尬三个证书编译进去了?
五 、连接通讯
- AT+MQTT 对接 AWS IoT 指令:
AT+CWMODE=1
AT+CWJAP="xuhongv@iot","xuhong112233" //连接路由器
AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com" //设置sntp服务器
AT+CIPSNTPTIME? //获取是否同步了网络时间
AT+MQTTUSERCFG=0,4,"dbdd205756d04a988d564d103841cbde","aaa","bbb",0,0,""
AT+MQTTCONN=0,"xxx-ats.iot.us-east-2.amazonaws.com",8883,1
AT+MQTTSUB=0,"esp32/at",1
AT+MQTTPUB=0,"esp32/at","hello aws!",1,0
注意:
- AT+MQTTUSERCFG 中第二参数为 4, 即双向认证, 不可更改, 其他的参数随便填;
- AT+MQTTCONN=0,"",8883,1 中, endpoint 为准备阶段的 MQTT域名, 端口 8883 不可更改;
- 其余发布和订阅主题,随意;
- 具体的使用,可以查看API文档:MQTT_AT_Commands
截图:
- 测试是否通畅,我们可以借用平台的工具:
AmazonRootCA1证书下载,自行保存为pem格式:https://www.amazontrust.com/repository/AmazonRootCA1.pem