Modulo WiFi ESP8266: Guida alla configurazione e al progetto

ESP8266 è un modulo Wi-Fi adatto a progetti IoT e domotica. Ti permette di controllare ingressi e uscite come faresti con una scheda della serie Arduino, ma con Wi-Fi. Pertanto, è ben adatto per applicazioni di domotica/IoT.

Confrontando l’ESP8266 con altre soluzioni Wi-Fi sul mercato, è un’ottima scelta per la maggior parte dei progetti “Internet of Things”. In questo articolo, introdurremo i concetti di base della scheda ESP8266, il suo schema dei pin e esempi di programmazione.

Introduzione a ESP8266

ESP8266 è un potente e versatile microcontrollore abilitato al Wi-Fi che ha guadagnato popolarità nel mondo dell’elettronica e dell’IoT (Internet of Things). Sviluppato da Espressif Systems, l’ESP8266 offre una soluzione economica per connettere i dispositivi a Internet e consentire loro di comunicare tra loro. Dispone di un modulo Wi-Fi integrato, un potente processore e pin GPIO per collegare componenti esterni. L’ESP8266 può essere programmato utilizzando vari linguaggi di programmazione, rendendolo accessibile sia ai principianti che agli sviluppatori esperti. Il suo basso consumo energetico e le dimensioni compatte lo rendono ideale per un’ampia gamma di applicazioni, tra cui la domotica, le reti di sensori wireless e i dispositivi intelligenti. Ad esempio, l’ESP8266 può essere utilizzato per creare un termostato intelligente che consenta agli utenti di controllare la temperatura delle proprie case da remoto.

Schema dei pin ESP8266

ESP8266 Pinout
Piedinatura di ESP8266

Nel diagramma dei pin, alcuni pin hanno altri usi oltre a GPIO. Ad esempio, il pin D1 non è solo GPIO5, ma anche un’interfaccia SCL, che può essere collegata al pin SCL corrispondente dello schermo LCD.

La seguente tabella mostra la corrispondenza tra le etichette sull’identificazione a bordo e i numeri GPIO, e quali pin sono meglio utilizzati nei progetti e quali pin richiedono cautela. I pin evidenziati in verde sono pronti all’uso. Quelli evidenziati in giallo possono essere utilizzati, ma richiedono attenzione in quanto potrebbero avere un comportamento imprevisto, principalmente all’avvio. I pin evidenziati in rosso non sono raccomandati per l’uso come ingressi o uscite.

Sigla sulla schedaGPIOIngressoUscitaNote
D0GPIO16Digitale; nessun interrupt GPIO in ESP8266 Arduino coreDigitale; PWM software in Arduino corePer il risveglio dal sonno profondo, collegare GPIO16 a RST; verificare il circuito della scheda.
D1GPIO5DigitaleDigitaleAssegnazione comune del clock I2C in Arduino core; configurabile via software.
D2GPIO4DigitaleDigitaleAssegnazione comune dei dati I2C in Arduino core; configurabile via software.
D3GPIO0Mantenere HIGH al reset per avviare dalla FlashDigitale dopo l’avvioLOW al reset seleziona il caricamento UART; verificare il collegamento del pulsante FLASH.
D4GPIO2Mantenere HIGH al resetDigitale dopo l’avvioIl collegamento del LED dipende dalla scheda; non collegare GPIO2 direttamente a VCC.
D5GPIO14DigitaleDigitaleClock HSPI (SCLK) se assegnato a SPI.
D6GPIO12DigitaleDigitaleIngresso dati HSPI (MISO) se assegnato a SPI.
D7GPIO13DigitaleDigitaleUscita dati HSPI (MOSI) se assegnato a SPI.
D8GPIO15Mantenere LOW al resetDigitale dopo l’avvioSelezione del chip HSPI (CS); evitare una resistenza esterna verso il positivo durante il reset.
RXGPIO3UART0 RX o ingresso digitaleDigitale se non usato da UARTPuò condividere il ponte USB-UART; non seleziona la modalità di avvio.
TXGPIO1Digitale se non usato da UARTUART0 TX o uscita digitaleEmette i messaggi di avvio; non seleziona la modalità di avvio.
A0ADC0Ingresso analogicoNon disponibileIntervallo ADC del chip: 0–1,0 V; il partitore A0 della scheda può cambiare l’intervallo ammesso. Verificare lo schema.

Cablaggio e avvio dell’ESP8266 con un microcontrollore

Quando si collega un modulo Wi-Fi ESP8266 a un microcontrollore o a una scheda Arduino, alimentazione, livelli logici e strap di boot vanno verificati separatamente. Molti presunti errori UART o firmware sono in realtà cali di tensione o stati di avvio errati. Controllare lo schema del modulo esatto, perché le schede di sviluppo possono integrare regolatore e resistenze di pull.

  • Fornire 3,3 V stabili: dimensionare regolatore e piste per i picchi di corrente Wi-Fi, riservando normalmente almeno 500 mA di capacità transitoria, con condensatori bulk e HF vicino al modulo.
  • Proteggere i segnali: usare logica compatibile a 3,3 V e convertire l’uscita di un host a 5 V prima dell’ingresso ESP8266; collegare le masse a bassa impedenza.
  • Collegare la UART: incrociare TX host con RX modulo e RX con TX, scegliere un baud noto ed evitare LED o pull forti sulle linee seriali.
  • Impostare gli strap: sul comune hardware ESP-12 mantenere EN e GPIO2 alti, GPIO15 basso e GPIO0 alto per il boot oppure basso durante reset per il flashing.
  • Avviare per gradi: misurare rail 3,3 V e reset, acquisire il log di boot, identificare firmware AT o personalizzato e provare un comando o pacchetto prima dei sensori.

Come programmare ESP8266 con Arduino IDE?

Ci sono molti modi per programmare ESP8266:

  1. Utilizzare Arduino IDE per lo sviluppo, seguire lo stile di sviluppo di Arduino, facile da usare;
  2. Utilizzare lo sviluppo ESP8266 SDK ufficiale;
  3. Utilizzare MicroPython per lo sviluppo, seguire lo stile di programmazione di Python (questo metodo deve prima bruciare un firmware speciale per la scheda);

Qui scegliamo il primo, perché la programmazione Arduino è semplice e facile da usare.

Passaggio 1: installare Arduino IDE

Scarica l’IDE dal sito Web ufficiale di Arduino: https://www.arduino.cc/en/software. La versione che sto utilizzando ora è Arduino IDE 1.8.3. (Notare che l’ultima versione di Arduino IDE 2.1.1 non può installare il pacchetto di risorse ESP8266 online.)

Install Arduino IDE 1.8.3
Installare Arduino IDE 1.8.3

Passaggio 2: installare il pacchetto ESP8266

Poiché l’Arduino IDE viene utilizzato per impostazione predefinita per la scheda di sviluppo Arduino, ci sono solo risorse di sviluppo pertinenti per la scheda di sviluppo Arduino per impostazione predefinita. Per utilizzare ESP8266 in Arduino IDE, dobbiamo installare manualmente il pacchetto di sviluppo ESP8266. Ci sono due metodi di installazione: installazione online e installazione di pacchetti offline, qui scegliamo il primo.

Innanzitutto, trova la “File -> Preferences” nel menu Arduino IDE: 

Open Preferences in Arduino IDE
Aprire le preferenze in Arduino IDE

E quindi, inserisci il link sottostante in “Additional Boards Manager URLs”:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Setting Additional boards manager URLs in Preferences
Impostare gli URL aggiuntivi del gestore schede nelle preferenze

Successivamente, fai clic per aprire: Tools -> Board -> Board Manager.

Open Boards Manager in Arduino
Aprire il gestore schede in Arduino

Nel campo, inserisci e cerca “esp8266”, vedrai un pacchetto esp8266, fai clic su “Installa” per avviare l’installazione online.

Search and Install the ESP8266 Board
Cercare e installare la scheda ESP8266
Installing ESP8266 packages
Installazione dei pacchetti ESP8266

Dopo che l’installazione è completa, puoi trovare tutte le risorse sulla scheda esp8266 nel menu “Tools->Board”.

ESP8266 Boards Resource (3.1.2 Version)
Risorse per le schede ESP8266 (versione 3.1.2)

Passaggio 3: Programmazione ESP8266

Qui scriviamo un semplice programma di test della connessione di rete per la scheda ESP8266, il codice del programma è il seguente:

				
					void setup() {
  Serial.begin(9600);
  Serial.println("esp8266 test");
  initWiFi();

}

void loop() {
  Serial.println("hello esp8266");
  delay(1000);

}

#include <ESP8266WiFi.h>

constchar ssid[] = "xxxxx";      //WiFi Name
constchar pass[] = "xxxxx";       //WiFi Password

WiFiClient client;

//Initialize WIFI
void initWiFi()
{
   Serial.print("Connecting WiFi...");
   WiFi.mode(WIFI_STA); //Configure WIFI as Station mode
   WiFi.begin(ssid, pass); //Incoming ssid and password of WIFI hotspot
   while (WiFi.status() != WL_CONNECTED) //Waiting for successful connection
   {
     delay(500);
     Serial. print(".");
   }

   Serial.println("");
   Serial.println("WiFi connected");
   Serial.println("IP address: ");
   Serial.println(WiFi.localIP()); //print your own IP address
}
				
			

Note:
La funzione setup viene utilizzata per l’inizializzazione della porta seriale. Ad esempio, “Serial.begin(9600);” significa che la velocità di trasmissione iniziale della porta seriale è 9600.

La funzione loop è simile a while(1){} nella funzione main nello sviluppo di un microcontrollore, dove possiamo scrivere i codici logici del programma.

Per utilizzare la funzione WIFI, è necessario includere il file di intestazione “ESP8266WiFi.h”.

Il processo di inizializzazione WIFI include 3 passaggi:

  1. Configura WIFI in modalità Station, ovvero la nostra ESP8266 viene utilizzata come dispositivo WIFI;
  2. Passa l’ssid e la password dell’hotspot WIFI, in modo che ESP8266 possa connettersi all’hotspot;
  3. Leggi lo stato della connessione WIFI e attendi che la connessione abbia esito positivo.

Seleziona il modello e il numero di porta seriale della tua scheda di sviluppo ESP8266:

Choose Board NodeMCU 1.0 (ESP-12E Module)
Scegliere la scheda NodeMCU 1.0 (modulo ESP-12E)

Ora, possiamo compilare e caricare il codice nella scheda ESP8266WiFi.

Compile and Upload the code to ESP8266 WiFi Module
Compilare e caricare il codice sul modulo WiFi ESP8266

Condividi con:

Torna in alto

Instant Quote

Preventivo immediato