Far girare SW Arduino senza cavo ombelicale USB-PC

Buongiorno,

posseggo una scheda Arduino UNO e finora ho sperimentato nel classico modo:

  1. collegamento componenti hardware su breadboard e collegamento breadboard ad Arduino UNO;
  2. collegamento scheda Arduino UNO a PC tramite cavo ombelicale USB;
  3. stesura codice sketch tramite editor;
  4. compilazione, caricamento e lancio sketch nella scheda Arduino da PC tramite IDE (via cavo USB).

Ora, vorrei far girare la medesima scheda Arduino UNO direttamente in modalità standalone ovvero, dopo aver caricato lo sketch nella memoria flash di Arduino tramite cavo USB PC, vorrei lasciarla girare SENZA CAVO USB (staccando il cavo dal PC), continuando a tenerla alimentata soltanto tramite pacco batterie collegato al jack oppure ai pins Vpi / Vcc ...

E' possibile fare una cosa del genere senza bruciare qualcosa ?

Ad esempio; si pensi ad un banale robottino semovente autonomo con ruote e sensori con sopra montato Arduino Uno che governa motori e sensore ... dopo averlo testato ed averne avviato lo sketch di controllo, come faccio a staccarlo dal PC per lasciarlo andare in modo autonomo senza corrergli dietro col cavo collegato al PC ? :):):slight_smile:

GRAZIE
Gianni

PS ho letto vari tutorial inerenti il bootloader per far girare gli sketch in modalità standalone, ma tutti quelli che ho trovato (interessantissimi), finivano sempre con lo spiegare la programmazione del singolo chip Atmega328 in modalità standalone ... mentre vorrei utilizzare soltanto la scheda Arduino UNO senza l'utilizzo di altra componentistica ...

Non c’è alcun problema.

Una volta caricato il programma, stacchi il cavo USB e, per alimentare la scheda, usi il Jack nero con una tensione >7VDC e, ti consiglio, <12VDC (proveniente da dove ti pare).

Puoi lasciarla alimentata in questo modo quanto tempo vuoi senza problemi.

Guglielmo

O in alternativa puoi alimentarla tramite il cavo USB e un alimentatore tipo quelli per cellulari.

Comunque, come dovresti aver dedotto dalle tue ricerche, solitamente quando si usa il termine “standalone” ci si riferisce appunto all’uso del solo microcontrollore senza “il resto di Arduino”. La configurazione che vuoi usare tu non ha un nome particolare, perché in realtà è un utilizzo assolutamente normale, non so perché fossi convinto che staccare Arduino dal PC potesse essere un problema :).

gpb01:
Non c’è alcun problema.

Una volta caricato il programma, stacchi il cavo USB e, per alimentare la scheda, usi il Jack nero con una tensione >7VDC e, ti consiglio, <12VDC (proveniente da dove ti pare).

Puoi lasciarla alimentata in questo modo quanto tempo vuoi senza problemi.

Guglielmo

Grazie Guglielmo,

ma sorge spontanea una seconda (e ultima) domanda … prima di staccare il cavo USB debbo aver già collegato il pacco batteria autonomo al jack oppure ai pins giusto ?

… altrimenti al distacco del cavo USB (che oltre alla linea dati fornisce anche l’alimentazione proveniente dal PC) … la scheda rimarrebbe momentaneamente senza alimentazione e la memoria flash perderebbe lo sketch memorizzato … giusto ?

No, la memoria flash mantiene il contenuto anche in mancanza di alimentazione, così come la EEPROM. Perdi solo il contenuto della RAM, ma non dovrebbe essere un problema, visto che sarà reinizializzata.

Ti suggerirei di fare qualche test di persona senza paura, non c'è alcun rischio di danneggiare alcunché :).

SukkoPera:
No, la memoria flash mantiene il contenuto anche in mancanza di alimentazione. Anche la EEPROM. Perdi solo il contenuto della RAM, ma non dovrebbe essere un problema, visto che sarà reinizializzata.

Ti suggerirei di fare qualche test di persona senza paura, non c'è alcun rischio di danneggiare alcunché :).

Grazie SukkoPera,

... difatti pensavo che venendo meno l'alimentazione ci fosse un black-out della memoria della scheda con relativa perdita del codice macchina dello sketch (ecco perché mi ponevo il problema se e come staccare il cavo usb da Arduino) :slight_smile: ...

... non sapevo che tali memorie flash si comportassero come le vecchie EEPROM (a proposito, ricordo che negli anni '80 mi capitò di utilizzare un programmatore di EEPROM per fissare il codice macchina nel chip in modo definitivo all'epoca programmavo in Assembler per processori 8502/6502) :wink: ...

GRAZIE MILLE ....

Ecco, diciamo che la flash è una sorta di “versione moderna” della (E)EEPROM (E)EPROM.

SukkoPera:
.... della (E)EEPROM.

[OFF-TOPIC]
... e la terza E che metti tra parentesi starebbe per ? ? ? :o

E comunque le vecchie erano solo EPROM con una sola E ... :smiley:

Ne ho ancora parecchie in un cassetto ... :grin: :grin: :grin:


[/OFF-TOPIC]

Guglielmo

LOL, è colpa dell'autocorrettore! L'intenzione era appunto quella di scrivere (E)EPROM, visto che si parlava di anni '80, quando la prima "E" aveva ancora da venire ;).

gpb01:
[OFF-TOPIC]
... e la terza E che metti tra parentesi starebbe per ? ? ? :o

E comunque le vecchie erano solo EPROM con una sola E ... :smiley:

Ne ho ancora parecchie in un cassetto ... :grin: :grin: :grin:


[/OFF-TOPIC]

Guglielmo

Era proprio una di queste che programmai, ricordo il vetrino centrale del microchip ... doveva essere l'83 / '84 ... :slight_smile:

Guglielmo e SukkoPera …

… un’ultima cosa a definitiva conclusione (sono neofita di Arduino e tante cose non le so) …

… una volta collegata l’alimentazione del pacco batteria ad Arduino, lo sketch va riavviato tramite il tasto di reset ? … oppure si riavvia da solo ?

Grazie

Il tasto Reset, come hai giustamente detto, ri-avvia lo sketch. La prima volta (all’accensione) si avvia da solo.

... anzi, se la vogliamo proprio raccontare tutta, all'arrivo dell'alimentazione viene fatto automaticamente un reset che fa partire il "bootloader", che si accorge che non ha nulla da caricare e passa quindi il controllo al tuo programma :smiley:

Guglielmo

Se vogliamo essere proprio pignoli-pignoli, le cose sono ancora leggermente diverse: all’arrivo dell’alimentazione Optiboot fa partire subito lo sketch, perché il controllo se c’è qualcosa da caricare viene fatto solo quando la causa dell’avvio (registro MCUSR) è “external reset”. Vedasi punto 1 qua.

:smiley:

SukkoPera:
... all'arrivo dell'alimentazione Optiboot fa partire subito lo sketch, perché il controllo se c'è qualcosa da caricare viene fatto solo quando la causa dell'avvio (registro MCUSR) è "external reset".

gpb01:
all'arrivo dell'alimentazione viene fatto automaticamente un reset che fa partire il "bootloader", che si accorge che non ha nulla da caricare e passa quindi il controllo al tuo programma

Ti rendi conto che abbiamo detto la stessa cosa vero ? :smiling_imp: ... perché parte il "bootloader" (Optiboot nel caso di Arduino UNO), si accorge che non deve caricare nulla (in un modo o nell'altro) e dopo passa il controllo al programma. :grin:

Guglielmo

Sì sì, era solo un pignoleria su come Optiboot decide di avviare lo sketch ;).