Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

6
voti

Guida al caricamento del bootloader e utilizzo dell'IDE di Arduino con la scheda "blue pill" STM32

Indice

Premessa

Tempo fa, incuriosito da questo thread su Electroyou Modulo con STM32F103C8 e ST-LINK very cheap, mi ero procurato a pochi euro una schedina chiamata sulla rete "blue pill" e il relativo programmatore USB clone ST LINK V2.

FOTO_01 KIT.jpg

FOTO_01 KIT.jpg

La schedina (dalla dotazione minimale e dalle dimensioni veramente ridotte) monta un potente processore a 32bit STM32F103C8T6. La schedina e programmatore sono rimasti inutilizzati per svariato tempo; a distanza di più di due anni l'ho ripresa ed ho deciso di fare questa piccola guida su come installare il bootloader e come utilizzare la scheda con l'IDE Arduino in ambiente Windows. So che tanti storceranno il naso però io penso che qualsiasi tentativo di avvicinare i ragazzi all'elettronica o a delle passioni in generale sia comunque da fare; il modulo costa poco, l'IDE di Arduino è molto diffuso e tanto basta.
Ovviamente chi vorrà potrà approfondire e studiare la programmazione e i microcontrollori in genere in maniera più seria e rigorosa.

Perché il bootloader

Il bootloader è un piccolo programma che, nel nostro caso, crea una porta COM che ci consente la programmazione del microcontrollore senza il programmatore esterno, ma attraverso un cavetto USB collegato al nostro PC. E' molto comodo perché, specie chi è alle prime armi, compila e carica varie volte il programma sul microcontrollore per vedere gli effetti dei cambiamenti sul codice. Inoltre nel caso della scheda blue pill ogni volta che carico il codice con il programmatore ST LINK dovrei muovere un jumper sulla scheda, che è una perdita di tempo. Il bootloader occupa circa 20kB dei 64kB a disposizione.

Un occhiata alla scheda

La scheda è veramente piccola (un paio di monete da due euro affiancate....) ma la fattura lascia un po a desiderare. Prima di procedere ho sostituito la R10 (un resistore SMD package 0603 di valore 10k) con quella corretta da 1.5k come da specifiche USB.

R10 wrong value.jpg

R10 wrong value.jpg

Pare che questo sia un problema comune. Ho sostituito inoltre lo strip di connessione a 90° per il collegamento del programmatore con uno strip femmina (solo per mia comodità nei collegamenti). Ho dato una pulizia alla scheda con diluente alla nitro.


Carichiamo il bootloader

Per prima cosa è necessario installare i driver USB per ST-LINK che si trovano al seguente indirizzo:
USB driver (STSW-LINK009) for ST-LINK/V2, ST-LINK/V2-1 and STLINK-V3 boards
Per scaricare i driver sarà necessario creare un account su ST; l'account ci servirà anche per scaricare altri tools di ST. Inseriamo il programmatore ST-LINK nella porta USB e verifichiamo che sia correttamente riconosciuto (pannello di controllo-->sistema-->gestione dispositivi):

FOTO_02_DRIVER ST LINK.jpg

FOTO_02_DRIVER ST LINK.jpg

A questo punto bisogna scaricare il file bootloader .bin per la schedina in nostro possesso a questo link:
STM32duino-bootloader
Quello corretto si sceglie in base al collegamento del led di stato (nel mio caso il led è collegato al pin PC13). Ho scaricato quindi il file "generic_boot20_pc13.bin". A questo punto bisogna collegare il programmatore ST-LINK alla scheda mediante quattro collegamenti:

  1. GND-->GND
  2. 3.3V-->3.3
  3. SWDIO-->DIO
  4. SWCLK-->DCLK

La piedinatura del connettore dell'ST LINK è stampigliata sullo chassis dello stesso. Bisogna fare attenzione a non fornire la tensione di 5V alla scheda blue pill pena la sua rottura.

FOTO_06_COLLEGAMENTI.jpg

FOTO_06_COLLEGAMENTI.jpg

Inseriamo il programmatore nella porta USB del PC e verifichiamo che il LED rosso sia acceso. Per caricare il bootloader bisogna scaricare il software STM32CubeProgrammer all'indirizzo:
STM32CumeProgrammer
Bisogna prima connettersi al device:

FOTO_03_ST CONNECT.jpg

FOTO_03_ST CONNECT.jpg

Quindi possiamo procedere all'upload del file bin:

FOTO_04_ST UPLOAD.jpg

FOTO_04_ST UPLOAD.jpg

Ora possiamo rimuovere i collegamenti e collegare la schedina blue pill al PC mediante un cavetto USB. Ora dobbiamo fare in modo che la porta COM venga riconosciuta come "Maple Serial COMx". Sarà necessario installare i driver al seguente link:
Driver STM32 maple
Bisogna creare la cartella C:\Users\nome utente\Documents\Arduino\hardware e scompattare il file scaricato precedentemente. Aprire un prompt in C:\Users\nome utente\Documents\Arduino\hardware\Arduino_STM32-master\drivers\win\ e eseguire install_drivers.bat. Il comando eseguirà due volte wdi-simple.exe per installare i driver necessari. Al termine collegare la scheda blue pill al PC mediante cavo USB e vedere se il driver per la porta COM viene correttamente riconosciuto:

FOTO_05_MAPLE.jpg

FOTO_05_MAPLE.jpg

Configurare IDE Arduino

Per configurare l'IDE di Arduino dobbiamo scaricare il supporto alle schede STM32duino. Per fare questo bisogna andare nelle impostazioni del programma e inserire il seguente link nella sezione URL aggiuntive per il Gestore schede:
STM32duino

FOTO_07_IDE LINK.jpg

FOTO_07_IDE LINK.jpg

Successivamente andare nel menù Strumenti-->Gestore schede e installare il pacchetto: STM32F1xx/GD32F1xx boards

FOTO_08 STM32 DUINO.jpg

FOTO_08 STM32 DUINO.jpg

Dopo aver installato il pacchetto collegare la blue pill alla porta USB e andare nel menù Strumenti per selezionare la scheda (Generic STM32F103C6/fake STM32F103C8) e la modalità di upload (STM32duino bootloader):

FOTO_09_IDE BOARD SELECT.jpg

FOTO_09_IDE BOARD SELECT.jpg




Proviamo a compilare e caricare un programma

Proviamo il semplice sketch di esempio "blink" che modificheremo come di seguito (in pratica definiamo che il presente sulla scheda "LED_BUILTIN" è collegato a PC13.

//  Blink LED

#define LED_BUILTIN PC13


// the setup function runs once when you press reset or power the board
void setup() {  
// initialize digital pin LED_BUILTIN as an output.
   pinMode(LED_BUILTIN, OUTPUT);
}


// the loop function runs over and over again forever
void loop() {
   digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
   delay(1000);                       // wait for a second
   digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
   delay(1000);                       // wait for a second
}

Compiliamo e carichiamo il programma e se tutto va bene vedremo il LED lampeggiare.....

Conclusioni

Spero che questa guida serva a qualche studente o hobbista che usa già Arduino e che si vuole cimentare con questa scheda veramente economica e che questo possa essere un trampolino di lancio!

6

Commenti e note

Inserisci un commento

di ,

Grazie Alessandro...questo è lo spirito. E' chiaro che per sfruttare appieno tutte le caratteristiche del micro credo sia opportuno seguire altre strade....

Rispondi

di ,

Bravo Dario, anch'io ho preso tutto il necessario per pochi soldi, e dopo ho lasciato tutto lì perchè ho un problema congenito nella programmazione testuale sugli IDE (che prima o poi dovrò affrontare.....). Questo articolo mi ha risvegliato la voglia di trafficare con questa miracolosa schedina (meno di 2 euri.....).

Rispondi

di ,

Giusto.....corretto!

Rispondi

di ,

il loop() non ritorna void?

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.