GPIO


Az ESP8266ex chip rendelkezik 9db digitális szabadon felhasználható lábbal. Mindegyik lehet bemenet, kimenet, PWM (kvázi analóg kimenet). Minden lábnak van szoftveresen kapcsolható 50k körüli felhúzó ellenállása. A bemenetek 5V toleránsak. Ez azt jelenti, hogy hiába 3.3V a modul tápja, ha a láb bemenetnek van programozva kikapcsolt PULL-UP ellenállással, illetve OPEN-DRAIN kimenetnek van állítva, kerülhet rá 5V, nem megy tönkre. Kimenetnek programozva max 12mA árammal terhelhető egy láb az IC adatlapla szerint. A GPIO parancs ezek vezérlésére, állapotának beolvasására szolgál. Bizonyos események bekövetkeztekor tud egyéb parancsokat automatikusan futtatni.
Jelölésük: D0-D8, A0. WeMos D1 mini modulon feliratozva vannak. Ezek a jelölések nem a chip IO portjai!


WeMos PINESP8266 PINFunctionWeMos resistorBOOT OK
D0io16WakeUPNot internalx
D1io5I2C CLOCKxx
D2io4I2C DATAxx
D3io0x10k pullupHIGH
D4io2Built in LED10k pullupHIGH
D5io14SPI SCLKxx
D6io12SPI MISOxx
D7io13SPI MOSIxx
D8io15SPI CS10k pulldownLOW
A0A0Analog Inputxx
RESETRESETRESET10k pullupHIGH

A D3, D4, D8 lábakat bemenetnek nem célszerű használni, bekapcsoláskor nem megfelelő jelszintek esetén nem bootol be a modul!
ESP8266 A0 analóg bemenete 0V-1V között használható. A WeMos modul A0 lába osztóval megy a chip-re, így 0V-3.3V a bemeneti tartomány.
TXD, RXD láb WeMos modul CH341 USB-SERIAL átalakítójára csatlakozik, nincsenek használva.


Digitális be/kimenet

GPIO[D0]@
Lekérdezi a láb állapotát adatiránytól függetlenül.

GPIO[D5]CL:LED(OFF);STD@OFF
Ha a láb HIGH szintről LOW szintre vált, a LED kikapcsol. Adatirány nem számít. (Command Low)
GPIO[D5]CH:LED(ON);STD@ON
Ha a láb LOW szintről HIGH szintre vált, a LED bekapcsol. Adatirány nem számít. (Command High)

GPIO[D5]C
Végrehajtja a láb állapotának megfelelő parancsot

GPIO[D5]PU
Bekapcsolja a PullUp ellenállást. Default: OFF
GPIO[D5]PU!
Kikapcsolja a PullUp ellenállást.

GPIO[D5]IN
Bemenetnek állítja a lábat.

GPIO[D5]@IN
Bemenetnek állítja a lábat és STDOUT-ra küldi az állapotát.
Ebben a formában a többi parancsban is használható a @ karakter.

GPIO[D5]INP
Bemenetnek állítja a lábat bekapcsolt PullUp ellenállással.

GPIO[D5]INR
Bemenetnek állítja a lábat, ismétli a CL: CH: parancsokat.

GPIO[D5]INPR
Bemenetnek állítja a lábat bekapcsolt PullUp ellenállással, ismétli a CL: CH: parancsokat.

GPIO[D]IR=1000
Ismétlés idejét állítja be, egység: millisecundum. Defaut:50, Min:5
Ez az összes GPIO lábra egyszerre érvényes.

GPIO[D1]OD
Bekapcsolja az OpenDrain kimeneti módot. Default: OFF
GPIO[D1]OD!
Kikapcsolja az OpenDrain kimeneti módot.

GPIO[D1]L
Kimenetnek állítja a lábat LOW logikai szinttel.

GPIO[D1]H
Kimenetnek állítja a lábat HIGH logikai szinttel.

GPIO[D1]I
Kimenetnek állítja a lábat INVERZ logikai szinttel.

GPIO[D1]LC
Kimenetnek állítja a lábat LOW logikai szinttel és végrehajtja Command Low parancsot.

GPIO[D1]HC
Kimenetnek állítja a lábat HIGH logikai szinttel és végrehajtja Command High parancsot.

GPIO[D1]$
Menti a láb állapotát a flash memóriába.

GPIO[D1]!$
Törli a mentett állapotot a flash memóriából.

GPIO[D1]RS
Törli a beállításokat (CL, CH, PU, OD, IR), kikapcsolt felhúzólellenállással bemenetnek állítja a lábat.

GPIO[D]IN
Bemenetnek állítja az összes lábat.
GPIO[D]INP
Bemenetnek állítja az összes lábat bekapcsolt felhúzó ellenállással.
GPIO[D]L
Kimenetnek állítja az összes lábat LOW logikai szinttel.
GPIO[D]LO
Kimenetnek állítja az összes lábat OpenDrain módban LOW logikai szinttel.
GPIO[D]H
Kimenetnek állítja az összes lábat HIGH logikai szinttel.
GPIO[D]HO
Kimenetnek állítja az összes lábat OpenDrain módban HIGH logikai szinttel.


Analóg bemenet

GPIO[A0]@
A0 értékét STDOUT-ra küldi.

GPIO[A0]CC:NUM[0]@=%A0
Ha a láb analóg szintje megváltozik, az aktuális érték NUM[0] helyen tárolódik, STDOUT-ra kiírásra kerül. (Command Changed)

GPIO[A0]AR=100
A0 tartományát adja meg. Defaut:255 (0V=0, 3.3V=255)
A parancs kiadása után 0V=0 3.3V=100 Valid: 2-1024.

GPIO[A0]RS
Törli a beállításokat (CC, AR).


PWM kimenet

GPIO[D1]@
D1 értékét STDOUT-ra küldi.

GPIO[D1]P=128
D1 lábon 50% kitöltésű PWM jel jön ki.

GPIO[D1]PI=25
D1 lábon 90% kitöltésű PWM jel jön ki (inverz).
Ez akkor jön jól, ha pl egy OpenDrain láb és az 5V közé van kötve valami.

GPIO[D1]P=NUM[0]
GPIO[D1]PI=NUM[0]
D1 kitöltési tényezőjét NUM[0] értéke adja meg.

GPIO[D1]P+10
GPIO[D1]PI+10
D1 kitöltési tényezője 10 egységgel nő.

GPIO[D1]P-10
GPIO[D1]PI-10
D1 kitöltési tényezője 10 egységgel csökken.

GPIO[D]PR=100
PWM tartományát adja meg. Defaut:255 (0=0%, 255=100%)
A parancs kiadása után ez 0=0% 100=100% -ra változik. Valid:15(!!!)-65535
Ez az összes GPIO lábra egyszerre érvényes.

GPIO[D]PF=8000
A PWM frekvenciáját állítja be. Default:1000. Egysége: Hz
A parancs kiadása után ez 8kHz lesz. Valid:100-40000.
Ez az összes GPIO lábra egyszerre érvényes.

GPIO[D1]P=A0
GPIO[D1]PI=A0
D1 kitöltési tényezője A0 értéke.
Tartományoknak egyezni kell! Pl: GPIO[D]PR=100|GPIO[D]AR=100

GPIO[D1]P==A0
GPIO[D1]PI==A0
D1 kitöltési tényezője A0 értéke. Automatikusan frissül.

NVR

NVR[0]=P=210
GPIO[4]=NVR[0]
NVR[0] nem felejtő memória értéke lesz GPIO[4] állapota.



Példák

GPIO[D1] ki/be.
GPIO[D1]L| GPIO[D1]CL:STD@OFF|
GPIO[D1]CH:STD@ON

<html> <body> <H1>GPIO[D1] TOGGLE</H1><br> <button type="button" onclick="websocket.send('GPIO[D1]I');">Toggle</button><br> <br> <H2 id="state"></H2> <script type="text/javascript" src="tools.js"></script> <script> startWS(0); function onOpen() { sendWS('GPIO[D1]C'); } function onMessage(msg) { document.getElementById("state").innerHTML = msg; } </script> </body> </html>
PWM csúszka.
GPIO[D2]P=0
<html> <body> <H1>Set GPIO[D2] PWM value</H1><br> <input id="pwm" type="range" min="0" max="255" onchange="set(this.value);"> <span id="pwmval"></span> <script type="text/javascript" src="tools.js"></script> <script> startWS(0); function onOpen() { sendWS('GPIO[D2]@'); } function onMessage(msg) { var wsin = msg.split(","); document.getElementById("pwmval").innerHTML = wsin[0]; document.getElementById("pwm").value = wsin[0]; } function set(e) { var wsstr = "GPIO[D2]@P=" + e; sendWS(wsstr); } </script> </body> </html>
A0 status bar.
<html> <body> <H1>GPIO A0 status bar</H1><br> <progress id="a0" max="100"></progress> <b id="val"></b> <script type="text/javascript" src="tools.js"></script> <script> startWS(0); function onOpen() { sendWS("GPIO[A0]AR=100|GPIO[A0]CC:NUM[0]@=%A0"); } function onMessage(msg) { document.getElementById("a0").value = parseFloat(msg); document.getElementById("val").innerText = msg; } </script> </body> </html>