Programming ESP-01 (ESP8266)

I was inspired by several DIY projects. The ESP8266 WiFi 802.11 b/g/n Module is a self contained SOC with integrated TCP/IP protocol stack that can give any microcontroller access to your WiFi network. The ESP8266 is capable of either hosting an application or offloading all Wi-Fi networking functions from another application processor.
This post describes step-by-steps instructions on how to program ESP-01 board in the following chapters:

  1. HW Setup
  2. SW Setup (Arduino IDE)
  3. Uploading a programm to ESP8266

Check also my my ESP8266 projects where I used this ESP-01 programmer:

From all the ESP8266 board family I chose ESP01.

HW setup

You have simple option to just connect you ESP01 with cables:
esp8266 with female wires

The other way is to buy or create a programming board

ESP pin out is quite simple. To make developing with the ESP-01 module easier, I created a basic development board. It provides double access to all individual pins, has button for flashing mode (GPIO00) and CH_PD is enabled by default. It offers a button for reset and also separate header for TTL-USB Converter.

Pin out and photos of new board in progress:

Final ESP01 development/programming board:

Other development board that inspired me:

SW setup (Arduino IDE)

As I’m used to Arduino IDE, I installed ESP boards following the instractions in

    1. Install Arduino 1.6.5 from the Arduino website. NOTE: higher versions do NOT work. (as of Jan 2016)
    2. Start Arduino and open Preferences window.


    1. Enter into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas.


    1. Open Boards Manager from Tools > Board menu and install esp8266 platform (takes a while)
    2. Select your ESP8266 board from Tools > Board menu after installation.



Uploading to the ESP8266

To upload your compiled program to the ESP8266:

  1. Disconnect power to the ESP
  2. Bring GPIO0 to ground (turn on switch button on the board) – ESP starts in uploading mode.
  3. Power up the ESP (press the restart button on the board)
  4. Release the pushbutton
  5. Click the play button in Arduino IDE (right arrow icon) to upload the program

When it works, you should see the tiny blue light on the ESP-01 module flashing and the following display on the Arduino IDE.

Done. Now I can easily upload any program to ESP8266 ESP-01 board. 😎
Check my my first IoT ESP8266 temperature humidity sensor project.


  1. My first attempt to connect to the ESP (without the board) was not successful. I have forgoten to connect CH_PD with VCC.
  2. ESP8826 was continuously restarting with the following messages:
    ets Jan  8 2013,rst cause:4, boot mode:(3,7)
    wdt reset
    load 0x40100000, len 816, room 16
    tail 0
    chksum 0x8d
    load 0x3ffe8000, len 788, room 8
    tail 12
    chksum 0xcf
    ho 0 tail 12 room 4
    load 0x3ffe8314, len 288, room 12
    tail 4
    chksum 0xcf
    csum 0xcf
    2nd boot version : 1.2
      SPI Speed      : 40MHz
      SPI Mode       : QIO
      SPI Flash Size : 4Mbit
    jump to run user1
    Ai-Thinker Technology Co. Ltd.

    I have changed the power source to the better one and problems are gone. 😎


Related Posts

WiFi Energy Monitor

My new project consists of HW with cost under 20€. It is able to accurately measure electric power consumption and sends data via WiFi. Great source of knowledge is which includes also Arduino library.

Continue reading ...

Battery Powered ESP8266 IoT – Temperature Sensor

Since my latest ESP8266 temperature humidity IoT logger project is up and running I have decided to cut the last wire – power. There are more approaches how to make ESP8266 running on a battery,[…]

Continue reading ...

ESP8266 Temperature Humidity IoT Logger

I learned how to program ESP8266 so I created my first temperature IoT ESP8266 project. I used DHT22 as a temperature and humidity sensor and also I did some testing of power consumption using LIGHT SLEEP[…]

Continue reading ...