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.
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 )
- 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.
AT+RST OK c_ÇÏRSöfJSúfJ[úfì [System Ready, Vendor:www.ai-thinker.com] AT+CWMODE 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 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)
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
: Same as
AT+CWJAP=? but for some modules where the other command doesn't work.
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 ``` AT+CIPMUX=0 OK
AT+CIPSTART="TCP","184.108.40.206",80 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
> <-- wait for this character to come in
Then send this response (remember
\n are both single characters)
GET / HTTP/1.0\r\n
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.
- 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.