Jump to content

LEGO PoweredUp! (aka power functions 2.0)


Post raccomandati

31 minuti fa, GianCann ha scritto:

Puoi spiegarmi i passaggi, che provo a replicare?

È banalmente il fatto che quando esci da una app (LEGO o ats non fa differenza) gli hub rimangono bloccati in stato "connesso" (i led rimangono accesi fissi nei rispettivi colori) [mi sembra che una cosa del genere l'avevi scritta anche tu pochi post indietro] se poi rientri me ne funziona solo uno ma credo sia solo un qualcosa di random. Resettando gli hub e riaccoppiandoli funziona tutto regolarmente. 

ps) per ridere.... a forza di fare prove oggi ho capito come si sente gomez quando fa scontrare i trenini nel plastico. Esaurita l'arrabbiatura di dover ricostruire 2 locomotive mi è scappato fuori il suo stesso sorriso maligno....! Sarà la quarantena.....!

Link to comment
Condividi su altri siti

Il weekend di Pasqua l'ho dedicato non solo a mangiare, ma anche a riprendere in mano un discorso che avevo iniziato ad esplorare la scorsa estate (vedi qui e qui) ma che, senza la necessaria documentazione e l'opportuna strumentazione per fare reverse engineering, era rimasto in stand-by.

Parlo della possibilità di espandere il sistema Powered Up con sensori personalizzati rispetto a quelli ufficiali LEGO.

Come ho già spiegato in questo post, il firmware Pybricks già consente di fare questo (supporta anche i sensori dello Spike Prime), basandosi sul protocollo LEGO UART Messaging Protocol (LUMP).

LEGO, ha introdotto questo protocollo (proprietario) con il Mindstorms EV3 e non esiste documentazione dettagliata dello stesso se non questo scarno documento risalente al 2013 e questo articolo che cerca di dettagliare meglio alcune aspetti di quel documento.

Questo protocollo, da quanto è emerso dal reverse engineering effettuato sulle comunicazioni sensori<>hub del sistema Powered Up (Spike Prime incluso) è stato ulteriormente esteso al fine (si presume) di integrare sensori più evoluti (come lo è già il sensore di Colore/Distanza, in effetti) e, chissà, ulteriori funzionalità future...

Ma se con Pybricks è sufficientemente semplice implementare un sensore personalizzato, come si può integrare un sensore (ad esempio, sensore di tocco o magnetico) su un hub con firmware originale usando l'App ufficiale LEGO?
Ci sono due possibilità:
1) LEGO implementa questa possibilità, documentandola dettagliatamente.
2) Ingannare l'hub (e l'App) LEGO.

Per la prima opzione, direi che il proverbio "campa cavallo che l'erba cresce" è più che calzante...

Non resta quindi che ingegnarsi qualcosa e procedere con l'opzione 2 😄

Pertanto, se al momento l'unico sensore esterno funzionante con gli smart hub è il sensore di colore, cosa possiamo fare?
Semplice... realizzare un sensore che faccia finta di essere un verso sensore di colore prodotto da LEGO!
La differenza sarà solo nell'informazione che invieremo all'hub: invece di comunicare lo specifico colore rilevato (sono 10 i colori codificati nell'App e riconosciuti dal sensore), comunicheremo il valore di un colore in funzione di un trigger esterno (pulsante/contatto magnetico/qualsiasi cosa).

All'interno dell'App, invece, continueremo ad utilizzare il blocco "Rileva colore" sapendo però che al colore nero corrisponde la chiusura di un contatto e al colore rosso la chiusura di un altro, e così via.

In realtà, il numero di trigger gestibili è più grande se consideriamo un altro parametro che il sensore originale può rilevare/comunicare: la distanza di un oggetto. Dato che 10 trigger sono più che sufficienti (anche per realizzare una sorta di sensore analogico) mi soffermerò alla sola gestione dei colori... falsi!

Piccola nota: poc'anzi ho evidenziato che il sensore di colore è l'unico sensore attualmente supportato dai tre smart hub Powered Up (il Move, il City e il Technic). Questa affermazione è in realtà incompleta, dato che anche i tachimetrici sono visti (anche) come sensori in virtù del fatto che comunicano i dati sulla posizione/rotazione dell'albero.

Ma come si può realizzare un sensore che simula (quanto meno nella parte di comunicazione) il sensore LEGO?

Innanzitutto è necessario conoscere nel dettaglio cosa comunica il sensore LEGO e come reagisce ai comandi inviati dall'hub.

Ho quindi preso un sensore, ho tagliato il cavo e l'ho collegato ad un microcontrollore (ESP32, flashato con firmware MicroPython) ed ho cercato di "simulare" un hub LEGO inviando le sole comunicazioni necessarie ad attivare il sensore e ricevere i dati.
Il risultato è stato questo: accendere un LED di colore corrispondente al colore del brick analizzato dal sensore.

Sostanzialmente ho fatto finta di essere uno smart hub ed ho loggato tutto lo stream di byte trasmesso dal sensore.

Non è stato semplice arrivare a questo risultato dato che l'avere a disposizione la scarna ed incompleta documentazione sul protocollo LEGO non era sufficiente a far funzionare il tutto.

Ho quindi dovuto studiare la timeline della trasmissione seriale (non avendo ancora un analizzatore logico, mi sono fatto catturare i dati da Philo Hurbain, che ha aveva già studiato il protocollo) e incrociando dati e informazioni, pian piano sono riuscito a venirne a capo!

Non di meno, ho avuto uno scambio di opinioni e approfondimenti con David Lechner (uno degli sviluppatori di Pybricks, nonché gestore del progetto ev3dev) che, dall'alto della sua esperienza/conoscenza, mi ha confermato alcune mie supposizioni.

È stata una piccola-grande soddisfazione e, non di meno, un'attività di studio-ricerca che mi ha impegnato parecchio e mi ha consentito di comprendere meglio alcuni aspetti tecnici che, finora, non mi era capitato di approfondire.

Tenete conto che, nel momento in cui saranno rilasciati i sorgenti del firmware Pybricks (prima o poi saranno resi pubblici) tutto sarà molto più "semplice e chiaro", dato che gli sviluppatori hanno già affrontato tutti questi aspetti. Però, al momento, questi sorgenti non sono pubblici e non potevo neanche prentendere che David mi spiegasse tutto il protocollo nei minimi particolari...

Chi volesse dare un'occhiata al codice Micropython che ho usato per leggere il sensore, può vederlo qui ( @fonderiadigitale che ne dici?)
Noa: non è un codice perfetto e neanche mi interessava che lo fosse dato che lo scopo di questo "programma" è temporaneo e finalizzato solo a studiare i dati dal sensore.

Ieri sera, dopo che gli ho mostrato ciò che ero riuscito ad ottenere, David ha reso pubblica la sua documentazione sul protocollo LUMP ed è sicuramente più chiara e completa di quella finora disponibile.

Ora sono pronto per il "next level", ovvero creare il sensore finto!
A tale scopo, userò sempre un microcontrollore ESP32 con MicroPython a bordo.

Vediamo se riuscirò veramente ad ingannare l'hub LEGO 😉

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

1 ora fa, SanMa ha scritto:

Per me è una sorta di inganno anche quello. Non si potrebbe usare lo stesso metodo?

Quello non è un inganno, ma è l'uso di una feature che era stata prevista in fase di progettazione.
Non è stata una funzionalità resa pubblica da subito ma, ora che ho studiato a fondo il sensore di colore, è ben chiaro che la possibilità che lo stesso potesse funzionare come trasmettitore IR è stata progettata appositamente. E, senza dubbio, per poter interagire con il sistema LPF1 (mi chiedo solo perché non lo abbiano detto subito...)

Detto questo, è una cosa differente rispetto a quello che voglio fare io: interagire con l'App ufficiale e su con un hub con firmware originale. E, dato che questi, ad oggi, non contemplano la possibilità di utilizzare un sensore di input che non sia un sensore di colore o un motore tachimetrico, l'unico modo è quello di far finta di essere uno di questi 😉

Link to comment
Condividi su altri siti

Il 14/4/2020 alle 12:39, GianCann ha scritto:

Vediamo se riuscirò veramente ad ingannare l'hub LEGO 😉

Ci sono riuscito!!! 😉

È stato meno semplice di quanto avevo previsto inizialmente, in particolare perché ho usato un hardware troppo "evoluto" e non ho tenuto conto di alcuni aspetti legati ai due core dell'ESP32.

Alla fine, grazie analizzatore logico arrivato ieri, sono piante piano risalito ai vari problemi che non permettevano al mio sensore di essere riconosciuto dall'Hub LEGO.

In un prossimo post illustrerò una applicazione pratica 😉

Link to comment
Condividi su altri siti

1 ora fa, GianCann ha scritto:

Isogawa se n'è inventata un'altra delle sue... 😉

Stavo ragionando da tempo su come fare uno shunting puzzle automatizzato (ne ho fatto uno semplice per train simulator per vedere come funziona l'editor), tralasciando che non ho nemmeno un binario, ma questa soluzione è proprio un cheat! 😆

Link to comment
Condividi su altri siti

Isogawa se n'è inventata un'altra delle sue...
 
Parliamone.... Perché è proprio il mio cruccio....
Sto seguendo tutto con attenzione perché mi piacerebbe mettere davanti ai miei treni un sensore anti crash ma quello di LEGO è veramente troppo grande!
Link to comment
Condividi su altri siti

Ecco la prima versione del mio sensore magnetico per LEGO Powered Up!

(Nota: è il primo sensore al mondo di "terze parti" che funziona con il firmware e l'App originale!)

Ovviamente, come ho già spiegato nei miei post precedenti, si tratta di un 'barbatrucco", dato che il mio sensore emula quello originale LEGO per discriminare i colori.

Alla fine, quel che conta, è che funziona e, ribadisco, per me è una soddisfazione personale perché fu una delle prime cose che mi vennero in mente quando fu presentato il sistema PU: "Si potrà estenderlo con ulteriori sensori?".

Rispetto al prototipo che già avevo anticipato alcuni giorni fa, questa versione è basata sulla dev-board ESP-03 (solito chip ESP8266, a 80Mhz) che ha la caratteristica eccezionale di entrare in un brick 2x4!

IMG_20200501_173518.thumb.jpg.2b444b7314f63b47730dee01f1857b73.jpg

IMG_20200501_174652.thumb.jpg.ed3a1024175c472a0a080fd80fbdae9b.jpg

Come si può notare, ho "sacrificato" un mattoncino rimuovendo i tubi interni e realizzando una piccola fessura per il passaggio del cavo a 6 poli. Il cavo l'ho recuperato da un sensore di colore che ho danneggiato durante i vari test.

Al momento, il sensore vero e proprio è un banalissimo "interuttore reed" (nel versione con contatto normalmente chiuso) che ho collegato direttamente sulla board:

IMG_20200501_174630.thumb.jpg.1a0f3272231fbb7d577ce9dd95be63b4.jpg

Il risultato finale, somiglia ai vecchi sensori del sistema RCX 😉

IMG_20200501_172848.thumb.jpg.51ddcd92a63b548a4f27434599f1b9b1.jpg

IMG_20200501_172903.thumb.jpg.44d4fe6723af28d6540051e21c1af0e5.jpg

IMG_20200501_172848.thumb.jpg.51ddcd92a63b548a4f27434599f1b9b1.jpg

L'evoluzione di questa prima versione prevede, al posto del contatto reed, un vero e proprio sensore di campo magnetico che, oltre a comunicare l'On/Off, invia il valore analitico della forza magnetica rilevata.

A breve (giusto il tempo di sistemare alcune cose) pubblico i sorgenti del "firmware" 😉

IMG_20200501_172826.jpg

Link to comment
Condividi su altri siti

12 minuti fa, GianCann ha scritto:

Stanno circolando le immagini di un nuovo set (un nuova "Hauntes House") la cui particolarità, oltre alla bellezza, è di essere equipaggiata con il Powered Up! 😉

Grazie @Pix per la segnalazione.

Hai capito  se il "kit" Powered Up sarà incluso o se invece dovrà essere comprato a parte?

 

Link to comment
Condividi su altri siti

19 ore fa, lucanatali ha scritto:

Ho trovato una foto dove indica che le batterie non saranno incluse. Quindi in teoria avrà tutto il necessario power up per le luci 

Ho visto il logo delle batterie (le foto hanno una risoluzione davvero bassa) e mi è sembrato si riferisse al "batterie incluse" riferito ai brick luminosi che mi par di aver capito facciano parte del set.

 

Link to comment
Condividi su altri siti

Dalla grafica si vede chiaramente il set con il segno + per indicare che bisogna aggiungere altri "moduli" per la parte elettrica, un po' come capita per molti set Technic che se vuoi motorizzare devo comprarti il kit a parte.
L'unica cosa che speravo è che fosse qualcosa legato al mondo dell'illuminazione... ma forse mi sono solo illuso.

Link to comment
Condividi su altri siti

14 minuti fa, GianCann ha scritto:

Confermo quanto dice @Frank4bricks.

Il PU non è incluso e probabilmente verrà rilasciata anche una nuova versione dell'App che include degli effetti sonori specifici.

Secondo Promobricks le funzionalità PU sono collegate ad una sorta di ascensore o qualcosa del genere.

Ecco!

Aspettiamo mercoledì per l'annuncio ufficiale e vediamo (confermo le voci dell'ascensore motorizzabile con PU).

10 minuti fa, sdrnet ha scritto:

L'unica cosa che speravo è che fosse qualcosa legato al mondo dell'illuminazione... ma forse mi sono solo illuso.

Eh no, ti tocca farti bastare l'ascensore motorizzato e i suoni (un po' come fu per il Rollercoaster, per motorizzare il quale ti toccava però comprarti il set Boost, perchè all'epoca non vendevano i pezzi sfusi del Powered Up).

Per fortuna ho una copia dell'inutile Batmobile telecomandata...

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

Il 11/5/2020 alle 10:56, Frank4bricks ha scritto:

Aspettiamo mercoledì per l'annuncio ufficiale e vediamo (confermo le voci dell'ascensore motorizzabile con PU).

Confermato!

To enhance the spooky experience even further and unlock special features, such as a moving elevator, fans can also add LEGO Powered Up components (available separately) and control and amplify the set as they build via LEGO’s Powered Up app.

Link to comment
Condividi su altri siti

Ciao ciao Batmobile 76112 telecomandata, benvenuta Haunted House, 50 euro risparmiati. Purtroppo i due motori inclusi nella Batmobile sono diversi da quelli richiesti dalla App per la Haunted House

Motorizzazione
Hub richiesto: 88009 x € 49,99
Motori richiesti: 2x 88008 x € 17,99 cad.

Totale per il set motorizzato: € 315,96

Batmobile
Hub richiesto: 88009 x € 49,99
Motori richiesti: 2x 45303 x € 12,99 cad. (quando era in vendita)

Link to comment
Condividi su altri siti

Comunque, a sentire dagli effetti, un comando azionerà il motore per far salire l'ascensore e un altro per azionare il meccanismo di rilascio che farà cascare la seduta.
Il resto dei pulsanti servono solo ad emettere suoni "horror".
Di sottofondo c'è una musichetta classica da film di paura 😄 (si può disattivare)

Link to comment
Condividi su altri siti

Il 20/5/2020 alle 16:26, GianCann ha scritto:

Comunque, a sentire dagli effetti, un comando azionerà il motore per far salire l'ascensore e un altro per azionare il meccanismo di rilascio che farà cascare la seduta.

Questo video mostra finalmente il vero funzionamento. C'è comunque qualcosa che devo approfondire (ma non prima di questa sera):

 

 

 

Link to comment
Condividi su altri siti

6 minuti fa, GianCann ha scritto:

Questo video mostra finalmente il vero funzionamento. C'è comunque qualcosa che devo approfondire...

Domanda, magari stupida: ma come fa a fermarsi "giusto"? il programma della APP gli dice al motore "gira per tot giri e fermati"? sono così precisi anche con il tempo?

Chiedo che non sono esperto in materia.

Link to comment
Condividi su altri siti

1 ora fa, Pix ha scritto:

il programma della APP gli dice al motore "gira per tot giri e fermati"? sono così precisi anche con il tempo?

Il motore tachimetrico può essere controllato in questi modi:
- gira per 'x' secondi;
- ruota per 'x' gradi;
- ruota per 'x' giri;

La precisione è abbastanza buona, ma resta sempre un margine di errore.
Nello specifico caso, non essendoci un sensore che possa restituire l'esatta posizione assoluta della "seduta" sulla quale sono posizionate le minifgure, immagino che il meccanismo richieda una periodica 'taratura'. Ovvero, posizionare la seduta in uno specifico punto 'zero'

Purtroppo, al momento, non sono ancora disponibili le istruzioni digitali del set: da quelle si potrà capire tutto.

Link to comment
Condividi su altri siti

Ok, facendo qualche test con l'App è ora più chiaro...

- Toccando il pulsante 1: il sedile viene spostato al livello medio e attende altre azioni (> ovvero tap su 2, 3 o 4);
- Toccando il pulsante 2: il sedile viene spostato al livello superiore e attende altre azioni (> ovvero tap su 3 o 4);
- Toccando il pulsante 3: il sedile viene spostato al livello superiore e viene "rilasciato" o, se il sedile è già in alto, viene semplicemente "rilasciato"
- Toccando il pulsante 4: se il sedile si trova al livello medio o superiore, il sedile viene "rilasciato".
image.png.eb3641476362ccea54f87cac9a632853.png

image.png.8ce97969b82cece7bbb017f178b37813.png

Link to comment
Condividi su altri siti

1 ora fa, Frank4bricks ha scritto:

Quindi un motore fa "sue e giù" e il secondo sgancia, giusto?

Si, sebbene non mi sia chiaro il meccanismo utilizzato per lo "sgancio".
Bisogna attendere di vedere le istruzioni...
I due motori sono montati (ovviamente) vicini (visto che il cavetto è corto):

Nessuna descrizione della foto disponibile.

Link to comment
Condividi su altri siti

Oggi pomeriggio ho aiutato Dirk Frantzen (un AFOL tedesco) a programmare ex-novo l'App per l'HH, dato che l'ha già alzata di due piani 😄

 

Aveva qualche problema a replicare il meccanismo di "calibrazione" che l'App esegue all'avvio (e una volta ogni tanto).

Ecco cosa succede quando l"App viene lanciata:

Come si può notare, la cabina viene sollevata per 10-15 cm, e poi rilasciata.

Questo è il dettaglio dei motori: a sinistra quello che movimenta la catena, a destra quello che "sgancia/riaggancia" il primo dalla catena.

Questo il dettaglio del meccanismo di sgancio:

received_290921112064284.thumb.jpeg.374fb6cdbd75f478af0b485a277059b5.jpeg

received_600947637469089.thumb.jpeg.eaa22ed3c8eb8ed275543e2a5758544b.jpeg

received_245948026615025.thumb.jpeg.51ca4af097829f56be7bdfa893b9bea2.jpeg

Nella figura qui sopra, il motore a destra è quello che controlla la catena, e quello a sinistra è quello che interviene sul meccanismo di "sgancio" dell'albero motore.

Sostanzialmente funziona cosi:

1) Il motore B si assicura che la catena sia in "aggancio" con il motore A (esegue uno sgancio/riaggancio)

2) Il motore A porta su la cabina per 10-15 cm

3) Il motore B "sgancia" l'albero del motore A dalla catena. Per il peso, la seduta porta giù la catena (alla quale è "agganciata liberamente")

4) A questo punto la catena e la cabina sono in posizione "zero".

5) Il motore B "riaggancia" l'albero del motore A alla catena.

Molto semplice, ma abbastanza efficace.

Conoscendolo, si può ora modificare a piacere per aumentare i piani dell'HH:

Ecco il programma completo:

FB_IMG_1590254861042.jpg.df3c2420e796101ca438f0c51ce317dc.jpg

@Pix tutto questo spiega come l'App può gestire una specifica posizione di un meccanismo. Uno dei punti di forza del sistema PU. 

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

Con mio rammarico, ho riscontrato che anche con la nuova versione dell'App rilasciata pochi giorni fa, continuano a persistere problemi di connessione BLE.

Ieri sera ho provato a connettere un *nuovo* (mai accesso prima) Move HUB (quello del Boost, per intenderci) e non c'è stato verso di "agganciarlo" e/o aggiornarlo (anche forzando l'update del firmware con la procedura manuale).

Screenshot_20200527_234201_com_lego.common.poweredup.thumb.jpg.9dc56d6c40fd9bd78edc86726135bacd.jpg

Ho fatto vari tentativi (incluso quello di rimuovere le batterie, come suggerito).

Sono riuscito a collegarlo (ma non al primo colpo, comunque) con un altro tablet, che è riuscito ad effettuare l'aggiornamento del firmware.

Con lo stesso tablet (un LENOVO Yoga Smart Tab da 300 euro, quindi non un entry level) ho comunque riscontro vari problemi di associazione/dissociazione, più o meno come quelli segnalati in passato.

Nonostante l'aggiornamento del 13 maggio sia accompagnato dal mesaggio "We’ve fixed some seriously annoying bugs (along with some minor ones), including irresponsive activities and buttons." permangono i problemi.

@Laz nel caso in cui anche quest'anno tu avessi l'occasione di partecipare agli RLFM Days (non so in che forma li faranno, ma immagino "online") potresti evidenziare questa problematica?

 

Link to comment
Condividi su altri siti

7 ore fa, AirMauro ha scritto:

Vedremo i prezzi

Se i prezzi sono in linea con quelli che ho già segnalato qui (a Honk Kong già sono in vendita ufficialmente) siamo sull'ordine dei 70 euro per l'HUB Control+ e 35 euro per i motori.

Il 28/5/2020 alle 13:25, GianCann ha scritto:

Due settimane fa ho preso un po' di HUB Control+ su Bricklink, e li ho pagati 19 euro l'uno:

IMG_20200524_121151.thumb.jpg.f3291cbd2698bf6effc6b590aec8cbe3.jpg

Il Boost Move HUB ha un prezzo di 85 euro sullo S@H, mentre su BL si trova agevolmente tra i 25 e i 35 euro.

L'unico componente che, al momento, "conviene" acquistare sullo S@H è il sensore di colore (14,99 euro), più o meno il prezzo di Bricklink, ma con il vantaggio di poterne acquistare in molteplici quantità.

Visto che hanno messo questi nuovi componenti, potevano mettere sullo S@H anche i motori e i sensori dello Spike Prime (già disponibile come prodotti singoli presso i rivenditori Educational).

Sinceramente, quando ieri ho visto l'annuncio del team Powered Up, mi aspettavo qualcosa di molto diverso che un annuncio "commerciale".

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

×
×
  • Crea nuovo...