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)
Occorre quindi installare il software necessario: Strumenti → Scheda → Gestore Scheda e selezionare ESP8266:
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:
Potrebbe essere necessario effettuare alcune configurazioni manuali in merito alla libreria pyserial:
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:
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ò
Una soluzione più semplice è passare a Linux.
In Arduino 1.8 occorre impostarlo in File → Impostazioni → Rete.
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.
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
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:
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);
Pagina creata nel novembre 2021
Ultima modifica: 14 marzo 2024