==== Espressif Systems ESP8266====
{{:boards:esp8266-ch340.jpg?200}}
The Espressif Systems ESP8266 is used in cheap WiFi modules. It embeds an Xtensa LX3 CPU. ESP8266 boards named ESP-XX come with at least 1/2 megabyte of SPI flash for program storage.
Also see [[tools:tasmota|tasmota]] for various applications of this processor.
=== Pinout ===
__ESP-01__
U0TXD 2 1 GND
CHIP_EN 4 3 GPIO2
EXT_RSTB 6 5 GPIO0
VDD 8 7 U0RXD
Component side with antenna to right
=== Power ===
A well regulated power supply is suggested. An LD1117 3V3 has been tested and works well.
3V3 ---------- VDD
3V3 ---10K---- CHIP_EN
GND ---------- GND
=== AT firmware update ===
{{:boards:esp01-3.jpg?200}}
The default AT firmware can be updated using [[:tools:esptool|ESPTool]].
To program the chip, keep GPIO0 low and reset the device on EXT_RSTB.
wget "https://wiki.kewl.org/_media/downloads:v0.9.2.2_at_firmware.bin"
esptool.py --port /dev/ttyUSB0 write_flash 0x000000 "v0.9.2.2 AT Firmware.bin"
Connecting...
Erasing flash...
Writing at 0x0007ef00... (100 %)
Leaving...
=== AT console ===
The updated AT firmware uses 9600 baud by default, the original is 115200.
3V3 UART ESP-XX
======== ======
RX -- 470R -- U0TXD
TX -- 470R -- U0RXD
GND ---------- GND
picocom -b 9600 --omap crcrlf /dev/ttyUSB0
AT+RST
...
[System Ready, Vendor:www.ai-thinker.com]
AT+GMR
0018000902
OK
AT+CWMODE=1
OK
AT+CWLAP
+CWLAP ...
The commands above reset the device, set its mode of operation and scan for access points.
=== NodeMcu ===
{{:boards:nodemcu.jpg?200}}
NodeMcu is a LUA interpreter than runs on the ESP-XX chip. It can be used to
communicate over the network and control the GPIOs.
We will use [[:tools:esptool|ESPTool]] to install NodeMcu for esp8266.
git clone https://github.com/nodemcu/nodemcu-firmware
git reset --hard fb967dd8a2c8282e146626642bf24e8c90cdbcd0
cd nodemcu-firmware/pre_build/0.9.5
esptool.py --port /dev/ttyUSB0 write_flash 0x000000 nodemcu_20150127.bin
esptool.py v2.0-beta2
Connecting....
Detecting chip type... ESP8266
Uploading stub...
Running stub...
Stub running...
Attaching SPI flash...
Configuring flash size...
Auto-detected Flash size: 512KB
Flash params set to 0x0000
Compressed 395836 bytes to 267867...
Wrote 395836 bytes (267867 compressed) at 0x00000000 in 23.5 seconds (effective 134.7 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting...
Build 20150212 firmware can be found in pre_build/latest/nodemcu_latest.bin
=== NodeMcu console ===
A regular console at 9600 baud is used to communicate with NodeMcu. The same connection scheme as per the AT console (above) is used.
picocom -b 9600 /dev/ttyUSB0
NodeMCU 0.9.5 build 20150127 powered by Lua 5.1.4
lua: cannot open init.lua
> gpio.mode(3, gpio.OUTPUT)
> gpio.write(3, gpio.HIGH)
> gpio.write(3, gpio.LOW)
In the above we set GPIO0 to an output, set it high, then set it low.
=== NodeMcu pins ===
{{:boards:esp01.jpg?200}}
^pin ^GPIO ^ ESP-01 |
|0 |16| |
|1 |5| |
|2 |4| |
|3 |0| 5|
|4 |2| 3|
|5 |14| |
|6 |12| |
|7 |13| |
|8 |15| |
|9 |3| |
|10 |1| |
|11 |9| |
|12 |10| |
Although the ESP-01 only has 2 GPIOs, NodeMcu has I2C support and a circuit such as [[:projects:esp|this]] can extend its capabilities.
=== Resources ===
[[http://www.nodemcu.com/index_en.html|NodeMcu home page]]