Come aggiornare il codice della scheda in Arduino IDE?

Indice

Come appassionato di Arduino, sai che la funzionalità della tua scheda dipende dal codice in esecuzione sottostante. Che tu stia risolvendo i problemi di un progetto che non funziona correttamente, aggiornando le funzionalità o correggendo bug, aggiornare il codice sulla tua scheda Arduino è un’abilità fondamentale. Questo processo – in parole povere, caricare un nuovo codice per sostituire il programma esistente sulla tua scheda – garantisce che il tuo hardware funzioni al meglio. In questa guida, ti accompagneremo attraverso il processo passo dopo passo, affronteremo i problemi comuni e condivideremo le migliori pratiche per rendere l’aggiornamento del codice una parte integrante del tuo flusso di lavoro.

Preparazione all'aggiornamento del codice

Prima di immergerti nel processo di aggiornamento del codice, assicurati che il tuo ambiente sia preparato per il successo. Questa fase getta le basi per un caricamento senza problemi e previene errori frustranti lungo il percorso.

Verifica dell'installazione e della configurazione dell'IDE Arduino

Innanzitutto, conferma di avere installata l’ultima versione dell’IDE Arduino. L’IDE è uno strumento multipiattaforma che supporta Windows, macOS e Linux, disponibile gratuitamente dal Arduino official website. Una volta installato, apri l’IDE e verifica che i driver della tua scheda siano
installati correttamente, soprattutto se stai utilizzando una scheda di terze parti o un convertitore USB-to-serial più vecchio come CH340. Per gli utenti Windows, i driver mancanti spesso appaiono come porte non rilevate nell’IDE; risolvi questo problema scaricando i driver ufficiali o utilizzando uno strumento come Zadig.
Arduino IDE 2.3.6 Download Page
Download options for Arduino IDE 2.3.6, featuring versions for Windows, Linux, and macOS.

Ad esempio, se stai utilizzando un Arduino Uno con un adattatore USB-to-serial basato su CH340 su Windows e la porta non viene visualizzata nell’IDE, puoi scaricare i driver CH340 dal sito Web del produttore. Dopo l’installazione, riavvia il computer e la porta dovrebbe essere rilevata.

Connessioni hardware

Collega fisicamente la tua scheda Arduino al tuo computer utilizzando un cavo USB affidabile – evita cavi economici che potrebbero causare problemi di connettività. Assicurati che la scheda sia alimentata tramite USB o un’alimentazione esterna (se richiesto dalla tua configurazione). Un alimentatore stabile è fondamentale durante il caricamento del codice per prevenire interruzioni che potrebbero danneggiare la tua scheda.
 
Una volta ho avuto un’esperienza frustrante in cui stavo cercando di caricare un nuovo codice sulla mia Arduino Mega. Stavo usando un cavo USB molto economico che avevo tenuto da parte. Ogni volta che provavo a caricare il codice, il processo falliva a metà e non riuscivo a capire perché. Dopo aver sostituito il cavo con uno di qualità, i caricamenti hanno funzionato perfettamente. È un aspetto semplice ma spesso trascurato del processo di aggiornamento del codice.
Arduino Board and USB Cable
An Arduino board connected with a USB cable, ready for programming.

Seleziona la scheda e la porta corretta

Nell’IDE di Arduino, vai su Strumenti > Scheda e seleziona il modello specifico della tua scheda (ad esempio, Arduino Uno, Mega 2560 o una scheda di terze parti come ESP8266). Successivamente, vai su Strumenti > Porta e scegli la porta COM (Windows) o la porta /dev/tty (Linux/macOS) corrispondente alla tua scheda collegata. Se la porta non è presente, rivedi l’installazione del driver o prova una porta USB diversa.
Arduino IDE 2.3.6 Tools Menu Showing Board and Port Selection
Arduino IDE 2.3.6 Tools Menu Showing Board and Port Selection
Se stai utilizzando una scheda ESP8266, dovrai selezionare l’opzione della scheda ESP8266 appropriata nel menu Scheda. E assicurati di scegliere la porta corretta. A volte, se hai più dispositivi USB collegati, può essere facile selezionare la porta sbagliata, causando caricamenti falliti.

Guida passo passo per aggiornare il codice della scheda

Una volta completata la configurazione, è il momento di aggiornare il codice. Tratteremo sia il caricamento di nuovo codice da zero che l’aggiornamento di progetti esistenti.

Scrivi o apri il tuo sketch

Un “sketch” è come Arduino chiama i suoi file di codice. Inizia creando un nuovo sketch (puoi farlo facendo clic sul pulsante “Nuovo” nella barra degli strumenti, che assomiglia a una pagina vuota, oppure andando su File > Nuovo). Se hai già un progetto su cui lavorare, apri uno sketch esistente (fai clic sul pulsante “Apri”, simile a un’icona di cartella, oppure vai su File > Apri). Per chi cerca un esempio specifico per capire il processo di caricamento del codice, considera questo codice LED lampeggiante personalizzato. Quando crei un nuovo sketch, incolla quanto segue:

Arduino IDE 2.3.6 interface showing code for blinking LED on pin 5
Arduino IDE 2.3.6 interface showing code for blinking LED on pin 5
				
					void setup() {  
  // put your setup code here, to run once:  
  pinMode(5, OUTPUT);  
}

void loop() {  
  // put your main code here, to run repeatedly:  
  digitalWrite(5, HIGH);  
  delay(300);  
  digitalWrite(5, LOW);  
  delay(300);  
}
				
			
In questo codice, la funzione setup configura il pin 5 come output, consentendogli di fornire corrente. La funzione loop imposta ripetutamente il pin 5 su HIGH (produzione di 5V, accendendo il LED) per 300 millisecondi, quindi su LOW (0V, spegnendo il LED) per altri 300 millisecondi.
 
Supponiamo che tu sia nuovo di Arduino e voglia testare come funziona il processo di caricamento del codice. Apri l’IDE di Arduino, crea un nuovo sketch e incolla questo codice. La funzione setup() viene eseguita una volta quando la scheda è accesa o resettata, impostando il pin 5 collegato al LED come output. La funzione loop() viene eseguita continuamente, creando un effetto lampeggiante. Questo esempio personalizzato è ideale per verificare che la tua scheda e il circuito collegato rispondano ai caricamenti del codice, offrendo un tocco personale sull’esempio Blink tradizionale con una configurazione specifica basata sui pin per le esigenze del tuo progetto.

Compila lo sketch (Verifica)

Prima di caricare, compila il tuo codice per verificare la presenza di errori di sintassi. Fai clic sul pulsante Verifica (icona del segno di spunta nella barra degli strumenti) o vai su Sketch > Verifica/Compila. L’IDE elaborerà il tuo codice, analizzandolo alla ricerca di problemi come punti e virgola mancanti, dichiarazioni di variabili errate o chiamate di funzione improprie. Eventuali errori appariranno nella console nella parte inferiore della finestra IDE. Ad esempio, se dimentichi di chiudere una parentesi o scrivi male un nome di funzione come digitalWriet invece di digitalWrite, l’IDE rileverà questi errori e mostrerà un messaggio di errore. Devi correggere questi problemi finché la console non mostra “Compilazione completata” senza errori.
Arduino IDE 2.3.6 verify button and compilation output for a sketch
Arduino IDE 2.3.6 verify button and compilation output for a sketch

Ricordo quando stavo imparando Arduino per la prima volta, ho commesso un semplice errore di non aver messo un punto e virgola alla fine di una riga nel mio codice. Quando ho cliccato sul pulsante Verifica, l’IDE ha immediatamente segnalato l’errore, evidenziando la riga in cui si è verificato il problema. Mi ci sono voluti alcuni minuti per individuare il punto e virgola mancante, ma dopo averlo corretto, la compilazione è andata a buon fine.

Carica il Codice sulla Scheda

Una volta compilato correttamente, fai clic sul pulsante Carica (icona della freccia) o vai su Sketch > Carica. L’IDE compilerà di nuovo (se sono state apportate modifiche dall’ultima verifica) e invierà il file binario alla tua scheda. Vedrai una barra di avanzamento e messaggi nella console, tra cui “Caricamento” e “Caricamento completato” in caso di successo. Durante il caricamento, i LED RX/TX della scheda potrebbero lampeggiare mentre i dati vengono trasferiti. Questo indica che la scheda sta ricevendo il nuovo codice.
 
Se hai lavorato a un progetto più complesso, ad esempio un sistema di monitoraggio della temperatura, e hai apportato alcune modifiche al codice per migliorarne la precisione, dopo aver verificato il codice, fai clic sul pulsante Carica. L’IDE compilerà prima nuovamente il codice per assicurarsi che non siano stati introdotti nuovi errori. Quindi, avvierà il processo di caricamento. Puoi osservare il riempimento della barra di avanzamento e, al termine, vedrai il messaggio “Caricamento completato”.

Verifica la Funzionalità

Dopo il caricamento, scollega e ricollega l’alimentazione alla tua scheda (o premi il pulsante di reset) per avviare il nuovo codice. Verifica il comportamento previsto: ad esempio, in questo esempio personalizzato di lampeggio del LED, il LED dovrebbe accendersi per 300 millisecondi e poi spegnersi per 300 millisecondi ripetutamente. Ciò significa che completa un ciclo completo di accensione e spegnimento ogni 600 millisecondi. Se i problemi persistono, rivedi il codice, controlla le connessioni o procedi alla sezione di risoluzione dei problemi di seguito.
 
Ad esempio, se hai caricato il codice per un semplice progetto di movimento del robot, dopo aver resettato la scheda, i motori dovrebbero iniziare a muoversi secondo le istruzioni programmate. Se non lo fanno, potresti avere un problema nel codice, come assegnazioni di pin errate per i pin di controllo del motore, oppure potrebbe esserci un collegamento allentato tra la scheda Arduino e i motori. È importante ricontrollare tutto per assicurarsi che il progetto funzioni come previsto.

Problemi Comuni e Risoluzione dei Problemi

Anche con una configurazione accurata, possono sorgere delle sfide. Ecco i problemi più frequenti e le loro soluzioni.

“Porta Non Trovata” o Errori di Porta Seriale

L’IDE non riesce a rilevare la porta della tua scheda, spesso mostrando “Nessuna porta di questo tipo” (macOS/Linux) o una porta COM mancante (Windows). Questo può essere incredibilmente frustrante, soprattutto quando sei ansioso di vedere il tuo nuovo codice in azione.

  1. Ricollega il cavo USB e prova una porta diversa. A volte, la connessione potrebbe essere allentata, oppure la porta stessa potrebbe avere dei problemi. Ad esempio, una volta ho passato un’ora a risolvere un errore di “porta non trovata”, solo per rendermi conto che il cavo USB non era inserito completamente. Una semplice riconnessione ha risolto il problema.
  1. Installa o aggiorna i driver: utilizza i driver ufficiali di Arduino oppure, per le schede di terze parti, scarica i driver specifici del produttore (ad esempio, i driver Silicon Labs CP2102 per ESP32). Se stai utilizzando una scheda ESP32 con un bridge USB-UART Silicon Labs CP2102 e la porta non viene rilevata, scaricare e installare gli ultimi driver CP2102 può risolvere il problema.
  1. Su macOS/Linux, assicurati di avere il permesso di accedere alle porte seriali (esegui ls /dev/tty* per elencare le porte e controllare i permessi). In alcuni casi, l’utente potrebbe non avere i permessi appropriati per accedere alla porta seriale. Puoi aggiungere il tuo utente al gruppo dialout (su Linux) o regolare i permessi di conseguenza per ottenere l’accesso.

Errori di compilazione: "riferimento non definito" o "previsto ';' prima di..."

Il codice non compila a causa di errori di sintassi o librerie mancanti. Questi errori possono sembrare scoraggianti, ma di solito sono facili da correggere una volta che sai cosa cercare.

  1. Controlla attentamente la presenza di errori di battitura, parentesi mancanti o inclusioni di librerie errate. Un semplice errore di battitura come scrivere int main() invece di void setup() in uno sketch Arduino può portare a errori di compilazione. Assicurati inoltre che tutte le parentesi, le parentesi quadre e le parentesi graffe siano abbinate correttamente.
  1. Assicurati che tutte le librerie utilizzate siano installate tramite Sketch > Includi libreria > Gestisci librerie (per librerie esterne) o facciano parte delle librerie principali di Arduino. Se stai utilizzando una libreria come la libreria DHT per sensori di temperatura e umidità e ricevi un errore di “riferimento non definito” relativo alle funzioni in quella libreria, è probabile che la libreria non sia installata correttamente o non sia inclusa correttamente nel tuo sketch.

Caricamento fallito a metà processo (ad esempio, "Caricamento... 10%")

Il caricamento si blocca o fallisce, spesso con timeout. Questo può essere un segno di diversi problemi sottostanti.

  1. Premi il pulsante di reset sulla tua scheda proprio quando l’IDE inizia a caricare (vedrai “Caricamento” nella console). Questo ripristina la scheda in modalità bootloader, che accetta un nuovo codice. Molte schede Arduino richiedono che il bootloader sia nello stato corretto per accettare un caricamento. Premendo il pulsante di reset al momento giusto, puoi assicurarti che la scheda sia pronta a ricevere il nuovo codice.
  1. Disabilita temporaneamente il software antivirus o firewall, poiché potrebbe interferire con la comunicazione seriale. Alcuni software di sicurezza possono bloccare la comunicazione seriale tra l’IDE e la scheda Arduino, considerandola una potenziale minaccia alla sicurezza. Disabilitare temporaneamente tale software può spesso risolvere il problema di caricamento.
  1. Per le schede più vecchie come Arduino Uno, assicurati che il bootloader sia intatto; brucialo nuovamente usando Strumenti > Brucia Bootloader (richiede un programmatore esterno in alcuni casi). Se il bootloader sulla tua Arduino Uno è diventato danneggiato, potrebbe essere necessario bruciarlo nuovamente. In alcuni casi, avrai bisogno di un programmatore esterno come un AVRISP mkII per eseguire questa operazione.

Il codice viene eseguito brevemente ma non persiste

Il nuovo codice funziona immediatamente dopo il caricamento ma torna al comportamento precedente dopo un ciclo di alimentazione. Questo può essere un problema confuso, ma ci sono alcune cose da controllare.

  1. Conferma che la scheda e la porta corrette sono state selezionate durante il caricamento: indirizzare accidentalmente la scheda sbagliata (ad esempio, Uno invece di Mega) può causare questo problema. Se hai più schede Arduino connesse o hai recentemente cambiato la scheda su cui stai lavorando, è facile selezionare la scheda sbagliata nell’IDE. Controlla attentamente le impostazioni della scheda e della porta per assicurarti di caricare sul dispositivo corretto.
  1. Verifica che il tuo sketch sia stato salvato e caricato correttamente; a volte, le modifiche non salvate portano all’utilizzo di codice obsoleto. Una volta ho passato molto tempo a cercare di capire perché il mio codice non funzionava come previsto dopo un ciclo di alimentazione, solo per rendermi conto di aver apportato modifiche al codice ma di non averlo salvato prima di caricarlo. Assicurati sempre di salvare il tuo sketch prima di tentare un caricamento.

Best practice per un aggiornamento efficiente del codice

Per semplificare il tuo flusso di lavoro e ridurre al minimo gli errori, adotta queste strategie comprovate:​

Usa il controllo di versione per gli schizzi

Tieni traccia delle modifiche al codice con strumenti come Git, soprattutto per progetti complessi. Questo ti consente di tornare a versioni funzionanti se un nuovo caricamento causa problemi. Git è un sistema di controllo versione distribuito che è diventato lo standard per gli sviluppatori in tutto il mondo. Inizializzando un repository Git nella cartella del tuo progetto Arduino, puoi registrare ogni modifica apportata al tuo codice.

Ad esempio, se stai lavorando a un progetto di automazione domestica complesso con più sensori e attuatori controllati da Arduino e hai appena aggiunto una nuova funzionalità che sta causando il malfunzionamento del sistema, puoi facilmente tornare allo stato di lavoro precedente del codice. Puoi visualizzare la cronologia dei commit, che mostra tutte le modifiche apportate, chi le ha apportate e quando. Questo non solo aiuta nel debug, ma anche nella collaborazione con altri maker. Se stai lavorando in un team, ogni membro può contribuire alla codebase e Git gestirà tutte le modifiche, assicurando che tutti lavorino con l’ultima e la versione corretta del codice.

Mantieni le librerie e l'IDE aggiornati

Librerie obsolete o una vecchia versione dell’IDE possono portare a problemi di compatibilità. Aggiorna regolarmente l’IDE e gestisci le librerie tramite il gestore di librerie integrato per garantire la stabilità. L’Arduino IDE è in continua evoluzione, con l’aggiunta di nuove funzionalità e la correzione di bug. Mantenendolo aggiornato, puoi sfruttare i più recenti miglioramenti nella compilazione del codice, nel debug e nel supporto della scheda.

Allo stesso modo, le librerie svolgono un ruolo cruciale nei progetti Arduino. Forniscono codice pre-scritto per varie funzioni, come la comunicazione con i sensori o il controllo dei motori. Tuttavia, se una libreria è obsoleta, potrebbe non funzionare correttamente con l’ultima scheda Arduino o l’IDE. Ad esempio, se stai utilizzando una libreria DHT per leggere la temperatura e l’umidità da un sensore DHT, una vecchia versione della libreria potrebbe non essere compatibile con gli ultimi modelli di sensori DHT. Il gestore di librerie integrato nell’Arduino IDE semplifica l’aggiornamento delle librerie. Puoi semplicemente andare su Sketch > Include Library > Manage Libraries, cercare la libreria che desideri aggiornare e fare clic sul pulsante “Update”.

Testa prima con il codice minimo

Quando esegui il debug, riduci il tuo codice all’essenziale (ad esempio, un semplice toggle LED) per isolare i problemi. Una volta funzionante, reintroduci gradualmente le funzionalità complesse. Questo approccio, spesso indicato come “divide et impera”, è estremamente efficace per identificare la causa principale dei problemi.
 
Supponiamo di aver scritto un codice complesso per un braccio robotico in grado di raccogliere e posizionare oggetti. Ma quando carichi il codice, il braccio non si muove come previsto. Invece di provare a eseguire il debug dell’intero codice complesso, inizia con un test semplice. Scrivi un codice di base che controlla solo un motore del braccio robotico, ad esempio facendolo ruotare avanti e indietro. Se questo codice semplice funziona, sai che il motore, le sue connessioni e la logica di controllo di base sono a posto. Quindi, aggiungi gradualmente più funzionalità, come il controllo di un altro motore o l’aggiunta di input del sensore. In questo modo, se si verifica un problema, puoi facilmente identificare quale parte del codice o quale nuova funzionalità lo sta causando.

Documenta la tua configurazione

Annota quale scheda, porta e librerie stai utilizzando per ogni progetto. Questo fa risparmiare tempo quando si torna a un progetto dopo una pausa. La documentazione è spesso trascurata, ma è una parte essenziale di qualsiasi progetto. Crea un semplice file di testo o usa un foglio di calcolo per registrare dettagli come il modello della scheda Arduino (Uno, Mega, ecc.), la porta COM o /dev/tty a cui è collegata e un elenco di tutte le librerie utilizzate nel progetto.
 
Ad esempio, se hai lavorato a un progetto che utilizza un Arduino Nano collegato alla porta /dev/ttyUSB0 e si basa su librerie come la libreria Adafruit_Sensor e la libreria Wire, scrivere queste informazioni ti farà risparmiare molto tempo. Se torni al progetto dopo alcune settimane o mesi, non dovrai perdere tempo a capire quale scheda hai utilizzato o quali librerie erano necessarie. Questo è particolarmente importante quando si lavora a più progetti contemporaneamente o quando è necessario condividere il tuo progetto con altri. Se qualcun altro vuole eseguire il tuo codice, può facilmente configurare il proprio ambiente utilizzando la tua documentazione.

Aggiornare il codice su schede di terze parti

Molti maker utilizzano schede Arduino non ufficiali (ad esempio, ESP8266, ESP32, STM32). Il processo differisce leggermente a causa della configurazione aggiuntiva:

Aggiungi pacchetti di supporto per la scheda

Le schede di terze parti richiedono l’aggiunta dei loro pacchetti di supporto all’IDE. Per una scheda ESP8266, vai su File > Preferenze nell’Arduino IDE. Qui troverai un campo etichettato “URL aggiuntivi del gestore di schede”. Incolla l’URL del repository della scheda in questo campo.

Per l’ESP8266, l’URL è:

				
					http://arduino.esp8266.com/stable/package_esp8266com_index.json.
				
			

Se stai lavorando con una scheda ESP32, l’URL è:

				
					https://espressif.github.io/arduino-esp32/package_esp32_index.json
				
			

Se hai già altri URL in questo campo (ad esempio, se stai utilizzando più schede di terze parti), separali con virgole.

Dopo aver aggiunto l’URL, vai su Strumenti > Scheda > Gestore schede. Nel Gestore schede è disponibile una barra di ricerca. Digita il nome della scheda che stai utilizzando, come “esp8266” o “esp32”. Una volta trovato il pacchetto pertinente, fai clic su “Installa” per aggiungere i file di supporto necessari al tuo Arduino IDE. Questo passaggio è fondamentale in quanto consente all’IDE di riconoscere e comunicare con la tua scheda non ufficiale, fornendo le corrette impostazioni di compilazione e librerie specifiche per tale scheda.

Regola la velocità di caricamento e le impostazioni

Alcune schede, come l’ESP8266, hanno requisiti specifici per quanto riguarda la velocità di caricamento e i metodi di ripristino. La velocità di caricamento, nota anche come velocità di trasmissione, determina la velocità con cui i dati vengono trasferiti dal computer alla scheda durante il processo di caricamento del codice. Per l’ESP8266, una velocità di trasmissione comune per il caricamento del codice è 115200, ma in alcuni casi potrebbe essere necessario regolarla.

Conclusione

Aggiornare il codice della scheda in Arduino IDE è un’abilità fondamentale che ti consente di iterare, eseguire il debug e ottimizzare i tuoi progetti con sicurezza. Seguendo questi passaggi, risolvendo i problemi comuni e adottando le migliori pratiche, garantirai un’esperienza fluida ogni volta che carichi un nuovo codice. Ricorda, la pratica rende perfetti – anche i maker esperti incontrano problemi, ma con pazienza e controlli sistematici, manterrai le tue schede Arduino in esecuzione esattamente come previsto.

Iscriviti

Unisciti alla nostra lista di iscritti per ricevere aggiornamenti mensili sul blog, notizie tecnologiche, casi di studio. Non invieremo mai spam e potrai annullare l’iscrizione in qualsiasi momento.

Informazioni sull'autore

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Hai bisogno di aiuto?

Torna in alto

Instant Quote