Innehållsförteckning:

ESP8266 Använda GPIO0/GPIO2/GPIO15 Pins: 4 steg
ESP8266 Använda GPIO0/GPIO2/GPIO15 Pins: 4 steg

Video: ESP8266 Använda GPIO0/GPIO2/GPIO15 Pins: 4 steg

Video: ESP8266 Använda GPIO0/GPIO2/GPIO15 Pins: 4 steg
Video: P2 ESP01 4CH Relay Module (Subtittled) 2024, November
Anonim
ESP8266 Använda GPIO0/GPIO2/GPIO15 -stift
ESP8266 Använda GPIO0/GPIO2/GPIO15 -stift

Uppdatering 1 juli 2018-Lagt till anteckning om omprogrammering när GPIO0 är en utgång

Detta är en mycket kort anteckning om hur du använder GPIO0 / GPIO2 och GPIO15 -stiften på ESP8266 -modulen.

Uppdatering: Se även hur du använder ESP8266-01-stiften

Introduktion

ESP8266 är ett billigt wifi -aktiverat chip. Den finns i en mängd olika modultyper och kan programmeras på olika sätt. Alla moduler gör GPIO0 och GPIO2 tillgängliga. De flesta moduler, andra än ESP8266-01, gör också GPIO15 tillgängligt. Dessa GPIO: er styr hur modulen startar och kräver som sådan särskild hantering om de överhuvudtaget ska användas. GPIO6-GPIO11 kräver också särskild behandling enligt beskrivningen nedan.

Steg 1: Flash GPIO -stift - GPIO6 till GPIO11

De flesta ESP8266-kort har ett flashchip anslutet till några eller alla GPIO6-GPIO11. De flesta program använder både flashminne och RAM, så om du inte specifikt ser till att din kod bara körs från RAM kan du inte använda dessa pins för andra ändamål.

Det exakta antalet stift som används i intervallet GPIO6 till GPIO11 beror på vilken typ av blixtmaskinvara som används på din modul. Quad IO använder 4 rader för data (totalt 6 stift) för upp till 4 gånger hastigheten på standard. Dual IO använder 2 rader för data (totalt 4 stift) Standard använder en enda rad för data (totalt 3 stift).

Om du inte vet exakt vad ditt kort kräver, är det bäst att bara ignorera GPIO6 till GPIO11 och inte hänvisa till dem från din kod.

Steg 2: GPIO0-, GPIO2- och GPIO15 -stift

GPIO0, GPIO2 och GPIO15 stift
GPIO0, GPIO2 och GPIO15 stift

Dessa stift bestämmer i vilket läge chipet startar.

För normal programkörning måste GPIO0 och GPIO2 dras upp till Vcc (3.3V) och GPIO15 måste dras till GND, var och en med ett motstånd i intervallet 2K till 10K motstånd. Ett 2K -motstånd ger bättre brusimmunitet. OLIMEX använder 2K -motstånd SparkFun använder 10K -motstånd. Jag använder 3K3 motstånd.

Inställningarna för dessa ingångar kontrolleras endast under chipets uppstart (eller återställning). Därefter är stiften tillgängliga för allmän användning, men som diskuteras nedan begränsas deras användning av dessa yttre upp-/nedmotstånd.

Steg 3: Använda GPIO0, GPIO2 och GPIO15 som utgångar

Använda GPIO0, GPIO2 och GPIO15 som utgångar
Använda GPIO0, GPIO2 och GPIO15 som utgångar

Som nämnts ovan har dessa stift redan ett motstånd anslutet till antingen VCC (GPIO0 och GPIO2) eller GND för GPIO15. Detta avgör hur en extern enhet, som ett relä eller LED+motstånd, måste anslutas. För GPIO0 och GPIO2 måste ett externt relä anslutas mellan VCC och stiftet så att det inte stör verkan av uppdragningsmotståndet. Omvänt måste ett externt relä anslutet till GPIO15 anslutas mellan GND och stiftet så att det inte stör verkan av neddragningsmotståndet.

För att aktivera den externa enheten måste GPIO0 eller GPIO2 drivas LOW (Active LOW) medan GPIO15 måste köras HIGH (Active HIGH).

Schemat ovan visar hur du använder GPIO0 och GPIO2 och GPIO15 som utgångar. Denna krets inkluderar också de nödvändiga pullup/pulldown -motstånden. Observera att 5V-relämodulen som drivs av GPIO0 är opto-isolerad och har en separat gemensam anslutning för ingången. Det är viktigt att 5V VCCA -spänningen inte appliceras på ESP8266 -stiftet.

Hur man programmerar om när man använder GPIO0 som utgång

Obs: GPIO0 måste jordas för att komma in i programmeringsläge. Om du skissar kör den högt kan jordning av den skada dig ESP8266 -chip. Det säkra sättet att omprogrammera ESP8266 när din kod driver GPIO0-utgången är:- a) Stäng av kortet b) kort GPIO0 till gnd c) starta kortet som går in i programläge på grund av kort GPIO0 d) ta bort den korta från GPIO0 så att du inte kortar ut utmatningen när programmet körs e) omprogrammerar kortet f) strömförsörjer kortet om det behövs.

Steg 4: Använda GPIO0, GPIO2 och GPIO15 som ingångar

Använda GPIO0, GPIO2 och GPIO15 som ingångar
Använda GPIO0, GPIO2 och GPIO15 som ingångar

Att använda dessa stift som ingångar är lite knepigt. Som nämnts ovan vid uppstart och vid återställning måste dessa stift dras uppåt eller nedåt efter behov för att ESP8266 -modulen ska kunna startas i normalt driftläge. Detta betyder att du i allmänhet inte bara kan ansluta en extern strömbrytare till dessa stift, eftersom du vid uppstart vanligtvis inte kan garantera att omkopplaren inte drar ingången till marken och förhindrar att modulen startar korrekt.

Tricket är att inte ansluta den externa omkopplaren direkt från GPIO0 eller GPIO2 till GND utan att ansluta den istället till en annan GPIO -stift som drivs till jord (som en utgång) först efter att ESP8266 har startat. Kom ihåg att när de används som utgångar ger GPIO -stiften en mycket låg resistansanslutning till antingen VCC eller GND beroende på om de drivs HIGH eller LOW.

Här kommer endast GPIO0 och GPIO2 att övervägas. Med denna metod kan du få en (1) tilläggsinmatning med hjälp av dessa två (2) GPIO: er.

En liknande metod kan användas för GPIO15 genom att använda en annan GPIO -stift för att ansluta omkopplaren till +VCC, men detta får ingen extra ingång, du kan lika gärna använda den andra GPIO -stiftet direkt som en ingång.

Kretsen ovan använder ESP8266-01-modulen som ett exempel. Utan att använda detta trick har ESP8266-01 inga lediga stift att använda som ingång om du redan använder stift RX/TX för en UART-anslutning.

Eftersom skissens setup () -metod bara körs efter att ESP8266 -modulen startat är det säkert att göra GPIO0 -utgång LÅG då och därmed ge en mark för S1 ansluten till GPIO2. Du kan sedan använda digitalRead (2) någon annanstans i din skiss för att läsa omkopplarinställningen.

Slutsats

Denna korta anteckning visar hur du använder GPIO0, GPIO2 och GPIO15 som utgångar och hur du använder får en extra ingång med GPIO0 och GPIO2 tillsammans.

Rekommenderad: