Arduino IDE

ESP8266

Per utilizzare ESP8266 con l'IDE di Arduino è necessario installare, oltre all'ambiente di sviluppo standard, il compilare e le librerie specifiche (nota 1). Esse sono disponibili su GitHub.

Quanto descritto è stato fatto con la schedina che vedete nella fotografia di apertura (scheda sconosciuta con VID = 10C4 e PID = EA60), ampiamente disponibile al costo di pochi euro.

La procedura è stata testata solo su Debian Bullseye, Debian bookworm, Microsoft Windows 10 e Microsoft Windows 11, ma dovrebbe funzionare anche con sistemi operativi più esotici.

Innanzitutto è necessario scaricare le informazioni corrette per il  "Gestore schede": File → Impostazione → URL aggiuntive, specificando https://arduino.esp8266.com/stable/package_esp8266com_index.json  (nota 2)

URL del file json con l'elenco dei moduli

Occorre quindi installare il software necessario: Strumenti → Scheda → Gestore Scheda e selezionare ESP8266:

Codice del compilatore e annessi&connessi

Infine selezionare la scheda. Quella indicata nell'immagine seguente è in genere adatta per tutte le schede simile a quella della fotografia di apertura, senza marca e/o non meglio definita tra le altre voci:

Scelta della scheda

Possibili problemi

Pyton

Potrebbe essere necessario effettuare alcune configurazioni manuali in merito alla libreria pyserial:

Preferences.txt

Sembra esserci una incompatibilità tra alcune versioni del gestore della scheda (perlomeno la versione 3.1.0) e Arduino Ide: non viene trovato il file Preferences.txt. Soluzioni:

Driver CH340

Questo errore è tipico dei sistemi Windows 11 che usano schede con alcuni chip CH340. Alcuni posti indicano la causa in chip "fake", ma non ho conferme oggettive.

L'errore mostrato è uno dei due seguenti:

A fatal esptool.py error occurred: Cannot configure port, something went wrong. Original message: PermissionError(13, 'Un dispositivo collegato al sistema non in funzione.', None, 31)esptool.py v3.0 Serial port COMx

A fatal esptool.py error occurred: Cannot configure port, something went wrong. Original message: PermissionError(13, 'Un dispositivo collegato al sistema non in funzione.', None, 31)Serial port COMx

Se non appare uno di questi errori, ignorate il seguito di questo paragrafo.

Il problema è causato al driver del chip... troppo aggiornato. La soluzione è Installare il driver del 2014 (non è un errore: serve un driver di 10 anni fa...). Per fare ciò

CH340

Ripristino

Una soluzione più semplice è passare a Linux.

Proxy http

In Arduino 1.8 occorre impostarlo in FileImpostazioniRete.

In Arduino 2.3 è più noioso in quanto l'interfaccia non si avvia se non è possibile il collegamento alla rete e quindi non è possibile impostare il proxy...

Questi passaggi non sono necessari se avete già avviato almeno una volta l'IDE; in questo caso basta configurare il proxy da interfaccia grafica.

Test

Il codice seguente è assolutamente standard e comprensibile anche per il principiante assoluto di Arduino:

void setup() {
   pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
   digitalWrite(LED_BUILTIN, HIGH);
   delay(500);
   digitalWrite(LED_BUILTIN, LOW);
   delay(500);
}

Compilazione e programmazione si fanno con le medesime procedure di Arduino.

Due consigli:

Uno degli aspetti più interessanti di ESP8266 è la disponibilità di WiFi. Il seguente piccolo esempio mostra come connettersi ad una rete WiFi e stampare sul monitor seriale l'IP acquisito:

#include <ESP8266WiFi.h>
const char* ssid = "MY_SSID";
const char* password = "MY_PASSWORD";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  int i = 0;
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(++i); Serial.print(' ');
  }
  Serial.println("Connection established!");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  delay(1000);
}

Da PC:

vv@vv-i7:~$ ping 192.168.10.5
PING 192.168.10.5 (192.168.10.5) 56(84) bytes of data.
64 bytes from 192.168.10.5: icmp_seq=1 ttl=255 time=81.1 ms
64 bytes from 192.168.10.5: icmp_seq=2 ttl=255 time=4.15 ms

PinOut

L'uso dei pin per il collegamento di dispositivi esterni è spesso complicata dal fatto che la serigrafia del circuito stampato è diversa dalla numerazione dei pin dell'ESP8266 e utilizzata all'interno delle librerie Arduino.

Per esempio la scheda D1 Mini venduta da AZDelivery presenta il seguente pinout:

D1 Mini AZDelivery pinout

Il filo verde nella fotografia seguente (D1) è visto dal software con pin 5 ed il codice che lo utilizza è quindi, per esempio, digitalWrite(5, HIGH);

Note

  1. Quando descritto è relativo alla versione 1.8.19 e 2.3.2 di Arduino IDE, correnti nel momento dell'ultima stesura di questa pagina. Alcune immagini sono relative a versioni precedenti.
  2. Se sono presenti altre URL occorre separarle con una virgola


Pagina creata nel novembre 2021
Ultima modifica: 14 marzo 2024


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima