ESP8266 är en mikrokontroller från den kinesiska tillverkaren Espressif Systems med ett Wi-Fi- gränssnitt . Förutom Wi-Fi kännetecknas mikrokontrollern av frånvaron [1] av flashminne i SoC, användarprogram exekveras från ett externt flashminne med ett SPI -gränssnitt .
Mikrokontrollern väckte uppmärksamhet 2014 på grund av lanseringen av de första produkterna baserade på den till ett ovanligt lågt pris.
Under våren 2016 började produktionen av ESP8285, som kombinerar ESP8266 och 1 MB flashminne. Hösten 2015 introducerade Espressif utvecklingen av linjen - ESP32- chippet och moduler baserade på det [2] .
Mikrokontrollern har inte on-chip användarminne som inte är flyktigt. Programmet exekveras från ett externt SPI-ROM genom att dynamiskt ladda de erforderliga delarna av programmet i instruktionscachen. Inläsningen är hårdvarubaserad, transparent för programmeraren. Upp till 16 MB externt programminne stöds. Standard, Dual eller Quad SPI-gränssnitt tillgängligt.
Tillverkaren tillhandahåller ingen dokumentation för mikrokontrollerns interna kringutrustning. Istället tillhandahåller den en uppsättning bibliotek genom vars API programmeraren får tillgång till kringutrustning. Eftersom dessa bibliotek intensivt använder kontrollerns RAM, anger tillverkaren inte i dokumenten den exakta mängden RAM på chippet, utan bara en grov uppskattning av mängden RAM som kommer att finnas kvar för användaren efter att ha monterat alla biblioteken - cirka 50 kB. Entusiaster som har undersökt ESP8266-biblioteken föreslår att det innehåller 32 KB instruktionscache och 80 KB data-RAM.
Elektriska parametrar, stift, kopplingsscheman finns i dokumenten "0A-ESP8266EX_Datasheet" och "0B-ESP8266__System_Description" från Espressif SDK [4] .
Källan för det körbara programmet ESP8266 ställs in av tillståndet för GPIO0-, GPIO2- och GPIO15-portarna i slutet av återställningssignalen (det vill säga strömmen på). Två lägen är mest intressanta: kodexekvering från UART (GPIO0 = 0, GPIO2 = 1 och GPIO15 = 0) och från extern ROM (GPIO0 = 1, GPIO2 = 1 och GPIO15 = 0). Kodexekveringsläget från UART används för att flasha det anslutna flashminnet, och det andra läget är en vanlig arbetare.
Under våren 2016 lanserade Espressif massproduktionen av ESP8285-chippet. Nu innehåller samma chip både ESP8266 SoC och 1 MB flashminne [5] . Dokumentation för chipet finns i dokumentet "0A-ESP8285__Datasheet".
Hösten 2015 introducerade Espressif utvecklingen av linjen - ESP32-chippet. I början av 2016 blev tekniska prover av det nya chippet tillgängliga för företagets partners för testning, i september 2016 blev ESP32 tillgänglig som en fullfjädrad produkt [6] [7] .
Mjukvaruutvecklingsverktyg (programvaruutvecklingskit, SDK) består av:
Espressif distribuerar fritt sitt utvecklarpaket. Detta paket inkluderar GCC-kompilatorn, Espressif-biblioteken och XTCOM-startverktyget. Bibliotek levereras som kompilerade bibliotek, utan källkod. Espressif stöder två versioner av SDK, en baserad på RTOS och en baserad på callbacks [4] .
Utöver det officiella SDK finns det ett antal alternativa SDK-projekt [8] . Dessa SDK:er använder Espressif-biblioteken eller erbjuder sina egna omvända motsvarigheter till Espressif-biblioteken.
För att förenkla användningen av mikrokontrollern i typiska projekt är det möjligt att använda färdiga binära filer som är lämpliga för direkt uppladdning till ROM av moduler (den så kallade firmware ). Färdig fast programvara kan delas in i flera grupper enligt konceptet för deras användning:
Källan för det körbara programmet ESP8266 ställs in av tillståndet för GPIO0-, GPIO2- och GPIO15-portarna i slutet av återställningssignalen (det vill säga strömmen på). Två lägen är mest intressanta: kodexekvering från UART (GPIO0 = 0, GPIO2 = 1, GPIO15 = 0) och från extern ROM (GPIO0 = 1, GPIO2 = 1, GPIO15 = 0). Kodexekveringsläget från UART används för att flasha flashminnet, och det andra läget är en vanlig arbetare.
Det finns många verktyg för att hantera firmwareuppdateringsprocessen:
En extern SPI-blixt måste ha en specifik rubrik för korrekt kodexekvering. Rubrikstrukturen anges i dokumentationen för XTCOM-verktyget. På ryska är här . Startverktyg vet vanligtvis hur man lägger till det i firmware.
Uppdatera via Wi-FiDet är möjligt att uppdatera den fasta programvaran för en fungerande enhet via Wi-Fi. För att göra detta är flashminnet för program uppdelat i flera delar. En är tilldelad firmware-hanteraren, de andra två är för användarprogrammet. När de vill uppdatera firmwaren laddas den nya bilden in i en ledig del av flashminnet. Efter en noggrann kontroll av integriteten hos den nyligen nedladdade bilden byter firmwarehanteraren flaggan, varefter minnesområdet med den gamla firmwaren frigörs och koden exekveras från det nya området. Följaktligen kommer nästa gång uppdateringen att laddas till ett ledigt minnesområde. Se dokumentet "99C-ESP8266__OTA_Upgrade" från Espressif SDK [4] för detaljer .
En typisk tillämpning av ESP8266 som hårdvarubas för Internet of Things involverar oftast installation i hem eller kontor. I det här fallet görs nätverksanslutningen till ett lokalt hem-/kontorsnätverk med Internetåtkomst via en router . Användaren av enheten kan styra den med en surfplatta eller dator via sitt lokala nätverk eller på distans via Internet.
ESP8266 kan fungera som både accesspunkt och slutstation. Under normal LAN-drift är ESP8266 konfigurerad som en slutstation. För att göra detta måste enheten ställa in SSID för Wi-Fi-nätverket och, i slutna nätverk, åtkomstlösenordet. För initial konfiguration av dessa parametrar är åtkomstpunktsläget bekvämt. I åtkomstpunktsläge är enheten synlig under en vanlig nätverkssökning på surfplattor och datorer. Det återstår att ansluta till enheten, öppna HTML-konfigurationssidan och ställa in nätverksparametrarna, varefter enheten normalt kommer att ansluta till det lokala nätverket i slutstationsläget.
Vid rent lokal användning är det möjligt att alltid lämna enheten i åtkomstpunktläge, vilket minskar användarens ansträngning att konfigurera den.
Efter anslutning till ett Wi-Fi-nätverk bör enheten ta emot IP-parametrarna för det lokala nätverket. Dessa parametrar kan ställas in manuellt tillsammans med Wi-Fi-inställningarna, eller så kan du aktivera alla tjänster för automatisk konfigurering av IP-parametrar (till exempel DHCP ).
Efter att ha konfigurerat IP-parametrarna nås enhetsservern i det lokala nätverket vanligtvis via dess IP-adress, nätverksnamn (om namnen stöds av någon teknik, till exempel NBNS ) eller tjänst (om automatisk tjänstsökning stöds , till exempel , via SSDP- protokollet ).
Ofta krävs åtkomst till enheten från Internet. Till exempel kan en användare fjärrkontrollera statusen för sitt " smarta hem " från en mobiltelefon genom att komma åt enheten direkt. I det här fallet fungerar enheten i serverläge, som nås av en extern klient.
Som regel är en ESP8266-baserad enhet placerad på det lokala nätverket på ett kontor eller ett hem. Internetåtkomst tillhandahålls av en router ansluten på ena sidan till det lokala nätverket och på den andra - till internetleverantörens nätverk. Leverantören tilldelar sin statiska eller dynamiska IP-adress till routern, och routern översätter de lokala nätverksadresserna till leverantörens nätverk. Som standard ger reglerna för denna översättning fri synlighet av Internetadresser från det lokala nätverket, men tillåter inte åtkomst till lokala adresser från Internet. Det finns flera sätt att komma runt denna begränsning.
Konfigurerar NATDe flesta moderna routrar låter dig ställa in ytterligare regler för översättning av nätverksadresser mellan lokala och globala nätverk. Som regel används virtuell server eller DMZ -teknik för detta . Båda teknikerna gör att du kan komma åt en server på det lokala nätverket från det globala nätverket, genom att bara känna till den IP-adress som tilldelats routern av leverantören. När det gäller en statisk router-IP-adress kan detta ofta vara en tillfredsställande lösning för en begränsad krets av systemanvändare. Detta tillvägagångssätt är dock inte alltid bekvämt: du måste manuellt konfigurera routern och ta reda på IP-adressen för routern, som kan ändras regelbundet. Det är relativt enkelt att lösa problemet med en okänd IP-adress med hjälp av DDNS- mekanismen .
DDNSFör att komma åt enhetsservern måste slutanvändaren känna till IP-adressen där enheten finns. Det är dock inte alltid möjligt att få en statisk IP-adress för en enhet från en internetleverantör, och det är obekvämt att använda en sådan adress. För att lösa detta problem skapades speciella internettjänster under det allmänna namnet dynamisk DNS . Dessa tjänster fungerar som specialservrar med fasta namn på Internet. Utvecklaren sätter upp sitt eget konto med ett unikt namn på en sådan tjänst. Han föreskriver parametrarna för detta konto i enheten. En enhet i klientläge kontaktar regelbundet tjänsteservern och berättar namnet på sitt konto och dess nuvarande IP-adress. Slutanvändaren på Internet får åtkomst till samma tjänst och får enhetens aktuella IP-parametrar från den. I det här fallet är enheten synlig i nätverket med ett domännamn på tredje nivå, till exempel esp8266.ddns.org.
Det största problemet med DDNS-tjänster är att garantera existensen av en viss tjänst. I allmänhet garanteras endast en kommersiell tjänst när en avgift tas ut för dess användning.
Externa IoT-tjänsterFör att lindra problemet med att göra enheten tillgänglig på Internet och för att göra installationen av enheten enkel för användaren har ett antal lösningar tagits fram. Mekanismen för dessa lösningar bygger på att det finns en speciell server på Internet, som både en IoT-enhet och en användares surfplatta/dator kan ansluta till. Samtidigt fungerar enheten i klientläge, inga speciella routerinställningar eller speciella färdigheter krävs av installatören och enhetsanvändaren. Datautbyte med enheten utförs genom denna speciella tjänst, vars parametrar måste anges i enheten av utvecklaren. Spridningen av användningen av sådana tjänster begränsas av behovet av att behålla din tjänst på Internet under lång tid eller använda andras tjänster med oklara utsikter för fortsatt existens av gratisfunktioner eller regelbunden betalning för kommersiella alternativ.
Huvudapplikationen för ESP8266 är att styra en mängd olika hushållsapparater via trådlösa nätverk. Konceptet med sådan kontroll hänvisas ofta till som " Internet of Things " (IoT, "Internet of Things"). Den översta nivån av IoT representeras av en mängd olika applikationer för populära plattformar (Android, iOS, Windows, ...). Dessa applikationer tillåter instrumentutvecklaren att skräddarsy applikationen för att styra sitt instrument och förse användaren med en komplett lösning. Det finns flera populära implementeringar av IoT-konceptet när det gäller nätverkskommunikation:
Intressanta mjukvaruprojekt på toppnivå med lösningar baserade på ESP8266:
De första och mest populära inbäddade modulerna [21] baserade på ESP8266 var produkter från det kinesiska företaget AI-Thinker [22] . Som regel säljs dessa moduler med firmware som stöder AT-kommandon . Däremot har företaget en egen firmware för IoT-applikationen, vissa moduler kan följa med. Tyvärr stöder företaget bara kinesiska, vilket gör det svårt att använda sin IoT-firmware och Android-appar för amatörautomatisering.
Initialt levererades modulerna med 512 kB Flash-minne. Senare växte officiell firmware upp och fick inte längre plats i en halv megabyte. Därför kommer de flesta moduler idag med 4 MB Flash-minne.
AI-Thinker-modulernamn | Tillgängliga portar | Stiftdelning, mm | Anslutning | Indikation | Antenn | Skärm | Mått, mm | Anteckningar |
---|---|---|---|---|---|---|---|---|
ESP-01 | 6 | 2,54 | 2×4 DIL | Ja | PCB-spår | Inte | 14,3×24,8 | GPIO15 (RTS) kortsluten till gemensam, kan inte konfigureras för utgång eller flödeskontroll. |
ESP-02 | 6 | 2,54 | 2×4 castellated | Inte | U-FL-kontakt | Inte | 14,2×14,2 | |
ESP-03 | tio | 2.0 | 2×7 castellated | Inte | Keramisk | Inte | 17,3×12,1 | |
ESP-04 | tio | 2.0 | 2×4 castellated | Inte | Ingen | Inte | 14,7×12,1 | |
ESP-05 | 3 | 2,54 | 1×5 SIL | Inte | U-FL-kontakt | Inte | 14,2×14,2 | |
ESP-06 | elva | - | 4×3 tärningar | Inte | Ingen | Ja | 14,2×14,7 | Ej FCC-godkänd |
ESP-07 | fjorton | 2.0 | 2×8 castellated | Ja | Keramik + U-FL-kontakt | Ja | 20,0×16,0 | Ej FCC-godkänd |
ESP-08 | tio | 2.0 | 2×7 castellated | Inte | Ingen | Ja | 17,0×16,0 | Ej FCC-godkänd |
ESP-09 | tio | - | 4×3 tärningar | Inte | Ingen | Inte | 10,0 × 10,0 | |
ESP-10 | 3 | 2,54 | 1×5 castellated | Inte | Ingen | Inte | 14,2×10,0 | |
ESP-11 | 6 | 1,27 | 1×8 castellated | Inte | Keramisk | Inte | 17,3×12,1 | |
ESP-12 | fjorton | 2.0 | 2×8 castellated | Ja | PCB-spår | Ja | 24,0×16,0 | FCC och CE godkända [23] |
ESP-12-E | tjugo | 2.0 | 2×8 castellated | Ja | PCB-spår | Ja | 24,0×16,0 | |
ESP-12-F | tjugo | 2.0 | 2×8 castellated | Ja | PCB-spår | Ja | 24,0×16,0 | FCC och CE godkända. Förbättrad antennprestanda. 4MB Flash |
ESP-13 | 16 | 0,8 | 2×9 castellated | Inte | PCB-spår | Ja | B18,0 x L20,0 | Markerad som ″FCC″. Den skärmade modulen är placerad i sidled, jämfört med ESP-12-modulerna. |
I tabellen betecknar SIL och DIL monterade stiftlister. Castellated - metallisering längs kanten av brädet för ytmontering av modulen. Tärningar - kuddar under modulen, montering i stil med BGA-fodral.
Moduler från andra tillverkarenamn | Tillgängliga portar | Stiftdelning, mm | Anslutning | Indikation | Antenn | Skärm | Mått, mm | Anteckningar |
---|---|---|---|---|---|---|---|---|
Olimex MOD-WIFI-ESP8266 [24] | 2 | 2,54 | UEXT-modul | Ja | PCB-spår | Inte | okänd | |
Olimex MOD-WIFI-ESP8266-DEV [25] | tjugo | 2,54 | 2×11 DIL + castellated | Ja | PCB-spår | Inte | okänd | |
Espressif Espressif WROOM-02 [26] | arton | 2,54 | 2×9 DIL | Inte | PCB-spår | Ja | 18×29 | FCC-godkänd |
SparkFun ESP8266 Thing [27] WRL-13231 | 12 | 2,54 | 2×10 DIL | Ja | PCB-spår + U.FL- sockel | Inte | 58x26 | USB Li-ion batteriladdare |
In-Circuit ESP-ADC [28] | arton | 2,54 | 2x9 DIL | Inte | U.FL-uttag | Inte | 22,9 x 14,9 | ESP8266EX |
Nästan samtidigt med ESP8266 dök en hel rad liknande lösningar från andra tillverkare upp. De använder alla en dubbelchipsarkitektur med programminne i SPI Flash.
Entusiaster skapade en tv-sändare med en modulator för den tredje tv-kanalen på I2S-gränssnittet på ESP8266-chipet . Detta krävde ingen ytterligare hårdvaruledning förutom sändningsantennen. Samtidigt är Wi-Fi-funktionaliteten helt bevarad.
Mikrokontroller | ||||||||
---|---|---|---|---|---|---|---|---|
Arkitektur |
| |||||||
Tillverkare |
| |||||||
Komponenter | ||||||||
Periferi |
| |||||||
Gränssnitt | ||||||||
OS | ||||||||
Programmering |
|
RISC -teknologier | Processorarkitekturer baserade på|
---|---|