Guida su come programmare una ESP-01 su IDE Arduino
I moduli ESP-01 sono dev-board basate su ESP8266 di piccolissima dimensione e dotati di pochissimi pin, nonché privi di una porta USB per il collegamento a PC. Nonostante questi limiti apparenti, vedremo che posso essere utilizzate per progetti IoT e che la loro programmazione non è poi così complessa. Abbiamo già visto QUI come predisporre la IDE di Arduino per programmare e caricare uno sketch su una ESP8266, quindi non ripeteremo l’iter.
Specifiche
La ESP-01 è sicuramente il modello più piccolo ed economico tra le ESP8266, acquistabile con adattatore incluso su Amazon a circa 8€ e su Aliexpress a meno di 3€.
Le ridotte dimensioni ( 24,8 x 14,3 x 3,0 mm) fanno sì che il numero di pin sia molto scarso: troviamo solo 8 pin e 4 solo di questi sono programmabili per il flusso dei dati. Sulla scheda questi pin sono RX (GPIO3), TX (GPIO1), GPIO 0 e GPIO 2. Gli altri pin sono il Vcc (per l’alimentazione a 3,3V), il Ground (GND), il pin reset (RST) e il pin Enable (EN).

Come tutte le ESP8266, la ESP-01 è dotata di connessione WiFi a 2,4GHz con protocollo 802.11 b/g/n. Le interfacce adoperate sono la UART, SPI, I2S e I2C e la tensione di lavoro è a 3,3V. Il processore adoperato è un Tensilica 32-bit Xtensa L106, con una memoria flash da 512KB per la versione più vecchia della ESP-01, mentre 1MB per la versione più aggiornata (ESP-01S). Tuttavia manca completamente la connettività USB per caricare gli sketch.
| ESP-01 | NODEMCU V3 | |
|---|---|---|
| CHIP | Tensilica 32-bit Xtensa L106 | Tensilica 32-bit RISC CPU Xtensa LX106 |
| ARCHITETTURA | 32 BIT | 32 bit |
| CORE | 1 | 1 |
| CPU | 80MHz | 80MHz |
| WiFi | IEEE 802.11 b/g/n | IEEE 802.11 b/g/n |
| Bluetooth | / | / |
| RTC | / | / |
| RAM | 24KB | 24KB |
| MEMORIA FLASH | 512KB - 1MB | 4MB |
| PIN GPIO | 4 | 16 |
| INTERFACCIA | I2C, SPI, UART | I2C, SPI, UART |
| TENSIONE OPERATIVA | 3,3V | 3,3V |
| COSTO (€) | ±1,90 | ±2,60 |
Per sopperire, si adopera un particolare adattatore con porta USB-A che si incastra perfettamente con la scheda. Esistono altri modi per caricare il programma sulla dev-board, ma noi ci concentreremo su questo.
Collegamenti
Per caricare lo sketch sulla ESP-01 non basterà solamente predisporre la IDE o utilizzare l’adattatore USB. Sarà necessario predisporre la scheda stessa alla programmazione, facendola entrare in Program Mode. Per entrare nella modalità di programmazione, dovremmo saldare all’adattatore un pulsante a due pin, in particolare in corrispondenza dei pin GND e GPIO0.

Una volta saldato il pulsante, montate la ESP-01 sull’adattatore e, tenendo premuto il pulsante, collegatelo alla porta USB del PC, sempre senza lasciare il pulsante. Trascorsi 2 secondi, lasciate il pulsante e la scheda sarà pronta per ricevere il codice.
Codice
Testeremo la nostra ESP-01 caricando due codici d’esempio, uno per far accendere e spegnere il led integrato, l’altro per testare il WiFi e scansionare la presenza di rete. Come abbiamo già detto prima, ma lo ripetiamo per spirito certosino, inserite la dev-board connessa all’adattatore USB nella porta del PC, tenendo premuto e senza lasciare il bottone saldato per due secondi circa, poi rilasciate.

Quando il primo sketch sarà pronto, sulla barra dei menu della IDE di Arduino andate su Strumenti->Scheda e selezionate la voce Generic ESP8266 Module, poi selezionate la porta di connessione e caricate lo sketch.

Dalla barra dei menu, selezionate File->Esempi->01.Basic->Blink e caricate lo sketch seguendo le indicazioni sopra riportate. Il Led integrato nella ESP-01 si accenderà e spegnerà ogni secondo.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Per eseguire il secondo sketch, andiamo di nuovo sulla barra dei menu selezionando File->Esempi->ESP8266WiFi->WiFi Scan, modifichiamo la seriale da 115200 a 9600, carichiamo lo sketch sempre eseguendo la metodologia descritta all’inizio di questo paragrafo.
#include "ESP8266WiFi.h"
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("Setup done");
}
void loop() {
Serial.println("scan start");
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
delay(10);
}
}
Serial.println("");
delay(5000);
}
Se tutto è andato bene, scollegate e ricollegate la ESP-01 dalla porta USB del PC, stavolta senza tenere premuto il pulsante, aprite poi il monitor seriale e vedrete un elenco delle reti WiFi disponibili.










