# ESP8266

L'ESP8266 è un chip con Wi-Fi integrato a basso costo, con supporto completo al protocollo TCP/IP e funzionalità da microcontrollore prodotto dall'azienda cinese di Shanghai Espressif Systems.
Il chip è spesso utilizzato in molti prodotti legati all'internet delle cose.

## Storia

Il chip ha richiamato l'attenzione dei maker nell'agosto 2014 quando è stato realizzato il modulo ESP-01 da un'azienda terza, AI-Thinker. Questo piccolo modulo permette ai microcontrollori di connettersi alle reti Wi-Fi ed usare il protocollo TCP/IP usando i semplici comandi AT. Tuttavia a quel tempo non c'era alcuna documentazione disponibile in inglese né del chip né dei comandi accettati. Grazie però al basso costo e al piccolo numero di componenti esterni nel modulo, suggerendo che prodotto in larga scala sarebbe stato molto economico da produrre, ha attratto molti appassionati a esplorare il modulo e il software in esso contenuto oltre a tradurre la documentazione cinese presente.
Il più recente ESP8285 è un ESP8266 con 1 MiB di memoria flash interna (l'ESP8266 ha una memoria flash esterna) che consente di realizzare dispositivi a singolo chip con connessione Wi-Fi.
Il successore di questi microcontrollori è l'ESP32.

## Caratteristiche

* Processore: microprocessore RISC L106 a 32 bit, basato su Tensilica Xtensa Diamond Standard 106Micro funzionante a 80 MHz*
* 64 KiB di RAM per le istruzioni, 96 KiB di RAM dati
* Flash QSPI esterna: da 512 KiB a 4 MiB* (supportata fino a 16 MiB)
* IEEE 802.11 b/g/n Wi-Fi
** Integrati: TR switch, balun, LNA, amplificatore di potenza e adattamento di impedenza
** Autenticazione WEP, WPA/WPA2 o reti aperte
* 16 pin GPIO
* SPI
* I²C
* Interfacce I²S con DMA (pin condivisi con i GPIO)
* UART su pin dedicati, in più può essere abilitata una UART solo in trasmissione su GPIO2
* 10-bit ADC (è un ADC ad approssimazioni successive)
* In alcuni dispositivi entrambe le velocità di clock della CPU e della memoria flash possono essere moltiplicate per l'overclock. La CPU può funzionare a 160 Mhz e la memoria flash più essere velocizzata da 40 Mhz a 80 Mhz. Il Buon funzionamento varia da chip a chip.

## SDK

Alla fine di ottobre del 2014 Espressif ha pubblicato un software development kit (SDK) che ha permesso la programmazione diretta del chip senza dover usare un microcontrollore separato. Da allora ci sono stati diversi lanci ufficiali, Espressif mantiene due versioni del SDK: uno basato su FreeRTOS e l'altro basato su callback.
Un'alternativa al SDK ufficiale di Espressif è l'open source ESP-Open-SDK, basato sui tool GCC e mantenuto da Max Filippov. Un'altra alternativa è il "Unofficial Development Kit" di Mikhail Grigorev.
Altri SDK (principalmente open source ) sono:
* NodeMCU — Un firmware basato su Lua.
* Arduino — Un firmware basato su C++. Questo componente permette di usare la CPU dell'ESP8266 e i suoi componenti Wi-Fi come un qualsiasi altro dispositivo Arduino con l'IDE relativo.
* MicroPython — Un port di MicroPython (una implementazione di Python per dispositivi embedded) per la piattaforma ESP8266.
* ESP8266 BASIC — Un interprete BASIC open source appositamente progettato per l'Internet delle cose.
* Espruino — Un SDK e firmware JavaScript molto simile a Node.js. Supporta alcuni microcontrollori tra cui l'ESP8266.
* ESP-Open-SDK — SDK libero e open source (per quanto possibile) per i chip ESP8266/ESP8285.
* ESP-Open-RTOS — framework open source basato su FreeRTOS.
* Zerynth — Un framework IoT per programmare l'ESP8266 e altri microcontrollori usando Python.