Sommario:

Telecomando Bluetooth in legno per treno Lego Duplo: 3 passaggi (con immagini)
Telecomando Bluetooth in legno per treno Lego Duplo: 3 passaggi (con immagini)

Video: Telecomando Bluetooth in legno per treno Lego Duplo: 3 passaggi (con immagini)

Video: Telecomando Bluetooth in legno per treno Lego Duplo: 3 passaggi (con immagini)
Video: IL NOSTRO CRICETO PROVA il Nuovo TRENO LEGO CITY Passeggeri Espresso 2024, Novembre
Anonim
Telecomando Bluetooth in legno per treno Lego Duplo
Telecomando Bluetooth in legno per treno Lego Duplo
Telecomando Bluetooth in legno per treno Lego Duplo
Telecomando Bluetooth in legno per treno Lego Duplo

I miei bambini hanno adorato questo trenino Lego Duplo, in particolare la mia più piccola che fatica a comunicare con le parole, quindi volevo costruirle qualcosa che l'avrebbe aiutata a giocare con il treno indipendentemente dagli adulti o dai telefoni/tablet. Qualcosa che aggiungerebbe una dimensione extra al treno e gli darebbe un valore di gioco extra

Il set Lego ha già pochi modi per controllare il treno, puoi spingerlo in avanti per avviarlo e tenerlo premuto per fermarlo, puoi controllarlo usando i tag colorati che vanno sul binario così quando il treno lo passa sopra attiva diverse azioni, ad esempio avanti, indietro, riproduci suoni accendi le luci. Puoi anche scaricare un'app per il tuo telefono o tablet che può connettersi al treno tramite bluetooth.

Qui una recensione completa del treno

Dopo aver cercato su Internet, ho scoperto che c'erano poche persone diverse che avevano tutto il codice scritto pronto per controllare il treno. Il nodo 'Poweredup' scritto da nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) sembrava un inizio perfetto, è stato scritto usando Javascript che non conoscevo parzialmente ma pensavo se avessi potrebbe trovare un microchip basato su Java, questo sarebbe un buon inizio.

Ancora una volta, dopo aver cercato di nuovo su Internet, ho trovato il sistema espruino, questo è simile all'ardiuno ma si basa su javascript. Il codice espriuno potrebbe essere caricato su un microchip MDBT42Q con Bluetooth incorporato. Ho pensato che se avessi potuto caricare il modulo "acceso" sarei stato a metà strada, tuttavia questo semplice non era il caso del modulo contenuto in molte librerie di grandi dimensioni da caricare sull'MDBT42Q, quindi sembra che devo trova una soluzione più semplice….

Passaggio 1: il codice

Il codice
Il codice

Esprinuo

Per coloro che non conoscono la piattaforma Espruino https://www.espruino.com (e non l'ho fatto) è molto simile ad Arduino, ci sono alcune differenze principali scritte per javascript piuttosto che c, sembra leggermente più recente quindi non ci sono esempi, tuttavia il supporto tramite i forum è ottimo e molto utile.

Javascript incontra il treno

Il primo ostacolo è stato quello di connettersi al treno tramite bluetooth, questo può essere fatto utilizzando la classe NRF fornita con il codice espruino.

NRF.connect può essere utilizzato per connettersi al treno, tuttavia per prima cosa è necessario trovare l'indirizzo del treno stesso, è possibile utilizzare NRF.findDevices per ottenere queste informazioni

Una volta fatto questo, devi inviare il valore del treno due all'handshake con il treno, per il mio treno questo era "00001623-1212-efde-1623-785feabcd123" seguito da "00001624-1212-efde-1623-785feabcd123" credo questo sarà lo stesso per tutti i treni a vapore, ma le altre versioni, ad esempio il carico, potrebbero essere diverse

Una volta che hai questo, puoi connettere il treno usando una funzione come la seguente, puoi sapere quando il treno si è connesso in quanto lampeggerà i fari blu

NRF.connect("e0:7d:ea:0c:03:29").then(function(g) {

console.log("Avvio connessione2"); gatt = g; return gatt.getPrimaryService("00001623-1212-efde-1623-785feabcd123"); }).then(function(service) { return service.getCharacteristic("00001624-1212-efde-1623-785feabcd123"); }).then(function(characteristic) { Characteristic_store = caratteristica; return caratteristica.readValue(); }).then(value => { console.log(value); }).then(function() { console.log("Treno connesso"); connesso = 1;

Le cose divertenti

Ora che sei connesso al treno è il momento di fare tutte le cose divertenti come spostarlo in avanti, emettere suoni e accendere e spegnere la luce. È semplice inviare al treno un valore di preparazione, seguito dal comando effettivo, ad es

funzione play_horn() {

console.log("message = ", Characteristic_store); const prepval = new Uint8Array([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue(prepval).then(_ => { Characteristic_store.writeValue(sendvalue); }); }

Potrebbe essere necessario scavare un po' in giro per trovare altri comandi oltre a quelli che ho usato

Pulsanti e leve

Il lato fisico del telecomando è molto semplice, quattro pulsanti (per riprodurre suoni, accendere e spegnere le luci) e un potenziometro che si collega alla leva in modo da poter controllare la velocità e la direzione del treno

Il pulsante non ha bisogno di una resistenza di pull-up, invece puoi farlo nel codice, ad es

pinMode(D15, 'input_pulldown');

Puoi collegare il potenziometro ad uno degli ingressi e poi leggerlo il segnale analogico usando il seguente comando

var lettura = analogRead(D31);

L'altra differenza con l'arduino è che esprunio non ha una configurazione e un ciclo. Quindi, invece, inserisco tutti i comandi/trigger separati nelle funzioni e quindi imposto setInterval che esegue un ciclo ogni 100 millisecondi, ascoltando il pulsante, quindi eseguendo la funzione richiesta quando il pulsante è stato premuto.

if (digitalRead(D15) == 1) { play_horn(); }

Azionare la leva è stato un po' più complicato in quanto volevo poter regolare in modo incrementale la velocità quindi prima ho dovuto inviare il valore analogico per funzionare

var lettura = analogRead(D31);

train_direction(lettura * 1024);

Quindi nella funzione train_direction ho suddiviso il comando in 6 diversi incrementi in base al valore del piatto

Fino in fondo, dice al treno di andare avanti a tutta velocità

A metà salita, dice al treno di andare avanti al 50% di velocità

Medio, dice al treno di fermarsi

A metà strada, dice al treno di tornare indietro al 50% di velocità

Fino in fondo, dice al treno di andare a tutta velocità in retromarcia

cioè

function train_direction(dir_val) {

//console.log("message = ", Characteristic_store); const prepval = new Uint8Array([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val > 300 && dir_val 400 && dir_val 500) { const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) { const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) { const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val { Characteristic_store.writeValue(sendvalue); }); }

Il codice completo può essere scaricato per il link sottostante

Passaggio 2: il cablaggio

Il cablaggio
Il cablaggio
Il cablaggio
Il cablaggio

Il cablaggio è stata la parte più semplice

Consisteva solo in 4 pulsanti collegati a D15, D16, D17 e D18 senza alcun resistore di pull-up come questo è stato fatto nel codice e 1 resistore da 10k collegato a D31

Sto ancora lavorando sull'alimentatore ma attualmente tutta l'alimentazione proviene da un micro usb breakout e questo potrebbe essere collegato direttamente a un power bank o a una porta USB

Passaggio 3: la costruzione

la costruzione
la costruzione
la costruzione
la costruzione
la costruzione
la costruzione
la costruzione
la costruzione

Il telecomando è principalmente composto da fogli di compensato A4 da 3 mm, 6 mm o 9 mm, sono stati tagliati sulla mia macchina CNC, tuttavia utilizzando il modello fornito, anche se non sarebbe impossibile farlo a mano

Spero che il modello e le foto ti forniscano tutto ciò di cui hai bisogno per rifare, tuttavia ci sono poche note che potrebbero aiutare

Il supporto per pulsante da 3 mm serve per attaccare il pulsante, lo spazio posiziona il pulsante nella posizione corretta ma ti consente di accedere alla gamba sul retro in modo da poter saldare al microchip, sul retro puoi anche montare l'MDBT42Q usando un po' di colla. Sul davanti dovrai aggiungere così schiuma in modo che dia un po 'di rimbalzo ai pulsanti quando li premi verso il basso potresti anche usare le molle

I pulsanti da 9 mm avranno bisogno della vernice, dell'incisione o di qualcos'altro del logo per mostrare quale pulsante fa cosa

La leva/maniglia dovrà essere stratificata, ho usato un tassello da 6 mm per aiutarli ad allinearli in tutte le posizioni corrette

Consigliato: