ESP8266

Arhitektuur

ESP8266 põhineb 32-bitisel Tensilica Xtensa L106 RISC keskprotsessoril. Kasutusel on Harvardi arhitektuur, mistõttu on programmi- ja andmemälu täielikult eraldatud.
Kiibi räni suuruseks on 2050x2169 µm, millest poole võtavad enda alla saatja, vastuvõtja ja võimendid. Vasakul üleval nurgas asub vastuvõtja, milles on näha kaks induktiivpooli. Selle all on näha suure induktiivpooliga saatjat. Sellest poolist paremale jääb vastuvõtja madalpääsfilter ja analoog-digitaalmuundur. Selle all asub saatja digitaal-analoogmuundur. Ülejäänud ruumi võtavad enda alla kiibisisene mälu, Xtensa LX106 keskprotsessor ja muu digitaalne loogika.
Sellel mikrokontrolleril pole välkmälu sisse ehitatud ja seega sõltub välisest SPI liidese kaudu ühendatud välkmälust. Selle peal täidetakse programmi, laadides dünaamiliselt erinevaid programmi osasid välkmälust instruktsioonipuhvrisse.
Kiibi tootja ei ole avalikustanud dokumentatsiooni kiibi siseperifeeria kohta. Selle asemel avalikustati kogumik teeke, mille kaudu saavad programmeerijad perifeeriat kontrollida. Kuna need teegid kasutavad palju RAM mälu, ei täpsusta tootja kogu kiibi mälu hulka vaid ainult ligikaudset mälukogust, mis jääb kasutajale kasutamiseks pärast teekide laadimist. Selleks on ~50 KiB.

Wi-Fi

ESP8266 on võimeline töötama kolmes režiimis. See võib töötada pöördepunktina (access point), võrguseadmena (station) või mõlemana korraga. Tüüpilise kasutuse juures ühendub ESP8266 välise võrgu külge, kuid selleks on sellel vaja teada välise võrgu SSID-d ja parooli. Selliste parameetrite konfigureerimiseks on pöördepunktina töötamine kasulik, kuna siis saab teiste seadmetega ühenduda ESP8266 külge, mis on nähtav Wi-Fi võrguna. Nii pöördepunktina kui ka võrguseadmena töötades suudab ESP8266 toimida veebiserverina, jagades välja faile ja ka reaalajas genereeritud andmeid.
Programmi kirjutades peavad toimima kõik protseduurid sündmustel (callback) ja ükski protseduur ei tohiks kulutada rohkem aega kui 2 ms. Kui mõne funktsiooni täitmine peaks võtma rohkem aega kui pool sekundit, teeb valvetaimer (WDT) kiibile restardi. Selle eesmärk on programmi mitte ettekavatsetud seiskumisel uuesti programm käivitada, kuid teeb samas programmi kirjutamist keerulisemaks.

AT-käsustik

Tehasest tulles on ESP8266 peal programm, millega saab seda kiipi kontrollida üle UART liidese kasutades Hayesi käsustikule sarnaseid AT-käske. Neid käske kasutades saab luua võrguühendusi, ilma et peaks teadma, kuidas seda mikrokontrollerit ennast süsteemitasandil programmeerima peab. Iga AT käsk peab lõppema reavahetusega (\r\n). Kui alguses oli AT käsustiku kasutamine ainus võimalus kiibiga võrguühenduste loomiseks, siis hiljem avaldas Espressif arendustarkvara, millega sai ka kiibile uusi programme luua.

Programmide pealelaadimine

ESP8266 välkmällu uute programmide laadimiseks tuleb GPIO0 jalg ühendada GND-ga ja CH_PD jalg Vcc-ga. Seejärel on võimalik programme UART liidese kaudu peale laadida. Vaike-ühenduskiirus on 115200 boodi/s. Kui programm on peale laaditud, tuleb programmi käivitamiseks GPIO0 ühendada Vcc-ga ning teha moodulile restart kas toitepinget lahti ja külge ühendades või RESET jala kaudu restardi olukorda välja kutsudes.
Hiljem on lisandunud OTA (Over The Air) võimalus, mis laseb ESP8266-le laadida programme peale juhtmevabalt. Üleslaadimise käigus jagatakse välkmälu kaheks võrdseks osaks: ühes paikneb jooksev programm ja teise poolde kirjutatakse uus programm. See seab ka mälu suuruse piirangu ehk programm peab olema vähemalt 2 korda väiksem kui välkmälu hulk. See välistab 512 KiB ESP-01 moodulitel OTA kasutamise, kuna teegid ise võtavad sellest üle poole ära. Kui kogu programm on mälu teise poolde kirjutatud, sätitakse lipp, mis näitab, et programmi käivitamist tuleb järgmisel korral alustada mälu teisest poolest. Kui uuesti OTA laadimist tehakse, laaditakse programm välkmälu esimesse poolde ning sätitakse lipu väärtus selliseks, et programmi käivitamist alustatakse välkmälu esimesest poolest. OTA kasutuse jaoks on vajalik alati programmi peale laadides sisaldada uues koodis ka see programm, mis on võimeline programmi võrgu kaudu välkmälu õigesse kohta kirjutama. Kui ilma selleta laadida programm ESP8266 peale, siis OTA funktsionaalsus kaob.

Moodulplaadid

Tehasest tulnud kiibid on väikesed ja seega oleks nendega toodete prototüüpide arendamine keeruline. Et arendustööd lihtsamaks teha, on loodud moodulid, millel on ESP8266 kiip koos erinevate muude komponentidega, mis teevad selle kiivi kasutamise mugavamaks. Kõik moodulid kasutavad sama ESP8266 kiipi, suurim erinevus erinevate moodulite vahel on välja toodud GPIO jalgade arv, pistiku tüüp ja kaasa pandud mälu suurus. Mõningatele moodulitele, näiteks Adafruiti HAZZAH'le ning NodeMCU devKitile, on integreeritud ka USB to Serial konverter ja 5V -> 3,3V pingemuundur, mis teeb arendustöö eriti lihtsaks, kuna seda saab otse USB kaudu sidestada.

Espressifi moodulplaadid

Espressif on välja andnud moodulplaadi ESP-WROOM-02, millel on ESP8266 integraalskeem, antenn (rada trükkplaadil, 2 dBi), 26 MHz ostsillaator ja 18 jalga. See moodul on kaetud metallkattega.