STM 32 Nucleo – Supporto Arduino Core

E’ da tempo che mi ero ripromesso di utilizzare le schede STM32 Nucleo, desideravo svilupparne alcuni moduli didattici, ma la mia attenzione era rivolta verso altre tecnologie, fortunatamente l’incontro dell’amico Giuseppe Treccarichi e la chiacchierata con gli ingegneri di ST (molto gentili e disponibili) durante la recente MakerFaire di Roma mi hanno convinto che spiegare anche l’uso di STM 32 Nucleo può essere un valore aggiunto per i miei allievi, pertanto mi sto dedicando da qualche giorno alla realizzazione di lezioni sull’uso di queste schede.

La linea ST32 Nucleo è ormai sul mercato da lungo tempo, venne presentata nel 2014, però recentemente ST ha reso disponibile l’Arduino Core ST32 che permette la programmazione di diverse schede ST32 Nucleo mediante l’IDE di Arduino, inoltre il processore a 32 bit, le velocità elevate (nella versione da me posseduta un Cortex-M4 a 85 MHz), il basso costo (circa 10 Euro) la rendono una piattaforma estremamente interessante per i miei studenti.
Le varie schede disponibili, di cui trovate una grafica nell’immagine che segue, supportano comunicazioni di tipo: SPI, I2C, USB-OTG, CAN, UART.

Come si evince dall’immagine possiamo distinguere 3 serie:

  • Serie L: Ultra low power a 32 pin
  • Serie F fino a F3: Mainstream da 32 a 64 pin
  • Serie F4 fino a F7: High performance con processore che va dagli 85 Mhz ai 216 Mhz da 64 a 144 pin

ST mette a disposizione diverse shield con molte funzionalità: controllo motori, WiFi, Bluetooth LE, RFID, GPS, sensori di prossimità e molto altro. Di seguito link alla pagina di riferimento delle ST Exspansion Board

La scheda è compatibile con gli shield disponibili per Arduino, con possibilità di aggiungerne di nuovi autocostruiti.

Come probabilmente molti sapranno le schede ST32 Nucleo sono compatibili mbed la piattaforma software open source che ne permette la programmazione, ma certamente avere a disposizione l’IDE Arduino probabilmente amplia la diffusione della scheda tra quanti conoscono già l’utilizzo di Arduino e vogliono avvicinarsi al mondo ST, l’idea, a livello didattico e quella di partire dall’IDE Arduino per giungere ad IDE più evoluti come mbed.

La scheda è costituita da due parti:

  1. un programmatore ST-Link, utilizzato per caricare il firmware sul microcontrollore della scheda o su altri microcontrollori esterni e permette il debugging;
  2. una scheda di sviluppo su cui è collocato il microcontrollore.

Come è possibile vedere nell’immagine che segue, l’ST-Link si presenta come scheda separata che può essere staccata da quella del microcontrollore, vi consiglio comunque di non staccare l’ST-Link altrimenti non riuscirete a comunicare con il PC.

Il Microcontrollori è costituito da connettori compatibili con la piedinatura dell’Arduino UNO R3 e connettori per le schede ST chiamate Morpho da cui potete accedere a tutti i pin del microcontrollore.

Caratteristiche del microcontrollore

  • STM32F411RET6 in LQFP64 package
  • ARM®32-bit Cortex®-M4 CPU con FPU
  • 100 MHz massima frequenza della CPU
  • VDD da 1.7 V a 3.6 V
  • 512 KB Flash
  • 128 KB SRAM
  • GPIO (50) con possibilità di interrupt esterno
  • 12-bit ADC con 16 canali
  • RTC
  • Timers (8)
  • I2C (3)
  • USART (3)
  • SPI (5)
  • USB OTG piena velocità
  • SDIO

Caratteristiche Nucleo

  • Due tipi di estensioni
    • Connettività Arduino Uno Revision 3
    • Connettività STMicroelectronics Morpho per un accesso pieno a tutti gli I/O dell’ STM32
  • On-board ST-LINK/V2-1 debugger/programmer con connettore SWD
    • Possibilità di selezione solo il funzionamento dell’ST-LINK/V2-1
  • Alimentazione “flessibile”
    • USB VBUS o sorgente esterna (3.3 V, 5 V, 7 – 12 V)
    • Power management access point
  • LED utente (LD2)
  • Due pulsanti: USER e RESET
  • USB re-enumeration capability: tre differenti funzioni supportate dalla USB:
    • COM port virtuale
    • Mass storage (USB Disk drive) per la programmazione drag’n’drop
    • Debugging

Pin out

Compatibilità Arduino

Collegamenti Morpho

 

Supporto Arduino core per per schede STM32

L’aggiunta di nuove schede all’interno dell’IDE di Arduino richiede pochi e semplici passi, la procedura dettagliata di seguito può essere usata anche per altre tipologie di schede elettroniche.

Sul sito Arduino trovate una pagina specifica che spiega come usare il “Boards Manager”, seguite il link per maggiori informazioni. Installing additional Arduino Cores

I pacchetti di installazione per STM32 sono reperibili al seguente link

Installazione Arduino Core per STM 32 Nucleo

Passo 1

Avviate l’IDE Arduino e dal menù File > Preferences

Individuate all’interno del pannello “Additional Boards Manager URLs”

Aggiungete all’interno del campo “Additional Boards Manager URLs”  l’URL corrispondente ai pacchetti per l’stm32duino

https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json

Potrebbe capitare che all’interno del campo “Additional Boards Manager URLs” sia presente un link che fa riferimento ad altra scheda, così come appare nell’immagine che segue

Se foste in questa condizione effettuate un click sull’icona rappresentata nell’immagine che segue, si aprirà un pannello in cui compaiono tutti i link inserite all’interno gli ulteriori link che rimandano ai pacchetti aggiuntivi che verranno aggiunti al vostro IDE.

Fate click su “OK” per confermare

Passo 2

Click su “Tools” menu e “Boards > Boards Manager…

Si aprirà la finestra “Board Manager”

Individuate il menù a discesa in alto: “Type” e selezionate: “Contribute”

Selezionate “STM32 Cores” e fate click su install.

Si noti che è possibile selezionare per il pacchetto scelto la versione che si desidera, l’ultima versione è quella che viene selezionata per default e che dovrete installare.

Durante la fase di installazione, che durerà qualche minuto, noterete il messaggio “Installing…” e la barra di avanzamento download e installing tools in avanzamento

Al termine dell’installazione comparirà a fianco del pacchetto STM32 la voce: INSTALLED

Selezionate la famiglia della scheda Nucleo che disponete dal menù come indicato nell’immagine che segue

Poiché posseggo una scheda della famiglia Nucleo-64 seleziono questa scheda

Il passo successivo consiste nella selezione del tipo di scheda all’interno della famiglia Nucleo-64, nel mio caso una Nucleo F401RE

Selezionate ora il metodo di trasferimento del programma, utilizzate il metodo STLink così come indicato nell’immagine che segue:

Alla prima accensione dovreste notare i LED LD1 e LD3 rossi accesi (indicano che la scheda è alimentata) e il LED LD2 lampeggiante, ciò indica che sta funzionando il programma di test precaricato (un Blink). Sulla scheda è presente un pulsante blu nominato USER, alla pressione cambierà la modalità di lampeggio secondo quanto indicato nel programma precariato, impareremo in lezioni successive come utilizzare questo pulsante.

Come primo test utilizzo lo sketch Blink variandone la velocità di accensione ed effettuate l’upload sulla scheda dovreste notare che il LED LD1 diventa per un istante verde e successivamente il LED LD2 lampeggia alla frequenza che avete impostato.

Buon Coding a tutti 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.