Sommario:
Video: Telecomando Bluetooth in legno per treno Lego Duplo: 3 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
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 è 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
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:
Il telecomando della TV diventa un telecomando RF -- Tutorial NRF24L01+: 5 passaggi (con immagini)
Il telecomando della TV diventa un telecomando RF || Tutorial NRF24L01+: in questo progetto ti mostrerò come ho utilizzato il popolare IC RF nRF24L01+ per regolare la luminosità di una striscia LED in modalità wireless tramite tre inutili pulsanti di un telecomando TV. Iniziamo
Telecomando wireless con modulo NRF24L01 da 2,4 Ghz con Arduino - Nrf24l01 Ricevitore trasmettitore 4 canali / 6 canali per quadricottero - Elicottero Rc - Aereo RC con Arduino: 5 passaggi (con immagini)
Telecomando wireless con modulo NRF24L01 da 2,4 Ghz con Arduino | Nrf24l01 Ricevitore trasmettitore 4 canali / 6 canali per quadricottero | Elicottero Rc | Aereo radiocomandato con Arduino: per far funzionare un'auto radiocomandata | Quadricottero | Drone | Aereo RC | Barca RC, abbiamo sempre bisogno di un ricevitore e trasmettitore, supponiamo che per RC QUADCOPTER abbiamo bisogno di un trasmettitore e ricevitore a 6 canali e quel tipo di TX e RX è troppo costoso, quindi ne faremo uno sul nostro
Controlla il layout del tuo modello di treno con il telecomando della TV!: 7 passaggi (con immagini)
Controlla il layout del tuo modello di treno con il telecomando della tua TV!: In questo tutorial, ti mostrerò come realizzare un sistema di controllo remoto IR per un modello di treno. Sarai quindi in grado di controllare i tuoi treni mentre ti rilassi sul divano. Quindi iniziamo
Come usare alcuni pezzi di legno per assemblarli in un simpatico e potente braccio robotico in legno: 10 passaggi
Come usare alcuni pezzi di legno per assemblare in un simpatico e potente braccio robotico in legno: Il nome del braccio robotico è WoodenArm. Sembra molto carino! Se vuoi maggiori dettagli su WoodenArm, fai riferimento a www.lewansoul.com Ora possiamo fare un'introduzione su WoodenArm, passiamoci sopra
Converti il tuo telecomando IR in telecomando RF: 9 passaggi (con immagini)
Converti il tuo telecomando IR in telecomando RF: in Instructable di oggi, ti mostrerò come puoi utilizzare un modulo RF generico senza un microcontrollore che alla fine ci porterà a costruire un progetto in cui puoi convertire un telecomando IR di qualsiasi dispositivo in un RF A distanza. Il vantaggio principale di convertire un