INHOUDSOPGAWE:

Houten Bluetooth -afstandsbediening vir Lego Duplo -trein: 3 stappe (met foto's)
Houten Bluetooth -afstandsbediening vir Lego Duplo -trein: 3 stappe (met foto's)

Video: Houten Bluetooth -afstandsbediening vir Lego Duplo -trein: 3 stappe (met foto's)

Video: Houten Bluetooth -afstandsbediening vir Lego Duplo -trein: 3 stappe (met foto's)
Video: 10 самых АТМОСФЕРНЫХ мест Дагестана. БОЛЬШОЙ ВЫПУСК #Дагестан #ПутешествиеПоДагестану 2024, November
Anonim
Hout Bluetooth -afstandsbediening vir Lego Duplo -trein
Hout Bluetooth -afstandsbediening vir Lego Duplo -trein
Hout Bluetooth -afstandsbediening vir Lego Duplo -trein
Hout Bluetooth -afstandsbediening vir Lego Duplo -trein

My kinders was mal oor hierdie klein Lego Duplo -trein, veral my jongste wat sukkel om met woorde te kommunikeer, so ek wou vir haar iets bou wat haar sou help om onafhanklik van volwassenes of telefone/tablette met die trein te speel. Iets wat 'n ekstra dimensie aan die trein sou gee en dit ekstra speelwaarde sou gee

Die Lego -stel het reeds 'n paar maniere om die trein te beheer; u kan dit vorentoe stoot om te begin en hou om dit te stop; u kan dit beheer met behulp van kleuretikette wat op die spoor gaan, dus wanneer die trein daaroor ry, word verskillende aksies veroorsaak, dws vorentoe, agteruit, speelgeluide, skakel die ligte aan. U kan ook 'n app vir u telefoon of tablet aflaai wat via Bluetooth met die trein kan skakel.

Hier is 'n volledige oorsig van die trein

Nadat ek op die internet rondgejaag het, het ek gevind dat daar baie min mense was wat al die geskrewe kode gereed gehad het om die trein te beheer. Die 'Poweredup'-knoop wat deur nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) geskryf is, het soos 'n perfekte begin gelyk. Dit is geskryf met behulp van Javascript waarvan ek nie gedeeltelik vertroud was nie, maar ek het gedink as ek As u 'n java -gebaseerde mikroskyfie kan vind, is dit 'n goeie begin.

Nadat ek weer op die internet rondgejaag het, het ek die espruino -stelsel gevind, dit is soortgelyk aan die ardiuno, maar gebaseer op javascript. Die espriuno -kode kan op 'n MDBT42Q -mircochip gelaai word wat met Bluetooth ingebed is. Ek het gedink dat as ek die 'ingeskakelde' module kan laai, ek halfpad daar sou wees, maar dit was eenvoudig nie die geval nie, maar die module bevat in baie groot biblioteke om op die MDBT42Q te laai, so dit lyk asof ek moet vind 'n eenvoudiger oplossing …

Stap 1: Die kode

Die kode
Die kode

Esprinuo

Vir diegene wat nie die Espruino -platform ken nie https://www.espruino.com (en ek het nie) is dit baie soortgelyk aan die Arduino; daar is 'n paar belangrike verskille wat dit vir javascript geskryf het, eerder c, dit voel effens nuwer so daar is voorbeelde, maar die ondersteuning via die forums is baie en baie nuttig.

Javascript ontmoet die trein

Die eerste struikelblok was om via Bluetooth met die trein te skakel. Dit kan gedoen word met behulp van die NRF -klas waarmee die espruino -kode gestuur word.

NRF.connect kan gebruik word om met die trein te skakel, maar u moet eers die adres van die trein self vind, u kan NRF.findDevices gebruik om hierdie inligting te kry

Sodra u dit gedoen het, moet u die trein twee waarde stuur om met die trein te handdruk, vir my trein was dit "00001623-1212-efde-1623-785feabcd123" gevolg deur "00001624-1212-efde-1623-785feabcd123" ek glo dit sal dieselfde wees vir alle stoomtreine, maar die ander weergawes, dws die vragstel, kan anders wees

Sodra u dit het, kan u die trein verbind met behulp van die funksie soos die volgende. Kan u weet wanneer die trein aansluit, want dit sal die kopligte blou blits

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

console.log ("Begin met verbinding2"); gatt = g; terugkeer gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). dan (funksie (diens) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). dan) (funksie (kenmerk) {Characteristic_store = kenmerkend; return characterist.readValue ();}).dan (waarde => {console.log (waarde);}). dan (funksie () {console.log ("Train Connected"); connected = 1;

Die lekker dinge

As u nou aan die trein gekoppel is, is dit tyd vir al die lekker dinge, soos om dit vorentoe te beweeg, geluid te maak en die lig aan en af te skakel. Dit is 'n eenvoudige taak om die trein 'n voorafwaarde te stuur, gevolg deur die werklike opdrag, dws

funksie play_horn () {

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

Miskien moet u 'n bietjie gaan soek om 'n ander opdrag te vind as die wat ek gebruik het

Knoppies en hefbome

Die fisiese kant van die afstandsbediening is vier knoppies reguit vorentoe (om klanke te speel, die ligte aan en uit te skakel) en 'n potensiometer wat aan die hefboom gekoppel is, sodat u die spoed en rigting van die trein kan beheer

Die knoppie het nie 'n optrekweerstand nodig nie, maar u kan dit in kode doen, dws

pinMode (D15, 'input_pulldown');

U kan die potensiometer aan een van die insette koppel en dit dan die analoog sein lees deur die volgende opdrag te gebruik

var lees = analogRead (D31);

Die ander verskil met die arduino is dat esprunio nie 'n opstelling en lus het nie. Dus plaas ek al die afsonderlike opdrag/snellers in funksies en stel dan setInterval op wat elke 100 millisekondes loop, luister na die knoppie en voer dan die vereiste funksie uit as die knoppie ingedruk is.

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

Die hantering van die hefboom was 'n bietjie meer ingewikkeld, omdat ek die snelheid geleidelik wou aanpas, sodat ek eers die analoogwaarde moes stuur om te funksioneer

var lees = analogRead (D31);

trein_rigting (lees * 1024);

Toe het ek in die train_direction -funksie die opdrag in 6 verskillende stappe verdeel, gebaseer op die potwaarde

Heeltemal op, vertel die trein om voluit te ry

Halfpad op, vertel die trein om met 50% spoed vorentoe te gaan

Middel, vertel die trein om te stop

Halfpad af, vertel die trein om met 50% spoed agteruit te gaan

Heeltemal af, vertel die trein om voluit in trurat te ry

ie

funksie train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = nuwe Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = nuwe Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); as (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = nuwe 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);}); }

Die volledige kode kan onder die skakel hieronder wees

Stap 2: Die bedrading

Die bedrading
Die bedrading
Die bedrading
Die bedrading

Die bedrading was die eenvoudigste deel

Dit het net bestaan uit 4 drukknoppies wat gekoppel is aan D15, D16, D17 en D18 sonder enige optelweerstand, aangesien dit in die kode gedoen is en 1 10k weerstand gekoppel aan D31

Ek werk nog steeds aan die kragtoevoer, maar tans kom al die krag uit 'n mikro -usb -uitbraak, en dit kan direk aan 'n kragbank of 'n USB -poort gekoppel word

Stap 3: Die bou

Die bou
Die bou
Die bou
Die bou
Die bou
Die bou
Die bou
Die bou

Die afstandsbediening bestaan meestal uit 3 mm, 6 mm of 9 mm A4 -velle laaghout, maar dit is op my CNC -masjien gesny, maar volgens die voorgeskrewe sjabloon sou ek dit nie met die hand kon doen nie

Ek hoop dat die sjabloon en foto's u alles sal gee wat u nodig het om te herskep, maar daar is 'n paar aantekeninge wat kan help

Die 3 mm -drukknop -houer is om die drukknoppie aan te druk, die gaping plaas die knoppie op die regte plek, maar ons gee u toegang tot die been op die rug sodat u aan die mikroskyfie kan soldeer; aan die agterkant kan u ook die MDBT42Q monteer bietjie gom gebruik. Aan die voorkant moet u so skuim byvoeg, sodat die knoppies 'n bietjie weerkaats as u dit afdruk, maar u kan ook vere gebruik

9 mm -knoppies het die logo, verf, gravure of iets anders nodig om te wys watter knoppie doen

Die hefboom/handvatsel moet in 'n laag vasgemaak word; ek het 'n 6 mm -plug gebruik om hulle in al die regte posisies in lyn te bring

Aanbeveel: