Programmare Arduino con Platform IO

L’IDE di programmazione Arduino è notoriamente semplice da utilizzare, possiede le funzionalità minime per poter scrivere, compilare e caricare sulla scheda il codice prodotto, però le operazioni messe a disposizione sono minime e solamente nella versione che è stata presentata durante la scorsa MakerFaire di Roma, di cui avevo dato notizia in un precedente post, sono state aggiunte una serie di funzionalità di editing che tendono a farlo diventare un editor di programmazione professionale.
Attualmente il nuovo IDE è ancora in versione Beta quindi si dovrà attendere qualche tempo.
Esistono molti ambienti di sviluppo professionali che aggiungono modalità di autocompletamento, facile accesso ad ogni parte del codice, numerose scorciatoie da tastiera. Tra gli abbienti più diffusi che farò sicuramente utilizzare ai miei studenti vi è Visual Studio Code di Microsoft che con l’estensione Platform IO, sviluppato in Python, fornisce un set di strumenti di nuova generazione per lo sviluppo di sistemi embedded in C / C ++. L’estensione è gratuita ed Open Source.
Le schede supportate sono moltissime, ad oggi sono 769, tra cui ESP32, ESP8266, schede della famiglia ST Nucleo e tutte le schede della famiglia Arduino.
Platform IO può essere eseguito su Windows, Mac e Linux e su piccoli computer basati su architettura ARM come: Raspberry Pi, BeagleBone, CubieBoard, Samsung ARTIK, ecc. Platform IO viene fornito con numerosi esempi e librerie.

Vantaggi

  • completamento automatico del codice C / C ++
  • Smart Code Linter che non è presente nell’IDE Arduino.
  • Supporto del tema scuro e chiaro
  • Smart Code Navigations
  • Formattazione del Codice
  • Cross-platform build system indipendente dal sistema operativo
  • File Explorer che aiuta organizzare i file.
  • Comodo gestore delle librerie, Serial Monitor evoluto e molto altro.

L’uso di PlatformIO è molto semplice e richiede pochi passaggi per l’installazione.

Installazione

Dal sito di riferimento: https://platformio.org/

far click su “install PlatformIO Now”

Sarete reindirizzati sulla pagina di riferimento di PlatfprmIO IDE

Prelevare Visual Studio Code facendo click su “Install for VSCode”, sarete reindirizzati sulla pagina di riferimento. Selezionate il sistema operativo del vostro computer e fate click su Download:

Durante il download sarete reindirizzati su una pagina che mostra le caratteristiche principali di VSCCode

Non sono necessarie installazioni, è sufficiente un doppio click per avviare l’applicazione:

Selezionate l’icona Extensions (5’ icona)

Inserite nel campo di ricerca Platform IO e troverete immediatamente l’estensione, come potete immediatamente notare VSCode può essere utilizzato per programmare anche in altri linguaggi: C/C++, C#, Python, PHP, Go, JavaScript, TypeScript, Node.js e molti altri.

Click su Install per installare l’estensione.

La fase di installazione durerà qualche minuto ed in questa fase non chiudete la finestra.

Sulla destra della finestra apparirà un messaggio che vi avverte che l’installazione è andata a buon fine, fate click su “Reload Now”

Quando l’installazione è terminata vedrete la seguente interfaccia:

Vi consiglio di riavviare VS Code Editor dopo l’installazione di Platform IO.

Ciò completa la fase di installazione di Platform IO ed è pronto per essere usato.

Realizziamo il primo Sketch ed inizieremo con il solito Blink che scriveremo all’interno di Platform IO.

Fate click su “+ New Project”

Apparirà una finestra in cui dovrete inserire il nome del programma, nel mio caso ho scelto: “blink-PIO”, selezionate poi il tipo di scheda, noterete che mentre scrivete il nome della scheda vi verrà fornito il suggerimento per il completamento, selezionate Arduino Uno, il campo “Framework” viene completato automaticamente:

Il progetto necessita di qualche secondo, giusto il tempo per creare risorse e dipendenze file.

Al termine apparirà la pagina di riferimento del progetto:

Nella struttura ad albero che compare sulla sinistra della finestra selezionate: src e successivamente main.cpp sulla destra vedrete un sketch pronto con le funzioni setup() e loop() vuoti:

Si noti che PlatformIO non ha l’accesso predefinito alle librerie Arduino, quindi ogni volta che si scrive il codice per Arduino bisogna includere sempre all’inizio dello sketch la libreria Arduino.h

#include<Arduino.h>

Incominciate a scrivere il codice, noterete immediatamente la comparsa del menù di autocompletamento:

Nella parte sinistra della finestra, nella sezione “OUTLINE” potrete spostarvi immediatamente tra le funzioni presenti nel codice:

Procediamo ora alla compilazione del codice: fate click su “PlatformIO: Build” al fondo della finestra (fascia azzurra)

Nella parte bassa della finestra trovate le funzioni: Build, Upload, Upload to Remote Device, Clean, Test, Run Task, Serial Monitor, New Terminal inoltre avete anche icone che vi mostrano: warning ed errori.

Procediamo ora alla compilazione e al trasferimento sulla scheda. Collegate la vostra scheda al computer, il riconoscimento della scheda è automatico:

Click su “PlatformIO: Upload” per trasferire il programma sulla scheda.

Se tutto è stato eseguito correttamente il LED L sulla scheda incomincerà a lampeggiare.

Buon Coding a tutti 🙂

Felice e sereno 2020 – Buon Anno!

Un sincero augurio ai miei studenti, amici e passanti.

Spero che queste vacanze siano piene di serenità e attività creative fatte di Coding e Making elettronico con ciò che più vi piace: Arduino, Raspberry Pi, BBC micro:bit, PLC e tutto quello che desiderate.

UN ABBRACCIO GRANDE.

Preleva il Buon Anno 🙂

EduRobotScan – Smartphone Scanner Stand

Avevo in mente questo progetto da molto tempo, ma non avevo avuto occasione per svilupparlo adeguatamente, si tratta di uno stand per smartphone che aiuta a realizzare comodamente scansioni. In commercio trovate prodotti simili, ma il mio desiderio era quello di realizzarne uno che fosse semplice e veloce da modificare nelle dimensioni.

Il progetto nasce da un’esigenza vera, quella di dover scansione libri antichi e lettere. La versione iniziale era costituita da una struttura in tubi in PVC che aveva il pregio di avere costi di realizzazione molto bassi, ma aveva lo svantaggio di non non poter modulare la dimensione in funzione delle dimensioni del documento o del libro da scannerizzare in quanto gli elementi in PVC dovevano essere incollati tra loro. La prima versione consegnata alla persona che ne aveva necessità è ancora funzionante e a quella struttura sono stati aggiunti luci LED per illuminare meglio il documento da scansionare.

Alla pubblicazione delle foto su Facebook del primo prototipo sono seguite una serie di richieste di persone che mi chiedevano la possibilità di avere un campione, la prima delle richieste è stata quella dell’amica e collega Paola Limone a cui avevo promesso il prototipo N.1 in PVC, è passato qualche mese ma non sono riuscito a consegnarglielo e quindi per farmi perdonare 🙂 per la lunga attesa ho deciso di ingegnerizzare meglio il progetto e consegnare a lei il prototipo della versione 2.0, una struttura, dal mio punto di vista più interessante e versatile.

Il tutto è costituito da:

  • listelli in legno di sezione quadrata 20×20 mm che potete acquistare in qualsiasi brico center a costi contenuti, viene venduto in listelli da 1 m;
  • 14 elementi stampati in 3D utilizzati come giunti, carrelli e pomelli di serraggio;
  • 3 dadi e viti M3 con viti a croce lunghe 16 mm
  • 14 viti da lego M2,5 lunghezza 10 mm

La struttura può essere ridimensionata secondo le modalità indicate nelle immagini che seguono:

Rilascio il file per la stampa 3D in modalità Open Source in modo che possiate, se lo desiderate, realizzare e modificare il tutto. Seguite il link per prelevare i file dalla mia pagina su Thingiverse.

Nel caso di un vostro utilizzo o di migliorie che potreste apportare, vi chiedo la cortesia di inviarmi segnalazione in modo che io possa pubblicarle su questo sito.

Le dimensioni della struttura sono, come dicevo all’inizio del post, a discrezione dell’utente in funzione delle dimensioni massime del documento da scansionare e per questo tutorial o scelto di utilizzare una dimensione che permettesse di scannerizzare pagine A4 in formato verticale o orizzontale.

Tagli listelli

  • N.4 listelli da 25 cm
  • N.1 listello da 30 cm
  • N.1 listello da 14 cm
  • N.1 listello da 40 cm
  • N.1 listello da 50 cm

Nell’immagine il nome assegnato ad ogni listello utilizzato nel tutorial:

Parti stampate in 3D

La base è costituita da tre pezzi di legno di lunghezza rispettivamente di:

  • N.2 piedi da 25 cm
  • N.1 asse orizzontale da 40 cm

Ai piedi dovranno essere avvitati i tappi, i giunti angolari, l’asse orizzontale e il primo giunto a T. Tutte le parti dovranno essere fissate con le viti da legno.

Al primo giunto a T fissare con vite da 16 mm il montante verticale da 50 cm. La vite è inserita all’interno di un pomello. Per favorire l’invito della vite praticare un piccolo for da 3 mm di diametro.

Nell’immagine che segue è mostrato come realizzare i pomelli che utilizzerete anche in altre parti. Inserite il dado nella sede esagonale del pomello ed avvitate con vite da 16 mm:

Base della struttura:

Inserire nel montante verticale il secondo giunto a T ed in questo il braccio che dovrà essere serrato con un pomello.

Per poter selezionare diverse altezze del braccio praticate una serie di fori da 3 mm di diametro lungo il montante, la distanza tra i fori è di 4 cm.

Avvitate sulla cima del montante un tappo:

Al braccio inserite il secondo giunto a T in esso inserite il secondo asse orizzontale da 30 cm e vincolatelo con una vite da legno. Praticate sul braccio orizzontale fori a distanza di 4 cm l’uno dall’altro:

Al terzo asse orizzontale inserite un giunto a T e fissatelo al listello di 14 cm con una vite da legno, questo costituirà il supporto per la forcella di scorrimento su cui sarà posizionato il cellulare:

Fissare con due viti da legno le strutture ad L che reggeranno la forcella:

Costruite la struttura a forcella unendo con viti da legno la maniglia:

Inserite la forcella nel supporto scorrevole:

Inserite la struttura sull’asse orizzontale e vincolate il tutto con un pomello:

Per evitare cadute accidentali del vostro smartphone, vincolatelo alla forcella con elastici:

Se la forcella si inclina leggermente in avanti fissate con un gancio un peso:

Il file per la stampa del gancio potete prelevarlo direttamente dalla mia pagina su Thingiverse.

Bene!
Ora siete pronti per effettuare le vostre scannerizzazioni!

Buon Making a tutti 🙂

La rinascita del Lego Mindstorms NXT 2.0 – programmiamolo in C

Di recente ho scoperto che nella scuola presso cui lavoro sono presenti una serie di Lego Minstroms NXT 2 e come credo sappiate questa versione non può essere più programmata utilizzando l’ultima versione dall’IDE grafico di Lego, quello che attualmente viene utilizzato per per la versione EV3.
In questi giorni ho ripreso in mano la vecchia versione del mattoncino per capire come recuperarlo ed utilizzarlo in ambito didattico. In passati articoli su questo blog avevo segnalato tutti i possibili linguaggi di programmazione che possono essere utilizzati con tutte le versioni di Mindstorms, tra questi però prediligo il linguaggio C in quanto i miei allievi devono utilizzarlo in altri ambiti: microcontrollori, PIC ecc… quindi un primo passo potrebbe essere quello di imparare a programmare in C realizzando robot con l’NXT 2.

Premessa importante.

On-line trovate una serie di tutorial per usare il vecchio mattoncino, alcuni consigliano di utilizzare addirittura Windows XP su un vecchio PC o su PC virtualizzato, ovvimente io sconsiglio vivamente questa strategia soprattutto perchè da anni Microsoft non supporta più XP ed inoltre mina seriamente la sicurezza del computer (virus).

Prelevate dal link indicato di seguito l’ultima versione dell’NXT-G rilasciata dalla Lego al cui interno sarà già presente il driver corretto per il vostro sistema operativo Windows 10, driver che per altro sarà indispensabili per chi intende anche programmare in C il mattoncino. Nello stesso link trovate i riferimenti per gli utenti MacOS X.

Nel caso abbiate sul vostro computer una versione precedente dell’NXT-G non più funzionate potete procedere alla sola installazione del driver NXT Fantom Driver che risolve una serie di problemi di comunicazione, inoltre questo driver permetterà di sistemare tutti i problemi che si hanno con altri ambienti di sviluppo come: LejOS, RobotC, ecc…

Pagina di riferimento per il download

Windows 10

MacOSX

Veniamo ora all’ambiente di sviluppo in C.
Vi consiglio di utilizzare Bricx Command Center (BricxCC) ambiente Open Source adatto per tutte le versioni Mindstorms: RCX, NXT ed EV3. L’IDE di programmazione funziona per tutte le versioni di Window a 64 bit.

Nella pagina trovate il link “latest version” che NON dovete prendere in considerazione in quanto vi rimanda ad una serie di versioni NON compatibili con Windows 10.

SEGUITE invece il link test release, il nome è fuorviante, ma è quello giusto.

Dopo una serie di test ho verificato che la versione corretta è quella che fa riferimento al file: bricxcc_setup_33810_20130220.exe

E’ un file autoscompattante, all’interno ritroverete la seguente struttura:

Doppio click sul file BricxCC

Comparirà la finestra “Find Brick”

Queste le impostazioni:

Port: Automatic
Brick Type: NXT
Firmware: “Standard”

Nel caso abbiate la necessità di caricare l’ultima versione del Firmware sul mattoncino potete procedere in due modi:

Modo 1 (consigliato): utilizzate NXT-G ed aggiornate il firmware

Modo 2: da BricxCC, menù Tools > Download Firmware selezionate l’ultima versione che trovate nella cartella BricxCC: lms_arm_nbcnxc_132.rfw

Per quanto riguarda le impostazioni dell’ambiente BricxCC dal menù: Edit > Preferences…

Queste le impostazioni del pannello: Compiler > NBC/NXC

Bene! Il vostro vecchio mattoncino NXT 2 è rinato 🙂 pronto per realizzare tutti i robot che desiderate.

Buon Coding a tutti 🙂

Arduino Plate v02

In queste settimane ho utilizzato in laboratorio la prima versione dell’Arduino Plate ed osservando la modalità di utilizzato da parte dei ragazzi ho effettuato alcune modifiche producendo una seconda versione che condivido con voi.

In questa nuova versione ho aumentato i fori disponibili in modo che si possano fissare altre schede elettroniche, inoltre ho aggiunto un supporto che permette di porre in verticale in due modalità diverse l’intera plate.

La posizione verticale è stata pensata per:

  • poter illustrare e mostrare meglio i collegamenti sulla scheda,
  • per ridurre gli spazi sul banco di lavoro,
  • per avere un punto di visione del circuito più comodo sul banco della classe o sulla scrivania di casa.

Inoltre il supporto è anch’esso forato e può ospitare altri elementi come ad esempio delle batterie di alimentazione che favoriscono con il loro peso la stabilità dell’intera struttura.

Nei file che condivido troverete due versioni per il supporto della plate, pensate per il taglio di compensato con spessore da 3mm e 4mm. Come sempre potete prelevare i file per il taglio laser direttamente da Thingiverse, nel caso modificate e migliorate come ritenete.

Buona sperimentazione a tutti.