top of page
Writer's pictureShubham Ubale

ESP8266 WiFi Module Beginners Guide with Arduino Interfacing

Updated: Mar 8

Introduction


ESP8266 is Wi-Fi enabled system on chip (SoC) module developed by Espressif system. It is mostly used for development of IoT (Internet of Things) embedded applications.




ESP8266 comes with capabilities of


  • 2.4 GHz Wi-Fi (802.11 b/g/n, supporting WPA/WPA2),

  • general-purpose input/output (16 GPIO),

  • Inter-Integrated Circuit (I²C) serial communication protocol,

  • analog-to-digital conversion (10-bit ADC)

  • Serial Peripheral Interface (SPI) serial communication protocol,

  • I²S (Inter-IC Sound) interfaces with DMA(Direct Memory Access) (sharing pins with GPIO),

  • UART (on dedicated pins, plus a transmit-only UART can be enabled on GPIO2), and

  • pulse-width modulation (PWM).

It employs a 32-bit RISC CPU based on the Tensilica Xtensa L106 running at 80 MHz (or overclocked to 160 MHz). It has a 64 KB boot ROM, 64 KB instruction RAM and 96 KB data RAM. External flash memory can be accessed through SPI.


ESP8266 module is low cost standalone wireless transceiver that can be used for end-point IoT developments.


To communicate with the ESP8266 module, microcontroller needs to use set of AT commands. Microcontroller communicates with ESP8266-01 module using UART having specified Baud rate.


There are many third-party manufacturers that produce different modules based on this chip. So, the module comes with different pin availability options like,


  • ESP-01 comes with 8 pins (2 GPIO pins) – PCB trace antenna. (shown in above figure)

  • ESP-02 comes with 8 pins, (3 GPIO pins) – U-FL antenna connector.

  • ESP-03 comes with 14 pins, (7 GPIO pins) – Ceramic antenna.

  • ESP-04 comes with 14 pins, (7 GPIO pins) – No ant.

etc.


For example, below figure shows ESP-01 module pins

 

ESP8266-01 Module Pinout and Description




3V3: - 3.3 V Power Pin.


GND: - Ground Pin.


RST: - Active Low Reset Pin.


EN: - Active High Enable Pin.


TX: - Serial Transmit Pin of UART.


RX: - Serial Receive Pin of UART.


GPIO0 & GPIO2: - General Purpose I/O Pins. These pins decide what mode (boot or normal) the module starts up in. It also decides whether the TX/RX pins are used for Programming the module or for serial I/O purpose.


To program the module using UART, Connect GPIO0 to ground and GPIO2 to VCC or leave it open. To use UART for normal Serial I/O leave both the pins open (neither VCC nor Ground).


For more information refer http://esp8266.net/


Now, before we start with ESP8266 interfacing, we need to update its firmware.

 

Downloading Firmware’s


There are many software & hardware platforms, firmware’s and frameworks available, that are specific to their applications such as,






etc.


ESP8266 Firmware has been provided in binary format files (.BIN) that can be downloaded directly on the ESP8266 chip.


These binaries are generated using ESP8266 SDK (Software Development Kit), which is an application development platform produced by Espressif. Linux OS is required to compile the ESP8266 SDK. Windows user can use virtual machine.


For more information about ESP8266 SDK compilation refer -


ESP8266_Getting_Started_Guide or download below attached ESP8266 Getting Started Guide


After compilation, download firmware directly on ESP8266 chip over serial port.


Let’s download Espressif NON-OS SDK Firmware in to the ESP8266 module.


First download ESP8266 FLASH DOWNLOAD TOOL which is the official firmware download tool developed by Espressif.



Now select .bin files with their respective address as shown in below figure.


boot_v1.2.bin                         ------------------------------------------------>          0x00000


user1.1024.new.2.bin           ------------------------------------------------>          0x01000


esp_init_data_default.bin     ------------------------------------------------>          0xfc000


blank.bin                                 ------------------------------------------------>          0x7e000


blank.bin                                 ------------------------------------------------>          0xfe000



Note that, all binary (.BIN) files are available at ESP8266_NONOS_SDK-master\bin directory except user1.1024.new.2.bin which we can generate from SDK compilation and can be found in subfolder of ESP8266_NONOS_SDK-master\bin directory.


Ensure that you have selected the correct COM port and BAUD rate (115200 default).


Now let’s connect ESP8266 module to computer with RS232 standard serial port (using USB to Serial converter in case of laptop) as shown in below figure.




Note that, to put ESP8266 in flash mode, make connections as per above figure (in between ESP8266 and USB to Serial converter) and then only connect it to PC/laptop. Do not forget to connect GPIO0 pin to ground.


Then click on START tab in ESP8266 DOWNLOAD TOOL, and wait till it finishes. After finishing flash process, disconnect ESP8266 module from PC/laptop and remove ground connection at GPIO0 pin.


After successful downloading of firmware, we can use below AT commands for server and client communication using ESP8266.

Note: This time do not connect GPIO0 and GPIO2 pins (leave the open/unconnected).

 

ESP8266 AT Command Set

Function

AT Commands

Response

Working

AT

OK

Restart

AT+RST

OK

.......

Ready

Firmware Version

AT+GMR

<AT version info> information about AT version

<SDK version info> information about SDK version

<compile time> time of the bin was compiled

OK

List Access Point

AT+CWLAP

+CWLAP:<ecn>,<ssid>,<rssi>,<mac>,<ch>,<freq offset>

OK

Query Joined Access Point

AT+CWJAP?

+CWJAP:<ssid>,<bssid>,<channel>,<rssi>

OK

Join Access Point

AT+CWJAP=”SSID”,”Password”

WIFI CONNECTED

WIFI GOT IP

OK

Quit Access Point

AT+CWQAP

OK

WIFI DISCONNECTED

Get IP Address

AT+CIFSR

(Assuming AT+CWMODE=3)

+CIFSR:APIP,<IP address>

+CIFSR:APMAC,<mac address>

+CIFSR:STAIP,<IP address>

+CIFSR:STAMAC,<mac address>

OK

Query WiFi Mode

AT+CWMODE?

+CWMODE:<mode>

Set WiFi Mode

AT+CWMODE=<mode>

Mode: -

1 = STA (station)

2 = AP (Access Point)

3 = BOTH i.e. STA & AP

OK

Query TCP/UDP Connection

AT+CIPMUX?

+CIPMUX:<mode>

Set TCP/UDP Connection

AT+CIPMUX=<mode>

Mode: -

0 = Single Connection

1 = Multiple Connection

OK

TCP/IP Connection status

AT+CIPSTATUS

STATUS:<status>

Possible statuses are

2: Got IP

3: Connected

4: Disconnected

Query TCP transmission mode

AT+CIPMODE?

+CIPMODE:<mode>

Set TCP transmission mode

AT+CIPMODE=<mode>

Mode: -

0 = Normal mode

1 = Transparent mode

OK

Set up TCP/UDP connection

(CIPMUX=0) AT+CIPSTART = <type>,<addr>,<port>

(CIPMUX=1) AT+CIPSTART= <id>,<type>,<addr>, <port>

Example (CIPMUX=0):

AT+CIPSTART="TCP","192.168.101.110",80

CONNECT

OK

Send Data

(CIPMUX=0) AT+CIPSEND=<data length>

(CIPMUX=1) AT+CIPSEND=<id>,<data length>

OK

(Note: write your data after > and enter it to send it will return status like.)

Recv <data length> bytes

SEND OK

(after we receive response from server if any for default auto receive mode)

(CIPMUX=0): + IPD, <length>: <data>

(CIPMUX=1): + IPD, <id>, <length>: <data>

Close TCP/UDP Connection

AT+CIPCLOSE

CLOSED

OK

 

Examples of ESP8266 WiFi module Interfacing


2 views0 comments

Comments


bottom of page