Introduction: How to Program / Boot / Flash an ESP-03 (ESP8266 / ESP8265 / ESP03 / ESP-03)

About: Electronics Engineer with passion for automating the boring stuff with circuits, coding, cad & 3D printing.

This tutorial is for the younger me from 3 years back who bought an ESP-03 but never managed to make it work. The internet still does not seem to have enough good resources around it, so why not?

Supplies

Alongside the ESP-03 module, we only need 1 additional board. That is -

  1. USB to TTL/Serial converter. (or any board with 3.3V, GND, Rx and Tx)
  2. ESP-03

Step 1: ESP-03 Pinout

Photo for reference.

Step 2: Wiring

First of all, this is an ESP8285 and not 8266.

Second, before jumping into wiring, it is important that we understand the boot mode properly.

Third, there are three boot mode select pins along with the Chip_PD/enable pin which needs to be in a very specific voltage state for the chip to enter Boot Mode.

The best resource for that can be found in the Boot Mode Selection section of the official documentation: https://docs.espressif.com/projects/esptool/en/latest/esp8266/advanced-topics/boot-mode-selection.html

Full details can be found in the link above, but let me summarize everything.


Boot Mode:

ESP-03 <--------------> USB_to_TTL (or any other device that has VCC, GND, RX and TX pins)

> GPIO0 -----------------> GND

> GPIO2 -----------------> 3.3V

> GPIO15 ---------------> GND

> Chip_PD/Enable ----> 3.3V (same for normal operation)

> RX ----------------------> TX

> TX -----------------------> RX

> GND --------------------> GND

Step 3: Arduino IDE Setup

I am assuming that you already have the ESP8266 boards installed to your Arduino IDE.

So, simply go to boards options and select ESP8285 -


Now, simply click write some simple code and click upload -

int LED = 12;

void setup() {
  pinMode(LED, OUTPUT);
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(1000);                
  digitalWrite(LED, LOW);  
  delay(1000);
}


If you did everything right, upon clicking upload, it will immediately start uploading without any delays -


Step 4: Success

IDK how to put embed the video. But you should be able to see it from the browser by just clicking on it.

Make sure you have wired it for Normal Mode as mentioned on above to make your flashed code work.