Satura rādītājs:

Koka Bluetooth tālvadības pults Lego Duplo vilcienam: 3 soļi (ar attēliem)
Koka Bluetooth tālvadības pults Lego Duplo vilcienam: 3 soļi (ar attēliem)

Video: Koka Bluetooth tālvadības pults Lego Duplo vilcienam: 3 soļi (ar attēliem)

Video: Koka Bluetooth tālvadības pults Lego Duplo vilcienam: 3 soļi (ar attēliem)
Video: FULL BUILD | Rebuilding A DESTROYED Porsche 911 Turbo! 2024, Novembris
Anonim
Koka Bluetooth tālvadības pults Lego Duplo vilcienam
Koka Bluetooth tālvadības pults Lego Duplo vilcienam
Koka Bluetooth tālvadības pults Lego Duplo vilcienam
Koka Bluetooth tālvadības pults Lego Duplo vilcienam

Maniem bērniem patika šis mazais Lego Duplo vilciens, it īpaši manam jaunākajam, kurš cenšas sazināties ar vārdiem, tāpēc es gribēju viņai uzbūvēt kaut ko tādu, kas palīdzētu viņai spēlēt ar vilcienu neatkarīgi no pieaugušajiem vai tālruņiem/planšetdatoriem. Kaut kas vilcienam pievienotu papildu dimensiju un piešķirtu tai papildu spēles vērtību

Lego komplektam jau ir maz veidu, kā vadīt vilcienu, jūs varat to virzīt uz priekšu, lai sāktu, un turiet to, lai to apturētu, jūs varat to kontrolēt, izmantojot krāsu tagus, kas iet uz sliežu ceļa, tāpēc, kad vilciens iet tam pāri, tas izraisa dažādas darbības, ti uz priekšu, atpakaļ, atskaņot skaņas ieslēdz gaismas. Varat arī lejupielādēt lietotni savam tālrunim vai planšetdatoram, kas var izveidot savienojumu ar vilcienu, izmantojot Bluetooth.

Šeit ir pilns vilciena apskats

Pēc medībām internetā es atklāju, ka tur bija diezgan maz dažādu cilvēku, kuriem bija gatavs rakstīts kods vilciena vadīšanai. Mezgls “Poweredup”, ko uzrakstījis nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/), izskatījās kā ideāls sākums. Tas tika uzrakstīts, izmantojot Javascript, kas man nebija daļēji pazīstams, bet domāju, vai es varētu atrast mikroshēmu, kuras pamatā ir java, tas būtu labs sākums.

Atkal pēc medībām internetā es atkal atradu espruino sistēmu, šī ir līdzīga ardiuno, bet balstās uz javascript. Espriuno kodu varēja ielādēt MDBT42Q mircochip, kurā bija iegults Bluetooth. Es domāju, ka, ja es varētu ielādēt “ieslēgto” moduli, es būtu pusceļā, taču tas nebija tik vienkārši, ja modulis daudzās bibliotēkās bija liels, lai ielādētu MDBT42Q, tāpēc šķiet, ka man tas ir jādara atrast vienkāršāku risinājumu …

1. darbība: kods

Kods
Kods

Esprinuo

Tiem, kas nezina Espruino platformu https://www.espruino.com (un es to nezināju), vai tā ir ļoti līdzīga Arduino, ir dažas galvenās atšķirības, viena tā ir uzrakstīta javascript, drīzāk c, tā šķiet nedaudz jaunāka tāpēc nav piemēru, tomēr atbalsts, izmantojot forumus, ir lielisks un ļoti noderīgs.

Javascript satikt vilcienu

Pirmais šķērslis bija izveidot savienojumu ar vilcienu, izmantojot Bluetooth. To var izdarīt, izmantojot NRF klasi, kas tiek piegādāta ar espruino kodu.

NRF.connect var izmantot, lai izveidotu savienojumu ar vilcienu, tomēr, ja vispirms ir jāatrod paša vilciena adrese, šīs informācijas iegūšanai varat izmantot NRF.findDevices.

Kad esat to izdarījis, vilciens jāsūta rokasspiedienam ar vilcienu divas vērtības, manam vilcienam tas bija "00001623-1212-efde-1623-785feabcd123", kam sekoja "00001624-1212-efde-1623-785feabcd123". tas būs vienāds visiem tvaika vilcienu komplektiem, bet pārējās versijas, ti, kravas komplekts var būt atšķirīgs

Kad tas ir izdarīts, jūs varat savienot vilcienu, izmantojot šādu funkciju: vai jūs varat pateikt, kad vilciens ir savienots, jo tas mirgos, lukturi ir zili

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

console.log ("Savienojuma uzsākšana2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). tad (funkcija (pakalpojums) {atgriešanās pakalpojums.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}).).tad (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

Jautras lietas

Tagad esat izveidojis savienojumu ar vilcienu, ir pienācis laiks visām jautrajām lietām, piemēram, virzīt to uz priekšu, radīt skaņu un ieslēgt un izslēgt gaismu. Vienkāršs uzdevums ir nosūtīt vilcienam sagatavošanas vērtību, kam seko faktiskā komanda, ti

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]); Characteristic_store.writeValue (prepval).tad (_ => {Characteristic_store.writeValue (sendvalue);}); }

Lai atrastu citu komandu, nevis tās, kuras es izmantoju, jums, iespējams, būs nedaudz jāraka apkārt

Pogas un sviras

Tālvadības pults fiziskā puse ir ļoti taisni uz priekšu četras pogas (lai atskaņotu skaņas, ieslēdziet un izslēdziet gaismas) un viens potenciometrs, kas ir savienots ar sviru, lai jūs varētu kontrolēt vilciena ātrumu un virzienu

Pogai nav nepieciešams uzvilkts rezistors, tā vietā to var izdarīt ar kodu, ti

pinMode (D15, 'input_pulldown');

Jūs varat savienot potenciometru ar kādu no ieejām un pēc tam nolasīt analogo signālu, izmantojot šādu komandu

var lasījums = analogRead (D31);

Otra atšķirība no arduino ir tā, ka esprunio nav iestatījumu un cilpas. Tā vietā es ievietoju visas atsevišķās komandas/aktivizētājus funkcijās un pēc tam iestatīju setInterval, kas atkārtojas ik pēc 100 milisekundēm, klausoties pogu un pēc tam nospiežot vajadzīgo funkciju.

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

Darbība ar sviru bija nedaudz sarežģītāka, jo es vēlējos pakāpeniski pielāgot ātrumu, tāpēc vispirms man bija jānosūta analogā vērtība, lai tā darbotos

var lasījums = analogRead (D31);

vilciena_virziens (lasīšana * 1024);

Tad funkcijā train_direction es sadalīju komandu līdz 6 dažādiem soļiem, pamatojoties uz katla vērtību

Visu ceļu uz augšu, saka vilcienam iet pilnā ātrumā

Pusceļā uz augšu, saka vilcienam iet uz priekšu ar 50% ātrumu

Vidū, liek vilcienam apstāties

Pusceļā saka, lai vilciens brauc atpakaļgaitā ar 50% ātrumu

Līdz galam nosaka, ka vilciens brauc atpakaļgaitā pilnā ātrumā

ti

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]); ja (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } ja (dir_val 200) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } ja (dir_val 100) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } ja (dir_val {Raksturīgs_veikals.writeValue (nosūtīšanas vērtība);}); }

Pilnu kodu var atrast zemāk esošajai saitei

2. solis: elektroinstalācija

Elektroinstalācija
Elektroinstalācija
Elektroinstalācija
Elektroinstalācija

Elektroinstalācija bija vienkāršākā daļa

Tas tikai sastāvēja no 4 spiedpogām, kas savienotas ar D15, D16, D17 un D18 bez izvelkama pretestības, kā tas tika darīts kodā, un 1 10k rezistoru, kas savienots ar D31

Es joprojām strādāju pie barošanas avota, bet šobrīd visa jauda tiek iegūta no mikro usb pārtraukuma, un to varētu pievienot tieši strāvas bankai vai USB portam

3. solis: uzbūve

Būvēt
Būvēt
Būvēt
Būvēt
Būvēt
Būvēt
Būvēt
Būvēt

Tālvadības pults lielākoties ir izgatavota no 3 mm, 6 mm vai 9 mm A4 saplākšņa loksnēm; tās tika sagrieztas manā CNC mašīnā, tomēr, izmantojot norādīto veidni, es to darītu, lai gan tas nebūtu neiespējami to izdarīt ar rokām

Es ceru, ka veidne un fotoattēli sniegs jums visu nepieciešamo pārtaisīšanai, taču ir dažas piezīmes, kas varētu palīdzēt

3 mm spiedpogas stiprinājums ir paredzēts spiedpogas piestiprināšanai, atstarpe novieto pogu pareizā vietā, bet mēs ļaujam piekļūt aizmugurē esošajai kājai, lai jūs varētu pielodēt mikroshēmu, bet aizmugurē - arī MDBT42Q izmantojot kādu līmi. Priekšpusē jums būs jāpievieno tik putas, lai pogas nedaudz atlec, nospiežot tās uz leju, jūs varētu izmantot arī atsperes

9 mm pogām būs nepieciešama logotipa krāsa, gravējums vai kaut kas cits, lai parādītu, kura poga ko dara

Svira/rokturis būs jāslāņo, es izmantoju 6 mm dībeli, lai palīdzētu tos izlīdzināt visās pareizajās pozīcijās

Ieteicams: