Serial WIFI Transceiver Module ESP8266
Contents
Description
This serial WiFi transceiver module is based on ESP8266 SoC.. ESP8266 is a highly integrated chip that has Integrated TCP/IP protocol stack. It offers a complete and self-contained Wi-Fi networking solution, allowing it to either host the application or to offload all Wi-Fi networking functions from another application processor.
Besides, ESP8266 has powerful on-board processing and storage capabilities that allow it to be integrated with the sensors and other application specific devices through its GPIOs with minimal development up-front and minimal loading during runtime. Its high degree of on-chip integration allows for minimal external circuitry, and the entire solution, including front-end module, is designed to occupy minimal PCB area.
Model:WWI8266ESP
Feature
- 3SDIO 2.0, SPI, UART
- 32-pin QFN package
- Integrated RF switch, balun, 24dBm PA, DCXO, and PMU
- Integrated RISC processor, on-chip memory and external memory interfaces
- Integrated MAC/baseband processors
- Quality of Service management
- I2S interface for high fidelity audio applications
- On-chip low-dropout linear regulators for all internal supplies
- Proprietary spurious-free clock generation architecture
- Integrated WEP, TKIP, AES, and WAPI engines
Specification
- 802.11 b/g/n
- Wi-Fi Direct (P2P), soft-AP
- Integrated TCP/IP protocol stack
- Integrated TR switch, balun, LNA, power amplifier and matching network
- Integrated PLLs, regulators, DCXO and power management units
- +19.5dBm output power in 802.11b mode
- Power down leakage current of <10uA
- Integrated low power 32-bit CPU could be used as application processor
- SDIO 1.1/2.0, SPI, UART
- STBC, 1×1 MIMO, 2×1 MIMO
- A-MPDU & A-MSDU aggregation & 0.4ms guard interval
- Wake up and transmit packets in < 2ms
- Standby power consumption of < 1.0mW (DTIM3)
Interface Function
AT Commands
Format
- Baud rate at 115200
- x is the commands
(Click the picture to zoom in)
Set | Inquiry | Test | Execute |
---|---|---|---|
AT+<x>=<…> | AT+<x>? | AT+<x>=? | AT+<x> |
AT+CWMODE=<mode> | AT+CWMODE? | AT+CWMODE=? | - |
Set the network mode | Check current mode | Return which modes supported | - |
Commands
- carefully there are must be no any spaces between the " and IP address or port
Commands |
Description |
Type |
Set/Execute |
Inquiry |
test |
Parameters and Examples |
---|---|---|---|---|---|---|
AT |
general test |
basic |
- |
- |
- |
- |
AT+RST |
restart the module |
basic |
- |
- |
- |
- |
AT+GMR |
check firmware version |
basic |
- |
- |
- |
- |
AT+CWMODE |
wifi mode |
wifi |
AT+CWMODE=<mode> |
AT+CWMODE? |
AT+CWMODE=? |
1= Sta, 2= AP, 3=both, Sta is the default mode of router, AP is a normal mode for devices |
AT+CWJAP |
join the AP |
wifi |
AT+ CWJAP =<ssid>,< pwd > |
AT+ CWJAP? |
- |
ssid = ssid, pwd = wifi password |
AT+CWLAP |
list the AP |
wifi |
AT+CWLAP |
|||
AT+CWQAP |
quit the AP |
wifi |
AT+CWQAP |
- |
AT+CWQAP=? |
|
AT+ CWSAP |
set the parameters of AP |
wifi |
AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn> |
AT+ CWSAP? |
ssid, pwd, chl = channel, ecn = encryption; eg. Connect to your router: AT+CWJAP="www.electrodragon.com","helloworld"; and check if connected: AT+CWJAP? |
|
AT+CWLIF |
check join devices' IP |
wifi |
AT+CWLIF |
- |
- |
|
AT+ CIPSTATUS |
get the connection status |
TCP/IP |
AT+ CIPSTATUS |
<id>,<type>,<addr>,<port>,<tetype>= client or server mode |
||
AT+CIPSTART |
set up TCP or UDP connection |
TCP/IP |
1)single connection (+CIPMUX=0) AT+CIPSTART= <type>,<addr>,<port>; 2) multiple connection (+CIPMUX=1) AT+CIPSTART= <id><type>,<addr>, <port> |
- |
AT+CIPSTART=? |
id = 0-4, type = TCP/UDP, addr = IP address, port= port; eg. Connect to another TCP server, set multiple connection first: AT+CIPMUX=1; connect: AT+CIPSTART=4,"TCP","X1.X2.X3.X4",9999 |
AT+CIPMODE |
set data transmission mode |
TCP/IP |
AT+CIPMODE=<mode> |
AT+CIPSEND? |
0 not data mode, 1 data mode; return "Link is builded" |
|
AT+CIPSEND |
send data |
TCP/IP |
1)single connection(+CIPMUX=0) AT+CIPSEND=<length>; 2) multiple connection (+CIPMUX=1) AT+CIPSEND= <id>,<length> |
AT+CIPSEND=? |
eg. send data: AT+CIPSEND=4,15 and then enter the data. |
|
AT+CIPCLOSE |
close TCP or UDP connection |
TCP/IP |
AT+CIPCLOSE=<id> or AT+CIPCLOSE |
AT+CIPCLOSE=? |
||
AT+CIFSR |
Get IP address |
TCP/IP |
AT+CIFSR |
AT+ CIFSR=? |
||
AT+ CIPMUX |
set mutiple connection |
TCP/IP |
AT+ CIPMUX=<mode> |
AT+ CIPMUX? |
0 for single connection 1 for multiple connection |
|
AT+ CIPSERVER |
set as server |
TCP/IP |
AT+ CIPSERVER= <mode>[,<port> ] |
mode 0 to close server mode, mode 1 to open; port = port; eg. turn on as a TCP server: AT+CIPSERVER=1,8888, check the self server IP address: AT+CIFSR=? |
||
AT+ CIPSTO |
Set the server timeout |
AT+CIPSTO=<time> |
AT+CIPSTO? |
<time>0~28800 in second |
||
+IPD |
received data |
For Single Connection mode(CIPMUX=0): + IPD, <len>: |
Usage
Use the ESP8266-01 and Arduino as a Webserver
1.Hardware Connection.
Connected the Serial Wifi to U2 of the Crowtail- base shiled( D2 and D3) are used as software UART. Baud Rate:9600.
2.Connect the board to PC using USB cable.
3:Download the code: Webserver_for_ESP8266-01 or copy it to you new skecth.
#include <SoftwareSerial.h> #define DEBUG true SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3. // This means that you need to connect the TX line from the esp to the Arduino's pin 2 // and the RX line from the esp to the Arduino's pin 3 void setup() { Serial.begin(9600); esp8266.begin(9600); // your esp's baud rate might be different sendData("AT+RST\r\n",2000,DEBUG); // reset module sendData("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80 } void loop() { if(esp8266.available()) // check if the esp is sending a message { /* while(esp8266.available()) { // The esp has data so display its output to the serial window char c = esp8266.read(); // read the next character. Serial.write(c); } */ if(esp8266.find("+IPD,")) { delay(1000); int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns // the ASCII decimal value and 0 (the first decimal number) starts at 48 String webpage = "<h1>Hello World!</h1>"; String cipSend = "AT+CIPSEND="; cipSend += connectionId; cipSend += ","; cipSend +=webpage.length(); cipSend +="\r\n"; sendData(cipSend,1000,DEBUG); sendData(webpage,1000,DEBUG); String closeCommand = "AT+CIPCLOSE="; closeCommand+=connectionId; // append connection id closeCommand+="\r\n"; sendData(closeCommand,3000,DEBUG); } } } String sendData(String command, const int timeout, boolean debug) { String response = ""; esp8266.print(command); // send the read character to the esp8266 long int time = millis(); while( (time+timeout) > millis()) { while(esp8266.available()) { // The esp has data so display its output to the serial window char c = esp8266.read(); // read the next character. response+=c; } } if(debug) { Serial.print(response); } return response; }
4.Upload the code and Open the serial monitor.You can see some configuration information.
5.PC connect to the wifi of ESP8266.
6.Then you can visit the Webserver of the ESP8266.