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 对接阿里云平台的具体流程,供读者参考。
-
linux 环境 或 windows 环境
用来编译&烧写&运行等操作的必须环境。 -
ESP8266 设备
ESP8266 设备包括 ESP8266 芯片,ESP8266 模组 ESP-WROOM-02,ESP8266 开发板 ESP-Launcher等。如:
- USB 线
连接 PC 和 ESP8266,用来烧写/下载程序,查看 log 等作用。
根据阿里官方文档,在阿里云平台创建产品,创建设备,同时自动产生 product key, device name, device secret。
product key, device name, device secret 将在 6.1.1 节用到。
如果您熟悉 ESP8266 开发环境,可以很顺利理解下面步骤; 如果您不熟悉某个部分,比如编译,烧录,需要您结合官方的相关文档来理解。如您需阅读 ESP8266 快速入门指南文档等。
linux 系统:
根据官方链接中第二步 Requirements,下载并编译整个 esp-open-sdk。
esp-open-sdk 中主要包含 ESP8266 SDK(ESP8266_RTOS_SDK 和 ESP8266_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 节来获取编译器
linux 系统:
烧录工具位于 4.1节中 esp-open-sdk/esptool/esptool.py
烧录方式参考命令:
$ esp-open-sdk/esptool/esptool.py --help
windows 系统:
烧录工具链接:Flash 下载工具(ESP8266 & ESP32)
烧录方式参考 ESP8266 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 // 用户程序入口
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
导出 4.1 节下载的编译器,如:
$ export PATH=/opt/xtensa-lx106-elf/bin/:$PATH
$ ./gen_misc.sh
编译完成后,将生成 esp8266-aliyun/bin/upgrade/user1.2048.new.5.bin
固件。
将 USB 线连接好 ESP8266 和 PC,确保下面烧写端口正确。windows 烧写方法参考 4.2 节,烧写 bin 和烧写地址参考 6.2.2 节。
$ ~/esp/esp-open-sdk/esptool/esptool.py --port /dev/ttyUSB0 --baud 921600 erase_flash
$ ~/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
打开串口工具,连接,连接配置如下:
波特率: 74880
数据位: 8
停止位: 1
奇偶校验: None
流控: None
如 linux 中使用 miniterm 串口工具:
$ miniterm.py /dev/ttyUSB3 74880
将 ESP8266 拨至运行状态,即可看到如下 log:
log 显示了 ESP8266 基于 TLS 建立了与阿里云的安全连接通路,接着通过 MQTT 协议订阅和发布消息,同时在阿里云控制台上,也能看到 ESP8266 推送的 MQTT 消息。