Just found out about this really curious piece of kit. It is a tiny chip with an embedded ARM microprocessor and a wifi stack all miniturised into one tiny surface mount chip. Cheap to boot too!

Right now, I am just learning how to use it. So my first configuration is to hook the module up to a serial dongle.

The Seeed tutorial is written for the version 1 module with a 57600 baud rate serial link. The version 2 module that is currently shipping runs at 115200 bps.

quote source

This is what my module looks like. You can get it cheap from ebay
The newer module has LEDs near the antenna

	|				 	__________									|
	|					|		 |									|
	|	|				| EEPROM |			(RX)		(VCC)		|
	|	|___			|________|									|
	|	____|	|	_________________		(GPIO0)		(RESET)		|
	|	|___	|	|				|								|
	|	____|	|	|	ESP8266		|		(GPIO2)		(CH_PD)		|
	|	|___	|	| Wifi+ARM_MCU  |								|
	|	____|	|	|_______________|		(GND)		(TX)		|
	|	|_______|__													|
	RX		:	UART Receive Pin (Connects to TX of other device)
	VCC		:	3.3V Upper Power rail (Input power)
	GPIO0	:	General Purpose Input Output (0)
	RESET	:	Reset Device
	CH_P2	:	General Purpose Input Output (2)
	CH_PD	:	Chip Enable Pin (pull high)
	GND		:	0V Power Ground
	TX		:	UART Transmit Pin  (Connects to RX of other device)
Feel free to copy and reuse this diagram. Just remember to credit me. ( briankhuu.com )

Initial setup

  • ESP8266 VCC and GND directly wired to the FT232RL (FTDI serial to usb converter)
  • RX and TX directly hooked to TX and RX respectively of FT232
  • Usually not recommended to hook it up like that, since the input and output is ment to be within 3.3v

So far I have wired it up, but suspect the board is using a higher firmware version and thus require CH_PD to be tied to 3.3V VCC. However no dice, but the LEDs on the modules started flashing randomly, as well as the serial dongle... on both RX and TX, even when I'm not sending any characters. The output is garbage regardless of baud rate.

I think the issue here, is that this is a big of a power hog and the FTDI chip included is not powerful enough to power it. So you'll want to hook a dedicated linear voltage regulator (or boost/buck regulators if you can afford to).

Using a 5v to 3.3v LDO regulator

  • Hooked the LM39401T 3.3V LDO voltage regulator inbetween the serial dongle and the ESP8266 wifi module.

|     XX     |                          
|   XX  XX   |                          
|     XX     |                          
|            |                          
|  LM39401T  |                          
|  3.3V LDO  |                          
|  (LM3940)  |                          
|            |                          
  ||  ||  ||                            
  ||  ||  ||<----+ 3.3v output    
  ||  ||                     
  ||  ||<--------+ 0v Ground (Gnd)
  ||<------------+ 5v - 3.3v Input                                
  • SRC: http://datasheet.octopart.com/L7805CV-STMicroelectronics-datasheet-7264666.pdf

Now when I plug it in, the board starts to light up more brightly.

Opening up the arduino serial console on 9600 bps as my baud rate setting. (seems that 115200 bps just get garbage characters. This also includes 57600 bps ). Seems that newer modules are distributed with slow serial links by default. I have a feeling it's popularity with the maker community that is full of Arduino users may have something to do with it.

As soon as I pull the RESET pin of the ESP8266 down to ground and release it. This is what I got:

[System Ready, Vendor:www.ai-thinker.com]

Not sure what the initial garbage data means, but at least it seems the serial link to the module is now operational.

Trying out AT Commands

Here we try out AT+RST for resetting board, and AT+CWMODE for checking wifi mode.


[System Ready, Vendor:www.ai-thinker.com]

no this fun

"no this fun" ... huh? well that's kind of a funny response. I guess that means we are not connected to anything. Which is true.

So what's my firmware version number? Use AT+GMR



AT Commands Quickstart

AT+GMR : Show firmware version

AT+RST : restarts module

AT+CWMODE=3 : Change working mode to mode 3. This stands for AP+STA (Access Point Station)

Joining router

AT+CWLAP : Find and list wifi spots

AT+CIFSR : Show IP address assigned to the module by the router

AT+CWJAP="SSID NAME", "PASSWORD" : Connect to said access point

AT+CWJAP=? : Check if connected successfully

AT+CWJAP? : Same as AT+CWJAP=? but for some modules where the other command doesn't work.

TCP Client

AT+CIPMUX=1 : Allow for multiple connections

AT+CIPSTART=4,"TCP","192,168.1.104",9999 : connect to remote TCP server @ 192,168.1.104 (E.g. your PC) : Port number 9999

AT+CIPMODE=1 : Optional switch into data transmission mode

AT+CIPSEND=4,5 : Send data via channel 4, 5 bytes length. Auto unlinks, when no data is being transmitted. : e.g. Serial.print("AT+CIPSEND=");

AT+CIPSEND=5 : Send data via channel 5 bytes length. Auto unlinks, when no data is being transmitted.

e.g. To send the header "GET / HTTP/1.0\r\n" lets start by connecting to server


OK Linked 

Now start sending msg to server. There is 15 chars (or bytes) in "GET / HTTP/1.0\r\n"


Now send the data after waiting for the > character

> <-- wait for this character to come in

Then send this response (remember \r and \n are both single characters)

GET / HTTP/1.0\r\n

TCP Server

AT+CIPSERVE=1,9999 : =1 means enable, =0 means disable : setup TCP server on port 9999

AT+CIFSR : Check module IP address

Well the module works

Haven't yet connected this device to a router, but that's pretty much the next step. Being able to see a wifi network is pretty cool already.


  • https://scargill.wordpress.com/2014/10/05/esp8266-working/
  • https://nurdspace.nl/ESP8266#AT_Commands
  • http://hackaday.io/project/3072/instructions
  • http://tminusarduino.blogspot.com.au/2014/09/experimenting-with-esp8266-5-wifi-module.html
  • https://drive.google.com/folderview?id=0BwK3EhAfht8uWTdBdG55NEFCakE&usp=sharing
  • http://www.electrodragon.com/w/Wi07c - Pretty much the same board, just renamed by that company... weird
  • http://hackaday.io/project/3072/instructions <-- Good

Btw http://www.instructables.com/id/Guino-Dashboard-for-your-Arduino/?ALLSTEPS is pretty cool. It's a GUI dashboard for your arduino. Very handy for debugging.