Dai nomi D ai numeri GPIO
D0 è il GPIO16, D1 il GPIO5, D2 il GPIO4, D3 il GPIO0, D4 il GPIO2, D5 il GPIO14, D6 il GPIO12, D7 il GPIO13 e D8 il GPIO15. Nel core Arduino per l’ESP8266 puoi scrivere sia D5 sia 14: con la scheda D1 mini selezionata, le costanti D puntano al GPIO giusto.
D3, D4 e D8: pin di avvio
L’ESP8266 legge tre pin al reset: per eseguire lo sketch il GPIO0 (D3) e il GPIO2 (D4) devono essere ALTI e il GPIO15 (D8) BASSO. La scheda imposta già questi livelli con delle resistenze, quindi i pin funzionano come uscite e per i pulsanti, purché nulla imponga il livello sbagliato all’accensione. D4 comanda anche il LED blu del modulo, acceso quando il pin è BASSO.
| Pin | Sulla D1 mini | Livello al reset | In pratica |
|---|---|---|---|
| D3 · GPIO0 | Tenuto ALTO | ALTO esegue lo sketch, BASSO avvia la modalità di programmazione | Un pulsante verso GND va bene |
| D4 · GPIO2 | Tenuto ALTO, LED | ALTO | Non portarlo BASSO all’accensione |
| D8 · GPIO15 | Tenuto BASSO | BASSO | Niente pull-up né moduli che lo portano ALTO |
D0, il pin speciale
Il GPIO16 (D0) non può generare interrupt e non ha pull-up interno, solo un pull-down. Il suo compito principale è svegliare la scheda dal deep sleep: collega D0 a RST ed ESP.deepSleep() risveglia la scheda con il suo timer. WEMOS lo indica come l’unico pin senza interrupt, PWM, I²C e 1-Wire.
Ingresso analogico e bus
A0 è l’unico ingresso analogico. L’ESP8266 da solo accetta da 0 a 1,0 V, e la D1 mini ha un partitore che porta la gamma a circa 3,2 V. L’I²C funziona via software su quasi tutti i pin, per impostazione predefinita D2 (SDA) e D1 (SCL). L’SPI usa i pin hardware fissi D5 (SCK), D6 (MISO) e D7 (MOSI), con il CS su D8 per impostazione predefinita. TX e RX vanno al convertitore USB-seriale.
Tabella completa dei pin della D1 mini
| Pin | GPIO | Stato | Analogico | Funzioni | Note |
|---|---|---|---|---|---|
| D3 | GPIO0 | Con cautela | No | PWM (analogWrite) | avvio: ALTO |
| TX | GPIO1 | Con cautela | No | PWM (analogWrite), U0TXD | TX seriale, UART TX |
| D4 | GPIO2 | Con cautela | No | PWM (analogWrite), U1TXD (Serial1) | avvio: ALTO, LED |
| RX | GPIO3 | Con cautela | No | PWM (analogWrite), U0RXD | RX seriale, UART RX |
| D2 | GPIO4 | Libero | No | PWM (analogWrite) | I²C SDA |
| D1 | GPIO5 | Libero | No | PWM (analogWrite) | I²C SCL |
| D6 | GPIO12 | Libero | No | PWM (analogWrite), HSPI MISO | SPI MISO (RX) |
| D7 | GPIO13 | Libero | No | PWM (analogWrite), HSPI MOSI, RXD2 (Serial.swap) | SPI MOSI (TX) |
| D5 | GPIO14 | Libero | No | PWM (analogWrite), HSPI SCK | SPI SCK |
| D8 | GPIO15 | Con cautela | No | PWM (analogWrite), HSPI CS, TXD2 (Serial.swap) | avvio: BASSO, SPI CS |
| D0 | GPIO16 | Con cautela | No | PWM (analogWrite) | niente interrupt, risveglio dal deep sleep |
| A0 | No | Solo ingresso | ADC (TOUT) | No | solo analogico, da 0 a 3,2 V |
I GPIO da 6 a 11 sono collegati alla flash del modulo e non sono sul connettore. I pin lavorano a 3,3 V e non sono garantiti per i 5 V, quindi per i segnali a 5 V usa un traslatore di livello.
Domande frequenti
Quali pin della D1 mini si possono usare senza problemi?
D1, D2, D5, D6 e D7 (GPIO 5, 4, 14, 12 e 13) non hanno ruoli all’avvio e supportano interrupt e PWM. D3, D4 e D8 sono pin di avvio, D0 ha dei limiti, mentre TX e RX appartengono alla porta seriale.
Qual è la tensione massima su A0 della D1 mini?
Circa 3,2 V, grazie al partitore sulla scheda. L’ESP8266 da solo accetta da 0 a 1,0 V sul suo ADC, quindi i moduli nudi hanno bisogno di un partitore proprio.
Come risveglio la D1 mini dal deep sleep?
Collega D0 (GPIO16) a RST e chiama ESP.deepSleep() con il tempo di sonno in microsecondi. Allo scadere del tempo il GPIO16 porta RST BASSO e la scheda riparte.
Perché la mia D1 mini non si avvia con qualcosa collegato a D8?
D8 è il GPIO15, che al reset deve essere BASSO. Un modulo o un pull-up esterno che lo tiene ALTO fa scegliere all’ESP8266 un’altra modalità di avvio. Sposta quel collegamento su D1, D2 o da D5 a D7.
Quali sono i pin I2C e SPI della D1 mini?
L’I²C usa per impostazione predefinita D2 (SDA) e D1 (SCL), e Wire.begin(SDA, SCL) lo sposta su quasi tutti gli altri pin. L’SPI usa D5 (SCK), D6 (MISO) e D7 (MOSI), con il CS di solito su D8.