/esp8266-aliyun-demo

Demo project for Alibaba Aliyun

Primary LanguageC

ESP8266 对接阿里云指南

目录

介绍

ESP8266 是一颗低功耗、高集成度、性能稳定的 Wi-Fi 芯片,是物联网开发的首选设备。ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了最低功耗。ESP8266EX 有三种运行模式:激活模式、睡眠模式和深度睡眠模式,能够延长电池寿命。 ESP8266EX 是业内集成度最高的 Wi-Fi 芯片,最小封装尺寸仅为 5mm x 5mm。ESP8266EX 高度集成了天线开关、射频 balun、功率放大器、低噪放大器、过滤器和电源管理模块,仅需很少的外围电路,可将所占 PCB 空间降到最低。ESP8266EX 集成了更多的元器件,性能稳定,易于制造,工作温度范围达到 -40°C 到 +125°C。

阿里云物联网套件是阿里云专门为物联网领域的开发人员推出的,其目的是帮助开发者搭建安全性能强大的数据通道,方便终端(如传感器、执行器、嵌入式设备或智能家电等等)和云端的双向通信。全球多节点部署让海量设备全球范围都可以安全低延时接入阿里云IoT Hub,安全上提供多重防护保障设备云端安全,性能上能够支撑亿级设备长连接,百万消息并发。物联网套件还提供了一站式托管服务,数据从采集到计算到存储,用户无需购买服务器部署分布式架构,用户通过规则引擎只需在web上配置规则即可实现采集+计算+存储等全栈服务。总而言之,基于物联网套件提供的服务,物联网开发者可以快速搭建稳定可靠的物联网平台。

一:目的

本文基于 linux 环境和 windows 环境,介绍 ESP8266 对接阿里云平台的具体流程,供读者参考。

二:硬件准备

esp-launcher

  • USB 线
    连接 PC 和 ESP8266,用来烧写/下载程序,查看 log 等作用。

三:阿里云平台准备

根据阿里官方文档,在阿里云平台创建产品,创建设备,同时自动产生 product key, device name, device secret。
product key, device name, device secret 将在 6.1.1 节用到。

四:环境搭建

如果您熟悉 ESP8266 开发环境,可以很顺利理解下面步骤; 如果您不熟悉某个部分,比如编译,烧录,需要您结合官方的相关文档来理解。如您需阅读 ESP8266 快速入门指南文档等。

4.1 编译器环境搭建

linux 系统:
根据官方链接中第二步 Requirements,下载并编译整个 esp-open-sdk。
esp-open-sdk 中主要包含 ESP8266 SDK(ESP8266_RTOS_SDKESP8266_NONOS_SDK)的编译器 xtensa-lx106-elf, 以及 ESP SDK(ESP SDK 包括 esp-idf, ESP8266 SDK等) 的烧写工具 esptool。
注意:编译 esp-open-sdk 过程中,国内可能会比较慢,挂载 VPN 会快一些。

windows 系统:
你有两种方式 a) 或 b) 获取编译器,推荐使用 a)
a) 下载包含有编译器的 cygwin
下载链接
下载并解压 cygwin, cygwin 为用户贴心准备了 windows 下的 linux 环境和 ESP8266 的编译器 xtensa-lx106-elf。
xtensa-lx106-elf 位于 cygwin/opt/ 目录下,更多信息请参考 cygwin/使用说明.pdf

b) 下载虚拟机 && 下载包含有编译器的 lubuntu 镜像
根据官方的 ESP8266 SDK 入门指南 中 3.3 节来获取编译器

4.2 烧录工具/下载工具获取

linux 系统:
烧录工具位于 4.1节中 esp-open-sdk/esptool/esptool.py
烧录方式参考命令:

$ esp-open-sdk/esptool/esptool.py --help

windows 系统:
烧录工具链接:Flash 下载工具(ESP8266 & ESP32)
烧录方式参考 ESP8266 SDK 入门指南 中第六节下载固件

五:SDK 准备

用户可通过如下方式获取整个 SDK。

$ git clone https://github.com/espressif/esp8266-aliyun.git
$ cd esp8266-aliyun
$ git submodule update --init --recursive

or

$ git clone --recursive https://github.com/espressif/esp8266-aliyun.git

目录结构如下:

├── bin                         // 存放编译后生成的文件
├── components                  // 相关组件
|       ├── aliyun              // 阿里云相关组件
|       |      ├── config       // ESP8266 平台配置
|       |      ├── iotkit-embedded  // 阿里 SDK
|       |      ├── Makefile     // 编译 makefile
|       |      └── platform     // 适配
|       └── Makefile            // 阿里云 makefile
├── docs                        // 说明文档相关文件
├── esp8266-rtos-sdk            // ESP8266 RTOS 核心组件
├── gen_misc.sh                 // 编译脚本
├── include                     // 用户可配头文件
|      ├── aliyun_config.h      // 配置连接阿里云相关参数
├── ld                          // 链接脚本
├── Makefile                    // 总编译入口 makefile
├── README.md                   // 说明文档
└── user                        // 用户程序入口

六:编译&烧写&运行

6.1 编译

6.1.1 SDK 修改

aliyun_config.h

#define PRODUCT_KEY             "********"  // type:string
#define DEVICE_NAME             "********"  // type:string
#define DEVICE_SECRET           "********"  // type:string
...
#define WIFI_SSID       "********"       // type:string, your AP/router SSID to config your device networking
#define WIFI_PASSWORD   "********"       // type:string, your AP/router password

将第三节中阿里云平台产生的参数填充到 PRODUCT_KEY,DEVICE_NAME,DEVICE_SECRET
将你可用的热点/路由器用户名密码填充到 WIFI_SSID,WIFI_PASSWORD

6.1.2 导出编译器

导出 4.1 节下载的编译器,如:

$ export PATH=/opt/xtensa-lx106-elf/bin/:$PATH

6.1.3 编译 SDK

$ ./gen_misc.sh

编译完成后,将生成 esp8266-aliyun/bin/upgrade/user1.2048.new.5.bin 固件。

6.2 烧写/下载固件

将 USB 线连接好 ESP8266 和 PC,确保下面烧写端口正确。windows 烧写方法参考 4.2 节,烧写 bin 和烧写地址参考 6.2.2 节。

6.2.1[可选] 擦除 flash

$ ~/esp/esp-open-sdk/esptool/esptool.py --port /dev/ttyUSB0 --baud 921600 erase_flash

6.2.2 烧录程序

$ ~/esp/esp-open-sdk/esptool/esptool.py --port /dev/ttyUSB0 --baud 921600 write_flash --flash_size 2MB-c1 0x1000 bin/upgrade/user1.2048.new.5.bin 0x0000 ~/bin/boot_v1.6.bin  0x1fc000 ~/bin/esp_init_data_default.bin 0x1fe000 ~/bin/blank.bin

6.3 运行

打开串口工具,连接,连接配置如下:
波特率: 74880
数据位: 8
停止位: 1
奇偶校验: None
流控: None

如 linux 中使用 miniterm 串口工具:

$ miniterm.py /dev/ttyUSB3 74880

将 ESP8266 拨至运行状态,即可看到如下 log:
log 显示了 ESP8266 基于 TLS 建立了与阿里云的安全连接通路,接着通过 MQTT 协议订阅和发布消息,同时在阿里云控制台上,也能看到 ESP8266 推送的 MQTT 消息。

p2

p3

p4