基于ESP8266的点灯教程

基于ESP8266的点灯教程

摘要

本文简要介绍了ESP8266、ESP8285以及如何基于官方SDK开发简单的点灯应用程序;本文着重说明了如何下载已编译生成的固件到ESP8266。

简介

ESP8266

Espressif’s ESP8266EX delivers highly integrated Wi-Fi SoC solution to meet users’ continuous demands for efficient power usage, compact design and reliable performance in the Internet of Things industry.

官方网站介绍:

http://espressif.com/en/products/hardware/esp8266ex/overview

ESP8285

ESP8285 is the ESP8266 chip embedded with 1 MByte flash memory specially designed for wearable devices.

官方网站介绍:

http://www.espressif.com/en/media_overview/news/espressif-announces-esp8285-wi-fi-chip-wearable-devices

Datasheet下载:

http://www.espressif.com/en/support/download/documents?keys=ESP8285%20Datasheet

ESP8285与ESP8266的差异

由于ESP8285等价于ESP8266 加上 一片1MB Flash,因此 ESP8285与ESP8266使用的是同一套SDK,即ESP8266的SDK。ESP8285相比于ESP8266有如下差异:

  • ESP8285内部集成1MB Flash,DOUT模式。ESP8266则需要外接Flash;
  • ESP8285比ESP8266额外多出GPIO9和GPIO10供用户使用;
  • ESP8285的固件在编译和下载时需要将SPI MODE设置为DOUT,否则下载后无法正常运行;

除以上几点外,二者的使用方法是相同的。因此,在下文中,除非特别说明,否则凡是出现ESP8266的地方均可使用ESP8285替代。

ESP8266 SDK 简介

ESP8266 SDK (Software Development Kits) is an IOT application development platform developed by Espressif for developers that includes basic platform and upper application development examples, such as Smart Light and Smart Plug. Depending on whether it is based on an operating system (OS), SDK can be categorized into two versions: Non-OS SDK and RTOS SDK.

官方文档《ESP8266 SDK Getting Started Guide》:

http://espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_en.pdf

官方文档

官方提供了非常丰富的软硬件开发参考文档,在这里可以集中下载:

http://bbs.espressif.com/viewtopic.php?f=67&t=225

开发点灯应用程序

基于ESP8266 SDK(这里使用Non-OS SDK),接下来开发一个点灯应用程序并把生成的固件下载到硬件上看到实际效果:接在GPIO13上的LED灯一秒钟亮,一秒钟灭,一直循环。

硬件准备

这里选用 PSF-A85 作为硬件模块,同时需要在 GPIO13 引脚接一个LED灯,我们将开发软件点亮它。我们这里假设PSF-A85模块和LED灯的电源已经正确连接。同时PSF-A85的串口(TX,RX)也已经连接到你的PC上了,该串口用于下载固件到ESP8285。

PSF-A85相关链接:

https://www.itead.cc/psf-a85.html
http://wiki.iteadstudio.com/PSF-A85

LED灯相关链接:

https://www.itead.cc/prototyping/electronic-brick/light-and-sound/electronic-brick-lighting-emitting-diode.html
http://wiki.iteadstudio.com/Lighting_Emitting_Diode_(LED)

开发环境的准备

根据 《ESP8266 SDK Getting Started Guide》第三章,你可以搭建自己的开发环境,注意:我们选用的是Non-OS SDK。

提示:

  • 推荐的开发模型是 Ubuntu/Linux 虚拟机 + Windows,虚拟机用来编译并生成固件,通过Windows版本的下载工具 ESP DOWNLOAD TOOL将固件下载到目标板中(这里就是PSF-A85)。
  • 我们假设你有一定的嵌入式Linux开发经验或者至少熟悉Linux操作系统。

点灯应用代码编写

点灯的源代码非常简单:

  • 初始化GPIO13;
  • 启动定时器;
  • 在定时器回调函数中设置GPIO13输出高电平或低电平;

完整代码如下:

#include <ets_sys.h>
#include <osapi.h>
#include <gpio.h>
#include <os_type.h>
#include <user_interface.h>

static os_timer_t blink_timer;

void user_rf_pre_init(void)
{
}

void ICACHE_FLASH_ATTR blinkTimerCallback(void *arg)
{
    static bool is_low = true;
    if (is_low)
    {
        GPIO_OUTPUT_SET(13, 1);
        is_low = false;
    }
    else
    {
        GPIO_OUTPUT_SET(13, 0);
        is_low = true;
    }
}

void ICACHE_FLASH_ATTR user_init()
{   
    gpio_init();
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13);
    GPIO_OUTPUT_SET(13, 0);
    os_timer_disarm(&blink_timer);
    os_timer_setfn(&blink_timer, (os_timer_func_t *)blinkTimerCallback, NULL);
    os_timer_arm(&blink_timer, 1000, 1);
}

将上述代码另存为 user_main.c

编译

根据《ESP8266 SDK Getting Started Guide》第五章,执行./gen_misc.sh后根据提示完成编译即可在SDK根目录下的bin/upgrade目录下得到user1.*.bin文件。

提示:

  • 在编译过程中选择支持OTA的方式,并选择APP=1即可;
  • 本例使用的是基于ESP8285的模块,因此,Flash大小是1MB,同时务必将SPI MODE设置为DOUT;
  • 如果使用的是基于ESP8266的模块,则应根据实际Flash大小和SPI MODE选择对应的编译选项;

下载

在编译成功之后,就可以将编译生成的user1.*.bin和随SDK发布的 boot*.binblank.bin以及esp_init_data_default.bin通过串口下载到ESP8285的内部Flash中运行了。

确定下载地址

参考《ESP8266 SDK Getting Started Guide》第四章可知,各个二进制文件对应的下载地址是:

  • boot*.bin:0x00000;
  • esp_init_data_default.bin:0xfc000;
  • blank.bin:0xfe000;
  • user1.*.bin:0x01000;

下载固件

第一步:先使得ESP8266进入下载模式,ESP8266启动时根据下表中的引脚电平选择模式:

Mode GPIO15 GPIO0 GPIO2
SDIO/SPI 1 X X
UART Download 0 0 1
Flash Boot 0 1 1

使得ESP8266进入固件下载模式的基本步骤如下:

  • 搭建外围电路,使得GPIO15为低电平、GPIO0为低电平且GPIO2为高电平,即对应表中的UART Download模式;
  • 复位ESP8266或者将模块重新上电,ESP8266即可进入固件下载模式;

只有在下载模式,才能够通过ESP DOWNLOAD TOOL将编译好的固件下载到ESP8266的外接Flash或者ESP8285内部的Flash中。

第二步:根据《ESP8266 SDK Getting Started Guide》第六章,在Windows下使用ESP DOWNLOAD TOOL将上一节中的4个二进制文件一起下载到PSA-A85模块中的ESP8285内部的Flash。

提示:

  • 在下载之前,必须确认选择的SPI MODE是DOUT,否则下载成功后无法正确运行;
  • ESP8285内部的Flash是1MByte = 8Mbit;
  • PSF-A85选用的晶振是26M,SPI SPEED应选择40MHz;
  • 下载波特率选择默认的115200即可;

运行应用程序

下载完成后,复位ESP8285或者将PSF-A85模块重新上电即可运行点灯应用程序,注意观察接在GPIO13引脚上的LED灯,应该是这样的现象:一秒钟亮,一秒钟灭,一直循环。

小结

本文中多次提到《ESP8266 SDK Getting Started Guide》,这是乐鑫官方提供的SDK开发指南,是每一个新手应该仔细研究的文档。实际上,本文的目的就是让初学者能够尽快熟悉ESP8266的开发流程并着重描述了固件的下载过程,同时给出来ESP8266进入下载模式的条件,这一点在官方文档中并未详细说明。

参考链接

论坛:

http://bbs.espressif.com/index.php

官方文档地图:

http://bbs.espressif.com/viewtopic.php?f=67&t=225

开发指南:

http://espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_en.pdf
http://espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_cn.pdf

编程API文档:

http://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf
http://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_cn.pdf

其他的资源:

https://github.com/esp8266/esp8266-wiki/wiki
https://github.com/espressif
https://github.com/espressifapp

基于ESP8266的点灯教程” 有 2 条评论

写下评论