Innholdsfortegnelse:

Tre Bluetooth -fjernkontroll for Lego Duplo Train: 3 trinn (med bilder)
Tre Bluetooth -fjernkontroll for Lego Duplo Train: 3 trinn (med bilder)

Video: Tre Bluetooth -fjernkontroll for Lego Duplo Train: 3 trinn (med bilder)

Video: Tre Bluetooth -fjernkontroll for Lego Duplo Train: 3 trinn (med bilder)
Video: 25 крутых изобретений в области личного транспорта | Дизайн автомобиля 2024, November
Anonim
Tre Bluetooth -fjernkontroll for Lego Duplo Train
Tre Bluetooth -fjernkontroll for Lego Duplo Train
Tre Bluetooth -fjernkontroll for Lego Duplo Train
Tre Bluetooth -fjernkontroll for Lego Duplo Train

Barna mine elsket dette lille Lego Duplo -toget, spesielt min yngste som sliter med å kommunisere seg selv med ord, så jeg ville bygge henne noe som ville hjelpe henne å leke med toget uavhengig av voksne eller telefoner/nettbrett. Noe som ville tilføre toget en ekstra dimensjon og gi den ekstra spillverdi

Lego -settet har allerede få måter å kontrollere toget på, du kan skyve det fremover for å starte og holde det for å stoppe det, du kan kontrollere det ved hjelp av fargemerker som går på sporet, så når toget passerer det over det utløser forskjellige handlinger dvs. forover, bakover, spillelyder slår på lysene. Du kan også laste ned en app for telefonen eller nettbrettet som kan kobles til toget via bluetooth.

Her en fullstendig gjennomgang av toget

Etter å ha jaktet rundt på internett fant jeg ut at det var ganske få forskjellige mennesker som hadde klar kode for å kontrollere toget. 'Poweredup'-noden skrevet av nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) så ut som en perfekt start. Den ble skrevet ved hjelp av Javascript som jeg ikke var delvis kjent med, men tenkte om jeg kunne finne java -basert mikrochip, ville dette være en god start.

Igjen etter å ha jaktet rundt på internett igjen fant jeg espruino -systemet, dette ligner på ardiuno, men basen rundt javascript. Espriuno -koden kan lastes på en MDBT42Q mircochip som har innebygd bluetooth. Jeg trodde at hvis jeg kunne laste den "oppstartede" modulen til den, ville jeg være halvveis der, men dette enkle var ikke tilfellet, og modulen inneholdt for mange store biblioteker for å laste på MDBT42Q, så det ser ut til at jeg må finn en enklere løsning ….

Trinn 1: Koden

Koden
Koden

Esprinuo

For de som ikke kjenner Espruino -plattformen https://www.espruino.com (og det gjorde jeg ikke) er den veldig lik Arduinoen. Det er noen få hovedforskjeller den skrev for javascript heller c, Det føles litt nyere så det er eksempler, men støtten via forumene er stor og veldig nyttig.

Javascript møter toget

Den første hindringen var å koble til toget via bluetooth. Dette kan gjøres ved hjelp av NRF -klassen som leveres med i espruino -koden.

NRF.connect kan brukes til å koble til toget, men ditt første behov for å finne adressen til selve toget, du kan bruke NRF.findDevices for å få denne informasjonen

Når du har gjort dette må du sende toget to verdi for håndtrykk med toget, for toget mitt var dette "00001623-1212-efde-1623-785feabcd123" etterfulgt av "00001624-1212-efde-1623-785feabcd123" tror jeg dette vil være det samme for alle damptogene, men de andre versjonene, dvs. lastesettet, kan være annerledes

Når du har dette kan du koble til toget ved hjelp av funksjonen som følgende. Kan du fortelle når toget har forbindelse, da det vil blinke, lyktene blå

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

console.log ("Starter tilkobling2"); gatt = g; retur gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). deretter (funksjon (service) {retur service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). deretter (funksjon (karakter) {Characteristic_store = karakteristisk; returkarakteristikk.readValue ();}).then (verdi => {console.log (verdi);}). deretter (function () {console.log ("Train Connected"); tilkoblet = 1;

De morsomme greiene

Nå som du koblet til toget, er det på tide med alt det morsomme som å flytte det fremover, lage lyd og slå lyset av og på. Det er en enkel jobb å sende toget en prep -verdi, etterfulgt av den faktiske kommandoen dvs.

funksjon play_horn () {

console.log ("melding =", 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 må kanskje grave litt rundt for å finne en annen kommando enn de jeg brukte

Knapper og spaker

Den fysiske siden av fjernkontrollen er veldig rett frem fire knapper (for å spille lyder, slå lysene på og av) og ett potensiometer som er koblet til spaken, slik at du kan kontrollere hastigheten og retningen på toget

Knappen trenger ikke trekke opp motstand i stedet kan du gjøre dette i kode, dvs.

pinMode (D15, 'input_pulldown');

Du kan koble potensiometeret til en av inngangene og deretter lese det analoge signalet ved å bruke følgende kommando

var lesing = analogRead (D31);

Den andre forskjellen til arduinoen er at esprunio ikke har et oppsett og loop. Så i stedet plasserer jeg alle separate kommandoer/utløsere i funksjoner og setter deretter opp setInterval som sløyfer hvert 100 millisekund, lytter til knappen og kjører deretter den nødvendige funksjonen når knappen har blitt trykket.

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

Handlingen av spaken var litt mer komplisert da jeg ønsket å kunne justere hastigheten trinnvis, så først måtte jeg sende den analoge verdien for å fungere

var lesing = analogRead (D31);

train_direction (lesing * 1024);

Så i train_direction -funksjonen brøt jeg ned kommandoen til 6 forskjellige trinn basert på pot -verdien

Helt opp, forteller toget å gå full fart fremover

Halvveis opp, forteller toget å gå fremover med 50% hastighet

Midt, forteller toget å stoppe

Halvveis ned, forteller toget å gå bakover med 50% hastighet

Helt ned, forteller toget å gå full fart i revers

dvs

funksjon 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]); 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);}); }

Hele koden kan være nede for lenken nedenfor

Trinn 2: Kabling

Kabling
Kabling
Kabling
Kabling

Ledningen var den enkleste delen

Den besto bare av 4 trykknapper som er koblet til D15, D16, D17 og D18 uten noen trekkmotstand, siden dette ble gjort i koden og 1 10k motstand koblet til D31

Jeg jobber fortsatt med strømforsyningen, men for øyeblikket kommer all strøm fra et mikro -usb -utbrudd, og dette kan kobles direkte til en strømbank eller en USB -port

Trinn 3: Bygget

The Build
The Build
The Build
The Build
The Build
The Build
The Build
The Build

Fjernkontrollen er stort sett av 3 mm, 6 mm eller 9 mm A4 -ark med kryssfiner. De ble kuttet på CNC -maskinen min, men ved å bruke malen forutsatt at jeg ville tro om det ikke ville være umulig å gjøre for hånd

Jeg håper at malen og bildene gir deg alt du trenger for å lage på nytt, men det er få notater som kan hjelpe

3 mm trykknappfeste er for å holde trykknappen på, gapet plasserer knappen på riktig sted, men vi gir deg tilgang til beinet på baksiden slik at du kan lodde til mikrochippen, på baksiden kan du også montere MDBT42Q bruker litt lim. På forsiden må du legge til så skum, slik at det gir knappene et lite sprett når du trykker dem ned, du kan også bruke fjærer

9 mm knapper trenger logoen enten maling, gravering eller noe annet som viser hvilken knapp som gjør hva

Spaken/håndtaket må legges i lag, jeg brukte en 6 mm plugg for å hjelpe dem med å justere dem i alle riktige posisjoner

Anbefalt: