As promised, this is the ESP8266 post. So, if you have been reading about IOT projects, chances are you already heard or even used one of these. But in case you didn't, ESP8266 is a very cheap WiFi to serial converter .. or so they call it. It easily gives access to WiFi for any existing project with spare UART connection, and it can work both as an Access point(SoftAP mode) and a Station, and even do it simultaneously. Well enough of this, let's get to business..
You will need to communicate with the ESP8266 through UART, so you'll probably need a USB to serial converter, like one found on the Arduio, or any other FTDI usb-serial converters. You can even use your own if you have one. But before you start poking wires around - keep in mind, ESP8266 works at 3.3 volt, so don't hook it to your 5 volt Arduio. It's best to use a 3.3 volt usb-serial converter, but I didn't have one, what do we do ? Well, it's simple actually, we need few things. At first, a 3.3 volt regulator to power ESP8266. It should be capable to supply at least 200 mA. The more the better. And even if you can't find one, you probably can salvage it from an old motherboard or DVD drive. I got mine from salvaging.
Once you got that, one problem solved, one left - it's inputs are not 5 volt tolerant, so you'll need to logic level converter. May sound complicated, but there are a lot of simple schematics that will work for this case.
I used the zener diode version. It is even used in V-USB projects, but another post for that. The R1 value may need some tweaking, depending on the zener dide used. However, after you have both the voltage regulator and level shifter, we can start poking wires around.
"What about USB-Serial TX?" you may ask. Well, it should consider 3.3 volts a logic one, so no problems there.
Once you got the connections ready, open the USB-Serial converter with a serial terminal program. In my case picocom worked well enough. Things to keep in mind with your serial terminal
Getting started
If you just type "esp 8266 getting started" in Google, the first link that comes is this pdf, and trust me, it has all the information that you need to get started. But just a quick analysis of what you will be doing.You will need to communicate with the ESP8266 through UART, so you'll probably need a USB to serial converter, like one found on the Arduio, or any other FTDI usb-serial converters. You can even use your own if you have one. But before you start poking wires around - keep in mind, ESP8266 works at 3.3 volt, so don't hook it to your 5 volt Arduio. It's best to use a 3.3 volt usb-serial converter, but I didn't have one, what do we do ? Well, it's simple actually, we need few things. At first, a 3.3 volt regulator to power ESP8266. It should be capable to supply at least 200 mA. The more the better. And even if you can't find one, you probably can salvage it from an old motherboard or DVD drive. I got mine from salvaging.
Once you got that, one problem solved, one left - it's inputs are not 5 volt tolerant, so you'll need to logic level converter. May sound complicated, but there are a lot of simple schematics that will work for this case.
I used the zener diode version. It is even used in V-USB projects, but another post for that. The R1 value may need some tweaking, depending on the zener dide used. However, after you have both the voltage regulator and level shifter, we can start poking wires around.
Connections
Look at the pinout in the "getting started" guide, the connections are...ESP8266 | Serial converter |
VCC | 3.3V |
CH_PD | 3.3V |
UTXD | USB-Serial RX |
USB-Serial TX | 5VTX |
URXD | To 3.3VRX |
GPIO0 | To GND when flashing |
GND | GND |
Once you got the connections ready, open the USB-Serial converter with a serial terminal program. In my case picocom worked well enough. Things to keep in mind with your serial terminal
- use CR+LF for line endings
- default baudrate should be 115200, although it may very
$ picocom -lb 115200 --omap crcrlf /dev/ttyUSB0Where
- -l says not to lock (locking needs root permisions)
- -b sets the baudrate
- --omap sets line ending to CRLF
If you don't get any reply, or get some gibberish, check the baud rate, and lastly look at getting started guide for info.
Let's assume you did finally manage to get it. Now check the firmware version, type in
And you should get a response like the one I gotAT+GMR
AT version:0.30.0.0(Jul 3 2015 19:35:49)The AT verions and SDK version may very. At time that this post was written, the latest version was esp_iot_sdk_v1.2.0_15_07_03, however, you may consider checking for the newest version.
SDK version:1.2.0
compile time:Jul 3 2015 20:52:32
OK
Downloading latest SDK
After scrolling down on the link above, you'll see the attached zip file, download it and extract it somewhere. It contains the latest firmware binaries, that we will flash in next step. Except for the SDK we also will need to tool to flash the ESP8266. One awesome solution for this is the esptool. It's for linux users, but pretty sure you can run it on windows as well, if you try hard enough. Clone the repository where you saved the sdk..$ git clone https://github.com/themadinventor/esptool.git
Why do this ?
Well few reasons, mine didn't work properly because of some bug in old version. If you find that your's is already the latest version, skip this step.Flashing the binaries
Note: don't forget to power down, connect GPIO0 to GND, then power up ESP to put it in flash mode.
esptool is pretty self explanatory. Go to the the extracted sdk folder and find bin folder. In it, at folder contains a readme. It will tell the proper files with proper flash addresses. Mine said:
esptool is pretty self explanatory. Go to the the extracted sdk folder and find bin folder. In it, at folder contains a readme. It will tell the proper files with proper flash addresses. Mine said:
boot_v1.2+.bin 0x00000So copy the files listed into the esptool folder, open a terminal there and start writing:
user1.1024.new.2.bin 0x01000
blank.bin 0x7e000 & 0xfe000
$ python2 esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x00000 boot_v1.2.bin 0x01000 user1.1024.new.2.bin 0x7e000 blank.bin 0xfe000 blank.binWhere
- --port tells the serial converter location (e.g. COM2 for windows)
- --baud tells the baud rate
- write_flash - well, tells to write to flash
- then address, file pairs come in, the ones you found in the readme file
If everything goes planned, you will successfully write the latest firmware.
Connecting...
Erasing flash...
Writing at 0x00000400... (100 %)
Erasing flash...
Writing at 0x00040c00... (100 %)
Erasing flash...
Writing at 0x0007ec00... (100 %)
Erasing flash...
Writing at 0x000fec00... (100 %)
Leaving...
Aftermath
If everything went correct, you got a working ESP8266 with the latest SDK, congratulations. You can check the version with AT+GMR command.
The getting started guide has examples of making TCP/UDP connections and etc. But I suppose, I'll talk about it in the next posts. Bye.