# [ESP8266 - Complete Guide: <br />Add WiFi to your Arduino Projects](https://blog.hirnschall.net/esp8266/)

author: [Sebastian Hirnschall](https://blog.hirnschall.net/about/)

meta description: Everything you need to add WiFi to Arduino: module comparison, wiring, code examples, power saving, web server, EEPROM, and PCB layout — one reference hub.

meta title: ESP8266 Complete Guide — WiFi for Arduino Projects

date published: 07.01.2023 (DD.MM.YYYY format)
date last modified: 03.04.2026 (DD.MM.YYYY format)

---

Introduction
------------

In recent years the ESP8266 has become one of my go-to choices for smart home/IoT devices or projects requiring WiFi. It is cheap [(around $1.5 on Amazon)1](https://amzn.to/3r9XX2D), has WiFi, and can be programmed using the Arduino IDE, making it an easy replacement for Arduinos if we need WiFi connectivity.

While the ESP8266 can be used with the original AT firmware as a WiFi module for other microcontrollers like an Arduino, we will concentrate on writing our own replacement firmware in this post. Our firmware lets us replace the Arduino with an ESP module, simplifying programming and assembly and reducing cost.

Although the information in this article can be found in the ESP's datasheet, on several other sources online, or by measuring an ESP module, we want to mention the ESP8266 reference provided by Stefan Frings [1].

Table of contents
-----------------

To make this long article more readable, we have split it in to multiple seperate posts.  
Use the links below to jump to the section you are interested in:

### 1[Technical Specification](https://blog.hirnschall.net/esp8266-reference/)

* [ESP-01 and ESP-1](https://blog.hirnschall.net/esp8266-reference/?section=esp01)
  + [Different modules](https://blog.hirnschall.net/esp8266-reference/?section=esp01)
  + [Minimal Circuit](https://blog.hirnschall.net/esp8266-reference/?section=minimal-circuit)
  + [Pinout](https://blog.hirnschall.net/esp8266-reference/?section=pinout)
  + [Reset pin differences](https://blog.hirnschall.net/esp8266-reference/?section=reset-pin)
* [ESP-07 and ESP-12](https://blog.hirnschall.net/esp8266-reference/?section=esp12)
  + [Different modules](https://blog.hirnschall.net/esp8266-reference/?section=esp12)
  + [Minimal Circuit](https://blog.hirnschall.net/esp8266-reference/?section=minimal-circuit12)
  + [Pinout](https://blog.hirnschall.net/esp8266-reference/?section=pinout12)
  + [Reset pin differences](https://blog.hirnschall.net/esp8266-reference/?section=reset-pin12)

---

### 2[Limitations of the ESP8266 module](https://blog.hirnschall.net/esp8266-reference/?section=limitations)

---

### 3[Using the ESP8266 on a battery](https://blog.hirnschall.net/esp8266-on-battery/)

* [Power saving techniques](https://blog.hirnschall.net/esp8266-on-battery/?section=lowpower)

+ [Different power modes compared](https://blog.hirnschall.net/esp8266-on-battery/?section=lowpower)
+ [Static IP](https://blog.hirnschall.net/esp8266-on-battery/?section=static-ip)
+ [Disabeling WiFi while reading sensor data](https://blog.hirnschall.net/esp8266-on-battery/?section=disable-wifi)
+ [Avoiding network scans using RTC memory](https://blog.hirnschall.net/esp8266-on-battery/?section=network-scans)

* [Choosing a voltage regulator](https://blog.hirnschall.net/esp8266-on-battery/?section=voltage-regulator)

---

### 4[Connecting 5V devices](https://blog.hirnschall.net/esp8266-5v-devices/)

* [Connecting to other 5V devices](https://blog.hirnschall.net/esp8266-5v-devices/?section=connecting-5v-devices)
* [Is the ESP8266 5V tolerable?](https://blog.hirnschall.net/esp8266-5v-devices/?section=5v-tolerable)

---

### 5[PCB design guidelines](https://blog.hirnschall.net/esp8266-pcb-design/)

---

### 6[Programming ESP8266 with the Arduino IDE](https://blog.hirnschall.net/esp8266-arduino-ide/)

* [Arduino IDE setup](https://blog.hirnschall.net/esp8266-arduino-ide/?section=arduino_ide_setup)
* [Connecting ESP8266 to Arduino](https://blog.hirnschall.net/esp8266-arduino-ide/?section=connect_to_arduino)
* [Programming the esp8266](https://blog.hirnschall.net/esp8266-arduino-ide/?section=flash-program)

---

### 7[A basic web server](https://blog.hirnschall.net/esp8266-webserver/)

---

### 8[EEPROM emulation with the Arduino IDE](https://blog.hirnschall.net/esp8266-eeprom/)

* [EEPROM.begin()](https://blog.hirnschall.net/esp8266-eeprom/?section=begin)
* [Calculating Required EEPROM Size](https://blog.hirnschall.net/esp8266-eeprom/?section=calc_size)
* [How to Read from EEPROM](https://blog.hirnschall.net/esp8266-eeprom/?section=read)

+ EEPROM.get()
+ EEPROM.read()

* [How to Write to EEPROM](https://blog.hirnschall.net/esp8266-eeprom/?section=write)

+ EEPROM.put()
+ EEPROM.write()

* [EEPROM.commit()](https://blog.hirnschall.net/esp8266-eeprom/?section=commit)
* [EEPROM.end()](https://blog.hirnschall.net/esp8266-eeprom/?section=end)
* [Erase EEPROM](https://blog.hirnschall.net/esp8266-eeprom/?section=erase)

---

### 9   Projects using ESP8266

* [Camera Slider with Timelapse capability and WEBUI (< $ 100)](https://blog.hirnschall.net/diy-motorized-slider/)
* [Smart Window Blinds for Alexa & Homekit (< $ 10)](https://blog.hirnschall.net/diy-smart-window-blinds/)