Platform espressif

Espressif Systems is a privately held fabless semiconductor company. They provide wireless communications and Wi-Fi chips which are widely used in mobile devices and the Internet of Things applications.

For more detailed information please visit vendor site.

Packages

Name Contents
toolchain-xtensa xtensa-gcc, GDB
framework-simba Simba Framework
tool-esptool esptool-ck
tool-mkspiffs Tool to build and unpack SPIFFS images
framework-arduinoespressif Arduino Wiring-based Framework (ESP8266 Core)
ldscripts Linker Scripts
sdk-esp8266 ESP8266 SDK

Warning

Linux Users: Don’t forget to install “udev” rules file 99-platformio-udev.rules (an instruction is located in the file).

Windows Users: Please check that you have correctly installed USB driver from board manufacturer

Frameworks

Name Description
Framework arduino Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
Framework simba Simba is an RTOS and build framework. It aims to make embedded programming easy and portable.

Boards

Note

Adafruit

Type board Name Microcontroller Frequency Flash RAM
huzzah Adafruit HUZZAH ESP8266 ESP8266 80 MHz 4096 Kb 80 Kb

Doit

Type board Name Microcontroller Frequency Flash RAM
espduino ESPDuino (ESP-13 Module) ESP8266 80 MHz 4096 Kb 80 Kb

ESPert

Type board Name Microcontroller Frequency Flash RAM
espresso_lite_v1 ESPresso Lite 1.0 ESP8266 80 MHz 4096 Kb 80 Kb
espresso_lite_v2 ESPresso Lite 2.0 ESP8266 80 MHz 4096 Kb 80 Kb

ESPino

Type board Name Microcontroller Frequency Flash RAM
espino ESPino ESP8266 80 MHz 4096 Kb 80 Kb

Espressif

Type board Name Microcontroller Frequency Flash RAM
esp01 Espressif Generic ESP8266 ESP-01 512k ESP8266 80 MHz 512 Kb 80 Kb
esp01_1m Espressif Generic ESP8266 ESP-01 1M ESP8266 80 MHz 1024 Kb 80 Kb
esp07 Espressif Generic ESP8266 ESP-07 ESP8266 80 MHz 4096 Kb 80 Kb
esp12e Espressif ESP8266 ESP-12E ESP8266 80 MHz 4096 Kb 80 Kb
esp_wroom_02 ESP-WROOM-02 ESP8266 80 MHz 4096 Kb 50 Kb

NodeMCU

Type board Name Microcontroller Frequency Flash RAM
nodemcu NodeMCU 0.9 (ESP-12 Module) ESP8266 80 MHz 4096 Kb 80 Kb
nodemcuv2 NodeMCU 1.0 (ESP-12E Module) ESP8266 80 MHz 4096 Kb 80 Kb

Olimex

Type board Name Microcontroller Frequency Flash RAM
modwifi Olimex MOD-WIFI-ESP8266(-DEV) ESP8266 80 MHz 2048 Kb 80 Kb

SparkFun

Type board Name Microcontroller Frequency Flash RAM
thing SparkFun ESP8266 Thing ESP8266 80 MHz 512 Kb 80 Kb
thingdev SparkFun ESP8266 Thing Dev ESP8266 80 MHz 512 Kb 80 Kb

SweetPea

Type board Name Microcontroller Frequency Flash RAM
esp210 SweetPea ESP-210 ESP8266 80 MHz 4096 Kb 80 Kb

ThaiEasyElec

Type board Name Microcontroller Frequency Flash RAM
espinotee ThaiEasyElec ESPino ESP8266 80 MHz 4096 Kb 80 Kb

WeMos

Type board Name Microcontroller Frequency Flash RAM
d1 WeMos D1(Retired) ESP8266 80 MHz 4096 Kb 80 Kb
d1_mini WeMos D1 R2 & mini ESP8266 80 MHz 4096 Kb 80 Kb

Custom CPU Frequency

See board_f_cpu option from Project Configuration File platformio.ini

[env:myenv]
# set frequency to 160MHz
board_f_cpu = 160000000L

Custom FLASH Frequency

See board_f_flash option from Project Configuration File platformio.ini. Possible values:

  • 20000000L
  • 26000000L
  • 40000000L
  • 80000000L
[env:myenv]
# set frequency to 80MHz
board_f_flash = 80000000L

Custom FLASH Mode

Flash chip interface mode. This parameter is stored in the binary image header, along with the flash size and flash frequency. The ROM bootloader in the ESP chip uses the value of these parameters in order to know how to talk to the flash chip.

See board_flash_mode option from Project Configuration File platformio.ini. Possible values:

  • qio
  • qout
  • dio
  • dout
[env:myenv]
board_flash_mode = qio

Custom Reset Method

See upload_resetmethod option from Project Configuration File platformio.ini

[env:myenv]
upload_resetmethod = ck

Custom Flash Size

Warning

Please make sure to read ESP8266 Flash layout information first.

The list with preconfigured LD scripts is located in public repository platformio-pkg-ldscripts.

  • esp8266.flash.512k0.ld 512K (no SPIFFS)
  • esp8266.flash.512k64.ld 512K (64K SPIFFS)
  • esp8266.flash.1m64.ld 1M (64K SPIFFS)
  • esp8266.flash.1m128.ld 1M (128K SPIFFS)
  • esp8266.flash.1m256.ld 1M (256K SPIFFS)
  • esp8266.flash.1m512.ld 1M (512K SPIFFS)
  • esp8266.flash.2m.ld 2M (1M SPIFFS)
  • esp8266.flash.4m1m.ld 4M (1M SPIFFS)
  • esp8266.flash.4m.ld 4M (3M SPIFFS)

To override default LD script please use build_flags from Project Configuration File platformio.ini.

[env:myenv]
build_flags = -Wl,-Tesp8266.flash.4m.ld

Custom Upload Speed

See upload_speed option from Project Configuration File platformio.ini

[env:myenv]
upload_speed = 9600

Uploading files to file system SPIFFS

Warning

Please make sure to read ESP8266 Flash layout information first.

  1. Initialise project platformio init (if you have not initialized yet)
  2. Create data folder (it should be on the same level as src folder) and put files here. Also, you can specify own location for data_dir
  3. Run target uploadfs using platformio run --target command.

To upload SPIFFS image using OTA update please specify upload_port / --upload-port as IP address or mDNS host name (ending with the *.local). For the details please follow to Over-the-Air (OTA) update.

By default, will be used default LD Script for the board where is specified SPIFFS offsets (start, end, page, block). You can override it using Custom Flash Size.

Active discussion is located in issue #382.

Over-the-Air (OTA) update

Firstly, please read What is OTA? How to use it?

There are 2 options:

platformio run --target upload --upload-port IP_ADDRESS_HERE or mDNS_NAME.local
[env:myenv]
upload_port = IP_ADDRESS_HERE or mDNS_NAME.local

For example,

  • platformio run -t upload --upload-port 192.168.0.255
  • platformio run -t upload --upload-port myesp8266.local

Authentication and upload options

You can pass additional options/flags to OTA uploader using upload_flags option in Project Configuration File platformio.ini

[env:myenv]
upload_flags = --port=8266

Available flags

  • --port=ESP_PORT ESP8266 OTA Port. Default 8266
  • --auth=AUTH Set authentication password
  • --spiffs Use this option to transmit a SPIFFS image and do not flash the module

For the full list with available options please run

~/.platformio/packages/framework-arduinoespressif/tools/espota.py -h

Usage: espota.py [options]

Transmit image over the air to the esp8266 module with OTA support.

Options:
  -h, --help            show this help message and exit

  Destination:
    -i ESP_IP, --ip=ESP_IP
                        ESP8266 IP Address.
    -p ESP_PORT, --port=ESP_PORT
                        ESP8266 ota Port. Default 8266

  Authentication:
    -a AUTH, --auth=AUTH
                        Set authentication password.

  Image:
    -f FILE, --file=FILE
                        Image file.
    -s, --spiffs        Use this option to transmit a SPIFFS image and do not
                        flash the module.

  Output:
    -d, --debug         Show debug output. And override loglevel with debug.
    -r, --progress      Show progress output. Does not work for ArduinoIDE

Using Arduino Framework with Staging version

  1. Clone/Copy main repository to home_dir + packages/framework-arduinoespressif and create new file packages/framework-arduinoespressif/version.txt with the new version (for example, 2.2.0).
  2. Try to build project
  3. If you see build errors, then try to build this project using the same stage on Arduino IDE
  4. If it works with Arduino IDE but doesn’t work with PlatformIO, then please open new issue with attached information:
    • test project/files
    • detailed log of build process from Arduino IDE (please copy it from console to http://pastebin.com)
    • detailed log of build process from PlatformIO Build System ( please copy it from console to http://pastebin.com)

Examples

All project examples are located in PlatformIO repository Examples for Espressif platform.