Proposte di sviluppo

Nei giorni scorsi sono arrivate alcune proposte per lo sviluppo di applicazioni con Arduino: riguardano contesti “reali” e non semplici progetti dimostrativi.

Il tutto è chiaramente da realizzare, ma vediamo queste proposte…

 

CONTROLLO DEL TRAFFICO

Dall’email ricevuta:
“Progetto contatore traffico stradale con ArduinoL’obiettivo è quello di creare un contatore del traffico stradale portatile che  si collega a delle spire elettromagnetiche presenti sul campo stradale, tipo quelle che si possono vedere vicino ai semafori.Schema spire magnetiche:

Le caratteristiche desiderate  dell’apparecchio dovrebbero rispondere alle seguenti esigenze:

  • Possibilità di collegare due spire della dimensione di circa 1*1 metri.
  • Possibilità di collegare una batteria della durata di una settimana.
  • Possibilità di impostare  l’apparecchio di conteggio con alcuni parametri, tipo: nome strada e direzione.
  • Registrazione su file csv dei dati di passaggio.Formato file csv:Nome strada ;Direzione;  data; ora Esempio:Bellinzona;1;23.12.2016;07:18:30″

COMMENTO

Per realizzare l’impianto proposto è necessario, oltre ad Arduino e relativo software,

  • circuito di supporto
  • computer.

Il circuito di supporto deve generare una frequenza tale da poter creare un campo elettromagnetico che al passaggio di una massa metallica (=auto) sia in grado di modificare la tensione che Arduino dovrà leggere. Altra funzione è la gestione dell’alimentazione a batteria: la tensione dovrà essere stabilizzata.

Ultimo elemento necessario, in base ai requisiti, è la registrazione dei dati di passaggio: come noto Arduino (UNO, e altri) non consente di registrare permanentemente, ma per risolvere questo aspetto bisogna ricorrere ad un computer (anche micro) dotato di file-system. Le informazioni sull’orario di transito dovrebbero essere acquisite dal computer in quanto Arduino non è dotato di orologio.

 

 

CONTROLLO ACCESSI

dalla email:

Registratore di accessi mediante tessera/lettore RFID.

Mi piacerebbe creare un dispositivo che abbia un led per ogni ipotetico dipendente che al passaggio della tessera e quindi all’ingresso registri l’ingresso (data,ora e dipendente) e che allo stesso tempo accenda un led in modo che sia possibile verificare immediatamente guardando il dispositivo la presenza o meno di un dipendente in azienda, ovviamente all’uscita il LED si dovrebbe spegnere. Mi piacerebbe inoltre poter scaricare i dati delle registrazioni attraverso la porta USB.

COMMENTO

Riporto la mia risposta:
Faccio un piccolo scenario con qualche variazione: n badges (per ogni dipendente), Arduino legge i codici RFID in transito e invia i dati, tramite USB a un PC.
Nel PC girano 3 sw:
– per ricevere i dati da Arduino
– per registrare i passaggi
– visualizzare via web le presenze/assenze.
RIEPILOGO HW
Arduino
RFID kit
PCSOFTWARE
A parte la questione didattica su Arduino, bisognerebbe vedere, se già non esiste qualcosa di simile e, importante, personalizzabile (questo della personalizzazione è certamente un punto di forza rispetto alle soluzioni a “scatola chiusa”).
Nel caso di dover sviluppare del codice, le aree sono: Sketching, db,  Python e PHP.VANTAGGI
Il sistema è scalabile.
Tutti [nella intranet],  possono vedere sul browser (pc/smartphone) lo stato delle presenze (magari solo se presente, mascherando gli orari)
Gli orari vengono salvati in tempo reale.
Si possono aggiungere note sulla presenza: “dr. Rossi arriva tra mezz’ora”, “Bianchi in riunione fino 12:15″…

 CONCLUSIONE

Per gli ovvi motivi di tempo, ci concentreremo sul codice per Arduino, lasciando ad un secondo tempo la realizzazione dei circuiti completi nel caso di un reale interesse commerciale.
Nei prossimi giorni pubblicherò le prime parti per questi due progetti, e nel frattempo
…salutiamo il 2016!

 

Come sviluppare APP facilmente

Da diverso tempo oramai si è aggiunta una nuova “piattaforma” hardware e software: il nostro smartphone.

Oggi vedremo come sviluppare, o meglio iniziare a sviluppare, su questi dispositivi.

Trattandosi di un ambito molto vasto e complesso, questo articolo sarà una introduzione ad una modalità nuova per programmare su Android.

 

SISTEMA OPERATIVO SMARTPHONE

Fatta esclusione al mondo Apple, al giorno d’oggi l’alternativa è, di fatto, una sola: Android.

Android deriva in sostanza da un sistema operativo noto: Linux. Quindi è affidabile by-design.

 

Per essere chiari, magari ancora una volta, ecco l’esempio di come l’OpenSource si trasforma in motore per una iniziativa economica.

 

PUNTO DI PARTENZA

Sin dall’inizio lo sviluppo di software su Android è stato l’SDK: in praticadalvik

  • librerie
  • compilatore
  • macchina virtuale

Per scrivere un programma, anche su Android, bisogna scrivere in pratica un testo:

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private AudioManager mAudioManager;
private boolean mPhoneIsSilent; 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
checkIfPhoneIsSilent(); 
setButtonClickListener(); 
}
private void setButtonClickListener() {
Button toggleButton = (Button)findViewById(R.id.toggleButton);
toggleButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mPhoneIsSilent) { . . . .

Il linguaggio utilizzato è Java, che è sì ben collaudato e multipiattaforma, ma che non vanta certo di semplicità e richiede un paziente tirocinio.

Le librerie permettono di aumentare le funzionalità dell’applicazione senza dover riscrivere del codice (riusabilità).

I diversi SDK, o ambienti di sviluppo, sono inoltre dotati di graphic-designer in modo da poter inserire gli oggetti (widget) all’interno delle schermate. Tralascio il corredo di altri file (manifest, etc).

Per chi avesse un po’ di dimestichezza con VisualBasic noterà una certa somiglianza tra i comparti codice, grafica, attributi.

Merita una attenzione speciale la macchina virtuale che permette di eseguire i test e debug su uno smartphone virtuale e quindi non è necessario il dispositivo fisico, con il rischio di mandarlo ripetutamente in crash.

 

SVILUPPO CON LOGIC-BRICK

In precedenza l’uso di ambienti grafici per lo sviluppo del codice era limitato alla definizione degli oggetti grafici (bottoni, text-box, etc.) e poco altro.

Per capirci un costrutto logico, una if  per esempio, doveva essere proprio scritta testualmente:

if (questo==quello) {
   faglifarequalcosa();
}
else {
   chestiafermo();
}

Esiste però una alternativa: lo sviluppo a blocchi logici.

Niente testo quindi, ma il drag&drop (trascinamento) di blocchi simili alle tessere di un puzzle. Quasi un gioco.

 

QUASI GIOCO…

Beh, calma, un gioco non lo è proprio perchè il programmatore deve comunque pensare come prima, sempre utilizzare gli schemi ai quali è abituato: diagramma di flusso, sequence diagram, collaboration diagram, etc.

In aggiunta, lo sviluppatore deve conoscere le librerie degli oggetti che vorrà inserire nella sua app.

Mi spiego, se voglio che la mia app sia in grado di comunicare via bluetooth, devo conoscere che il servizio relativo deve essere presente sullo smartphone in uso e che sia attivato (o magari chiedere di attivarlo). E poi devo sapere che dovrò gestire il pairing, e via dicendo.

Queste cose vanno studiate e non usate in maniera “clikka-clikka“.

In definitiva è necessario conoscere l’architettura del sistema, anche per sommi capi, e poi iniziare con i mattoncini-logici.

 

APP INVENTOR

Cominiciamo dal sito. Si parte da qui.

Lo sviluppo con app-inventor è web-based: non bisogna installare alcun software sul proprio computer, unico punto negativo è che bisogna essere sempre connessi, ma al giorno d’oggi non è più un problema.

Dopo la registrazione di rito avremo a disposizione il piano di lavoro. Dal menu scegliendo “Project/new” potremo creare il primo.

 

Il video è suddiviso in quattro frame (o div in html):

  • palette
  • viewer
  • components
  • properties

INSERIMENTO WIDGET

Da Palette si potrà scegliere un bottone o altro oggetto e poi trascinarlo in Viewer. A questo punto potremo cambiare le caratteristiche dell’oggetto passando al riquadro Properties.

Tra i widget abbiamo: bottoni, liste, text-box, immagini, ecc., in pratica tutto quello che vediamo sullo schermo (e non solo).

IL CODICE “NUOVO”

Come dicevo il codice in app-inventor è diverso, è “molto” grafico. Per passare alla modalità “codice” bisogna cliccare su “Block”:

 

E qui si apre un nuovo mondo!

 

I pannelli sono adesso due:

  • i blocchi logici  e gli oggetti (widget)
  • il “codice-blocchi”

CODIFICARE

Per programmare dovremo selezionare e trascinare le “tessere” nel riquadro viewer.

Chiaramente ci sono delle regole di composizione grafica: per esempio un blocco iterativo (do_while.click) contiene al suo interno le istruzioni relative.

Inoltre quando viene aggiunto uno statement all’interno di un blocco, quest’ultimo si modifica per poterlo contenere. Questa modifica automatica sta ad indicare che il sistema ha “compreso” l’operazione che volevamo svolgere.

 

INSTALLAZIONE

Facciamo un salto alla fine della programmazione. La nostra app è adesso pronta e possiamo installarla.

Dal menu, selezionaniamo Build

 

quindi il web-service compilerà l’applicazione:

 

ed infine avremo il qrcode per il download dell’apk:

 

a questo punto scansionando il QR-code potremo installare la nostra app.

Facile, no?

 

CONSIDERAZIONE

Questo articolo vuole solo essere una semplice presentazione ed introduzione.

Per chi volesse proseguire, vi aspetto alla prossima!

(continua…)

 

Come contare le auto con Arduino

Nell’ultima lezione su Arduino è stato proposto di realizzare un sistema per il conteggio delle auto in transito.

L’idea è simpatica, e quindi vi proporrei di realizzarla insieme.

DEFINIRE LE CARATTERISTICHE

Il primo passo per la realizzazione, è quello di definire meglio cosa deve fare il sistema.

Facciamo un esempio:

  • il sistema dovrà “leggere” le auto che transitano in una carraggiata
  • dovrà essere autoalimentato
  • i dati dovranno essere registrati (salvati)
  • per ogni transito (veicolo) dovrà essere marcato l’orario
  • non può essere installato sul manto stradale

opzionale

  • invio dei dati ad un web-service

Attenzione: queste caratteristiche sono solo una proposta e quindi possono essere modificate o cancellate.

COMPONENTI

Una volta completata la lista delle caratteristiche, si potrà passare ai compomenti necessari per realizzarlo.

Chiaramente la scelta dei componenti è limitata a quelli reperibili nell’ambito Arduino/Raspberry. In altre parole sono esclusi i sistemi basati su altre schede di prototipizzazione o custom. Lo stesso vale anche per i sensori: dovranno interfacciarsi con il controller che andremo ad utilizzare.

 

SENSORI

Per individuare il passaggio di un veicolo, escludendo l’analisi dell’immagine, abbiamo alcune possibilità:

  • ultrasuoni
  • induzione magnetica

(continua…)

 

 

Filamenti 3D FLEX

Dopo le prime stampe in PLA, può venire in mente di provare i filamenti 3D a base elastomerica.

Ci sono buoni motivi per passare alla prova “flex”: gli oggetti stampati sono flessibili, morbidi, hanno in pratica una consistenza diversa dal solito PLA e ABS.

Si possono creare braccialetti

copie angeliche (FAB-LAB di Grono)
copie angeliche (FAB-LAB di Grono)

gommosi, supporti speciali e via dicendo.

ASPETTI FISICI

Gli elastomeri termoplastici sono caratterizzati da catene polimeriche molto piú lunghe rispetto agli altri termoplastici e questo ne conferisce la notevole flessibilità. Altro aspetto interessante è la facilità di adesione al piano di stampa, e la ridotta elongazione termica.

QUASI PERFETTI…

Con queste caratteristiche i filamenti “flex” sembrano essere perfetti, ma come sempre esiste il rovescio della medaglia:

  • ridotta velocità di stampa
  • sottosquadri difficili

 

QUALCHE PARAMETRO

Come stampare i fuilamenti “flex”?

Bisogna sempre tener presente che alcuni valori possono variare da stampante a stampante, ma ecco alcuni parametri da impostare per lo slicer:

  • velocità 25-35mm/s
  • ritrazione: NO
  • infill: meglio al 100%
  • temperatura: 190-210°C
  • adesione: metacrilato, vetro, ecc.
  • layer: 100-150μm

 

IL DIAMETRO

In commercio esistono filamenti flex nei due diametri standard: 1.75mm e 3.00mm, ma attenzione: non tutte le stampanti da 1.75 possono utilizzare i filamenti flex.
Il problema è dato dalla distanza tra il capstan e l’ingresso al canale: alla spinta del capstan si oppone il restringimento dell’ugello e come conseguenza il filamento “si arriccia” rifiutandosi di entrare nel canale del crogiolo.

 

SOLUZIONE

A parte usare una buona stampante, per le altre, l’unica possibilità, per i capstan a trazione, e quella di “obbligare” il filamento a scendere nel crogiolo è quello di creare un “collare” o guida, tra il capstan e il canale. Questo significa modificare la propria stampante, ma un buon maker è già pratico!img_20151115_202420

 

PER PROVARE

Per chi volesse provare ecco qualche prodotto:

http://www.moesadaur.ch/prod/shop/filament-3d-flexible/

http://www.crea-3d.com/it/crea/320-filamento-crea-tpu-flex.html

https://www.3dware.ch/Filament-Nylon-Natur-1.75mm-1Kg-De.htm

 

E buona stampa elastica a tutti!