Turinys:

Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“: 3 žingsniai (su nuotraukomis)
Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“: 3 žingsniai (su nuotraukomis)

Video: Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“: 3 žingsniai (su nuotraukomis)

Video: Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“: 3 žingsniai (su nuotraukomis)
Video: Remote control car with ESP32 fully 3D printed chassis! 2024, Lapkritis
Anonim
Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“
Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“
Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“
Medinis „Bluetooth“nuotolinio valdymo pultas „Lego Duplo Train“

Mano vaikams patiko šis mažas „Lego Duplo“traukinys, ypač mano jauniausiam, kuris stengiasi bendrauti žodžiais, todėl norėjau jai sukurti kažką, kas padėtų jai žaisti su traukiniu nepriklausomai nuo suaugusiųjų ar telefonų/planšetinių kompiuterių. Kažkas, kas traukiniui suteiktų papildomos dimensijos ir suteiktų papildomos žaidimo vertės

„Lego“rinkinyje jau yra nedaug būdų valdyti traukinį, galite jį pastumti į priekį, kad paleistumėte, ir laikykite nuspaudę, kad jį sustabdytumėte, galite valdyti naudodami spalvotus ženklus, einančius ant bėgių kelio, todėl traukiniui jį pravažiavus, atliekami skirtingi veiksmai, t. į priekį, atgal, groti garsai įjungia šviesas. Taip pat galite atsisiųsti savo telefonui ar planšetiniam kompiuteriui skirtą programą, kuri gali prisijungti prie traukinio per „Bluetooth“.

Čia yra visa traukinio apžvalga

Po medžioklės internete radau, kad ten buvo gana mažai skirtingų žmonių, kurie turėjo parengtą kodą traukiniui valdyti. „Poweredup“mazgas, parašytas nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/), atrodė kaip tobula pradžia. Jis buvo parašytas naudojant „Javascript“, su kuriuo aš iš dalies nesu susipažinęs, bet pagalvojau, ar aš būtų galima rasti java pagrindu pagamintą mikroschemą, tai būtų gera pradžia.

Vėl po medžioklės internete vėl radau espruino sistemą, kuri yra panaši į ardiuno, bet pagrįsta javascript. Espriuno kodą galima įkelti į „MDBT42Q Mircochip“, įterptą į „Bluetooth“. Maniau, kad jei galėčiau į jį įkelti „įjungtą“modulį, būčiau pusiaukelėje, tačiau tai nebuvo taip paprasta, nes modulis buvo daugelyje bibliotekų, kad būtų galima įkelti į MDBT42Q, todėl atrodo, kad turiu rasti paprastesnį sprendimą …

1 žingsnis: Kodas

Kodas
Kodas

Esprinuo

Tiems, kurie nežino „Espruino“platformos https://www.espruino.com (o aš to nežinojau), ar ji labai panaši į „Arduino“, yra keletas pagrindinių skirtumų, vienas, kurį jis parašė „javascript“, o c, atrodo šiek tiek naujesnis Taigi, kad nebūtų pavyzdžių, tačiau palaikymas forumuose yra puikus ir labai naudingas.

„Javascript“susitinka su traukiniu

Pirmoji kliūtis buvo prisijungti prie traukinio per „Bluetooth“. Tai galima padaryti naudojant NRF klasę, kuri siunčiama su espruino kodu.

„NRF.connect“gali būti naudojamas prisijungti prie traukinio, tačiau pirmiausia reikia rasti paties traukinio adresą, norėdami gauti šią informaciją, galite naudoti „NRF.findDevices“.

Kai tai padarysite, turite nusiųsti traukiniui dvi vertes, kad paspaustumėte ranką su traukiniu, mano traukiniui tai buvo „00001623-1212-efde-1623-785feabcd123“, o po to-„00001624-1212-efde-1623-785feabcd123“. tai bus vienoda visiems garo traukiniams, tačiau kitos versijos, ty krovinių komplektas, gali skirtis

Kai tai padarysite, galėsite prijungti traukinį naudodami tokią funkciją, kaip nurodyta toliau, ar galite pasakyti, kada traukinys prisijungs, nes mirksės priekiniai žibintai

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

console.log ("Pradedant jungtis2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). tada (funkcija (paslauga) {grąžinimo paslauga.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}).). Tada (vertė => {console.log (vertė);}). tada (funkcija () {console.log („Traukinys prijungtas“); prijungtas = 1;

Linksmi dalykai

Dabar prisijungę prie traukinio atėjo laikas visiems linksmiems dalykams, pavyzdžiui, judėti į priekį, skleisti garsą ir įjungti bei išjungti šviesą. Paprastas darbas nusiųsti traukiniui parengiamąją vertę, po kurios seka faktinė komanda, t

funkcija 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]); Charakteristika_store.writeValue (paruošiamasis).tada (_ => {Charakteristika_parduotuvė.rašo vertė (siuntimo vertė);}); }

Jums gali tekti šiek tiek pasigilinti, kad surastumėte kitą komandą, nei aš naudoju

Mygtukai ir svirtys

Fizinė nuotolinio valdymo pulto pusė yra labai tiesiai į priekį keturi mygtukai (norint atkurti garsus, įjungti ir išjungti šviesas) ir vienas potenciometras, prijungtas prie svirties, kad galėtumėte valdyti traukinio greitį ir kryptį

Mygtukui nereikia pakelti rezistoriaus, o tai galite padaryti kodu, ty

pinMode (D15, 'input_pulldown');

Galite prijungti potenciometrą prie vieno iš įėjimų ir nuskaityti analoginį signalą naudodami šią komandą

var skaitymas = analogRead (D31);

Kitas skirtumas nuo arduino yra tas, kad esprunio neturi sąrankos ir kilpos. Taigi vietoj to aš visas atskiras komandas/aktyviklius įdedu į funkcijas ir tada nustatau „setInterval“, kuris kartojasi kas 100 milisekundžių, klausydamasis mygtuko ir paleisdamas reikiamą funkciją, kai mygtukas bus paspaustas.

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

Valdymas svirtimi buvo šiek tiek sudėtingesnis, nes norėjosi palaipsniui reguliuoti greitį, todėl pirmiausia turėjau nusiųsti analoginę vertę

var skaitymas = analogRead (D31);

traukinio_direkcija (skaitymas * 1024);

Tada funkcijoje train_direction aš suskirstiau komandą į 6 skirtingus žingsnius, atsižvelgiant į puodo vertę

Iki galo liepia traukiniui važiuoti visu greičiu

Įpusėjus, liepia traukiniui važiuoti pirmyn 50% greičiu

Vidurys, liepia traukiniui sustoti

Pusiaukelėje nurodo traukiniui važiuoti atgal 50% greičiu

Iki galo liepia traukiniui važiuoti visu greičiu atbuline eiga

t.y

funkcija 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 {Charakteristika_store.writeValue (siuntimo vertė);}); }

Visas kodas gali būti pateiktas žemiau esančioje nuorodoje

2 žingsnis: laidai

Laidai
Laidai
Laidai
Laidai

Elektros instaliacija buvo paprasčiausia dalis

Jį sudarė tik 4 mygtukai, prijungti prie D15, D16, D17 ir D18, be ištraukiamojo rezistoriaus, nes tai buvo padaryta kode ir 1 10 000 rezistorius, prijungtas prie D31.

Aš vis dar dirbu prie maitinimo šaltinio, tačiau šiuo metu visa energija gaunama iš „micro usb“pertraukos ir tai gali būti prijungta tiesiai prie maitinimo banko arba USB prievado

3 žingsnis: sukurkite

Statyti
Statyti
Statyti
Statyti
Statyti
Statyti
Statyti
Statyti

Nuotolinio valdymo pultas dažniausiai pagamintas iš 3 mm, 6 mm arba 9 mm A4 faneros lapų, jie buvo supjaustyti mano CNC mašinoje, tačiau naudojant pateiktą šabloną norėčiau, nors tai nebūtų neįmanoma padaryti ranka

Tikiuosi, kad šablonas ir nuotraukos suteiks jums viską, ko reikia perdaryti, tačiau yra keletas pastabų, kurios gali padėti

3 mm stūmoklio laikiklis skirtas mygtuko laikymui, tarpas nustatys mygtuką tinkamoje vietoje, tačiau mes leidžiame pasiekti koją ant nugaros, kad galėtumėte lituoti prie mikroschemos, o atgal - MDBT42Q naudojant šiek tiek klijų. Priekyje turėsite pridėti putų, kad mygtukai šiek tiek atšoktų, kai juos paspausite, taip pat galite naudoti spyruokles

9 mm mygtukams reikės logotipo dažų, graviūrų ar kažko kito, kad parodytų, koks mygtukas ką daro

Svirtį/rankeną reikės sluoksniuoti, aš panaudojau 6 mm kaištį, kad padėčiau juos sulyginti visose teisingose padėtyse

Rekomenduojamas: