ESP8266 03 Serial To WIFI Module

SP8266 is a highly integrated chip designed for the needs of a new connected world. 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

ESP8266 is a highly integrated chip designed for the needs of a new connected world. 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.
 
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.
 
Corresponding Interface:
    SDIO 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)
 
 
 
Resource
 
Software:

Tutorial for ESP8266 Serial WiFi Module

In this tutorial, we'll use a seeeduino to control the ESP8266 WiFi module to request a static page from the internet. This is a basic use of TCP socket, for other usage, please refer to the AT command guide of the module.

Note: We used a software serial to print some debugging information as there’s only one hardware serial on seeeduino board. But the limitation of software serial is that it can’t communicate in a higher baud rate than 19200. So part of the output from ESP module will be dropped because the baud rate 57600 of ESP module is higher than that of the software serial. If you have a board with more than one hardware serial (e.g. Arduino Mega 2560), the case will be easier.

Step-By-Step

Step 1: connect module as the following picture

Connection

Step 2: Programe the seeeduino board.

  1. Open Arduino IDE and create a new sketch;
  2. Parse the following code into the sketch editor (need modifying the SSID and PASS macros into your own situation);
   #include 
   #define SSID "xxxxxxxx"
   #define PASS "xxxxxxxx"
   #define DST_IP "220.181.111.85" //baidu.com
   SoftwareSerial dbgSerial(10, 11); // RX, TX
   void setup()
   {
     // Open serial communications and wait for port to open:
     Serial.begin(57600);
     Serial.setTimeout(5000);
     dbgSerial.begin(9600); //can't be faster than 19200 for softserial
     dbgSerial.println("ESP8266 Demo");
     //test if the module is ready
     Serial.println("AT+RST");
     delay(1000);
     if(Serial.find("ready"))
     {
       dbgSerial.println("Module is ready");
     }
     else
     {
       dbgSerial.println("Module have no response.");
       while(1);
     }
     delay(1000);
     //connect to the wifi
     boolean connected=false;
     for(int i=0;i<5;i++)
     {
       if(connectWiFi())
       {
         connected = true;
         break;
       }
     }
     if (!connected){while(1);}
     delay(5000);
     //print the ip addr
     /*Serial.println("AT+CIFSR");
     dbgSerial.println("ip address:");
     while (Serial.available())
     dbgSerial.write(Serial.read());*/
     //set the single connection mode
     Serial.println("AT+CIPMUX=0");
   }
   void loop()
   {
     String cmd = "AT+CIPSTART="TCP","";
     cmd += DST_IP;
     cmd += "",80";
     Serial.println(cmd);
     dbgSerial.println(cmd);
     if(Serial.find("Error")) return;
     cmd = "GET / HTTP/1.0";
     Serial.print("AT+CIPSEND=");
     Serial.println(cmd.length());
     if(Serial.find(">"))
     {
       dbgSerial.print(">");
       }else
       {
         Serial.println("AT+CIPCLOSE");
         dbgSerial.println("connect timeout");
         delay(1000);
         return;
       }
       Serial.print(cmd);
       delay(2000);
       //Serial.find("+IPD");
       while (Serial.available())
       {
         char c = Serial.read();
         dbgSerial.write(c);
         if(c=='r') dbgSerial.print('n');
       }
       dbgSerial.println("====");
       delay(1000);
     }
     boolean connectWiFi()
     {
       Serial.println("AT+CWMODE=1");
       String cmd="AT+CWJAP="";
       cmd+=SSID;
       cmd+="","";
       cmd+=PASS;
       cmd+=""";
       dbgSerial.println(cmd);
       Serial.println(cmd);
       delay(2000);
       if(Serial.find("OK"))
       {
         dbgSerial.println("OK, Connected to WiFi.");
         return true;
         }else
         {
           dbgSerial.println("Can not connect to the WiFi.");
           return false;
         }
       }

Step 3: Open Serial Monitor and press the reset button of seeeduino board, you’ll see the output.

At last, Happy Hakcing! :)