Getting Started With the ESP8266 ESP-01

Published

Introduction: Getting Started With the ESP8266 ESP-01

About: We bring hardware products to life, specializing in engineering, prototyping, and mass manufacturing. We've worked with over 20 Kickstarter projects.

The ESP8266 ESP-01 is a Wi-Fi module that allows microcontrollers access to a Wi-Fi network. This module is a self-contained SOC (System On a Chip) that doesn’t necessarily need a microcontroller to manipulate inputs and outputs as you would normally do with an Arduino, for example, because the ESP-01 acts as a small computer. Depending on the version of the ESP8266, it is possible to have up to 9 GPIOs (General Purpose Input Output). Thus, we can give a microcontroller internet access like the Wi-Fi shield does to the Arduino, or we can simply program the ESP8266 to not only have access to a Wi-Fi network, but to act as a microcontroller as well. This makes the ESP8266 very versatile, and it can save you some money and space in your projects.

In this tutorial we are going to show you how to set up the ESP-01 Wi-Fi module, configure it, and verify that there is communication established between the module and another device.

Step 1: Materials

Step 2: ESP-01 Setup

When you buy the ESP8266 ESP-01, it comes with a pre-installed AT firmware. It is possible to program the chip with another firmware such as NodeMCU, for example. However, AT firmware is compatible with the Arduino IDE, so we are going to use this firmware for this tutorial. If you want to know how to install a different firmware, then read the Miscellaneous section in this tutorial.

First use the jumper wires to connect the Wi-Fi module to the Arduino as shown in these images.

Step 3: ESP-01 Setup Continued

Upload the BareMinimum example to ensure that no previous programs are running and using the serial communication channel. Next, open the serial monitor and type the following command:

AT

You should get an “OK” response. This means that the module is working and that you are good to go. Now we are ready to test a two way communication between the module and another device.

Step 4: Basic AT Commands

The ESP8266 ESP-01 module has three operation modes:

  1. Access Point (AP)
  2. Station (STA)
  3. Both

In AP the Wi-Fi module acts as a Wi-Fi network, or access point (hence the name), allowing other devices to connect to it. This does not mean that you will be able to check your Facebook from your device while the ESP-01 module is operating in the AP mode. It simply establishes a two way communication between the ESP8266 and the device that is connected to it via Wi-Fi.

In STA mode, the ESP-01 can connect to an AP such as the Wi-Fi network from your house. This allows any device connected to that network to communicate with the module.

The third mode of operation permits the module to act as both an AP and a STA.

Step 5: Basic AT Commands - STA Mode

In this tutorial, we are going to set the module to operate in STA mode by typing the following command:

AT+CWMODE=1 

The corresponding number for each mode of operation is as follows:

  • STA = 1
  • AP = 2
  • Both = 3

Step 6: Basic AT Commands - Check Mode

If you want to check what mode your Wi-Fi module is in, you can simply type the following command:

AT+CWMODE? 

This will display a number (1, 2, or 3) associated with the corresponding mode of operation.

Step 7: Basic AT Commands - Connecting Wi-Fi Network

Once we have the ESP-01 operating in STA mode, we need to connect to a Wi-Fi network. First we can check if we are already connected to one by sending the command:

AT+CIFSR 

This will display the station IP address of our ESP-01 module. If you don’t get an IP address after entering the previous command, use the following command to connect to your network:

AT+CWJAP= “Wi-FiNetwork”,“Password” 

Type the name of your Wi-Fi network and the password to connect to it. Make sure you include the quotation marks. After a couple of seconds, you should get an "OK" response. You can check again to see if you have an IP address using the AT+CIFSR command.

Step 8: Basic AT Commands - Enable Connections

Then we need to enable multiple connections before we can configure the ESP8266 ESP-01 module as a server. Type the next command:

AT+CIPMUX=1 

Once again, each number is associated with a type of connection:

  • Single = 0
  • Multiple = 1

The following step is to start the server at port 80:

AT+CIPSERVER=1,80 

The first number is used to indicate whether we want to close server mode (0), or open server mode (1). The second number indicates the port that the client uses to connect to a server. We chose port 80 because this is the default port for HTTP protocol.

Step 9: Basic at Commands - Response

Now, when we open a web browser and type the IP address of our ESP module we get the following response as shown in the image above.

This is the HTTP request that our computer sends to the server to fetch a file. It contains some interesting information such as what file you want to retrieve, name of the browser and version, what operating system you are using, what language you prefer to receive the file in, and more.

Step 10: Basic AT Commands - Send and Display Data

We can now use the following commands to send some data and display it in our web browser’s window:

AT+CIPSEND=0,5 

The “0” indicates the channel through which the data is going to be transferred; while “5” represents the number of characters that are going to be sent.

When we hit enter, the symbol “>” appears. This indicates that we can now type the characters that we want to send to the browser. In this example we chose “hello.”

After a couple of seconds we get the response "SEND OK." This means that the data has been transmitted successfully to the client. However, nothing appears on the web browser’s window yet. This is because it is required to close the channel first in order to display the characters. We use the following command to close the channel:

AT+CIPCLOSE=0 

“0” indicates the channel that is being closed.

Once we hit enter, our message is displayed on the web browser’s window as shown in the image above.

You can refer to the following site to see the ESP8266 AT Command Set:
http://www.pridopia.co.uk/pi-doc/ESP8266ATCommands...

Step 11: Check That Our ESP-01 Receives Data - Mobile Telnet

Now we want to check that our ESP-01 module receives data. We will use the Android application “Mobile Telnet” to test this.

  1. Open the Android application and from the menu select “Telnet Settings."

Step 12: Check That Our ESP-01 Receives Data - Mobile Telnet Con.t'

Type in the IP address and the port number.

Click “OK” and from the menu select “Connect.”

Step 13: Check That Our ESP-01 Receives Data - Mobile Telnet Con.t'

Type the characters that you want to send and then click the “Send” button.

Step 14: Check That Our ESP-01 Receives Data - Mobile Telnet Con.t'

We get the following response as shown in the image above on the serial monitor.

The message is successfully received and displayed.

Step 15: Check That Our ESP-01 Receives Data - PuTTY

Instead of Mobile Telnet, you can also use PuTTY to check that the ESP-01 is receiving data correctly. You can download PuTTY here.

If you decide to use PuTTY follow these steps:

  1. Open the program
  2. Select “Telnet” as the connection type
  3. Type the IP address and the port number
  4. Click on “Open"

Step 16: Check That Our ESP-01 Receives Data - PuTTY Con.t'

5. Type the characters that you want to send and hit “Enter.”

Step 17: Check That Our ESP-01 Receives Data - PuTTY Con.t'

We get the same response as before.

Step 18: Miscellaneous - Different Firmware

If you want to use a different firmware such as NodeMCU, you need to download an ESP8266 flasher such as this one. Then you need to download the binary file. You can use the following site to do it. Make sure you download just the integer type.

https://github.com/nodemcu/nodemcu-firmware/releases

Step 19: Different Firmware Set-up Con.t'

Open the ESP8266 flasher and select the bin that you just downloaded. Select the serial port and type 0x40000080. Before you click on “Download,” make sure you ground GPIO0. This is required every time a new firmware is being flashed.

When you click on “Download” the flasher will delete the current firmware and start installing the new one.

Step 20: Different Firmware Set-up Con.t'

Once the firmware has been installed, you can disconnect GPIO0 and use it normal.

We hope you enjoyed this Instructable, and you can find more tutorials about the ESP8266 and more on Jaycon System's website.

If you have any questions about this tutorial, do not hesitate to post a comment, shoot us an email, or post it in our forum.

Thanks for reading!

5 People Made This Project!

Recommendations

  • Clocks Contest

    Clocks Contest
  • Planter Challenge

    Planter Challenge
  • Oil Contest

    Oil Contest
user

We have a be nice policy.
Please be positive and constructive.

5 Tips

When you connect to your home WIFI network, make sure it's 2.4GHz.

5GHz network doesn't work and it gave me this error

AT+CWJAP="Mynetworkname","Mypassword"

WIFI DISCONNECT

+CWJAP:3

But it worked fine with 2.4GHz network. Also no space on the commend line.

1

If anyone is having problems with the serial monitor, make sure your baud rate is 115200 and the line ending is set to "both NL & CR". I also had to connect ground to RESET and was good to go.

GND should be connected to GPIO too

When you use that esp-01 voltage adapter, in my version the pins are maybe mislabeled and you have to connect same labels to each other meanin TX(adapter) to TX(arduino), same for RX. Worked for me.

If it's not responding after checking your connections you may need to put the baud rate to 115200

7 Questions

0

Everything is fine till I am not adding Serial.begin() in it. After invoking Serial Monitor, It is not working.

Can you please suggest, what may be the problem?

Can i use Putty via serial to connect to my ESP8266 ESP01 module, for some reason it will not display anything when i connect. Arduino Serial monitor is working. Im using correct Com port and baud setting.

Using Windows 7 Professional X64,

Arduino IDE 1.8.4

PuTTY

I didn't understand step 8

i upload the BareMinimum program and input "AT" on serial monitor but i didnt receive any response

clear all libraries from the Arduino library

0

Hi there, I just started working with and arduino and esp8266-esp01. I used this tutorial to get a bit of understanding of the matter. Now I have a problem stting-up a link. I am connected to my AP with the ESP, but aftre putting CIPSERVER=1,80 and an OK message, I am not able to connect with HTTP.

I see a channel opened in the serial monitor and it sees my PC. but when I try to send data, I get ERROR.

Any suggestions?

Got it working! seems I was a bit slow in typing commands. This resulted in time-out of the browser :)

on many sites it is mentioned that GPIO 0 SHOULD BE CONNECTED TO GND

Only when programming the ESP

When I tried to connect ESP01 to WiFi using AT+CWJAP= “ ”,“ ” command it kept returning error. How do I resolve this problem? Thanks.

Sample message pasted below:

AT+CWJAP= "Smile:)","123456"
ERROR

83 Comments

Hi there, I just started working with arduino and esp8266-esp01. I used this tuorial to get a bit of understanding of the matter. Now I have a problem setting-up a link.

I am connected to my AP with the ESP but after putting CIPSERVER=1,80 and an OK message, I am not able to connect to HTTP. I see: that a channel is opened, but no response to be seen on the browser.

Any suggestions?

1 reply

this problem is solved. See questions above...

So I've got to the telnet part where my esp just ceised communicating with me and now it's doesn't even respond to simple AT command. I have external power, and it sends me this through serial but doesn't respond at all to anything else

ready
WIFI CONNECTED
WIFI GOT IP

1 reply

Ok my problem was, I didn't have common grounds for independently powered esp and Arduino. can I connect the grounds via breadboard?

thank you your tutorial is very helpful

Also couldn't send AT commands, fixed it by removing the <SPACE> at the end of the example. So All goes well if you just type the example AT command, but if you use copy/paste remove the <space>

Hi

I am trying to get the ESP01 running on top of a arduino Uno.

Wont Work.

Did same wiring as descripted.

Tried the LED example, won't work.

No AT response from Serial Monitor.

how can i identify the root cause of the problem?

What can I check?

Thanks a lot.

T

4 replies

What exactly do you mean by "On Top of a Arduino"? The ESP8266 can be programmed to fully function on it's own, with no Arduino connected.....or it can be connected so that communications are handled by the Arduino and passed through to the ESP8266.

First and most importantly.....

If you uploaded ANY sketches from Arduino to the ESP8266, (often you do this by setting the board in the Arduino interface to ESP8266 and then upload a sketch that goes into the ESP8266. Another way is to "flash" the ESP8266. If you did either, you likely overwrote the firmware that handles AT commands and you will ned to re-flash your ESP8266 with firmware usually from Expressif to regain the ability to use AT commands on the ESP8266.

If you are certain you did neither and the ESP8266 is still in factory condition, you should be able to perform a simple test using the Arduino. Simply connect as follows....

ESP8266------------------------------Arduino

VCC------------------------------------- 3.3v

TX----------------------------------------RX

RX----------------------------------------TX (try switching these is no response)

GND--------------------------------------GND

That's all you need to connect. Just be sure to upload a blank sketch into the Arduino before you begin. Next, (assuming Windows), using the Control Panel on your computer, go into the device manager and make sure the port for the Arduino shows up when you power the Arduino from the USB port.

A new entry should pop up after a few seconds. That is the port number for your Arduino. Go into the Properties and make sure it is set to 115200 baud.

Now in the Arduino Interface, make sure the Baud rate and ports match what you saw in the Device Manager in Windows. If they do, open the Serial Monitor and make sure at the bottom you have it set to 115200 baud and that Both NL and CR is selected in the first drop down box.

Now at the top in the input box, enter capital AT and click send. If you do not receive OK you either accidentally flashed your ESP8266 and over wrote the factory firmware, your serial connection is bad (change USB cables and try again), or you received an ESP8266 that did not come with the AT firmware or is defective. In which case you should try a different one.

PS...you can also try 9600 baud but as far as I know, ALL ESP8266's can operate at speeds between 300 baud and 115200 baud now. They usually come programmed to operate at 115200. 9600 was was when they first came out. Another "potential" problem is that the ESP8266 may not be getting enough power depending on your particular Arduino. If you're like me and have a drawer full of Arduinos, try another. You really should have no trouble powering just the ESP8266 from the Arduino for this simple test.

Try using a baud rate of 9600 or 115200, and make sure you have NL & CR enabled in the Serial Monitor. Once the Serial monitor is opened, you can add a wire to the RST pin and carefully short it to ground (just a quick tap). See if you get any response from the module.

ok thanks, will check.

I would definitely like to have more explanation, such as power, IDE setup, BareMinimum, etc.

That Instructable is not targetted to someone that want to get started with the ESP8266.

1 reply

Power:

The ESP usually draws a lot of current (~70mA with peaks that could reach 175mA !). For stability purposes it is preferred to use an external power supply such as a Lipo battery with enough capacity to handle these spikes.

IDE Setup:

No special setup is required for the IDE. Just make sure you use a baud rate of 9600 or 115200, and that NL & CR are enabled. You can even use any other Serial Terminal like Putty to send AT commands to the module

Hello , Thank you for this tutorial .

How can i upload the nodemcu firmware , should i connect it to the laptop direct or i can upload it throw the arduino ? and what are the commands for nodemcu firmware

1 reply

Please refer to Steps 18-20. You can upload it through Arduino or with a 3.3V FTDI. If you decide to use the FTDI connect Arduino_TX to FTDI_RX, and Arduino_RX to FTDI_TX.

I tried uploading the AT Commands using serial port ....

ESP rx,tx to ardunio tx,rx...

gnd to gnd

vcc to 3.3v

by entering AT commands in Serial monitor

they shows some random values like 56,10..

1 reply

Try using a baud rate of 9600 or 115200, and make sure you have NL & CR enabled in the Serial Monitor.

Very good! I like it very much! Thank you for this!

Good job! I like it very much!