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

Fish Tank WIFI HTTP Server

Idea for this project came with my new small fish tank.

Continue reading ...

Battery Powered ESP8266 IoT – Door Sensor

I successfully run DHT22 battery ESP8266 temperature/humidity IoT sensor so my next project is a simple IoT Door Sensor. It is up and running and sending a simple event to my HTTP server via wifi[…]

Continue reading ...

ESP8266 & NRF24L01 Breadboard Adapter

esp8266 & nrf24L01 on breadboard

You can find several breadboard adapters for ESP8266 WiFi module or nRF24L01+ RF transceiver and also several DIY manuals how to create your own, but I decided to use my new WiFi WSP8266 and NRD24L01 as soon[…]

Continue reading ...