Today, I want to talk to you about the Esp8266. Produced by espressif, this Chinese microchip has been designed as a wifi module for other chip. The thing is, more than a simpke chip, it's really cheap and powerful.
It can be an Wifi station or access point, it can also provide Bluetooth connection and more, it's provided with more or less gpio depending on the model and include a SPI flash file system and the devs has quickly understood they could advertise it as a stand alone chip.
The producers has provided multiple way to develop on the chip. Via C/C++ language programming, Lua or Python scripting, with a ESP BASIC language or using ATcommands.
On this card, I'll mostly talk about the first solution because I am a low level IOT C developer.
You can find it on a few devkit board. The most common being the NodeMCU but I'm using the 'official' Esp8266Ex Luncher as it is presented in the documentation of Espressif with the esp-WROOM-02/32/S2.
Maybe I should try developing it on an other langage 'cause the C/C++ SDK are a real pain.
C/C++ programmer are given three options:
1- NodeMCU seems to provide an IDE Or at least its proper SDK but I am not using this board.
2- Using the Arduino IDE
The Arduino SDK is the easyest way to flash the Esp8266 as it's private kinda-C++-langage has been made for beginners but there are two main drawback. First, the Arduino language is higher than the other options. It results in a loss of control for the developer. But the worst is the Arduino IDE can brick your board. And this is more than a drawback.
3- the Espressif SDK's. Yes. 's'. There are two SDK's. One 'RTOS sdk' and one 'NON-OS sdk'. The sdk's are provided with their programming guide and API reference but when the examples provides in th sdk's dont event work, you understand you can't trust anything written or coded by espressif.
The SDK is so badly made that the users must have created an header called *espmissingincludes.h*. In this file are two comment line telling the prototypes has been guest so if you can do it your way, ignore the Espressif APIs.
I'm currently working on a project with this chip that requires the file system and a real time reference. Those both features are a fucking pain in the ass to use. The 'RTC' is fake and has a very bad drift, I can't manage to get time using sntp. I mean... Sntp... SIMPLE ntp. And even downloading a webpage is very hard. I can't even understand how this should be a wifi module.
In fact, all the issues come from two facts.
1) there are to many way to develop it so instead of having a strong documentation on i.e. C programming with an RTOS SDK, we've got many uncomplete and wrong doc on each plateform.
2) there are two many models. For the Esp8266, you can find at least, 7 models with unlogical differences. It's not like having range of product with less or more memory, or else, the differences a thin but really important at a low level. So documebtztion can't be complete.
If you want to use the Espressifs products, be ready to work hard for simple features. I convinced when you'd have finish a complex project, you'd be an expert and, then, you'll be powerful as fuck. But it would be a fucking challenge.
Good luck. I need to go back to work. Love ❤️