
This blog can be a door opening towards an exciting world of Automation and IoT. There are different ESP Modules available in the market. Here, our main focus is on ESP01 with two GPIO Pins available. Understanding ESP01 pinout is very important for fully utilizing its functionality. It is ideal for use in small IoT and automation projects. A more advanced version is nodeMCU .ESP8266 was developed by a Chinese company called “Espressif System”. In 2014 ESP01 was developed by a third-party manufacturer named “Ai-Thinker”. You can use it for WiFi communication. You can also use this module as an independent microcontroller board with GPIO Pins.
Let’s begin our wonderful journey.
There are two flavors of ESP 01 available. An old blue colored edition and a new black colored edition which is also called ESP 01S. New ESP01S has 1MB of flash memory while the old blue one has 512 K. Both ESP have the same no of pins and programming techniques otherwise.
Contents
Technical Specification
32 bits Single Core Architecture
Input Voltage Range: 2.5 to 3.3 V DC, Maximum voltage to withstand is 3.6 V DC.
Flash Memory: up to 1 MB
Interface: SPI, SDIO, Serial / UART
Default clock speed: 80 MHz and can go up to 160 MHz through programming
Onboard PCB trace Antenna
Up to 2.6 GHz Frequency range
Wi-Fi (IEEE 802.11 b/g/n)
Network Protocol:
TCP/HTTP/UDP/FTP,Pv4
+20dBm output power in 802.11b mode
Wi-Fi 2.4 GHz, support WPA/WPA2
It Supports STA/AP/STA+AP modes
It Supports Smart Link Function for Android and iOS devices
2 GPIO Pin (GPIO 0, GPIO 2)
1 Onboard LED Pin (GPIO 1 also called Tx Pin)
Operating temperature extreme: -40 to 125 C.
No Bluetooth
No analog pin
Important Parameters
Power Requirement:
It is a low-power device. It requires only 3.3V DC and ground for working. In normal circumstances, its current drawing range is up to 170 mA. Each pin can supply 12 mA of Current. The maximum current it can draw is about 320 mA. For proper operation, the CH_PD pin also needed to be at 3.3V DC.
Heart of ESP01 (MCU):
When you look for home automation and IoT, a microcontroller is key. Like other modules of this series, ESP01 is equipped with a 32bits Tensilica L106 Microcontroller Unit.
Built-in LEDs:
ESP 01 pinout consists of two built-in LEDs.
Red LED: It is the power led and turned ON when an appropriate voltage is applied.
Blue LED: It indicates data flow.
Built-in WiFi Antenna:
One of the most prominent features of this tiny module is a built-in yet efficient WiFi Antenna. The antenna is in the form of a PCB trace and is called MIFA (Meandered Inverted-F Antenna).
Modes of use:
Three modes to use this module as per requirement.
i) AP (Access Point Mode)
ii) STA (Station Mode)
iii) Both AP and ST Modes
I Will cover this in detail in an upcoming blog
Bread Board Compatibility:
For developing purpose, every one relay on Bread Board. Unfortunately, this ESP01 is not breadboard-friendly. Either you need to use jumper wires or have to create a small adapter for connecting it directly with Bread Board.
Default Firmware:
ESP 01 has default factory-loaded firmware (SDK+API). You can use AT commands to program in case of default firmware. However, you can flash your firmware to it when required.
Boot modes for ESP 01:
Normal Mode: This is the mode in which ESP 01 is used during normal operation. In this mode, both GPIO 0 and 2 will be High.
Programming Mode: Programing mode is used when new software/firmware is required to be flashed on ESP 01. This programing process overwrites previously installed software from the module. You can use Arduino or any USB to TTL serial converter to program it. In this mode GPIO 0 is Low and GPIO 2 is High.
Dimensions of ESP01:
Length: 14.3 mm
Width: 24.8 mm
Height: 3 mm
Pad Size: 0.9 x1.7 mm
Pitch of Pin: 2.54 mm
Description of ESP01 pinout:
You can see the position of each pin in the below image and the description in the below table.

Pin Title | Short Description |
Vcc | +3.3 V is applied on this pin. The maximum voltage it can withstand is 3.6V. |
GND | Ground Pin |
Rx | This pin is used to receive data. |
Tx | This pin is used to send data. |
CH_PD | This is a Chip power-down pin and it is also required 3.3V to function ESP01 Module. |
GPIO 0 | General-purpose input/output pin 0.We set it at Ground when we need to upload new code on the module. This is called Programming mode. |
GPIO 2 | General-purpose input/output pin 2. We usually use this pin to control any load. |
RST | Reset Pin. It is used to reset the module. To reset, we have to make it Low by connecting with Ground. |
I shall teach you step by step how to program ESP01. All software and hardware required will also be discussed. At the end, we shall control the load (in this case LED) with your mobile phone. So, go through the blog thoroughly to fully grasp knowledge.
Hardware Required
There are two most popular techniques to program it.
1. Using Arduino UNO
2. Using FTDI USB to TTL Serial Adapter Module
Now, there are few models of USB to TTL Adapters are available

1. CH340 Adapter programmer USB to TTL Serial Converter
2. PL2303 Modules USB to TTL
3. YP 05 – FTDI USB to TTL Serial Adapter
Here, we will go with PL2303 Modules USB to TTL.
So now over hardware requirements are
1. PL2303 Modules USB to TTL
2. ESP 01 Module
3. Bread Board
4. Jumper Coils

Though this PL2303 Modules USB to TTL is very simple and easy to use but first you have to download the PL2303 driver. For this purpose, I found this link
https://github.com/johnstevenson/pl2303-win10.
Download and install the driver before using this module.
Setting up Arduino IDE
Now, first of all, we have to set up Arduino IDE. Below are the steps
1. Download the latest version of Arduino from https://www.arduino.cc/en/software
2. Install ESP8266 Platform through the below steps
- Open Arduino IDE
- File > Preferences
- In Additional Boards Manager URLs, type http://arduino.esp8266.com/stable/package_esp8266com_index.json .
If there is already some board added. Separate this with a comma as shown in fig below.
- Press OK

- Tool > Board > Boards Manager…
- ·Search for ESP8266 and install and install ESP8266 “by ESP8266 Community” as shown in the figure below

- Choose your ESP8266 board from Tools > Board > Generic ESP8266 Module
- Now, select board through Tools > Board > ESP8266 Boards > Generic ESP8266 Module
Now, the ESP8266 Platform is installed in Arduino IDE
Wiring

Attach Vcc and CH_PD pins of ESP 01 with +3.3V pin of USB to TTL Module.
Tx pin of ESP01 with Rx pin of USB to TTL Module.
Connect Rx pin of ESP01 with Tx pin of USB to TTL Module.
Ground pin of ESP01 with the Ground pin of USB to TTL Module.
Programming ESP01
Now, every prerequisite is set and now we are ready to program our tiny esp 01module. This is a beginner-level blog and the main purpose is to introduce you to esp01 pinout. We will program it to blink the built-in blue led of this module.
Insert USB to TTL Module into Laptop USB port and select the appropriate port.

Open Arduino IDE
File > Example > ESP8266 > Blink

Code is written below
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
delay(2000);
}
Compile and upload the code.
While uploading makes sure GPIO 0 is grounded to take it into programming mode. Code will start to burn into the module as shown in the figure below. Remove GPIO 0 from ground on 100 % uploading.


Now, the built-in blue led will start blinking as shown in the figure below.


Now, this esp01 module is programmed according to this program. Provide 3.3 V and ground, built-in led will start blinking again.
Remarks
That’s the end of this simple tutorial covering ESP01 pinout and basic information. It was the beginning of series of a tutorials covering IoT and automation using the ESP8266 family.
So, keep visiting my blog and subscribe to newsletters. Your feedback is the soul of this blog.