La ESP32-C3 Super Mini è una delle ESP32 più piccole in commercio, ideale per progetti di piccole dimensioni

La ESP32 è la dev-board più apprezzata per i progetti DIY, soprattutto per la Smart Home. Spesso diventa però difficile ridurre le dimensioni dei proprio progetti, anche per le dimensioni di alcune schede molto diffuse. La ESP32-C3 Super Mini è una soluzione eccellente per chi ha poco spazio e vuole realizzare progetti DIY di ridotte dimensioni, senza rinunciare alle features offerte dalla ESP32.

Specifiche

La ESP32-C3 Super Mini è una dev-board di 18 mm x 22,52 mm, molto piccola e compatta. Possiamo trovarla in due versioni: una con SoC ESP32-C3FH4 ed una con SoC ESP32-C3FN4. Entrambi i modelli si basano comunque su un chip a 32bit da 160MHz, con 4MB di memoria flash e 400KB di RAM, mentre la ROM ha disponibili solo 384KB.

Troviamo ben 16 pin, di cui ben 13 sono GPIO e di questi 3 sono analogici. La tensione di lavoro di questa dev-board è di 3,3V, tuttavia possiamo alimentare la scheda con i 5V direttamente dal connettore USB Type-C o da pin 5V presente sulla ESP32-C3 Super Mini.

Come ogni ESP32 che si rispetti, anche la ESP32-C3 Super Mini possiede una connettività Wi-Fi da 2,4GHz IEEE 802.11 b/g/n ed una connettività Bluetooth 5. Le interfacce integrate sono UART, SPI, I2C e I2S. Troviamo un Led blu, collegato al pin 8 e un Led rosso che indica che la scheda riceve alimentazione.

Oltre al già citato connettore USB Type-C, sulla scheda, troviamo anche un pulsante di Boot, utile per il caricamento dello sketch, e uno di Reset.

Fase preliminare

La nostra ESP32-C3 Super Mini è programmabile con la IDE di Arduino. Passiamo a predisporre la IDE di Arduino per programmare la nostra ESP32 inserendo il link https://dl.espressif.com/dl/package_esp32_index.json nel percorso File -> Impostazioni e aggiungerlo alla voce URL aggiuntive per il gestore schede. 

ESP32

Una volta confermato tutto, muoviamoci sul menu Strumenti->Schede->Gestore schede.

ESP32

Quando la finestra sarà aperta, cerchiamo ESP32 e installiamo il pacchetto che ci appare.

ESP32

A questo punto muoviamoci per collegare la ESP32-C3 Super Mini al computer;  teniamo premuto il pulsante BOOT mentre la dev-board non è ancora collegata, quindi connettiamola al computer tramite cavo USB e infine rilasciamo il pulsante BOOT. La dev-board entrerà in modalità di programmazione e apparirà nel menu Strumenti->Porta la COM per caricare lo sketch. Per caricare lo sketch selezioniamo dalla barra dei menu Strumenti->Scheda->esp32->ESP32C3 Dev Module.

Codice

Il primo sketch di esempio che andiamo ad usare è lo WiFiScan , raggiungibile al percorso File -> Esempi -> WiFi. Colleghiamo la ESP32 Super Mini tenendo premuto il tasto Boot, selezioniamo la scheda e la porta, come descritto prima, poi andiamo su Strumenti -> USB CDC On Boot e selezioniamo Enable per poter usare la porta USB per leggere i dati da monitor seriale.

#include "WiFi.h"

void setup()
{
    Serial.begin(115200);

    // Set WiFi to station mode and disconnect from an AP if it was previously connected.
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);

    Serial.println("Setup done");
}

void loop()
{
    Serial.println("Scan start");

    // WiFi.scanNetworks will return the number of networks found.
    int n = WiFi.scanNetworks();
    Serial.println("Scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        Serial.println("Nr | SSID                             | RSSI | CH | Encryption");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.printf("%2d",i + 1);
            Serial.print(" | ");
            Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
            Serial.print(" | ");
            Serial.printf("%4d", WiFi.RSSI(i));
            Serial.print(" | ");
            Serial.printf("%2d", WiFi.channel(i));
            Serial.print(" | ");
            switch (WiFi.encryptionType(i))
            {
            case WIFI_AUTH_OPEN:
                Serial.print("open");
                break;
            case WIFI_AUTH_WEP:
                Serial.print("WEP");
                break;
            case WIFI_AUTH_WPA_PSK:
                Serial.print("WPA");
                break;
            case WIFI_AUTH_WPA2_PSK:
                Serial.print("WPA2");
                break;
            case WIFI_AUTH_WPA_WPA2_PSK:
                Serial.print("WPA+WPA2");
                break;
            case WIFI_AUTH_WPA2_ENTERPRISE:
                Serial.print("WPA2-EAP");
                break;
            case WIFI_AUTH_WPA3_PSK:
                Serial.print("WPA3");
                break;
            case WIFI_AUTH_WPA2_WPA3_PSK:
                Serial.print("WPA2+WPA3");
                break;
            case WIFI_AUTH_WAPI_PSK:
                Serial.print("WAPI");
                break;
            default:
                Serial.print("unknown");
            }
            Serial.println();
            delay(10);
        }
    }
    Serial.println("");

    // Delete the scan result to free memory for code below.
    WiFi.scanDelete();

    // Wait a bit before scanning again.
    delay(5000);
}

Attendiamo il caricamento dello sketch, alla fine del quale premiamo il tasto Reset sulla scheda per uscire dalla modalità di programmazione. Avviamo il monitor seriale e vedremo la lista delle reti Wi-Fi disponibili.

Proviamo adesso a far lampeggiare il led integrato nella scheda, connesso al pin 8. Come sempre, adoperiamo lo sketch Blink, presente al percorso File -> Esempi -> Basic e adoperiamo il pin 8 come in esempio.

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

void loop() {
  digitalWrite(8, HIGH);
  delay(1000);
  digitalWrite(8, LOW);
  delay(1000);
}

Carichiamo lo sketch, resettiamo la scheda alla fine del caricamento e vedremo il led integrato lampeggiare ogni secondo.