Skip to content
Arturo Rinaldi edited this page Mar 7, 2022 · 5 revisions

Guida all' installazione della piattaforma Atmel SAM per PlatformIO con supporto per le schede Arancino ed Arancino Mignon

Installazione del core della piattaforma Arancino SAMD

Dopo avere installato sul proprio sistema operativo l'ambiente di sviluppo PlatformIO tramite la documentazione ufficiale da consultare a questo link (si consiglia di usare VSCode):

https://platformio.org/install

https://docs.platformio.org/en/latest/core/installation.html

bisogna integrare manualmente il porting col supporto delle schede Arancino. Al momento é stato fatto su un fork del codice sorgente della singola piattaforma platform-atmelsam di Ivan Kravets.

L’url di riferimento interno del codice sorgente é il seguente:

https://git.smartme.io/smartme.io/arancino/platform-atmelsam

Una volta effettuata l’installazione, navigare nella cartella utente di platformIO sul proprio sistema che, in base al sistema operativo, é definita come:

Unix e Unix-like ~/.platformio o ${HOME}/.platformio

Windows %HOMEPATH%\.platformio (ad es. C:\Users\myuser.platformio)

creare la sotto-cartella platforms e clonare al suo interno il codice sorgente con questo comando :

$ git clone https://github.com/smartmeio/platform-atmelsam.git -b 7.1.0-arancino atmelsam

$ cd ${HOME}/.platformio/platforms/atmelsam

$ git submodule update --init --recursive

oppure scaricare lo zip dei sorgenti dall’interfaccia web di gitlab ed estrarre il contenuto dell’archivio nella cartella atmelsam.

Per installare il core arduino-like della piattaforma Arancino SAMD bisogna inserire l'url diretto alla tarball nella sezione framework-arduino-samd-arancino del file platform.json:

"framework-arduino-samd-arancino": {
  "type": "framework",
  "optional": true,
  "owner": "smartme-io",
  "version": "~1.3.0"
 }

nel campo version che attualmente ha scolpito il valore 1.3.0:

https://download.smartme.io/artifactory/framework-arduino-samd-arancino/1.3.0/framework-arduino-samd-arancino-1.3.0.tar.bz2

dato che usiamo come nostro host/repository artifactory all'indirizzo:

https://download.smartme.io/artifactory

inoltre, per effettuare la programmazione della MCU tramite interfaccia col tool ArancinoOTA grafica bisogna sostituire nella sezione tool-arancino-ota:

"tool-arancino-ota": {
  "type": "uploader",
  "optional": true,
  "owner": "smartme-io",
  "version": "~1.0.10"
 }

il valore ~1.0.10 con il seguente URL di download in base alla propria piattaforma come elencato nei link riportati qui sotto :

Windows

https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-windows-1.0.10.tar.gz

Linux

https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_i386-1.0.10.tar.gz

https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_x86_64-1.0.10.tar.gz

Linux ARM

https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_aarch64-1.0.10.tar.gz

https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_armv6l-1.0.10.tar.gz

OSX

https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10 /tool-arancino-ota- darwin_x86_64-1.0.10 .tar.gz

infine, nella sezione tool-arancino-ota-no-gui:

"tool-arancino-ota-no-gui": {
  "type": "uploader",
  "optional": true,
  "owner": "smartme-io",
  "version": "~1.0.2"
 }

sostituire il valore ~1.0.2 col seguente URL:

http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz

Gestione del file di progetto platformio.ini

A questo punto il sistema per lavorare é praticamente pronto… basta cominciare a scrivere il file platformio.ini per cominciare a creare la build per i nostri dispositivi. Esaminiamo questo template :

; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:arancinoMignon]
board = arancinoMignon
framework = arduino
platform = atmelsam
upload_protocol = arancino-ota
board_upload.port = arancino.local
upload_flags =  
     --arancino_port_id=5C585A6650515251362E3120FF180229
lib_deps =     
	 briscoetech/[email protected]     
     smartme-io/[email protected]     

[env:arancino]
board = arancino
platform = atmelsam
framework = arduino
upload_protocol = arancino-ota-no-gui
board_upload.port = arancino.local
# board_upload.port = 192.168.158.186
upload_flags =
     --arancino_port_id=8009D0EA50524647352E3120FF101F2B
lib_deps =    
    briscoetech/[email protected]
    smartme-io/[email protected]

Una volta che é stato inizializzato il file, ad esempio in VSCode creando un nuovo progetto scegliendo come board la scheda arancino, dobbiamo aggiungere alcune voci in aggiunta a quelle di default se vogliamo programmare le nostre schede :

upload_protocol

Sono a disposizione quattro protocolli di upload per la piattaforma :

  • arancino-ota: richiama il tool di upload con interfaccia grafica;
  • arancino-ota-no-gui: richiama il tool di upload senza interfaccia grafica.
  • atmel-ice: upload utilizzando il programmatore Atmel Ice
  • sam-ba: upload tramite porta usb on board (bossac), solo per Arancino Mignon.

nell'ambiente di lavoro verrá comunque usato arancino-ota o arancino-ota-no-gui come protocollo di upload.

board_upload.port

é il target su cui si vuole caricare il firmware che puó essere un indirizzo IP oppure il record dns avahi della scheda (es. arancino.local)

upload_flags

ci consente di aggiungere delle flags aggiuntive al nostro tool di upload. Serve principalmente nell’uso del tool di upload senza interfaccia grafica. Come argomento aggiuntivo, usando il protocollo arancino-ota-no-gui, specifichiamo lo switch da riga di comando :

--arancino_port_id=<MCU_SERIAL>

dove MCU_SERIAL é il seriale del microcontrollore su cui vogliamo caricare il firmware e che possiamo trovare grazie al servizio arancino alla pagina web :

http://arancino.local:1475/api/v1/ports

indicato dalla voce B_ID. In questa stessa pagina web possiamo anche vedere se ci sono anche delle board Arancino Mignon connesse alla main board Arancino e di conseguenza programmare quelle grazie alle chiamate REST in Python.

Si puó caricare il firmware contemporaneamente su piú board se non viene specificato un singolo ambiente o da riga di comando o da interfaccia grafica con VSCode. Per "ambiente" si intende una sezione del file INI del tipo :

[env:arancino]

cioé quella che identifica la board vera e propria per cui verrá eseguito il processo di build del firmware stesso.

lib_deps

qui vanno aggiunte le librerie aggiuntive "arduino-like" e non (a seconda della piattaforma) che servono per la compilazione del codice sorgente.

Aggiornamento della piattaforma Arancino

Se si desidera aggiornare il core della piattaforma Arancino, bisogna sostituire manualmente (allo stesso modo) l'url diretto nella sezione framework-arduino-samd-arancino :

"framework-arduino-samd-arancino": {
  "type": "framework",
  "optional": true,
  "owner": "smartme-io",
  "version": "~1.3.0"
 }

Puó essere, ad esempio, sostituita con una versione snapshot mettendo il link alla tarball corrispondente, ad esempio :

http://download.smartme.io/artifactory/framework-arduino-samd-arancino-snapshot/1.4.0-test.1/framework-arduino-samd-arancino-1.4.0-test.1.tar.bz2

Va da sé che le stesse istruzioni si applicano pure per lo strumento di upload tool-arancino-ota-no-gui :

"tool-arancino-ota-no-gui": {
  "type": "uploader",
  "optional": true,
  "owner": "smartme-io",
  "version": "~1.0.2"
 },

quindi se in un futuro si volesse aggiornare ad una nuova versione basta cambiare ancora una volta l'URL nel campo version che al momento é :

http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz

lo stesso concetto modulare verrá applicato per altri tool aggiuntivi delle future piattaforme (se presenti).

Template di platformio.ini pronto per l'uso della piattaforma

Per evitare i passi descritti sopra, viene fornito un template predefinito che effettua l'override dei componenti descritti sopra:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:arancinoMignon]
board = arancinoMignon
framework = arduino
platform = https://github.com/smartmeio/platform-atmelsam.git#7.1.0-arancino
upload_protocol = arancino-ota-no-gui
; board_upload.port = localhost
board_upload.port = 192.168.158.186
upload_flags =
        --arancino_port_id=5C585A6650515251362E3120FF180229
platform_packages =
        smartme-io/framework-arduino-samd-arancino@http://download.smartme.io/artifactory/framework-arduino-samd-arancino/1.3.0/framework-arduino-samd-arancino-1.3.0.tar.bz2
        smartme-io/tool-arancino-ota@http://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_x86_64-1.0.10.tar.gz
        smartme-io/tool-arancino-ota-no-gui@http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz

[env:arancino]
board = arancino
platform = https://github.com/smartmeio/platform-atmelsam.git#7.1.0-arancino
framework = arduino
upload_protocol = arancino-ota
; board_upload.port = localhost
board_upload.port = 192.168.158.186
platform_packages =
        smartme-io/framework-arduino-samd-arancino@http://download.smartme.io/artifactory/framework-arduino-samd-arancino/1.3.0/framework-arduino-samd-arancino-1.3.0.tar.bz2
        smartme-io/tool-arancino-ota@http://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_x86_64-1.0.10.tar.gz
        smartme-io/tool-arancino-ota-no-gui@http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz

l'utente potrá quindi modificare a proprio piacimento i valori su questa base e poi lanciare la build del firmware, da riga di comando o da VSCode stesso selezionando l'ambiente di build.

Ad esempio per effetuare da riga di comando (CLI), la build del firmware solo per la board arancino, dovrá essere lanciato il comando:

$ pio run -vvv -d <platformio_work_dir> -e arancino

invece per effettuare l'upload (o il processo combinato di build e upload):

$ pio run -vvv -d <platformio_work_dir> -e arancino -t upload

Installazione della libreria Arancino

Installazione dal registry di platformIO

La libreria Arancino per la piattaforma puó essere installata in modalitá "system-wide" nella cartella utente di platformIO con questo comando:

$ pio lib --global install smartme-io/Arancino

da digitare nella propria shell di sistema (Unix o DOS). Di default verrá installata sempre l'ultima versione pubblicata sul registry di platformIO, altrimenti sará possibile specificare la versione con:

$ pio lib --global install smartme-io/Arancino@<VERSION>

Le versioni disponibili sono quelle pubblicate sul "registry" ufficiale delle librerie di platformIO:

https://platformio.org/lib/show/11767/Arancino

Installazione tramite VCS

L'installazione puó anche essere effettuata tramite repository git remoto:

$ pio lib --global install https://github.com/smartmeio/arancino-library.git

L'installazione punterá sempre al branch predefinito del repository (in questo caso master). É possibile anche specificare il branch per testare una versione di sviluppo:

$ pio lib --global install https://github.com/smartmeio/arancino-library.git#<GIT_BRANCH>

stesso discorso vale per la tag del codice sorgente stesso:

$ pio lib --global install https://github.com/smartmeio/arancino-library.git#<GIT_TAG>