Introduktion till ESP8266, del 1 – Bakgrund och mjukvara

ESP-12F
ESP-12F

ESP8266 har inte funnits så länge, men har snabbt blivit något av en IoT-favorit. Särskilt det senaste året har den fullkomligt exploderat, med en uppsjö produkter baserade på chippet.

Det mest framträdande är kanske ESP-12, en av de senare utgåvorna som används på Breakout boards som NodeMCU och Adafruits HUZZAH.

Men vad är ESP8266 för något? Och vad kan man göra med den?

Enkelt uttryckt kan man säga att ESP8266 (härefter kallad ”ESPen”) är ett WiFi-nätverkskort som kan integreras med exempelvis Arduino och Raspberry Pi för att låta dem använda WiFi genom seriell kommunikation med chippet.

Men det som på senare tid gjort den så omåttligt populär är att den, med lite ny mjukvara, kan agera som vilken mikrokontroller som helst. Så i princip kan man jämföra den med en Arduino med WiFi. Det finns i dagsläget ett flertal lösningar för hur man programmerar och använder ESPen, och det kommer vi att gå igenom i detta inlägg!

Grundmjukvaran – ”AT Command Set Firmware”

När ESPen släpptes sommaren 2014 fanns ingen vettig dokumentation på engelska, och tanken var att man skulle använda den som en ”seriell-till-WiFi”-adapter. Kontrollern (t.ex. en Arduino) skickade kommandon seriellt för att genom ESPen kommunicera med WiFi-nätverk.

EspressifEspressif SDK

När intresset för modulen växte lanserade Espressif en SDK med vilken man kunde programmera modulernas firmware i C. Detta gjorde att man kunde använda modulen fristående.

Numera finns två versioner av SDKn, den ”vanliga” och en ”RTOS SDK” som är baserad på FreeRTOS. Det finns också en community-utvecklad fork av RTOS SDK.

ArduinoArduino SDK

Sedan version 1.6.4 kan man importera externa paket i pakethanteraren i Arduinos SDK. Detta har självklart någon utnyttjat genom att skapa en ”Arduino core” för ESP8266! 🙂

Tanken är kort och gott att man ska kunna koda på samma sätt, och med samma bibliotek, som om man kodade mot en Arduino.

ESP Easy

ESP Easy är färdig mjukvara med inbyggd HTTP-server som man kan flasha in på ESP:en med t.ex. Arduino SDK:n. Denna mjukvara gör det enkelt att skapa enkla enheter för t.ex. Domoticz.

NodeMCUNodeMCU firmware

För den som föredrar programmeringsspråket Lua finns NodeMCU, som är baserat på Espressifs första SDK. Användandet av Lua gör det något enklare att skriva och läsa koden. Detta är också den mjukvara som bland annat Wemos och Adafruits enheter är flashade med från början.

MicroPythonMicroPython for ESP8266

MicroPython började, som så många andra framgångssagor de senaste åren, på Kickstarter. Den gången togs projektet fram baserat på en särskild ”Micro Python board”, pyBoard.

I och med att ESP8266 blivit så populär bestämde sig gänget bakom projektet att dra igång en ny Kickstarter, denna gång utan hårdvara. Man ville istället porta MicroPython till ESP8266, och göra det bra. Projektet finns redan nu uppe på Github, men är inte färdigt ännu. Några spännande nyheter som kommer finnas i den färdiga versionen är någon form av databas, och en ”WebREPL” som gör att man kan ansluta till sin ESP genom en webläsare och exekvera kod.

Det fanns redan en proof-of-concept för MicroPython på ESP8266, men så här säger Damien George och gänget bakom MicroPython angående detta:

”There is already a proof of concept port of MicroPython to the ESP8266 but it uses the execution model provided by Espressif. This model requires you to set up callbacks to process Wi-Fi requests and leads to very cumbersome code. Python is built around standard Berkeley sockets and what we want to do is develop such “proper” sockets for MicroPython on the ESP8266. We aim to provide a true Python socket API to make development a pure joy.”

MySensors

Den öppna IoT-plattformen MySensors har även de färdig mjukvara för ESP8266 som gör att den kan agera Gateway över MQTT Eller MySensors eget protokoll (som går över Ethernet). Man kan då enkelt få in sensordata i valfri kontroller, och särskilt enkelt är det med de som stödjer MQTT. Till själva gatewayen ansluter man sedan billiga sensorer baserade på Arduino, som kommunicerar över t.ex. 433MHz-bandet.

ESPlorer

Värt att nämna i detta sammanhang är också ESPlorer, en Java-baserad IDE för ESP-korten. Den är kompatibel med NodeMCU (Lua) och den äldre versionen av MicroPython. Förhoppningsvis kommer den även att vara kompatibel med den nya, förbättrade versionen av MicroPython, när den är färdig. ESPlorer är praktisk som IDE då den bland annat har syntax highlight och auto-complete av både Lua och Python.

Avslutningsvis

Det var allt för detta inlägg. Nästa gång kommer vi gå igenom några olika varianter av produkter baserade på ESP8266, och hur man flashar dem med ny mjukvara! På återseende 🙂

4 reaktioner på ”Introduktion till ESP8266, del 1 – Bakgrund och mjukvara”

  1. Funkar också fint att köra MySensors direkt på ESPn!

    Den kan då kommunicera dubbelriktat via MQTT eller MySensors eget protokoll (ethernet) . Superenkelt att få in sensordata till sin favoritcontroller.

Kommentera