ESP8266 driver using the NodeMCU interface

Dependencies:   BufferedSerial

Dependents:   esp8266_nodeMCU1 esp8266_2_thingspeak1 Solarator_0-0-2 IoTBurglar_and_Fire_AlarmSystem ... more

Fork of ESP8266Interface by ESP8266

This is an alternative implementation of the ESP8266 driver that uses the NodeMCU firmware. The NodeMCU firmware provides a slightly larger feature set than the default firmware through a Lua interpreter.

Note

This library is currently in Alpha. It is not feature complete and has some bugs, proceed with caution. Fixes and patches are welcome!

Interface changes

  • SSID and passphrase moved out of ESP8266Interface constructor and to ESP8266Interface::connect
  • ESP8266Interface constructor provides optional timeout parameter to specify how long to wait for network operations

Note

NodeMCU defaults to a baud rate of 9600 instead of 115200 used by the default firmware.

Firmware

To install the NodeMCU firmware, follow the instructions on the Firmware Update wiki page using the nodemcu_integer_0.9.6-dev_20150406.bin binary at address 0x00000 instead of boot_v1.1.bin and user1.bin.

Since the NodeMCU firmware defaults to a baud rate of 9600, the Serial Passthrough program can be used to get direct access to the Lua interpreter running on the ESP8266.

Status

Working features:

  • TCP Client
  • UDP Client Transmit (Currently only UDP Server can recieve messages)
  • Single Connection at a time
  • Station Mode (Connects to AP)
  • DNS Lookups

To be implemented:

  • TCP Server
  • UDP Server
  • UDP Client recieve
  • Multiple Connections tracked through Lua variables
  • AP Mode (Act as access point)
  • IPV6 support (Existing issue with NodeMCU)
Revision:
5:81e264dbbf03
Parent:
4:0bcec6272784
Child:
6:5176e0864078
--- a/Wifly/Wifly.h	Thu Dec 20 15:08:58 2012 +0000
+++ b/Wifly/Wifly.h	Thu Oct 17 23:12:55 2013 +0000
@@ -43,11 +43,14 @@
     TCP = (1 << 1)
 };
 
+/**
+ * The Wifly class
+ */
 class Wifly
 {
 
 public:
-    /*
+    /**
     * Constructor
     *
     * @param tx mbed pin to use for tx line of Serial interface
@@ -60,21 +63,21 @@
     */
     Wifly(  PinName tx, PinName rx, PinName reset, PinName tcp_status, const char * ssid, const char * phrase, Security sec);
 
-    /*
+    /**
     * Connect the wifi module to the ssid contained in the constructor.
     *
     * @return true if connected, false otherwise
     */
     bool join();
 
-    /*
+    /**
     * Disconnect the wifly module from the access point
     *
     * @ returns true if successful
     */
     bool disconnect();
 
-    /*
+    /**
     * Open a tcp connection with the specified host on the specified port
     *
     * @param host host (can be either an ip address or a name. If a name is provided, a dns request will be established)
@@ -84,7 +87,7 @@
     bool connect(const char * host, int port);
 
 
-    /*
+    /**
     * Set the protocol (UDP or TCP)
     *
     * @param p protocol
@@ -92,50 +95,50 @@
     */
     bool setProtocol(Protocol p);
 
-    /*
+    /**
     * Reset the wifi module
     */
     void reset();
     
-    /*
+    /**
     * Reboot the wifi module
     */
     bool reboot();
 
-    /*
+    /**
     * Check if characters are available
     *
     * @return number of available characters
     */
     int readable();
 
-    /*
+    /**
     * Check if characters are available
     *
     * @return number of available characters
     */
     int writeable();
 
-    /*
+    /**
     * Check if a tcp link is active
     *
     * @returns true if successful
     */
     bool is_connected();
 
-    /*
+    /**
     * Read a character
     *
     * @return the character read
     */
     char getc();
 
-    /*
+    /**
     * Flush the buffer
     */
     void flush();
 
-    /*
+    /**
     * Write a character
     *
     * @param the character which will be written
@@ -143,28 +146,28 @@
     int putc(char c);
 
 
-    /*
+    /**
     * To enter in command mode (we can configure the module)
     *
     * @return true if successful, false otherwise
     */
     bool cmdMode();
 
-    /*
+    /**
     * To exit the command mode
     *
     * @return true if successful, false otherwise
     */
     bool exit();
 
-    /*
+    /**
     * Close a tcp connection
     *
     * @ returns true if successful
     */
     bool close();
 
-    /*
+    /**
     * Send a string to the wifi module by serial port. This function desactivates the user interrupt handler when a character is received to analyze the response from the wifi module.
     * Useful to send a command to the module and wait a response.
     *
@@ -178,7 +181,7 @@
     */
     int send(const char * str, int len, const char * ACK = NULL, char * res = NULL, int timeout = DEFAULT_WAIT_RESP_TIMEOUT);
 
-    /*
+    /**
     * Send a command to the wify module. Check if the module is in command mode. If not enter in command mode
     *
     * @param str string to be sent
@@ -189,7 +192,7 @@
     */
     bool sendCommand(const char * cmd, const char * ack = NULL, char * res = NULL, int timeout = DEFAULT_WAIT_RESP_TIMEOUT);
     
-    /*
+    /**
     * Return true if the module is using dhcp
     *
     * @returns true if the module is using dhcp