Library for using the Wifi module ESP8266, first version with basic commands, soon new commands will be added

Dependents:   PIR_Sensor_wifi myESP8266forLOstFound Motin_Activated_Temperature_Humidity_BluetoothHC-06_ESP8266_IOT 1Project3_Robot1_Final ... more

Library updated in Dec 28, 2014. Now the ESP baudrate is passed as a parameter in the constructor. Also, some new functions were added. Here is an example code:

ESP8266 example code

#include "mbed.h"
#include <string>
#include "ESP8266.h"

// Objects
Serial pc(USBTX, USBRX);
ESP8266 esp(PTE0, PTE1, 115200);

// Global variables
char snd[255], rcv[1000]; // Strings for sending and receiving commands / data / replies

int main() {
    pc.baud(115200);
    pc.printf("START\r\n");
    wait(3);
    
    pc.printf("Reset ESP\r\n");
    esp.Reset();
    esp.RcvReply(rcv, 400);
    pc.printf("%s", rcv);
    wait(2);
    pc.printf("Sending AT\r\n");
    strcpy(snd, "AT");
    esp.SendCMD(snd);
    esp.RcvReply(rcv, 400);
    pc.printf("%s", rcv);
    wait(2);
    pc.printf("Set mode to AP\r\n");
    esp.SetMode(1);
    esp.RcvReply(rcv, 1000);
    pc.printf("%s", rcv);
    
    pc.printf("Receiving Wifi List\r\n");
    esp.GetList(rcv);
    pc.printf("%s", rcv);
    
    pc.printf("Connecting to AP\r\n");
    esp.Join("MyAP", "MyPasswd"); // Replace MyAP and MyPasswd with your SSID and password
    esp.RcvReply(rcv, 1000);
    pc.printf("%s", rcv);
    wait(8);
    pc.printf("Getting IP\r\n");
    esp.GetIP(rcv);
    pc.printf("%s", rcv);
    pc.printf("Setting multiple connections\r\n");
    esp.SetMultiple();
    esp.RcvReply(rcv, 1000);
    pc.printf("%s", rcv);
    pc.printf("Getting Connection Status\r\n");
    esp.GetConnStatus(rcv);
    pc.printf("%s", rcv);
    pc.printf("Start server mode on port 80\r\n");
    esp.StartServerMode(80);
    esp.RcvReply(rcv, 1000);
    pc.printf("%s", rcv);
    wait(4);
    pc.printf("Close server mode\r\n");
    esp.CloseServerMode();
    esp.RcvReply(rcv, 1000);
    pc.printf("THE END");
    while(1);
}

Revision:
2:77388e8f0697
Parent:
1:399414d48048
--- a/ESP8266.h	Wed Dec 17 13:54:34 2014 +0000
+++ b/ESP8266.h	Sun Dec 28 21:58:49 2014 +0000
@@ -12,8 +12,9 @@
   *
   * @param tx TX pin
   * @param rx RX pin
+  * @param br Baud Rate
   */
-  ESP8266(PinName tx, PinName rx);
+  ESP8266(PinName tx, PinName rx, int br);
 
   /**
   * ESP8266 destructor
@@ -30,11 +31,15 @@
 void Quit(void);
 void SetSingle(void);
 void SetMultiple(void);
+void GetConnStatus(char * st);
+void StartServerMode(int port);
+void CloseServerMode(void);
 
 private:
 Serial comm;
 void AddEOL(char * s);
 void AddChar(char * s, char c);
+void itoa(int c, char s[]);
 
 };
   
@@ -51,12 +56,12 @@
     AT+CWQAP: quit the AP wifi; Inquiry: AT+CWQAP=?  
     * AT+CWSAP: set the parameters of AP; AT+CWSAP= <ssid>,<pwd>,<chl>,<ecn> - ssid, pwd, chl = channel, ecn = encryption; Inquiry: AT+CWJAP?
     TCP/IP:
-    * AT+CIPSTATUS: get the connection status
+    AT+CIPSTATUS: get the connection status
     * AT+CIPSTART: set up TCP or UDP connection 1)single connection (+CIPMUX=0) AT+CIPSTART= <type>,<addr>,<port>; 2) multiple connection (+CIPMUX=1) AT+CIPSTART= <id><type>,<addr>, <port> - id = 0-4, type = TCP/UDP, addr = IP address, port= port; Inquiry: AT+CIPSTART=?
     * AT+CIPSEND: send data; 1)single connection(+CIPMUX=0) AT+CIPSEND=<length>; 2) multiple connection (+CIPMUX=1) AT+CIPSEND= <id>,<length>; Inquiry: AT+CIPSEND=?
     * AT+CIPCLOSE: close TCP or UDP connection; AT+CIPCLOSE=<id> or AT+CIPCLOSE; Inquiry: AT+CIPCLOSE=?
     AT+CIFSR: Get IP address; Inquiry: AT+ CIFSR=?
     AT+CIPMUX:  set mutiple connection; AT+ CIPMUX=<mode> - 0 for single connection 1 for mutiple connection; Inquiry: AT+CIPMUX?
-    * AT+CIPSERVER: set as server; AT+ CIPSERVER= <mode>[,<port> ] - mode 0 to close server mode, mode 1 to open; port = port; Inquiry: AT+CIFSR=?
+    AT+CIPSERVER: set as server; AT+ CIPSERVER= <mode>[,<port> ] - mode 0 to close server mode, mode 1 to open; port = port; Inquiry: AT+CIFSR=?
     * +IPD: received data
 */
\ No newline at end of file