ESP8266 AT Commands parser v1.1
Platform independent ESP8266 AT Commands parser library for embedded systems
ESP8266 AT Commands parser is a generic, platform independent, library for communicating with ESP8266 Wi-Fi module using AT commands. Module is written in ANSI C (C89) and is independent from used platform. It's main targets are embedded system devices like ARM Cortex-M, AVR, PIC and so on.
- Stable release - Supports official AT commands software from Espressif Systems (currently, version AT 1.1 is supported) - Supports different platforms (written in ANSI C) - Supports RAM limited embedded systems - Event based system with callback functions. Almost none blocking functions except one which are needed - Supports multiple connections at the same time (TCP, UPD, SSL) - Supports client and/or server mode - Supports station and softAP mode - Supports ping to other server - Free to use
To use this library, you must:
- Have working ESP8266 module (I use ESP01 and ESP07 to test this library) with proper wiring to ESP8266 module with UART and RESET pin - Always update ESP8266 module with latest official AT commands software provided by Espressif Systems (Link for more info in Resources section) - Have a microcontroller which has U(S)ART capability to communicate with module with RX not empty interrupt capability - At least 4k RAM on microcontroller (still working on optimizations)
Here are links to download links for library in all versions, current and older releases.
If you want to download all examples done for this library, please follow Github and download repository.
Download latest library version: ESP8266 AT commands parser V1.1 (July 16, 2016)
Here is a list of external sources you should keep in mind when using ESP8266 module:
v1.1 (July 16, 2016) - Added support for UDP packets - Added support for hardware CTS pin on ESP8266 and software RTS pin on microcontroller (Not available on every ESP8266 module) - Optimizations for receiving big data packets in low memory devices - Tests on some special cases and improve library functionality to properly interpret all features - Multiple data sent in single connection issue fixes - All flags in single union structure to optimize memory v1.0 (March 25, 2016) - First stable release - Fixed memory overflow with memory compare procedure in some cases v0.4 (February 28, 2016) - Each function which accepts string as parameter has changed parameter type from char * to const char * and only pointer to that memory is stored in library. This comes handy in microcontrollers with limited RAM resource to pass strings directly from flash memory instead copy it to RAM - Removed ESP8266_MAX_CONNECTION_NAME and ESP8266_MAX_SSID_NAME because they do not have sense anymore. It were used for RAM initialization for connection name, but now only pointer is used - Removed unnecessary calls for sprintf function. Instead of making single string to be sent and use ram in stack, string is sent in different parts to limit usage of RAM and STACK - Buffer has now memory copy feature. It comes handy if you write to it from low-level layer with large amount of data at a time. - License has been changed from GNU GPL v3 to MIT. v0.3 (February 10, 2016) - PING member in ESP8266_t structure has been changed to Pinging because of interference with reserved "PING" word for Atmel AVR devices - Memory optimization has been made. Instead of copy texts to stack for sprintf, commands are now directly sent to "stream" - Added support for setting RF power - Removed low-level implementation for delay - SLL connection feature enabled. One connection can be used as SSL - Added support for WPS connection - Added DHCP Timeout callback when DHCP fails with IP assign v0.2 (January 27, 2016) - Function ESP8266_RequestSendData has been improved to remove waiting for ESP8266 to answer with "> " before continue - Added ESP8266_USE_PING macro to enable or disable ping feature on ESP8266 module - Added ESP8266_USE_FIRMWAREUPDATE macro to enable or disable updating ESP8266 firmware via network from official Espressif systems servers - Added ESP8266_USE_APSEARCH macro to enable or disable searching for access points with device - Added ESP8266_MAX_DETECTED_AP macro to set maximal number of devices stack will parse and report to user - Added ESP8266_MAX_CONNECTION_NAME macro to specify maximal length of connection name when creating new connection as client - Improved behaviour when connection buffer is less than packet buffer from ESP8266. In this case, received callback is called multiple time v0.1 (January 24, 2016) - Initial release
In case, you find any bug, please report it to official Github website of this project and I will try to fix it.
---------------------------------------------------------------------- Copyright (c) 2016 Tilen Majerle Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------
This section is meant for community for questions, suggestions (etc..). In case of any problems with library, first make sure you follow Requirements to be sure you have everything OK.
Also, specify which version for library you use and which microcontroller you use.