UP | HOME

ESP 32 WROOM - Uso dei PIN

Table of Contents

Premessa

I pin GPIO ESP32 hanno una tensione di 3.3v per logica ALTA (1). Non puoi semplicemente usarli direttamente con qualsiasi sorgente di ingresso 5v, sia che si tratti di un sensore elettronico, di un modulo o di altri microcontrollori (come un Arduino UNO, un microchip PIC, ecc.).

I pin GPIO nel microcontrollore ESP32 sono interconnessi tramite una matrice GPIO piuttosto complessa. Questo è fondamentalmente un multiplexer (MUX) per consentire all'utente (Tu, il programmatore) di selezionare quali pin GPIO vengono instradati a quale segnale periferico internamente.

Qualsiasi pin GPIO può essere un PWM CH1, UART TX, RX o qualsiasi altra funzione. Ciò implica la necessità di affermare che il pin GPIO è in modalità Input / Output se vogliamo che sia solo un normale pin di input / output. E anche per assegnare i pin a qualsiasi periferica che useremo nel caso in cui li uintseremo per funzioni speciali diverse dall'essere ingressi / uscite ad eccezione dei pin (da 34 a 39), questi sono pin solo in ingresso. Inoltre i PIN (GPIO34 - GPIO35 - GPIO36 - GPIO39) permettono di gestire la scheda.

Uso dei PIN Digitali

Per utilizzare un PIN digitale in ingresso e' secessario polarizzarlo correttamente come mostra l'immagine seguente. Nel primo caso si ha l'attivazione del quando il bottone viene premuto nel secondo quando viene rilasciato.

Nota: dopo aver eseguito le configurazioni pull-up e down, è necessario notare che nel segnale di ingresso è ancora presente una fonte di rumore. Ciò deriva dal fatto che il pulsante è un dispositivo meccanico e i contatti meccanici rimbalzano! Maggiori informazioni sul problema di rimbalzo e come eseguire il debouncing corretto Questo articolo è per STM32, non ESP32, ma la conoscenza è applicabile su qualsiasi altra piattaforma.

Nota: dopo aver eseguito le configurazioni pull-up e down, è necessario notare che nel segnale di ingresso è ancora presente una fonte di rumore. Ciò deriva dal fatto che il pulsante è un dispositivo meccanico e i contatti meccanici rimbalzano! Maggiori informazioni sul problema di rimbalzo e come eseguire il debouncing corretto Questo articolo è per STM32, non ESP32, ma la conoscenza è applicabile su qualsiasi altra piattaforma, in pratica occorre tenere premuto il tasto sufficentemente a lungo affinche si raggiunga un livello stabile di soglia di modo che venga campionato.

ESP32-Digital-Inputs-Outputs-Arduino-tutorial-Pull-up-and-Pull-down-1024x425.webp

Figure 1: Schema di collegamento di un pulsante

In pratica prima si imposta il PIN in modo INPUT nel setup e poi in qualsiasi parte del codice si legge lo stato. Il valore GPIOpin si trova nella tabella estratta direttamente dal datasheet riportata nella Lez. n. 1 :

  1. pinMode(GPIOpin, INPUT);
  2. BTNState = digitalRead(GPIOpin) - valido se 1 con cofigurazione PULL-DOWN o 0 se in modo PULL-UP
  3. digitalWrite(LEDGPIO, BTNState) - impostazione del livello della porta, 0 od 1. Lo stato della porta rimane fino al cambiamento successivo. Per il primo valore si puo' fare riferimento alle costanti predefinite GPIONUM_[num. pin] in cui num pin si riferisce al numero indicato sulla board, mentre per il secondo parametro si possono usare le costanti [HIGH|LOW] oppure i valori numerici [1,0]. Per il numero dei pin fare ririmento al seguente link
#define LED_GPIO 2
#define BTN_GPIO 4

int BTN_State = 0; // Variable To Store Button State

void setup()
{
  pinMode(LED_GPIO, OUTPUT);
  pinMode(BTN_GPIO, INPUT);
}

void loop()
{
  // Read The Button State
  BTN_State = digitalRead(BTN_GPIO);
  // Assign The BTN State To The LED Pin
  digitalWrite(LED_GPIO, BTN_State);
}   

ESP32-Digital-Inputs-Outputs-Arduino-tutorial-Connection-Diagram-768x506.webp

Figure 2: Implementazione hardware per l'utilizzo del codice di cui sopra.

Esempio

Video esempio di applicazione per la configurazione del modo di funzionamento di una board LoRa. Il codice e' disponibile su github.

Link Utili

BLOG Sezione ARI Montecatini Terme

ARI ( Associazione Radioamatori Italiani)

PTLUG ( Linux User Group Pistoia )

ARAL ( Associazione Radiamatori Monte Amiata / Monte Labbro )

Author: ARI people

Created: 2023-06-04 dom 11:47

Validate