Jump to content

[ATS] SmartApp - App Android per gestione treni.


Post raccomandati

*** Download diretto ultima release ***

(Google Play Store) ATS SmartApp (nuova versione 24 agosto 2019) (vedi le note di questa release)

Come già avevo anticipato nel topic inerente al sistema Powered Up, ho sviluppato un'App alternativa a quella ufficiale LEGO che superasse alcuni limiti attuali di quest'ultima.

Nello specifico, il limite più evidente dell'App LEGO (per gli AFOL che giocano con i treni) è la possibilità di connettersi e controllare un solo HUB per volta e poter gestire solo il controllo manuale del motore, senza poter gestire eventuali luci LED connesse alla seconda porta dell'HUB.

Sono (quasi) sicuro che, in futuro, l'App LEGO verrà aggiornata per superare tale limite ma non è dato sapere se e quando auccederà.

Fortunatamente, essendo disponibile la documentazione del protocollo Bluetooth implementato da TLG nel sistema Powered Up, abbiamo già visto che è possibile interfacciarsi agli HUB PU tramite software realizzato "in casa".

Ecco quindi che è nata l'idea dell'App "PU Trains" ATS SmartApp 😉

Screenshot_20190816-201752.thumb.jpg.a44ba285733aef1cf430f61924d33cc8.jpg

L'App (ancora con qualche piccola cosa da migliorare/implementare) permette di collegare fino a 4 HUB contemporaneamente ad un singolo smartphone/tablet, e di controllare la velocità del motore connesso alla 'Porta A' di ogni singolo HUB mediante uno slider.

Ad ogni HUB che viene associato, viene immediatamente impostato il colore del LED di accensione in funzione del canale al quale è stato associato (Verde, Blue, Rosso e Arancione).

Manca ancora la gestione della direzione del motore (Forward/Reverse) e l'accensione manuale delle luci LED eventualmente connesse alla 'Porta B'.

Con il mio smartphone Huawei P20 Lite non sono riuscito a connettere più di 3 HUB contemporaneamente, mentre con un tablet economico da 80 euro, non ci sono problemi a connettere tutti i 4 HUB previsti dall'App (probabilmente se ne riescono a connettere anche 5 o 6, ma ritengo che 4 treni siano un numero sufficiente).

Oltre al banale controllo manuale, ho pensato di aggiungere una sorta di "sequencer" ovvero la possibilità di eseguire il loop una serie di comandi che agiscono sulle porte degli HUB.

Screenshot_20190816-201756.thumb.jpg.78f51739cb339f9402a640b608b99470.jpg

In sostanza i singoli comandi sono:

GF(hub)(velocità) Aziona il motore connesso alla porta A dell'hub specificato all velocità impostata.

GR(hub)(velocità) Aziona il motore (in direzione opposta) connesso alla porta A dell'hub specificato all velocità impostata.

WAIT(second) Attende per il numero di secondi indicato prima di eseguire il successivo comando.

STOP(hub) Ferma il motore connesso alla porta A dell'hub indicato (equivale a GF(hub)0).

LIGHT(hub)(on/off) Accende/spenge le luci connesse sulla Porta B dell'hub specificato.

Combinando insieme questi comandi è possibile rendere più dinamico un circuito ferroviario comporto da più di un treno, gestendo velocità diverse, tempi di fermata e così via... insomma, una versione minimale del progetto ATS 😄

Al momento la lista dei comandi viene eseguita in loop continuo ma penso di aggiungere un parametro per il numero di esecuzioni e la possibilità di salvare più liste di comandi.

Ovviamente l'App può essere utilizzata anche per altri scopi: penso ad esempio al Luna Park di @Toretto1981, dove può temporizzare l'azionamento delle singole attrazioni.

In giornata pubblico l'APK dell'App come link diretto da scaricare, nell'attesa che venga approvata la sua pubblicazione sul Play Store.

Qui di seguito, una foto dell'App in esecuzione sul tablet, con 4 HUB connessi. Si notato i Led colorati, associati ai vari canali.

IMG_20190817_000052.thumb.jpg.65f1b40739988e078726b07d3d7052df.jpg

 

Ultima modifica: da GianCann
Aggiunti le parentesi quadre al titolo
Link to comment
Condividi su altri siti

Bravo @GianCann effettivamente questa è una funzione che mi manca, ma più di tutte vorrei avere la possibilità di salvare su ogni singolo hub una sequenza di azioni in modo da non dover aver la necessità di tenere collegato ed acceso  N dispositivi. Già a Lecco ho avuto non pochi problemi a tener accesi (più che altro x problemi di batteria) iPhone 5, iPhone 6 e iPad. Per BIFF avrò quasi sicuramente bisogno di un altro dispositivo e la cosa comincia a diventare veramente problematica. Speriamo in un aggiornamento rapido dell’applicazione. 😜

Link to comment
Condividi su altri siti

13 ore fa, Toretto1981 ha scritto:

più di tutte vorrei avere la possibilità di salvare su ogni singolo hub una sequenza di azioni in modo da non dover aver la necessità di tenere collegato ed acceso  N dispositivi.

E' una cosa che il team di sviluppo del firmware ha preso in considerazione, ma non è dato sapere se e quando verrà effettivamente implementata. E' più probabile che qualche "smanettone" (come ce ne sono tanti) riesca a trovare il modo di sostituire il firmware originale con un custom... a quel punto, non ci sono più storie 😉

Nel frattempo, la mia App è praticamente finita... ho aggiunto la gestione dei Led e del forward/reverse sui motori.
Devo solo migliorare la parte di scrittura delle "macro".

Screenshot_20190817-123746.thumb.jpg.3c72e7521620f5ffda0e3ce90ecff20b.jpg

Giusto per curiosità, ecco qui il "codice" dell'App.
Devo rivedere qualche routine, al fine di migliorare l'esecuzione complessiva...

blob.thumb.png.814ed80d0e48f37f7bdd7823494b8507.pngChi volesse provare l'App senza attendere la pubblicazione su Google Play Store (ci vorranno alcuni giorni), la può scaricare direttamente da qui:

PU Trains App

Una volta scaricata, è sufficiente 'tappare' sull'Apk per installarla. Vi chiederà l'autorizzazione all'utilizzo del Bluetooth e dei servizi di localizzazione (è "by design" in Android dalla versione 6 in poi). In ogni caso non sarà necessario tenere attivo il GPS, una volta data la prima autorizzazione.

Fatemi sapere cosa ve ne pare e, soprattutto, se riscontrate qualche problema o suggerimento per migliorarla 😉

Ultima modifica: da GianCann
Link to comment
Condividi su altri siti

Beh... mi son fatto prendere la mano 😄

Ora l'App supporta il sensore Boost 88007 (colore/distanza) su qualsiasi HUB connesso, riconosce la presenza (o meno) di un dispositivo Luci LED 88005 connesso e la tipologia di motore collegato (e su quale porta è attestato).
Ho leggermente migliorato anche l'interfaccia utente... ancora qualche ritocco, e pubblicherò la versione aggiornata 😉 

image.png.aeda9b7a953fc0a488bc2b0eeb8d6f6d.png

Link to comment
Condividi su altri siti

Ho deciso di cambiare nome a PU Trains, trasformandolo in ATS SmartApp dato che, via via, l'App sta diventando una sorta di mini sistema ATS ed ho già pensato anche a come integrarlo, in un prossimo futuro, con il "fratello maggiore".

Ad oggi, ATS SmartApp può controllare fino a 4 Smart Hub PU e fino a 8 device connessi alle rispettive porte.

Può funzionare in modalità manuale, controllando l'output di motori e luci, oppure in modalità "sequencer" ovvero eseguendo una lista di comandi che prevedono anche la lettura dello stato di uno o più sensori Boost (distanza/colore) al fine di determinare le azioni da intraprendere.

Al momento non abbiamo molte informazioni al riguardo, ma sappiamo che il nuovo set STEAM Spike (che usa la stessa "architettura" Powered Up) prevede l'espansione del sistema mediante sensori personalizzati.

In un prossimo futuro, quindi, hardware e firmware dello Smart Hub ci consentiranno di integrare sensori magnetici, di tocco e, non di meno RFID.

Torniamo ora alla descrizione della funzionalità di ATS Smart Hub.

Al momento, la funzionalità manuale di controllo dei motori prevede che il motore (non importa di quale tipo) sia connesso alla *Porta A* dello Smart Hub e che il sensore o la luce LED siano connessi alla *Porta B*.

Nella modalità Sequencer invece ci sarà la massima versatilità di configurazione, nel senso che sarà possibile utilizzare qualsiasi porta/device.
Ad esempio, si potrà configurare uno Smart Hub con due sensori di colore/distanza, che agisce semplicemente da "rilevatore di passaggio/posizione" e, parallelamente, configurare un altro Smart Hub con 2 distinti motori che (ad esempio) agiscono su un passaggio a livello e uno scambio, o su due scambi. Gli altri due Smart Hub potranno invece comandare motore+luci di due distinti treni.

La novità del sequencer è l'introduzione del comando SENS[hub] (dove 'hub' è il numero dell'hub al quale è connesso il sensore) che blocca l'esecuzione della sequenza fintanto che non viene rilevato un ostacolo. È configurato per rilevare un ostacolo a 3-4 cm. Ovviamente tenete a mente che la velocità di "rilevamento" non è particolarmente alta quindi, a secondo che utilizziate il sensore a bordo treno, o lungo il tracciato ferroviario, dovete realizzare un opportuno "ostacolo".

Nella prossima release, troverete anche SCOL[hub][color] ovvero la possibilità di attendere il rilevamento di un determinato colore.

Vi faccio un esempio "pratico" di cosa si può fare con il sequencer...

Prendete due treni, ognuno dotato di un Hub con motore sulla Porta A e sensore di distanza sulla Porta B.
Per semplificare la spiegazione, assumiamo che i treni siano posizionati su due tracciati ferroviari indipendenti.
Il sensore è montato perpendicolarmente rispetto alla direzione di marcia del treno.
Lateralmente ad entrambi i tracciati c'è un "ostacolo" costituito da un muretto di brick alto abbastanza per entrare nel raggio di azione del sensore.

Usiamo questa sequenza:

GF190
WAIT2
SENS1
STOP1 
GF290
WAIT2
SENS2
STOP2

GF190: Avvia il motore collegato alla Porta A dell'Hub 1, al 90% di velocità.
WAIT2: Aspetta due secondi prima di eseguire il successivo comando
SENS1: Aspetta che il sensore (collegato alla Porta B dell'Hub 1) sia "attivato" da un ostacolo.
STOP1: Ferma il motore dell'Hub 1
GF275: Avvia il motore collegato alla Porta A dell'Hub 2, al 75% di velocità.
WAIT2: Aspetta due secondi prima di eseguire il successivo comando
SENS2: Aspetta che il sensore (collegato alla Porta B dell'Hub 2) sia "attivato" da un ostacolo.
STOP2: Ferma il motore dell'Hub 2

Se questa sequenza viene eseguita in loop (altra novità di questa versione dell'App: una sequenza può essere eseguita una sola volta, oppure in loop) avremo il risultato che il primo treno parte e percorre il circuito fino al punto di stop. A quel punto si ferma, e parte il secondo treno che, a sua volta, percorre il circuito fino al suo punto di stop. Dopodiché si ferma, e riparte il primo treno.

Se ci riflettete bene, ci sono svariate configurazioni che possono essere combinate tra loro al fine di ottenere un movimento più dinamico dei treni anziché il solito treno che circola all'infinito senza sosta.

Gli unici veri limiti con i quali potremmo avere a che fare sono:
- La durata delle batterie
- La lunghezza dei cavi dei motori/sensori
- Il numero di dispositivi BLE (Bluetooth Low Energy) collegabili allo smartphone Android che funzionerà da "Centrale di controllo".

Infatti, come ho già detto  in un post precedente, alcuni smartphone, non sono in grado di connettersi a più di 3 dispositivi BLE.
Il mio Huawei P20 Lite è uno di questi, mentre il Samsung di mia moglie (pagato meno della metà del mio P20) ne supporta tranquillamente 4 (e forse anche 1 o 2 in più).

Cosa manca, oggi, ad ATS SmartApp e che implemeterò nei prossimi giorni?
- Identificazione della  versione  del firmware;
- Visualizzazione dello stato delle batterie, con eventuali avvisi in caso di scarsa energia e l'interruzione della sequenza di comandi (se attiva);
- Modifica del nome dello Smart Hub (così come si può fare dall'App ufficiale LEGO);
- Lo spegnimento istantaneo di tutti gli Smart Hub connessi;
- L'accoppiamento di due motori identici sullo stesso Smart Hub (per funzionare come fossero un solo motore con doppia potenza) con la possibilità di settare le direzioni per singolo motore;
- L'accoppiamento di due Smart Hub,  come fossero un solo Smart Hub (utile per pilotare treni con due motori posizionati nella motrice di testa e di coda);
- L'esecuzione di suoni (sullo smartphone) in base a determinati eventi;
- Il controllo remoto dell'App da un altro smartphone (per controllare più App parallele su grandi diorami).
- Loop e flussi condizionali personalizzati nello script editor del sequencer.

Vi ricordo che ATS SmartApp è utile anche al di fuori dell'ambito "ferroviario", ovvero in qualsiasi MOC dove avete bisogno di una gestione più complessa del semplice "motore che gira continuamente".

La versione aggiornata potete scaricarla dal link presente nel primo messaggio di questa discussione 😉

Screenshot_20190824-130733.thumb.jpg.0d316f52f58ee12a86d2092419f553a1.jpg

Screenshot_20190824-130626.thumb.jpg.13c45b33f39a7326ed34eb5ecd18a561.jpg

Screenshot_20190824-130633.thumb.jpg.636862cf6d8f762a6a3c6d321ea9408d.jpg

Screenshot_20190824-130639.thumb.jpg.7f14bc6940fb97340c1205463c131fba.jpg

Screenshot_20190824-130654.thumb.jpg.6d245144aa96307d8ccc2b208fdc67c2.jpg

Screenshot_20190824-130659.thumb.jpg.883c6ff19fe1795ab4c93c8bb9393899.jpg

 

Ultima modifica: da GianCann
Link to comment
Condividi su altri siti

Mi fa piacere che questo mio approfondimento/App sul sistema Poweres UP sia apprezzato da altri AFOL.

Sono comunque speranzoso sul futuro sviluppo dell'App ufficiale da parte di LEGO, anche se bisogna aspettare diversi mesi tra un aggiornamento e l'altro.

Devo dire che l'uscita del sistema Powered Up mi aveva lasciato un pp' scettico (e, sul alcune scelte tecniche lo sono ancora) ma il tempo e uno studio più approfondito dei vari componenti mi hanno fatto cambiare opinione.

Tra l'altro, questo mio studio/sperimentazione sul Powered Up unisce 3 mie grandi passioni: la programmazione, l'elettronica e LEGO 😉

Grazie al sistema PU, e alla curiosità di utilizzarlo al massimo delle sue potenzialità, nell'arco di poche settimane ho scoperto anche come sviluppare un'App per Android (cosa che, finora, non mi aveva interessato più di tanto) ed ho approfondito tutta la questione del BLE (Bluetooth Low Energy) che, a dispetto del nome, è qualcosa di "completamente' diverso dal Bluetooth classico. Questo approfondimento mi è stato utile per comprendere altri aspetti tecnici che mi saranno utili per futuri progetti.

La mia App, di cui sono molto soddisfatto e nella quale introdurrò sicuramente altre funzionalità, ha comunque dei limiti che l'App LEGO (parlo di quella parte relativa al "disegno di sequence/programmi") non ha... al di là della grafica/user interface (quella LEGO è stupenda, dal punto della facilità d'uso) la mia App soffre dei limiti dell'architettura single-thread.

È un limite "relativo" in molti scenari applicativi, però è un limite che non mi consente di fare alcune cose.

Speriamo che TLG ascolti le richieste degli AFOL-maker e che, oltre a rilasciare ulteriore documentazione, possa implementare un'App che soddisfi anche l'AFOL più esigente.

Nel frattempo, il fatto di essere in grado di svilupparmi autonomamente un'App specifica che interagisce con più Smart Hub, è per me un grande motivo di soddisfazione 😉

Link to comment
Condividi su altri siti

Ho da poco pubblicato la release 1.2, che sarà disponibile a breve su Google Play Store (chi ha già la versione precedente, ed ha configurato l'installazione automatica degli aggiornamenti, se la ritroverà aggiornata appena il team di Google l'avrà approvata).

A parte una sostanziosa rivisitazione del codice che caratterizza ogni release, per facilitare la manutenzione ed ottimizzare il funzionamento, questa versione introduce due nuove funzionalità specificatamente pensate per chi deve far viaggiare treni "pesanti".

È infatti ora possibile configurare l'attivazione di due motori sullo stesso hub (immaginate una loco con uno smart hub e due motori treno), così come "unire" due hub insieme come se fossero un unico hub (un hub+motore sulla loco di testa ed un hub+motore sulla loco di coda).

IMG_20190902_154751.thumb.jpg.828624b32337ee52b4d04014909d0665.jpg

Ogni hub può essere configurato per pilotate i motori nella stessa direzione, oppure per pilotarli in direzione opposte.

Quando i due Hub 1 & 2 (Verde e Rosso) sono "uniti" per funzionare all'unisono, le singole configurazioni vengono mantenute ed utilizzate per pilotare i motori.

Ho anche migliorato alcuni aspetti dell'interfaccia utente, ma c'è sicuramente molto altro da fare 😉

I prossimi miglioramenti riguarderanno il sequencer e la gestione degli avvisi dello stato della batteria.

Link to comment
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente registrato per postare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Hai un account? Accedi .

Accedi ora
  • Visualizzato ora da   0 utenti

    • Nessun utente registrato su questa pagina.
×
×
  • Crea nuovo...