Indholdsfortegnelse:

Træ Bluetooth -fjernbetjening til Lego Duplo Train: 3 trin (med billeder)
Træ Bluetooth -fjernbetjening til Lego Duplo Train: 3 trin (med billeder)

Video: Træ Bluetooth -fjernbetjening til Lego Duplo Train: 3 trin (med billeder)

Video: Træ Bluetooth -fjernbetjening til Lego Duplo Train: 3 trin (med billeder)
Video: Hvordan reagerer børn, når man fortæller, at der ikke er råd til at holde jul? 2024, November
Anonim
Træ Bluetooth fjernbetjening til Lego Duplo Train
Træ Bluetooth fjernbetjening til Lego Duplo Train
Træ Bluetooth fjernbetjening til Lego Duplo Train
Træ Bluetooth fjernbetjening til Lego Duplo Train

Mine børn elskede dette lille Lego Duplo -tog især min yngste, der kæmper for at kommunikere sig selv med ord, så jeg ville bygge hende noget, der ville hjælpe hende med at lege med toget uafhængigt af voksne eller telefoner/tablets. Noget, der ville tilføre toget en ekstra dimension og give den ekstra legeværdi

Lego -sættet har allerede få måder at styre toget på, du kan skubbe det fremad for at starte og holde det for at stoppe det, du kan styre det ved hjælp af farvekoder, der går på sporet, så når toget passerer det over det udløser forskellige handlinger dvs. frem, tilbage, afspilning lyde tænde lyset. Du kan også downloade en app til din telefon eller tablet, der kan oprette forbindelse til toget via bluetooth.

Her en fuld anmeldelse af toget

Efter jagt rundt på internettet fandt jeg ud af, at der var ganske få forskellige mennesker, der alle havde klar skrevet kode til at styre toget. 'Poweredup'-noden skrevet af nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) lignede en perfekt start, den blev skrevet ved hjælp af Javascript, som jeg ikke var delvist bekendt med, men tænkte, hvis jeg kunne finde java -baseret mikrochip, ville dette være en god start.

Igen efter at have jagtet rundt på internettet igen fandt jeg espruino -systemet, dette ligner ardiuno, men baserer sig omkring javascript. Espriuno -koden kunne indlæses på en MDBT42Q mircochip, der havde Bluetooth -indlejring. Jeg tænkte, at hvis jeg kunne indlæse det "tændte" modul til det, ville jeg være halvvejs der, men dette enkle var ikke tilfældet, og modulet indeholdt for mange store biblioteker at indlæse på MDBT42Q, så det ser ud til, at jeg er nødt til at finde en enklere løsning ….

Trin 1: Koden

Koden
Koden

Esprinuo

For dem, der ikke kender Espruino -platformen https://www.espruino.com (og det gjorde jeg ikke) er den meget lig Arduinoen. Der er et par hovedforskelle, den skrev til javascript snarere c, Det føles lidt nyere så der er eksempler, men understøttelsen via fora er stor og meget nyttig.

Javascript møder toget

Den første forhindring var at oprette forbindelse til toget via bluetooth, Dette kan gøres ved hjælp af NRF -klassen, der leveres med i espruino -koden.

NRF.connect kan bruges til at oprette forbindelse til toget, men dit første behov for at finde selve togets adresse, du kan bruge NRF.findDevices til at få disse oplysninger

Når du har gjort dette, skal du derefter sende toget to værdier til håndtryk med toget, for mit tog var dette "00001623-1212-efde-1623-785feabcd123" efterfulgt af "00001624-1212-efde-1623-785feabcd123" tror jeg dette vil være det samme for alle damptogene, men de andre versioner, dvs. lastsættet, kan være anderledes

Når du har dette, kan du forbinde toget ved hjælp af funktion som følgende, kan du fortælle, hvornår toget har forbindelse, da det vil blinke, forlygterne er blå

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

console.log ("Start af forbindelse2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). derefter (funktion (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). derefter (funktion (karakter) {Characteristic_store = karakteristisk; returkarakteristik.readValue ();}).then (værdi => {console.log (værdi);}). derefter (funktion () {console.log ("Train Connected"); forbundet = 1;

De sjove ting

Nu du har forbindelse til toget, er det tid til alle de sjove ting som at flytte det fremad, lave lyd og tænde og slukke lyset. Det er enkelt at sende toget en prep -værdi, efterfulgt af den egentlige kommando dvs.

funktion play_horn () {

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

Du skal muligvis grave lidt rundt for at finde en anden kommando end dem, jeg brugte

Knapper og håndtag

Den fysiske side af fjernbetjeningen er meget lige fremad fire knapper (for at afspille lyde, tænde og slukke lyset) og et potentiometer, der er forbundet til håndtaget, så du kan styre hastigheden og retningen af toget

Knappen behøver ikke pull up -modstand i stedet for du kan gøre dette i kode, dvs.

pinMode (D15, 'input_pulldown');

Du kan slutte potentiometeret til en af indgangene og derefter læse det analoge signal ved hjælp af følgende kommando

var læsning = analogRead (D31);

Den anden forskel til arduino er, at esprunio ikke har en opsætning og loop. Så i stedet placerer jeg alle de separate kommandoer/udløsere i funktioner og konfigurerer derefter setInterval, der går i loop hver 100 millisekund, lytter til knappen og kører derefter den nødvendige funktion, når der er trykket på knappen.

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

Handlingen af håndtaget var lidt mere kompliceret, da jeg ønskede at kunne justere hastigheden trinvist, så først måtte jeg sende den analoge værdi for at fungere

var læsning = analogRead (D31);

train_direction (læsning * 1024);

Så i funktionen train_direction nedbrød jeg kommandoen til 6 forskellige trin baseret på potværdien

Helt op, fortæller toget at køre fuld fart frem

Halvvejs op, fortæller toget at køre fremad med 50% hastighed

Midt, fortæller toget at stoppe

Halvvejs ned fortæller toget at gå baglæns med 50% hastighed

Helt ned, fortæller toget at køre fuld fart i bakgear

dvs.

funktion train_direction (dir_val) {

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

Den fulde kode kan være nede for nedenstående link

Trin 2: Ledningerne

Ledningerne
Ledningerne
Ledningerne
Ledningerne

Ledningerne var den enkleste del

Den bestod bare af 4 trykknapper tilsluttet D15, D16, D17 og D18 uden en eventuel pull -up -modstand, da dette blev gjort i koden og 1 10k -modstand tilsluttet D31

Jeg arbejder stadig på strømforsyningen, men i øjeblikket kommer al strømmen fra et mikro -usb -breakout, og dette kan være forbundet direkte til en powerbank eller en USB -port

Trin 3: Bygningen

Bygningen
Bygningen
Bygningen
Bygningen
Bygningen
Bygningen
Bygningen
Bygningen

Fjernbetjeningen er for det meste ud af 3 mm, 6 mm eller 9 mm A4 ark krydsfiner, de blev skåret på min CNC -maskine, men ved hjælp af den skabelon, jeg ville, selvom det ikke ville være umuligt at gøre i hånden

Jeg håber, at skabelonen og billederne vil give dig alt hvad du behøver for at lave om, men der er få noter, der kan hjælpe

3 mm trykknapfæstet er til at sætte trykknappen på, mellemrummet vil placere knappen på det rigtige sted, men vi giver dig adgang til benet på bagsiden, så du kan lodde til mikrochippen, på bagsiden kan du også montere MDBT42Q ved hjælp af lidt lim. På forsiden skal du tilføje så skum, så det giver knapperne et lille hopp, når du trykker dem ned, du kan også bruge fjedre

9 mm knapper skal bruge logoets enten maling, gravering eller noget andet, der viser, hvilken knap der gør hvad

Håndtaget/håndtaget skal lagres i lag, jeg brugte en 6 mm dybel til at hjælpe med at justere dem i alle de korrekte positioner

Anbefalede: