Taula de continguts:
Vídeo: Comandament Bluetooth de fusta per al tren Lego Duplo: 3 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Als meus fills els encantava aquest petit tren Lego Duplo, especialment el més petit que lluita per comunicar-se amb paraules, així que volia construir-li alguna cosa que l’ajudés a jugar amb el tren independentment dels adults o dels telèfons / tauletes. Una cosa que afegiria una dimensió addicional al tren i li donaria un valor de joc addicional
El joc de Lego ja té poques maneres de controlar el tren, podeu empènyer-lo cap endavant per iniciar-lo i mantenir-lo premut per aturar-lo, podeu controlar-lo mitjançant etiquetes de colors que van a la via, de manera que quan el tren el passa per sobre, desencadena diferents accions, és a dir, endavant, enrere, reproduir sons encén els llums. També podeu descarregar una aplicació per al vostre telèfon o tauleta que es pugui connectar al tren mitjançant bluetooth.
Aquí una revisió completa del tren
Després de caçar per internet, vaig trobar que hi havia força persones diferents que tenien tot el codi escrit per controlar el tren. El node "Poweredup" escrit per nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) semblava un inici perfecte, va ser escrit amb Javascript, que no coneixia parcialment, però pensava si podria trobar un microxip basat en Java, seria un bon començament.
Una vegada més, després de buscar a Internet, vaig trobar de nou el sistema espruino, que és similar a l'ardiuno, però es basa al voltant de javascript. Es podria carregar el codi espriuno en un xip mirc MDBT42Q que tenia Bluetooth incrustat. Vaig pensar que si podia carregar-hi el mòdul "encès" estaria a la meitat del camí, tot i que no era el cas que el mòdul contenia a moltes biblioteques de grans dimensions per carregar-lo al MDBT42Q, així que sembla que he de trobar una solució més senzilla …
Pas 1: el codi
Esprinuo
Per a aquells que no coneixen la plataforma Espruino https://www.espruino.com (i jo no), és molt similar a l'Arduino, hi ha algunes diferències principals que va escriure per a javascript més aviat c, se sent lleugerament més recent així que no hi hagi exemples, però, el suport a través dels fòrums és fantàstic i molt útil.
Javascript coneix el tren
El primer obstacle va ser connectar-se al tren mitjançant bluetooth. Això es pot fer mitjançant la classe NRF que s'inclou al codi espruino.
NRF.connect es pot utilitzar per connectar-se al tren, però per primera vegada haureu de trobar l'adreça del mateix tren, podeu utilitzar NRF.findDevices per obtenir aquesta informació.
Un cop fet això, haureu d'enviar al tren dos valors per apretar de mans amb el tren, per al meu tren era "00001623-1212-efde-1623-785feabcd123" seguit de "00001624-1212-efde-1623-785feabcd123" Crec això serà el mateix per a tots els trens de vapor establerts, però les altres versions, és a dir, el conjunt de càrrega, poden ser diferents
Un cop tingueu això, podeu connectar el tren mitjançant la funció següent: es pot saber quan el tren es connecta, ja que parpellejarà els fars de color blau
NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Llavors (funció (g) {
console.log ("Començant a connectar2"); gatt = g; retornar gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (caractéristique) {Característica_botiga = característica; return característica.readValue ();}).then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;
Les coses divertides
Ara us heu connectat al tren, és hora de fer tot allò divertit, com avançar-lo, fer so i encendre i apagar la llum. És una tasca senzilla d'enviar al tren un valor de preparació, seguit de l'ordre real, és a dir
funció play_horn () {
console.log ("missatge =", botiga_característica); 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);}); }
És possible que hagueu de fer una mica d’exploració per trobar altres ordres que no pas les que he utilitzat
Botons i palanques
El costat físic del comandament és molt senzill: quatre botons (per reproduir sons, encendre i apagar els llums) i un potenciòmetre connectat a la palanca perquè pugueu controlar la velocitat i la direcció del tren
El botó no necessita resistència cap amunt sinó que podeu fer-ho en codi, és a dir
pinMode (D15, 'input_pulldown');
Podeu connectar el potenciòmetre a una de les entrades i després llegir-lo amb el següent senyal analògic
lectura var = analogRead (D31);
L'altra diferència de l'arduino és que l'esprunio no té cap configuració ni bucle. Així que, en lloc d'això, col·loco totes les ordres / activadors separats en funcions i, a continuació, configuro setInterval que repeteix bucles cada 100 mil·lisegons, escoltant el botó i, a continuació, executeu la funció requerida quan s'hagi premut el botó.
if (digitalRead (D15) == 1) {play_horn (); }
Accionar la palanca va ser una mica més complicat, ja que volia poder ajustar la velocitat de manera incremental, així que primer vaig haver d’enviar el valor analògic a la funció
lectura var = analogRead (D31);
direcció_tren (lectura * 1024);
A continuació, a la funció train_direction he desglossat l'ordre en 6 increments diferents segons el valor del pot
Tot el camí amunt indica al tren que vagi a tota velocitat
A mitja pujada, indica al tren que vagi endavant a un 50% de velocitat
Middle, diu al tren que s’aturi
A mitja baixada, indica al tren que vagi enrere a una velocitat del 50%
Tot el camí avall, indica al tren que marxi a tota velocitat a la inversa
és a dir
funció train_direction (dir_val) {
//console.log("message = ", botiga_característica); 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 {Value_store.writeValue (sendvalue);}); }
El codi complet es pot trobar a l’enllaç següent
Pas 2: el cablejat
El cablejat era la part més senzilla
Simplement consistia en 4 polsadors connectats a D15, D16, D17 i D18 sense cap resistència de tracció, ja que es feia al codi i 1 resistència de 10 k connectada a D31
Encara estic treballant en la font d'alimentació, però actualment tota la potència prové d'un micro USB i això podria connectar-se directament a un banc d'alimentació o un port USB
Pas 3: la construcció
El comandament es troba principalment en fulls de fusta contraxapada de 3 mm, 6 mm o 9 mm. Es van tallar a la meva màquina CNC, però utilitzant la plantilla, sempre que no seria impossible fer-ho a mà
Espero que la plantilla i les fotos us donin tot el que necessiteu refer però hi ha poques notes que us poden ajudar
El muntatge del polsador de 3 mm serveix per prémer el polsador, la bretxa posicionarà el botó al lloc correcte, però us permetem accedir a la cama de la part posterior perquè pugueu soldar al microxip; al revers també podeu muntar el MDBT42Q utilitzant una mica de cola. A la part frontal, haureu d'afegir escuma perquè els botons facin un petit rebot quan els premeu, també podríeu utilitzar molles
Els botons de 9 mm necessitaran pintura, gravat o una altra cosa del logotip per mostrar quin botó fa què
La palanca / maneta haurà de ser capes cap amunt, he utilitzat un tac de 6 mm per ajudar-los a alinear-los en totes les posicions correctes
Recomanat:
Antena parabòlica de fusta compensada de fusta: 11 passos (amb imatges)
Antena parabòlica de fusta compensada de fusta: m’havia trobat amb alguns llocs web on diverses persones construïen les seves pròpies antenes parabòliques de focus principal, un home australià fins i tot va construir una enorme platja offset de 13 metres. Quina és la diferència? El focus principal és el que penseu quan algú diu "satèl·lit
El comandament a distància de TV es converteix en un comandament a distància RF -- NRF24L01 + Tutorial: 5 passos (amb imatges)
El comandament a distància de TV es converteix en un comandament a distància RF || Tutorial NRF24L01 +: en aquest projecte us mostraré com he utilitzat el popular IC nRF24L01 + RF per ajustar la brillantor d’una tira LED sense fils a través de tres botons inútils d’un control remot de TV. Comencem
Comandament a distància sense fils que utilitza el mòdul NRF24L01 de 2,4 Ghz amb Arduino - Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter - Helicòpter Rc - Avió Rc amb Arduino: 5 passos (amb imatges)
Comandament sense fils que utilitza un mòdul NRF24L01 de 2,4 Ghz amb Arduino | Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter | Helicòpter Rc | Avió Rc amb Arduino: per fer funcionar un cotxe Rc | Quadcopter | Drone | Avió RC | Vaixell RC, sempre necessitem un receptor i un transmissor, suposem que per RC QUADCOPTER necessitem un transmissor i un receptor de 6 canals i aquest tipus de TX i RX és massa costós, així que en farem un al nostre
Com utilitzar unes poques peces de fusta per muntar-les en un braç robot de fusta bonic i potent: 10 passos
Com utilitzar unes poques peces de fusta per muntar-les en un braç i potent robot de fusta: el nom del braç del robot és WoodenArm. Sembla molt maco! Si voleu més detalls sobre WoodenArm, consulteu www.lewansoul.com Ara podem fer una introducció sobre WoodenArm, anem a continuar
Comandament a distància per a Youtube i Netflix per a PC: 9 passos (amb imatges)
Comandament a distància per a Youtube i Netflix: tinc el mesurador de PC d’escriptori lluny del meu llit, de manera natural que m’agrada veure youtube i pel·lícules des de la comoditat del meu llit. Tanmateix, cada vegada que m’acosto, necessito ajustar el volum, posar en pausa el vídeo per alguns motius o simplement saltar-lo completament