Getting Started Flip & Click

Dopo aver conosciuto, nel precedente articolo, il Flip & Click prodotto dalla MikroElektronika, vediamo, in questa puntata, di approfondire gli argomenti e di prendere ancora più confidenza con questo eccezionale dispositivo di sviluppo. Esamineremo ancor di più le potenzialità offerte, gli ambienti di sviluppo e i linguaggi di programmazione. Si tratta, effettivamente, di una scheda che lascia senza fiato ed espande all'infinito le possibilità di sviluppo e di creazione. La sua particolarità è concentrata, soprattutto, nella possibilità di ospitare da zero a quattro Click Boards, attualmente circa 160 ma che in futuro potranno certamente aumentare. Con tali schede Click è possibile creare qualsiasi tipologia di applicazione, senza effettuare alcuna saldatura, appunto in un click, e con la potenza e semplicità di Arduino. Per Linux e OSX il riconoscimento è, invece, automatico.

Introduzione

Nelle numerose prove effettuate e anche nei test presenti in rete, è possibile evidenziare il fatto che il Flip & Click si comporta leggermente meglio di Arduino Due. Il collegamento fisico con i PC avviene tramite cavo USB. Il dispositivo è riconosciuto come una porta COM virtuale. In Windows è necessario installare gli appositi drivers, forniti nella sezione "Download" del sito di Arduino.

Arduino IDE e Python

Il Flip&Click può essere programmato da un'estesa cerchia di sviluppatori. Infatti il dispositivo è distribuito e venduto in due diverse versioni, una compatibile con l'IDE di Arduino e l'altra compatibile con Python. Le schede sono uguali, se non per il firmware presente nella MCU. Per utilizzare in compatibilità Arduino è sufficiente collegarlo alla porta USB ed avviare l'IDE (visibile in figura 1), che lo riconoscerà come Arduino Due.

Figura 1: L'IDE di Arduino.

Figura 1: L'IDE di Arduino.

Per i programmatori in Python il discorso è leggermente diverso. Occorre, infatti, scaricare e lanciare l'ambiente Zerynth Studio (vedi figura 2), collegare il Flip & Click, selezionare dall'elenco il dispositivo "MikroElektronika Flip & click", installare la virtual machine e iniziare a programmare gli scripts in Python.

Figura 2: Zerynth Studio.

Figura 2: Zerynth Studio.

Proviamo Zerynth Studio con Python

Bene, prima di iniziare il lavoro di programmazione occorre scaricare gratuitamente Zerynth Studio dal sito http://www.zerynth.com/. Dal menù a tendina "Products" si deve scegliere la voce "Zerynth Studio". E' disponibile per  i Sistemi Operativi Linux, Windows e MAC OS X. L'installazione è estremamente semplice e basta seguire la procedura da esso proposta. Come si vede dalla figura 3, Zerynth Studio supporta diversi dispositivi e schede.

Figura 3: Dispositivi e schede supportati da Zerynth Studio.

Figura 3: Dispositivi supportati da Zerynth Studio.

La filosofia di utilizzo è molto semplice, la normale procedura prevede infatti:

  1. Connessione e collegamento del dispositivo con sua selezione dall'elenco proposto;
  2. Programmazione del progetto in Python e sincronizzazione;
  3. Controllo e visualizzazione dati.

 

Figura 4: La pagina di download della Zerinth.

Figura 4: La pagina di download della Zerynth.

All'atto della connessione fisica del Flip & Click,  e se i drivers sono stati installati correttamente (in Windows), Zerynth Studio (Figura 4) si accorge della sua presenza e visualizza le istruzioni per proseguire la procedura. Il dispositivo è, infatti, listato nella Board Management Toolbar. Il primo passo consiste nell'operazione di upload la VM (Virtual Machine) su cui è basato tutto il funzionamento. Per l'operazione occorre attendere qualche secondo. Essa "gira" sulla scheda eseguendo anche il codice in Python. Al termine è interessante notare che l'ambiente mette numerosi esempi a disposizione dell'utente, tutti selezionabili e utilizzabili subito. Il secondo passo consiste nell'effettuare il codice sulla scheda. Tutte queste operazioni possono essere effettuate tramite una barra di pulsanti posta in alto della schermata.

# Generica funzione per lampeggio di un diodo Led
def lampeggio(Npin): 
 while True: 
 digitalWrite(pin[Npin],HIGH) 
 sleep(500) 
 digitalWrite(pin[Npin],LOW) 
 sleep(500)

Dopo aver scritto il proprio codice, o aver importato quello di esempio, si può premere il pulsante "Verify and upload". Se il programma è esente da errori sarà caricato immediatamente sulla scheda e inizierà a produrre i suoi effetti. La notizia importante è sapere che il Flip & Click della MikroElektronika è "ufficialmente" supportata da Zerynth.

Python vs. C

Anche se il C è il linguaggio di programmazione per eccellenza e, sicuramente, uno dei più utilizzati, il Python mette a disposizione strumenti molto interessanti e le sue possibilità di impiego rivestono parecchi settori importanti. Con quest'ultimo il programmatore può affrontare e risolvere, in modo facile, molte problematiche estremamente critiche. Uno di questi è il multi-thread. Python è un linguaggio multi-threaded ed è possibile, in modo elementare, far girare diversi tasks. Con il C occorre spendere più tempo per ottenere il medesimo risultato. Il Python può accedere ai files del C ma non viceversa. Inoltre possiede una eccellente gestione della memoria che consente di creare programmi a prova di bug. E' un linguaggio ad alto livello e con pochissime istruzioni (magari presenti anche in librerie aggiuntive) è possibile eseguire compiti davvero molto complessi. In ultimo risulta estremamente semplice da imparare e qualsiasi conversione da altri linguaggi può essere svolta in maniera indolore. Quello che segue è un esempio di codice, scritto in Python dalla MikroElektronika, che mostra come creare facilmente quattro thread per una funzione che fa lampeggiare dei diodi Led ad una frequenza diversa. Ogni processo è indipendente. Provate con un altro linguaggio di programmazione a far lampeggiare dei diodi Led a specifiche cadenze diverse in un unico ciclo, e vi accorgerete di quanto non sia poi così semplice. Occorrerebbe, infatti, gestire la memoria, gli interrupt, la temporizzazione della MCU oppure rivolgersi a complesse routine di polling e sincronismi software. Togliendo dal listato tutti i commenti e le istruzioni per la visualizzazione di alcune informazioni via monitor in stream seriale, si può ridurre il programma di più di dieci linee di codice.

# Threaded LEDs
# Created: 2016-01-30 23:19:09.376430
###########################################
import streams
# create a serial port with default parameters
streams.serial()
LEDA=38
LEDB=37
LEDC=39
LEDD=40
pinMode(LEDA, OUTPUT)
pinMode(LEDB, OUTPUT)
pinMode(LEDC, OUTPUT)
pinMode(LEDD, OUTPUT)
# Define a function to be used in the various threads.
# Parameters are passed to the function when the thread is created and then used in the thread loop.
# To be continuously executed by a thread a function requires an infinite loop,
# otherwise when the function terminates the thread is closed
def threadfn(number, delay, led):
    while True:
        led_state = digitalRead(led)
        if led_state is 0:
            led_state = 1
        else:
            led_state = 0
        digitalWrite(led, led_state)
        print("I am the thread", number)
        print("I run every:", delay, "msec")
        print()  # just add an empty line for console output readability
        sleep(delay)
# create the various threads using the same function but passing different parameters
thread(threadfn, 1, 500, LEDA)
thread(threadfn, 2, 1000, LEDB)
thread(threadfn, 3, 1300, LEDC)
thread(threadfn, 4, 800, LEDD)

La funzione threadfn (si tratta di una UDF) accetta in input tre parametri: il numero del task (utilizzato qui solo per visualizzare il processo in corso), il tempo di ritardo del lampeggio e la porta del Led da fare lampeggiare. Il codice sottostante, invece, riguarda sempre il lampeggio di tre diodi Led ed è molto più comprensibile del primo. Tutto ruota attorno ad una UDF che accetta tre parametri:  il pin su cui far effettuare il lampeggio, il tempo in cui il Led deve stare acceso (Ton) e Il tempo in cui il Led deve stare spento (Toff). E' possibile omettere i parametri della temporizzazione, in questo caso, di default, essi saranno impostati a 100 millisecondi.

pinMode(D2,OUTPUT)
pinMode(D3,OUTPUT)
pinMode(D4,OUTPUT)
def blink(pin,timeON=100,timeOFF=100):
    while True:
          digitalWrite(pin,HIGH)
          sleep(timeON)
          digitalWrite(pin,LOW)
          sleep(timeOFF)
thread(blink,D2) # Lampeggio di D2 per 100 ms. in ON e OFF
thread(blink,D3,200) # Lampeggio di D3 per 200 ms. in ON e 100 ms. in OFF for 100 ms.
thread(blink,D4,500,200) # Lampeggio di D4 per 500 ms. in ON e 200 ms. in OFF

Arduino

Le operazioni di sviluppo in "modo Arduino" sono indubbiamente più semplici. Si deve scaricare il software di Arduino da questo sito (vedi figura 5). Al momento della scrittura del presente articolo si è giunti alla versione 1.6.11. Anche in questo caso è presente una versione per Windows (installer e portabile), Linux e Mac OS. Riguardo a Linux gli sviluppatori di Arduino hanno messo a disposizione una versione (ancora sperimentale) per il processore ARM. Quindi è sufficiente compilare il proprio sketch come al solito ed effettuare l'upload. L'applicazione inizierà a funzionare immediatamente. Il collegamento avviene tramite porta USB.

 

Figura 5: Il download di Arduino Ide.

Figura 5: Il download di Arduino Ide.

Gli sviluppatori tengano a mente che Flip & Click non è solo una scheda basata su Arduino. E' una grande collezione di moduli click da combinare tra loro producendo prototipi mai concepiti in precedenza. Quello che segue è un piccolo listato, compatibile Arduino, che permette ad un diodo Led di lampeggiare.

void setup()
{
   pinMode(13, OUTPUT);
}
void loop() 
{
   digitalWrite(13, HIGH); // turn the LED on (making the voltage level HIGH)
   delay(1000); // wait for a second
   digitalWrite(13, LOW); // turn the LED off (making the voltage level LOW)
   delay(1000); // wait for a second
}

Conclusioni

Il Flip & Click risulta molto versatile, aperto, affidabile, leggero e semplice da utilizzare. Può risolvere qualsiasi tipo di problematica, in qualsiasi ambito, e permette la realizzazione di nuovi dispositivi mai progettati prima. La voglia di possedere tutte le Click Boards prodotte dalla MikroElektronika aumenterà ben presto. Si possono utilizzare sia le shield adatte per Arduino DUE  che le Click board Mikroelektronika. Il Flip & Click sarà un bestseller nell'elettronica, con migliaia di appassionati che popoleranno le comunità sulla rete e forum che proporranno idee e soluzioni di qualsiasi genere.

Link utili

Flip & Click

Compatibilità delle librerie.

Tutte le Click Boards della MikroElektronika

 

 

 

8 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 19 settembre 2016
  2. French 29 settembre 2016
    • Maurizio Di Paolo Emilio Maurizio 29 settembre 2016
  3. French 29 settembre 2016
  4. French 29 settembre 2016
  5. French 29 settembre 2016

Scrivi un commento