ESP-01

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).

ESP-01

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-01NODEMCU V3
CHIPTensilica 32-bit Xtensa L106Tensilica 32-bit RISC CPU Xtensa LX106
ARCHITETTURA32 BIT32 bit
CORE11
CPU80MHz80MHz
WiFiIEEE 802.11 b/g/nIEEE 802.11 b/g/n
Bluetooth//
RTC//
RAM24KB24KB
MEMORIA FLASH512KB - 1MB4MB
PIN GPIO416
INTERFACCIAI2C, SPI, UARTI2C, SPI, UART
TENSIONE OPERATIVA3,3V3,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.

ESP-01

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.

ESP-01

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.

ESP-01