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.