Arduino (nano) on steroids: Blue pill!

 

Piccola introduzione su queste schedine chiamate “blue pill” che ho iniziato ad usare nei progetti dove l’arduino (nano, ma anche il mega) iniziava a mostrare i suoi limiti. Una cosa davvero notevole è che “per un pugno di dollari” non vi offrono una “pillola blu” ma tre.

Ho deciso di presentarvi queste schedine con un articolo dedicato mentre stavo preparando questo articolo sulla costruzione di un datalogger, in effetti queste STM32F103C8T6 meritano qualcosa di più di un paio di righe buttate li.

Cos’hanno in più di arduino? Beh, se parliamo dei classici (uno, nano, mega, ecc…) ha parecchio di più, giusto un paio di cose:

  • CPU ARM 32bit a 72MHz contro una spesso adeguata ma vecchia ATMEL 8bit a 16MHz,
  • Un sacco di interfacce in più tipo USB e CAN bus.
  • Parecchi input analogici con una risoluzione migliore (12bit invece di 10, quindi 4 volte più risoluzione).
  • Molta più memoria, di qualunque tipo, tipo 20KB di Ram contro i 2KB dell’arduino uno.

Normalmente qualcosa di performante  ed economico ha lo svantaggio di avere più complessità. Non è questo il caso, visto che dopo una piccola configurazione le useremo esattamente come un arduino!

Materiali necessari

Prima di tutto, dovrete procurarvi una o più schede. Le bluepill sono le più diffuse e, in elettronica, è spesso molto controproducente fare gli alternativi. Esistono anche altre versioni chiamate redpill o blackpill o altre schede con layout completamente diversi. Queste schede sono generalmente un po’ differenti ma il concetto base non cambia. Per iniziare io consiglio molto caldamente di “seguire la massa” e restare sulle cose ben documentate quindi ecco i link solo per le bluepill:

Oltre alla scheda vi serve anche un convertitore USB-seriale per flashare il bootloader. Potreste usare una scheda arduino come un “emulatore” del convertitore, ma solo a certe condizioni (che lavori a 3V3 e non a 5V per esempio, o friggete tutto) e con certe schede. In pratica è una rottura e immagino che se siete arrivati al punto di aver bisogno di qualcosa in più di un arduino abbiate già un convertitore adatto allo scopo. Nel caso non lo aveste lo si può prendere con poco e vi può essere utile anche per parecchie altre cose (programmare moduli OSD come il minimosd per i droni, resuscitare router o altri dispositivi brickkati).

La prima cosa da fare è impostare il convertitore per lavorare a 3V3 e non 5V per mettersi al riparo dal malvagio magick smoke sempre in agguato, quindi prima spostate il jumper poi passiamo al resto.

Ora bisogna procurarsi un po’ di software e driver vari, oltre all’IDE di arduino.

Ora, io sono assolutamente entusiasta che ogni cazzo di sito mi chieda di registrarmi per scaricare una tantum del software gratuitamente, però so che c’è sempre chi la pensa diversamente da me quindi faccio solo presente che potrebbero essere investigate soluzioni alternative. Tipo siti di “shared logins”. Tipo questo

Preparazione dell’ambiente di sviluppo

Scaricate l’ide ed entrando nel menù File/Impostazioni e incollate questo link nel campo “URL aggiuntive per il Gestore schede”: http://dan.drown.org/stm32duino/package_STM32duino_index.json
Maggiori info si possono trovare qui.
Ora bisogna entrare nel menù Strumenti/Schede/Gestore schede e cercare questa stringa: STM32F1xx.  Vi verrà proposto del software by “stm32duino”, scegliete l’ultima versione. Fate installare all’IDE il software necessario per fargli gestire anche queste blue pill.

STM32F1xx Arduino (nano) on steroids: Blue pill! Fai da te (DIY)

L’IDE è a posto, passiamo al resto. Scaricate i driver dal repo github, estraete l’archivio zip  e installateli eseguendo il file “install_drivers.bat” nel percorso Arduino_STM32-master\Arduino_STM32-master\drivers\win della cartella appena unzippata. NB: i driver vanno installati come amministratori.

Scaricate anche il bootloader e tenetelo sotto mano. Scaricate e installate il software per il flash del bootloader ed eseguitelo dopo aver collegato l’adattatore USB-seriale. Il software, Flash Loader Demonstrator, dovrà già aver la porta COM del convertitore disponibile per fare il suo lavoro. Prima di procedere bisogna fare gli opportuni collegamenti tra il convertitore e la blue pill. Controllate di nuovo che il convertitore abbia il jumper che imposta la tensione a 3V3, spostate il jumper “boot 0” della blue pill in posizione 1 e ricontrollare che il convertitore lavori a 3V3 (un doppio check non fa mai male). Il controllore ha i terminali DIR, RX, TX, VCC, CTS e GND. A noi serve collegare il VCC e il GND rispettivamente ai pin “3.3”  e “G” della blue pill, e i  pin RX e TX rispettivamente ai pin A9 e A10 della scheda. Onde evitare problemi, fate questi collegamenti senza aver dato alimentazione alle schede.

Fatto questo la configurazione del software è banale, basta avviare il “Flash Loader Demonstrator” e seguire queste operazioni:

flash-loader-demonstrator-230x300 Arduino (nano) on steroids: Blue pill! Fai da te (DIY)

  • indicare la corretta porta COM nel campo “Port Name”, premere Next,
  • controllare sulla schermata seguente che ci sia un semaforo verde con la scritta “Target is readable” (altrimenti ripetere i punti precedenti per correggere qualche passaggio sbagliato), premere next,
  • apparirà una schermata con lo stato delle memorie del microcontrollore, non c’è niente da fare ma si può controllare che siano tutte non protette (lucchetto verde), premere Next,
  • nella nuova schermata cliccare su “Download to device” e poi cliccare sul pulsante con i tre puntini a destra del campo “Download from file”. Da qui navigare nella cartella dove è stato precedentemente salvato il bootloader, visualizzarlo cambiando il filtro dei files selezionabili (di default file *.s19) scegliendo “Bin Files (*.bin)”, selezionarlo e premere “Apri”.
  • Premendo “Next” parte l’operazione di flash del bootloader. Se arrivate ad una schermata come da immagine seguente rimettete il jumper “boot 0” in posizione zero e avete finito, altrimenti ripetete i passi precedenti.

    STM32-flashed-230x300 Arduino (nano) on steroids: Blue pill! Fai da te (DIY)
    Flash del bootloader andato a buon fine

 

Per controllare che tutto sia andato a buon fine collegate il micro alla sua porta micro-USB e andate nella gestione dispositivi di windows. Nella sezione “Porte (COMe LPT)” vi deve comparire una voce “Maple Serial (COM??)”, questa com è quella da impostare nell’IDE di arduino.

COM-port-maple-serial Arduino (nano) on steroids: Blue pill! Fai da te (DIY)
Maple Serial COM presente
hello world

Come per ogni nuovo ambiente di sviluppo è necessario fare il test hello-world che, per un microcontrollore, in genere è far lampeggiare un led (anche qua già presente on-board, come nei normali arduino).

Aprite un nuovo sketch e incollate queste poche righe:
void setup() {
pinMode(PC13, OUTPUT);
}
void loop() {
digitalWrite(PC13, HIGH);
delay(1000);
digitalWrite(PC13, LOW);
delay(1000);
}

Lo avete riconosciuto? È il classico “blink” degli esempi di arduino, con l’unica differenza che il pin del led non è il classico “LED_BUILTIN” ma il pin “PC13”.

Il nome degli input-output sul vostro sorgente saranno diversi perché sono I/O di un micro diverso che fanno anche cose diverse. Per esempio: non ci sarà più un D3 (digital pin nr 3) ma ci sarà un PA11. Perché? Beh, non che non si potesse semplificare di più (anche l’arduino ha tot potenzialità “nascoste” di proposito per renderlo più user friendly), è che questa scheda è pensata per chi vuole qualcosa in più di un arduino base e quindi lascia più carne al fuoco.

Per caricare uno sketch la procedura è la solita, solamente assicuratevi di utilizzare queste impostazioni.

maple-mini-bootloader Arduino (nano) on steroids: Blue pill! Fai da te (DIY)

Se avete fatto tutto correttamente il caricamento andrà a buon fine, il led inizierà a lampeggiare e voi potrete farvi i complimenti: ora avete un arduino nano on steroids!

Non resta altro da fare che usarlo senza friggerlo, for your convenience ecco lo schema degli I/O della Blue Pill, tenetelo sempre sottomano e abbiate un occhio di riguardo per i pin 5V tolerant, anzi, fate attenzione soprattutto ai pin NON 5V tolerant. Cioè quelli che devono ricevere massimo 3,3 Volt.

Bluepillpinout Arduino (nano) on steroids: Blue pill! Fai da te (DIY)
Blue Pill STM32F103 Pinout Diagram

Questo è tutto, alla prossima.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.