/ IoT

Strumenti utili per un prototipo IoT

Il passaggio da un idea ad un prodotto (o servizio) innovativo è una strada spesso tortuosa e piena di imprevisti. Ma come in tutti i campi in cui si esplora un territorio sconosciuto a priori, possiamo affrontare la sfida con l’aiuto di metodi già sperimentati.

Nello sviluppo e realizzazione di un prodotto, soprattutto per i prodotti che hanno una grossa componente tecnologica e digitale, partendo da un idea iniziale emergono degli step consolidati.

Gli step fondamentali sono:

  • idea
  • mockup
  • prototipo
  • mvp
  • prodotto

L’idea, è quella fase in cui viene l’illuminazione, si scopre un problema o bisogno e si decide di colmarlo. È la fase iniziale in cui dovremmo concentrarci molto sulle necessità cercando, tramite analisi, di arrivare al bisogno principale che scaturisce il problema.

Il mockup, è la fase in cui si esplora l’idea e in cui si cerca di disegnare una, o più, strade possibili per risolvere il problema, in questa fase si dovrebbe rimanere molto generici nella definizione delle soluzioni. Considero molto utile fare schizzi su carta, disegni e schemi dei possibili flussi; mentre considero quasi obbligatorio descrivere il problema con parole scritte e bozze per incidere in modo chiaro il bisogno da soddisfare.

Il prototipo, è la fase in cui di definisce un percorso e si sviluppa fisicamente una soluzione evidenziata nel mockup. Il prototipo ha lo scopo di dimostrare la fattibilità tecnica e tecnologica della soluzione. La fase prototipale è caratterizzata da molti ricircoli, dato che è la prima volta in cui si implementa la soluzione, quindi lo strumento che si utilizza, che sia Hardware o Software, dovrebbe permettere molti punti di test, debug e semplicità nel modificare alcune proprietà fondamentali in modo da poter sperimentare in libertà tutte le declinazioni di una possibile scelta tecnologica.

L’ MVP, è lo pseudo-prodotto con cui si valuta la risposta di mercato di una determinata soluzione ad un problema. L’ MVP non è il prodotto sviluppato in tutte le sue feature, ma ne implementa solo quelle caratteristiche e centrali per vedere come gli utenti e possibili clienti interagiscono con il prodotto, valutandone l’effettiva necessità. Le poche caratteristiche implementate nell’ MVP dovranno essere funzionanti e fluide per non falsare il test di mercato.

Nel mio lavoro ho sviluppato molti prototipi e MVP Hardware fisici, soprattutto nel campo dell’ IoT, con gli strumenti più comuni: Arduino, ESP, Raspberry Pi etc...

Dato che il prototipo è il primo esperimento in cui si realizza una soluzione al problema, necessita di molte correzioni e tuning per permettere la messa a punto ottimale e dimostrare la correttezza della scelta tecnologica.
Inoltre nel prototipo solitamente non si sviluppano tutti quei tool che rendono fluido l’utilizzo,tipici della produzione.

Caricare il firmware o correggere il software per modificare dei parametri non è molto comodo, e spesso inficia molto sul tipo di test che si effettua e sulla percezione del device stesso senza considerare il dover essere connessi con cavi eth o seriali al computer etc..
Quindi una cosa che ho imparato sul campo è quella di prevenire e di implementare delle interfacce su web-server caricati in locale sul device in modo che sia possibile connettersi con uno smartphone e modificare i parametri di funzionamento e di utilizzare app per smartphone per identificare i device sulla rete e potersi connettere.

Condivido per questo gli strumenti che, in anni di sviluppo prototipale, porto sempre con me nella cassetta degli attrezzi.

Alcune delle interfacce più comode per microcontrollori:

ESPUI
Espui è una libreria per ESP8266 e ESP32 (una delle poche), per creare interfacce web in modo semplice e intuitivo utilizzando un linguaggio che rispecchia la filosofia arduino.
Per poter utilizzare la libreria e necessario seguire le istruzioni e preparare l’SPIFFS filesystem, ma il tutto si risolve in pochi secondi. :-)

ui_complete.png

aREST
aREST è un framework per creare applicazioni RESTful su Arduino, ESP, Raspberry Pi.
aREST non fornisce interfaccia grafica ma permette di creare delle API da chiamare per poter modificare o settare alcune variabili o eseguire delle funzioni.

Su i sistemi embeded come Raspberry Pi, Beaglebone, etc. solitamente implemento delle API con framework leggeri. Uno dei più veloci in termini di sviluppo e curva di apprendimento e Flask. Il mio setup solitamente è composto da Flask e configparser.
Screenshot-from-2018-04-25-15-30-58
espongo una API POST che parsifica un pacchetto json e eseguo le funzioni associate.

remot3
Se non si ha accesso alla rete locale della Raspberry, e si vuole accedere ad un suo terminale possiamo utilizzare uno dei tanti servizi che creano un tunnel ssh, evitando così di dover aprire le porte del router ed avere indirizzi pubblici. Io utilizzo remot3, l’account gratuito permette connessioni fino a 8 ore ed un numero illimitato di device.

Fing
Fing è un ottima app, esiste anche la versione Desktop, per eseguire scanning di reti e ottenere informazioni sui device connessi. Se uno dei nostri device è connesso alla rete sarà impossibile non riconoscerlo e scoprire il suo indirizzo IP
fing

REST Api Client
mentre se non si può utilizzare il mitico POSTMAN su Android possiamo usare REST Api Client.
Questa app permette di inviare delle chiamate rest e editare il payload della chiamata in modo da poter interagire sui nostri device.

Con l’utilizzo incrociato di questi strumenti sono sempre riuscito a realizzare prototipi e far si che il prototipo sia abbastanza flessibile per abilitare la giusta esplorazione da parte del cliente della scelta tecnologica attuata per risolvere il problema.

Questo è il mio kit di sopravvivenza, qual’è il vostro?
Fatemi sapere quali sono i vostri strumenti necessari per realizzare prototipi flessibili e facilmente utilizzabili in fase di esplorazione...

Giacomo Leonzi

Giacomo Leonzi

come Kiwifarmer sviluppo soluzioni Hardware e Software per IoT o Physical Computing. Fisico con la passione per l'audio, sono Segretario del laboratorio Fablab Torino.

Read More