Guide · 12 min di lettura

Arduino o ESP32? Differenze, confronto e quale scegliere

Arduino o ESP32? Confronta Uno ed ESP32 per velocità, RAM, Wi-Fi, 5 V/3,3 V, ADC, pin e batteria, più confronto con Pico, codice comune e scelta per progetto.

Arduino o ESP32? La risposta breve è questa: se il tuo progetto ha bisogno di Wi-Fi, Bluetooth, internet o di molta potenza di calcolo, scegli l'ESP32; se stai imparando le basi dell'elettronica, vuoi usare sensori e moduli a 5 V senza problemi e seguire ogni tutorial alla lettera, scegli l'Arduino Uno. Entrambe le schede si programmano nell'Arduino IDE con gli stessi comandi digitalWrite, analogRead e Serial. La vera differenza è nell'hardware: velocità, memoria, tensione di lavoro, pin e connessione wireless.

In questa guida confrontiamo con numeri reali l'Arduino Uno R3 e la scheda ESP32 più diffusa, l'ESP32 DevKit (con modulo ESP-WROOM-32): cosa cambiano in pratica processore e memoria, quali moduli risentono della differenza tra 5 V e 3,3 V, come cambiano lettura analogica e PWM e quante ore dura ciascuna con una batteria. Poi eseguiremo lo stesso sketch su entrambe le schede, faremo un breve confronto con il Raspberry Pi Pico e riassumeremo in una tabella quale scheda scegliere per ogni tipo di progetto.

Scheda di sviluppo Arduino Uno R3
Arduino Uno R3: la scheda a 5 V con l'ATmega328P a 8 bit più usata dai principianti.

Risposta breve: quale scegliere e quando?

La tua situazioneScheda consigliataPerché?
Sei alle prime armi con l'elettronicaArduino Uno5 V, pin robusti, più esempi e corsi
Ti servono Wi-Fi o internetESP32Wi-Fi integrato, nessun modulo in più
Collegamento Bluetooth con lo smartphoneESP32Bluetooth classico e BLE integrati
Userai moduli e shield a 5 VArduino UnoNessun traslatore di livello
Display, molti LED, tanti datiESP32520 KB di RAM (l'Uno ne ha 2 KB)
Sensore che dura mesi a batteriaESP32 (scheda a basso consumo)Circa 10 µA in deep sleep
Programmare in PythonRaspberry Pi PicoSupporto MicroPython molto maturo
Budget minimoESP32 o PicoMolte più funzioni al prezzo di un clone dell'Uno

Cosa sono Arduino Uno ed ESP32?

L'Arduino Uno R3 è la scheda più famosa della piattaforma Arduino, nata in Italia. Il suo cuore è il microcontrollore a 8 bit ATmega328P a 16 MHz. La scheda lavora a 5 V e la disposizione dei pin è la stessa da anni, per questo centinaia di shield (schede di espansione da innestare sopra), libri e corsi sono compatibili. Il suo design semplice ti fa vedere esattamente cosa succede: quando scrivi HIGH su un pin, lì ci sono davvero 5 V. Il nuovo Uno R4 ha un processore Arm a 32 bit da 48 MHz e 32 KB di RAM, e la versione R4 WiFi aggiunge sulla scheda un ESP32-S3 per la connessione wireless; in questo articolo, con "Uno" intendiamo l'R3, ancora il più diffuso. Per conoscere meglio la piattaforma, leggi Cos'è Arduino?.

Scheda di sviluppo ESP32 DevKit (ESP-WROOM-32)
ESP32 DevKit: il modulo ESP-WROOM-32 con schermatura metallica contiene un processore dual core, Wi-Fi e Bluetooth; la scheda usa logica a 3,3 V.

L'ESP32, invece, è un system-on-chip (SoC) a 32 bit lanciato da Espressif nel 2016, con Wi-Fi e Bluetooth sullo stesso chip. La scheda che hai in mano è una scheda di sviluppo che porta questo chip: ci sono un convertitore USB-seriale, un regolatore a 3,3 V e i pulsanti EN e BOOT. Un dettaglio importante: l'ESP32 non è un Arduino, ma grazie al core Arduino di Espressif si programma nell'Arduino IDE proprio come se lo fosse. Per l'installazione e i primi progetti, Cos'è l'ESP32? è un buon punto di partenza.

La grande tabella di confronto: Arduino Uno, ESP32 e Raspberry Pi Pico

CaratteristicaArduino Uno R3ESP32 DevKit (WROOM-32)Raspberry Pi Pico
ProcessoreATmega328P, AVR a 8 bitXtensa LX6, 32 bit, dual coreRP2040, Arm Cortex-M0+ a 32 bit, dual core
Frequenza di clock16 MHzFino a 240 MHz133 MHz
RAM (SRAM)2 KB520 KB264 KB
Memoria programma (flash)32 KB (0,5 KB per il bootloader)Di solito 4 MB2 MB
EEPROM1 KBNo (emulata nella flash)No (file system nella flash)
Livello logico5 V3,3 V (non tollera 5 V)3,3 V (non tollera 5 V)
AlimentazioneUSB 5 V o 7–12 V (jack/VIN)USB 5 V o 5 V su VINUSB 5 V o 1,8–5,5 V su VSYS
GPIO utilizzabili20 (14 digitali + 6 analogici)Circa 25 (esclusi i pin limitati)26
Ingressi analogici (ADC)6 canali, 10 bit18 canali, 12 bit (con Wi-Fi attivo solo ADC1)3 canali, 12 bit
Uscita analogica (DAC)No2 canali, 8 bitNo
PWM6 pin, 8 bit, 490/980 Hz16 canali, frequenza regolabile, su quasi ogni pin16 canali, su tutti i GPIO
Wi-FiNo802.11 b/g/n, 2,4 GHzNo (presente sul Pico W)
BluetoothNoBluetooth 4.2: classico + BLENo (presente sul Pico W)
UART / I2C / SPI1 / 1 / 13 / 2 / 2 (disponibili all'utente)2 / 2 / 2
Corrente per pin20 mA consigliati (max 40 mA)Circa 20 mA consigliati4 mA di default (regolabile fino a 12 mA)
Consumo tipico della schedaCirca 45 mAMedia 50–130 mA con Wi-Fi, picchi di 240 mACirca 25 mA
Sonno più profondoChip sotto 1 µA, scheda circa 30 mAChip circa 10 µA in deep sleepScheda in modalità dormant circa 1 mA
ProgrammazioneArduino C/C++Arduino C/C++, ESP-IDF, MicroPythonMicroPython, SDK C/C++, Arduino
Prezzo indicativoOriginale 25–30 $, clone 5–10 $DevKit clone 4–8 $4 $ (Pico W 6 $)

Processore e memoria: cosa significano i numeri in pratica?

Il processore dell'Uno esegue circa 16 milioni di istruzioni al secondo e lavora su numeri a 8 bit alla volta; un'operazione a 32 bit con long o float richiede decine di istruzioni e manca un'unità in virgola mobile (FPU) hardware. L'ESP32 gira a 240 MHz su numeri a 32 bit e ha una FPU a precisione singola. Per questo, in un calcolo pieno di float, l'ESP32 può essere decine o addirittura centinaia di volte più veloce dell'Uno. Per far lampeggiare un LED o leggere un sensore qualche volta al secondo non te ne accorgi, ma la differenza diventa decisiva per filtri, elaborazione audio, crittografia o animazioni per centinaia di LED. Un piccolo consiglio: la FPU dell'ESP32 lavora solo con i float; le operazioni con double vengono eseguite via software e sono molto più lente.

La differenza di memoria la incontrerai molto più spesso. I 2 KB di RAM dell'Uno sono condivisi tra le tue variabili, i buffer di Serial e lo spazio riservato dalle librerie. Quando la RAM finisce, il compilatore di solito non avvisa; il programma si blocca a caso o si comporta in modo strano. Situazioni tipiche in cui l'Uno resta presto senza RAM:

  • Display OLED: il solo buffer video di un display SSD1306 128×64 occupa 1 KB, metà della RAM (vedi Display OLED).
  • LED indirizzabili: ogni LED WS2812B occupa 3 byte; una striscia da 300 LED richiede 900 byte (vedi WS2812B NeoPixel).
  • Dati da internet: il JSON restituito da un servizio meteo può pesare diversi KB; nell'Uno non entra, l'ESP32 lo gestisce senza fatica.
  • Concatenare String: gli oggetti String che crescono in un ciclo frammentano la poca RAM e possono causare un blocco ore dopo.
  • Scheda SD: la libreria SD riserva un buffer di settore da 512 byte; insieme alle librerie per display e sensori si arriva presto al limite.

La differenza di tensione: 5 V e 3,3 V

È la differenza che si trascura più spesso. I pin dell'Uno lavorano con logica a 5 V: un'uscita HIGH vale 5 V e gli ingressi sopra i 3 V vengono letti come HIGH. I pin dell'ESP32 lavorano con logica a 3,3 V e non tollerano i 5 V. Applicare 5 V a un pin forse non uccide subito l'ESP32, ma sollecita i diodi di protezione interni e può distruggere il chip col tempo o all'improvviso. Al contrario il problema è minore: l'HIGH a 3,3 V dell'ESP32 supera di poco la soglia di 3 V dell'Uno e di solito viene letto come HIGH, ma non è comunque un progetto sicuro. Ecco come si comportano i moduli più comuni con le due schede:

ModuloCon Arduino UnoCon ESP32Nota
Sensore di distanza HC-SR04DirettoPartitore di tensione sulla linea ECHOIl pin ECHO esce a 5 V
Modulo relè a 5 VDirettoQuasi tutti funzionano, alcuni non si spengonoNei moduli attivi bassi un HIGH a 3,3 V può non rilasciare del tutto il relè
Servo SG90DirettoSegnale diretto, alimentazione a 5 VNon alimentare il servo dal pin 3V3 della scheda
DHT11 / DHT22DirettoDiretto a 3,3 VFunziona con entrambe le tensioni
LCD I2C (16x2)DirettoAlimentazione a 5 V, consigliato un traslatore di livelloLe resistenze di pull-up del modulo portano le linee a 5 V
OLED SSD1306DirettoDiretto (3V3)Ha un regolatore sulla scheda
Striscia WS2812BDirettoDi solito funzionaPer andare sul sicuro, un traslatore di livello come il 74AHCT125
MPU6050 (GY-521)DirettoDiretto (3V3)Ha un regolatore a 3,3 V sulla scheda
Se colleghi all'ESP32 un modulo che invia segnali a 5 V, metti in mezzo un partitore di tensione o un traslatore di livello. Per esempio, con 1 kΩ in serie sulla linea del segnale e 2 kΩ tra il pin dell'ESP32 e GND, i 5 V scendono a 5 × 2 / (1 + 2) = 3,33 V. Sull'ESP32 collega sempre le sorgenti analogiche come un potenziometro al pin 3V3, mai al pin 5V.

Pin, lettura analogica e PWM

Sull'Uno i 20 pin si comportano più o meno allo stesso modo: ognuno può essere ingresso o uscita, fornisce senza problemi fino a 20 mA e non influisce sull'avvio. L'ESP32 DevKit ha più pin sulla carta, ma non sono tutti uguali: i GPIO 6–11 sono collegati alla flash interna e non si possono usare, i GPIO 34–39 sono solo ingressi e i GPIO 0, 2, 5, 12 e 15 devono avere certi livelli all'avvio. In pratica puoi usare comodamente circa 20–25 pin. La piedinatura della tua scheda è nello strumento Pinout.

Nella lettura analogica, l'ADC a 10 bit dell'Uno divide l'intervallo 0–5 V in 1024 passi; ogni passo vale circa 4,9 mV e la lettura è abbastanza lineare. L'ADC a 12 bit dell'ESP32 offre 4096 passi, ma con l'impostazione predefinita non distingue i valori sotto circa 0,15 V e sopra 3,1 V, è rumoroso e i pin ADC2 non funzionano affatto con il Wi-Fi attivo. Se ti serve una tensione precisa, sull'ESP32 usa analogReadMilliVolts() e collega il sensore ai pin ADC1 (GPIO 32–39). Nel PWM vince l'ESP32: l'Uno offre PWM a 8 bit solo su 6 pin a 490 o 980 Hz, mentre l'ESP32 può portare 16 canali con frequenza e risoluzione regolabili su quasi ogni pin di uscita. Ha anche 2 DAC (GPIO 25 e 26) che generano una vera tensione analogica. Per le basi del PWM leggi Cos'è il PWM?.

Lo stesso sketch su entrambe le schede: cosa cambia?

La buona notizia: tutto ciò che hai imparato su Arduino vale anche per l'ESP32. Lo sketch qui sotto legge un potenziometro, scrive la tensione nel Monitor seriale e accende il LED della scheda quando il valore supera la metà. La riga #if defined(ESP32) capisce per quale scheda si sta compilando e cambia solo il numero del pin, la tensione di riferimento e la risoluzione dell'ADC. Collega i terminali esterni del potenziometro a 5V e GND sull'Uno, oppure a 3V3 e GND sull'ESP32; il centrale va su A0 nell'Uno o su GPIO 34 nell'ESP32, poi apri il Monitor seriale a 115200 baud. Le principali differenze al di fuori del codice sono nella tabella.

Arduino (C++)
1// Aynı kod Uno ve ESP32'de çalışır / The same sketch runs on Uno and ESP32
2#if defined(ESP32)
3const int LED_PIN = 2;        // DevKit dahili LED / DevKit onboard LED
4const int POT_PIN = 34;       // ADC1 pini, Wi-Fi ile de çalışır / ADC1 pin, works with Wi-Fi too
5const float VREF = 3.3;       // ESP32 pinleri 3,3 V / ESP32 pins are 3.3 V
6const int ADC_MAX = 4095;     // 12 bit
7#else
8const int LED_PIN = 13;       // Uno dahili LED / Uno onboard LED
9const int POT_PIN = A0;
10const float VREF = 5.0;       // Uno referansı 5 V / Uno reference is 5 V
11const int ADC_MAX = 1023;     // 10 bit
12#endif
13
14void setup() {
15  Serial.begin(115200);
16  pinMode(LED_PIN, OUTPUT);
17}
18
19void loop() {
20  int raw = analogRead(POT_PIN);
21  float volts = raw * VREF / ADC_MAX;
22  Serial.print("Ham / raw: ");
23  Serial.print(raw);
24  Serial.print("  Gerilim / voltage: ");
25  Serial.println(volts, 2);
26  digitalWrite(LED_PIN, raw > ADC_MAX / 2 ? HIGH : LOW);   // yarıdan fazlaysa LED yanar / LED on above half
27  delay(250);
28}
ArgomentoArduino UnoESP32
LED integratoPin 13GPIO 2 nella maggior parte dei DevKit cloni (assente sul DevKitC di Espressif)
Intervallo di analogRead0–1023 (10 bit)0–4095 (12 bit)
Interrupt esterni (attachInterrupt)Solo pin 2 e 3Quasi tutti i pin (aggiungi IRAM_ATTR alla funzione di interrupt)
Seconda porta serialeServe SoftwareSerialSerial2 hardware (GPIO 16 e 17)
EEPROMEEPROM vera, 1 KBNella flash; EEPROM.commit() o Preferences
CaricamentoUn clicAlcune schede richiedono di premere BOOT
Tempo di compilazionePochi secondiLa prima compilazione può richiedere un minuto

Wi-Fi, Bluetooth e internet

Ciò che distingue davvero l'ESP32 è la connessione wireless. La scheda si collega alle reti Wi-Fi a 2,4 GHz, può creare un proprio access point, esegue un web server, invia dati a un sistema domotico tramite MQTT, prende l'ora da internet con NTP e può aggiornare il firmware senza fili (OTA). Sul fronte Bluetooth supporta sia il Bluetooth classico (profilo porta seriale) sia il BLE a basso consumo, e con ESP-NOW più ESP32 possono comunicare anche senza router. Niente di tutto questo è integrato nell'Uno: per il Bluetooth serve un modulo come l'HC-05, per il Wi-Fi un chip separato come l'ESP-01 e i comandi AT. Lo sketch qui sotto legge lo stesso potenziometro, stavolta via Wi-Fi: apri l'indirizzo mostrato nel Monitor seriale nel browser di uno smartphone collegato alla stessa rete e vedrai la tensione in millivolt; la pagina si aggiorna da sola ogni due secondi.

Arduino (C++)
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
5const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
6const int POT_PIN = 34;              // ADC1 pini / ADC1 pin
7
8WebServer server(80);
9
10void handleRoot() {
11  uint32_t mv = analogReadMilliVolts(POT_PIN);   // kalibre edilmiş mV / calibrated mV
12  String html = "<meta name='viewport' content='width=device-width'>"
13                "<meta http-equiv='refresh' content='2'>"
14                "<h1>ESP32</h1><p>Pot: ";
15  html += mv;
16  html += " mV</p>";
17  server.send(200, "text/html", html);
18}
19
20void setup() {
21  Serial.begin(115200);
22  WiFi.begin(ssid, password);
23  while (WiFi.status() != WL_CONNECTED) delay(500);
24  Serial.print("Telefonda aç / open on your phone: http://");
25  Serial.println(WiFi.localIP());
26  server.on("/", handleRoot);
27  server.begin();
28}
29
30void loop() {
31  server.handleClient();
32}

Consumi e funzionamento a batteria

Sulla carta l'ESP32 è allo stesso tempo la scheda che consuma di più e quella che consuma di meno. Quando trasmette in Wi-Fi assorbe picchi fino a 240 mA; per questo su una porta USB debole si riavvia con l'errore "Brownout detector was triggered". In deep sleep, invece, il chip consuma solo circa 10 µA. La scheda Uno assorbe circa 45 mA senza fare nulla; anche con l'ATmega328P addormentato, il chip USB-seriale, il regolatore e il LED di alimentazione continuano a consumare circa 30 mA. Facciamo un esempio: una batteria da 2000 mAh alimenta un Uno sempre acceso per circa 2000 / 45 ≈ 44 ore. Un ESP32 con il Wi-Fi sempre attivo (100 mA in media) dura circa 20 ore. Ma se l'ESP32 si sveglia ogni 10 minuti per 3 secondi, invia una misura a 120 mA e dorme a 10 µA per i restanti 597 secondi, la corrente media è (3 × 120 + 597 × 0,01) / 600 ≈ 0,61 mA e la stessa batteria dura in teoria oltre 3000 ore, cioè più di quattro mesi. Per ottenerlo serve una scheda a basso consumo o un modulo nudo; il regolatore e il chip USB dei DevKit standard consumano qualche mA anche in sleep. Puoi calcolare il tuo caso con lo strumento Durata batteria.

E il Raspberry Pi Pico dove si colloca?

La terza opzione valida è il Raspberry Pi Pico. Il suo chip RP2040 ha due core Cortex-M0+ a 133 MHz, 264 KB di RAM e 2 MB di flash, e costa circa 4 dollari. Come l'ESP32 lavora a 3,3 V e offre 26 GPIO, ma ha solo 3 ingressi analogici. I suoi punti di forza sono il supporto MicroPython molto maturo, il caricamento semplice del firmware perché sul computer appare come una chiavetta USB, e le unità chiamate PIO, che generano protocolli con temporizzazione precisa senza impegnare il processore. Se vuoi il wireless, scegli il Pico W (Wi-Fi e Bluetooth); per più potenza, il Pico 2 con chip RP2350. Trovi i dettagli in Cos'è il Raspberry Pi Pico?. La stessa lettura del potenziometro sul Pico in MicroPython si scrive così (centrale su GP26, terminali esterni su 3V3 e GND):

MicroPython
1from machine import ADC, Pin
2import time
3
4pot = ADC(26)                  # GP26 = ADC0, potansiyometre orta ucu / pot wiper
5led = Pin("LED", Pin.OUT)      # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
6
7while True:
8    raw = pot.read_u16()                   # 0–65535 (12 bit ölçüm ölçeklenir / 12-bit reading, scaled)
9    volts = raw * 3.3 / 65535
10    print("Ham / raw:", raw, " Gerilim / voltage: {:.2f}".format(volts))
11    led.value(raw > 32767)                 # yarıdan fazlaysa yanar / on above half
12    time.sleep(0.25)

Prezzo e facilità di apprendimento

Il prezzo da solo raramente decide. Un Uno R3 originale costa circa 25–30 $, mentre i cloni con chip USB CH340 si trovano a 5–10 $; i DevKit ESP32 cloni costano 4–8 $ e il Pico 4 $. Tra un ESP32 e un clone dell'Uno la differenza di prezzo è quindi quasi nulla; il costo vero sta negli extra: usare moduli a 5 V con l'ESP32 richiede qualche resistenza o un traslatore di livello da 1–2 $, e aggiungere il Wi-Fi all'Uno richiede un modulo separato. Sul fronte dell'apprendimento vince l'Uno: scegli la scheda e premi Carica, i messaggi di errore e gli esempi sono gli stessi da anni e con i moduli a 5 V non ci sono problemi di livelli. Con l'ESP32 devi prima installare il pacchetto di schede di Espressif e, se serve, il driver del chip USB (CP2102 o CH340), scegliere il modello di scheda giusto e, su alcune schede, tenere premuto BOOT durante il caricamento; inoltre una parte degli esempi online è stata scritta per versioni vecchie del core e potrebbe non compilare (nel core 3.x, per esempio, ledcAttach sostituisce ledcSetup). Sono ostacoli che si superano in poche ore, ma se monti i tuoi primi circuiti, sull'Uno è più facile capire se un problema dipende dal codice o dai collegamenti.

Quale scheda per quale progetto?

ProgettoScheda idealePerché?
Prime lezioni con LED, pulsanti e buzzerArduino UnoPerdona gli errori, 5 V, tanti esempi
Auto robot (L298N, HC-SR04)Arduino UnoCompatibile diretto con i moduli a 5 V
Stazione meteo Wi-FiESP32Invia i dati allo smartphone e a internet
Domotica con relèESP32Web, MQTT e assistenti vocali
Telecomando Bluetooth dallo smartphoneESP32BLE e Bluetooth classico integrati
Sensore remoto a batteriaESP32 (scheda a basso consumo)Deep sleep e brevi invii Wi-Fi
Imparare PythonRaspberry Pi PicoMicroPython ha supporto prioritario
Centinaia di LED indirizzabiliESP32 o PicoTanta RAM, processore veloce
Trasmissione di immagini con fotocameraESP32-CAMFotocamera e slot microSD sulla scheda
Shield motori e shield a 5 VArduino UnoGli shield seguono la piedinatura dell'Uno

Errori comuni e falsi miti

  • "L'ESP32 è sempre meglio": è più potente, ma pin a 3,3 V, pin che influenzano l'avvio, pulsante BOOT e cali di tensione possono scoraggiare un principiante. Per imparare le basi, l'Uno riserva meno sorprese.
  • Collegare un sensore a 5 V direttamente all'ESP32: collegare senza partitore segnali a 5 V, come l'uscita ECHO dell'HC-SR04, può danneggiare il pin.
  • Leggere un pin ADC2 con il Wi-Fi attivo: i GPIO 0, 2, 4, 12–15 e 25–27 non leggono valori analogici mentre il Wi-Fi è in funzione; sposta il sensore su GPIO 32–39.
  • Dimenticare la RAM dell'Uno: se il codice compila ma la scheda si blocca a caso, forse la RAM è finita; metti i testi fissi dentro F("...") ed evita di concatenare String nei cicli.
  • Alimentare l'ESP32 con un USB debole: se la scheda si riavvia quando parte il Wi-Fi, usa un buon cavo dati e un alimentatore da almeno 1 A.
  • Confondere Pico e Pico W: il Pico normale non ha il Wi-Fi; per un progetto wireless compra il modello con la W nel nome.
Spesso la strada migliore è provarle entrambe: impara le basi con l'Uno (o con il fratello minore, il Nano) e passa all'ESP32 al primo progetto che richiede il Wi-Fi. Gran parte del codice si porta così com'è; cambiano soprattutto i numeri dei pin e la tensione. Un ESP32 DevKit spesso costa più o meno quanto un clone dell'Uno, quindi conviene aggiungerne uno al tuo kit di base.

In breve, l'Arduino Uno è la scheda per imparare, l'ESP32 quella per connettersi e il Raspberry Pi Pico quella per sperimentare con Python. Se ti chiedi quale modello della famiglia Arduino fa per te, dai un'occhiata a Quale Arduino comprare?. Nell'app BlueGrays trovi decine di progetti per Arduino, ESP32 e Pico, dal LED lampeggiante al web server Wi-Fi e dall'orologio NTP al display meteo, ognuno con schema elettrico e codice passo dopo passo.

Domande frequenti

L'ESP32 è meglio di Arduino?

Per potenza, memoria e connessione wireless sì: l'ESP32 gira a 240 MHz e ha 520 KB di RAM, Wi-Fi e Bluetooth. Ma per i pin a 3,3 V, i GPIO limitati e l'avvio più complesso, l'Arduino Uno riserva meno sorprese ai principianti. Quale sia migliore dipende da ciò che serve al tuo progetto.

Si può programmare l'ESP32 con l'Arduino IDE?

Sì. Dopo aver aggiunto all'Arduino IDE il pacchetto di schede esp32 di Espressif, programmi l'ESP32 con i comandi Arduino. Funzioni come pinMode, digitalWrite, analogRead, Serial e Wire funzionano allo stesso modo; cambiano soprattutto i numeri dei pin e i livelli di tensione.

Il codice Arduino funziona sull'ESP32?

La maggior parte del codice funziona con piccole modifiche. Devi adattare i numeri dei pin all'ESP32, tenere conto che analogRead restituisce 0–4095 e sostituire il codice che accede ai registri specifici dell'AVR o librerie come SoftwareSerial con gli equivalenti per ESP32.

Si può aggiungere il Wi-Fi ad Arduino Uno?

Sì: un modulo come l'ESP-01 (ESP8266) si usa tramite la porta seriale con i comandi AT, oppure puoi comprare l'Uno R4 WiFi. L'ESP-01 però richiede alimentazione a 3,3 V e conversione di livello, e i 2 KB di RAM dell'Uno faticano con le attività web. Per questo nella maggior parte dei casi usare direttamente un ESP32 è più semplice ed economico.

Arduino o Raspberry Pi Pico?

Per restare nell'ecosistema Arduino con C/C++, lavorare con moduli a 5 V e trovare più esempi è più adatto l'Arduino Uno; per programmare in Python, spendere poco e avere temporizzazioni precise con il PIO, scegli il Raspberry Pi Pico. Poiché il Pico lavora a 3,3 V, bisogna fare attenzione ai segnali a 5 V come con l'ESP32.

L'ESP32 si può usare con sensori a 5 V?

Se il sensore funziona anche a 3,3 V, la soluzione più semplice è alimentarlo dal pin 3V3. Per i sensori che funzionano solo a 5 V e hanno uscita a 5 V, metti un partitore di tensione o un traslatore di livello sulla linea di uscita. Applicare 5 V direttamente ai pin dell'ESP32 può danneggiare il chip.

Vedi tutti i progetti
Illuminazione a LED
#1Principiante

Illuminazione a LED

Progetto di input di base che accende e spegne un singolo LED a determinati intervalli con Arduino. Insegna l'uso delle funzioni digitalWrite e delay.

4.7(163)
782
LED Lampeggiante con ESP32
#103Principiante

LED Lampeggiante con ESP32

Insegna l'uso di base delle uscite GPIO con l'ESP32. Otteniamo un effetto lampeggiante accendendo e spegnendo un LED dal pin digitale. Versione ESP32 del classico progetto blink su Arduino UNO; la mappa dei pin e la sintassi rimangono le stesse, la differenza è solo nei numeri dei pin.

4.7(36)
92
Lampeggio LED Integrato Raspberry Pi Pico (GP25 LED Onboard)
#147Principiante

Lampeggio LED Integrato Raspberry Pi Pico (GP25 LED Onboard)

Il progetto di apertura della serie Raspberry Pi Pico! Facciamo lampeggiare il LED integrato (LED verde collegato a GP25) per verificare che la scheda funzioni — un classico primo esperimento "Hello World". NESSUN componente esterno, solo Pico e cavo USB. Il codice è scritto in **MicroPython** (il linguaggio ufficialmente supportato dalla Raspberry Pi Foundation). Impara la classe `machine.Pin`, la modalità `Pin.OUT`, i metodi `led.on()/off()` e `time.sleep()` in Thonny IDE. Segui ogni commutazi

5.0(1)
9
Temperatura e umidità con DHT11
#55Intermedio

Temperatura e umidità con DHT11

Progetto che misura il valore della temperatura e dell'umidità ambientale con un sensore DHT11 e lo visualizza su uno schermo LCD I2C. Insegna l'uso del sensore digitale di temperatura/umidità.

4.7(47)
60
Luminosità di un LED con Potenziometro su ESP32 (Analogico → PWM)
#115Intermedio
Premium

Luminosità di un LED con Potenziometro su ESP32 (Analogico → PWM)

In questo progetto controlliamo in modo analogico la luminosità di un LED tramite un potenziometro. Il pin ADC dell'ESP32 legge la tensione tra 0 e 3,3 V dal potenziometro; il valore viene convertito in un segnale PWM (Pulse Width Modulation) e inviato al LED. Ruotando il potenziometro, il LED si accende e si spegne gradualmente. Con Arduino Core 3.0+ si usa direttamente `analogWrite()`; su ESP32-S2/S3 la risoluzione dell'ADC è fissata a 12 bit.

4.5(19)
32
Connessione Wi-Fi STA con ESP32 (con display LCD)
#127Avanzato
Premium

Connessione Wi-Fi STA con ESP32 (con display LCD)

In questo progetto colleghiamo l'ESP32 alla rete Wi-Fi domestica in modalità Station (STA) in modo sicuro e tollerante agli errori. Separiamo SSID e password in un file `secrets.h` per impedire fughe su Git, impostiamo un meccanismo di riconnessione automatica e visualizziamo il livello del segnale RSSI e l'indirizzo IP su un display LCD I2C. Il LED interno funge da indicatore di stato.

4.4(21)
33
Server web asincrono ESP32 (con indicazione dell'IP sul display LCD)
#129Avanzato
Premium

Server web asincrono ESP32 (con indicazione dell'IP sul display LCD)

In questo progetto trasformiamo l'ESP32 in un **server web asincrono** che potrete controllare dal vostro telefono o computer collegato alla stessa rete Wi-Fi. Grazie alla libreria ESPAsyncWebServer, il server è in grado di elaborare più richieste contemporaneamente (a differenza del classico `WebServer.h`, che si blocca su una singola richiesta). Collegandovi dall'interfaccia web all'indirizzo IP dell'ESP32 con `/control` e premendo i pulsanti, potrete accendere e spegnere il LED collegato al G

4.8(16)
26
ESP32 HTTPClient + API meteo (con schermo LCD)
#133Avanzato
Premium

ESP32 HTTPClient + API meteo (con schermo LCD)

In questo progetto, utilizzando l'ESP32, effettuiamo una chiamata REST all'API meteo (wttr.in) tramite Internet utilizzando `HTTPClient.h`. Analizziamo la risposta JSON restituita tramite ArduinoJson v7 e visualizziamo le informazioni relative a città, temperatura, umidità, condizioni meteorologiche e vento sul display LCD I2C sia in turco che in inglese. wttr.in è gratuito e non richiede una chiave API: basta digitare il nome di una città qualsiasi per ottenere le condizioni meteorologiche in t

4.7(13)
20

Scopri con i numeri le vere differenze tra Arduino Uno ed ESP32: velocità, memoria, tensione, lettura analogica, Wi-Fi e durata della batteria. Esegui lo stesso sketch su entrambe le schede, confrontale con il Pico e scegli quella giusta per il tuo progetto.

Arduino o ESP32? Differenze, confronto e quale scegliere | BlueGrays