Talaan ng mga Nilalaman:

Wooden Bluetooth Remote para sa Lego Duplo Train: 3 Hakbang (na may Mga Larawan)
Wooden Bluetooth Remote para sa Lego Duplo Train: 3 Hakbang (na may Mga Larawan)

Video: Wooden Bluetooth Remote para sa Lego Duplo Train: 3 Hakbang (na may Mga Larawan)

Video: Wooden Bluetooth Remote para sa Lego Duplo Train: 3 Hakbang (na may Mga Larawan)
Video: Bullet Train ๐Ÿš… 3d Special effects | 3d animation | future technology imagination 2024, Nobyembre
Anonim
Wooden Bluetooth Remote para sa Lego Duplo Train
Wooden Bluetooth Remote para sa Lego Duplo Train
Wooden Bluetooth Remote para sa Lego Duplo Train
Wooden Bluetooth Remote para sa Lego Duplo Train

Gustung-gusto ng aking mga anak ang maliit na pagsasanay ng Lego Duplo partikular ang aking bunso na nagpupumilit na makipag-usap sa kanyang sarili sa mga salita kaya nais kong bumuo sa kanya ng isang bagay na makakatulong sa kanya na maglaro ng tren nang nakapag-iisa ng mga may sapat na gulang o telepono / tablet. Isang bagay na magdagdag ng isang labis na sukat sa tren at bibigyan ito ng karagdagang halaga ng paglalaro

Ang set ng Lego ay mayroon nang ilang paraan upang makontrol ang tren, maaari mo itong itulak upang simulan at hawakan ito upang pigilan ito, maaari mong kontrolin ito gamit ang mga tag ng kulay na pupunta sa track kaya kapag naipasa ito ng tren ay nag-uudyok ito ng iba't ibang mga pagkilos ie pasulong, baligtarin, i-play ang mga tunog buksan ang mga ilaw. Maaari ka ring mag-download ng isang app para sa iyong telepono o tablet na maaaring kumonekta sa tren sa pamamagitan ng bluetooth.

Narito ang isang buong pagsusuri ng tren

Matapos ang pangangaso sa internet nahanap ko doon mayroong ilang iba't ibang mga tao na handa nang nakasulat na code upang makontrol ang tren. Ang 'Poweredup' node na sinulat ni nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) ay mukhang isang perpektong nagsimula, Ito ay nakasulat gamit ang Javascript na hindi ko pamilyar na pamilyar ngunit naisip ko kung maaaring makahanap ng java based microchip, ito ay magiging isang magandang pagsisimula.

Muli pagkatapos ng pangangaso sa internet muli nakita ko ang espruino system, ito ay katulad ng ardiuno ngunit base sa paligid ng javascript. Ang code ng espriuno ay maaaring mai-load sa isang MDBT42Q mircochip na may blu-embed. Naisip ko kung mai-load ko ang "pinalakas" na module dito magiging kalahating daan ako roon, subalit ang simpleng ito ay hindi kaso isang module na nilalaman sa maraming mga aklatan hanggang sa malalaking mai-load sa MDBT42Q, kaya tila kailangan kong makahanap ng isang mas simpleng solusyon โ€ฆ.

Hakbang 1: Ang Code

Ang Code
Ang Code

Esprinuo

Para sa mga hindi alam ang platform ng Espruino https://www.espruino.com (at hindi ko alam) ito ba ay halos kapareho ng Arduino, Mayroong ilang pangunahing pagkakaiba sa isa na isinulat nito para sa javascript sa halip na c, Mas bahagyang nararamdaman kaya't baka may mga halimbawa subalit ang suporta sa pamamagitan ng mga forum ay malaki at lubos na kapaki-pakinabang.

Javascript matugunan ang tren

Ang unang sagabal ay upang kumonekta sa tren sa pamamagitan ng bluetooth, Maaari itong magawa gamit ang klase ng NRF na ipinadala sa espruino code.

Ang NRF.connect ay maaaring magamit upang kumonekta sa tren subalit ang iyong unang kailangan upang hanapin ang address ng tren mismo, maaari mong gamitin ang NRF.findDevices upang makuha ang impormasyong ito

Kapag nagawa mo ito kailangan mong magpadala ng dalawang halaga sa tren upang makipagkamay sa tren, para sa aking tren ito ay "00001623-1212-efde-1623-785feabcd123" sinundan ng "00001624-1212-efde-1623-785feabcd123" Naniniwala ako magiging pareho ito para sa lahat ng itinakda ang mga tren ng singaw ngunit ang iba pang mga bersyon ibig sabihin ay ang hanay ng kargamento ay maaaring magkakaiba

Kapag mayroon ka nito maaari mong ikonekta ang tren gamit ang pag-andar tulad ng sumusunod, maaari mo bang sabihin kapag ang tren ay kumonekta dahil ito ay i-flash ito asul na mga ilaw

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

console.log ("Simula sa pagkonekta2"); gatt = g; ibalik ang gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). pagkatapos (pagpapaandar (serbisyo) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). pagkatapos (pagpapaandar (katangian) {Characteristic_store = katangian; ibalik ang katangian.readValue ();}).tapos (halaga => {console.log (halaga);}). pagkatapos (function () {console.log ("Konektado sa Tren"); konektado = 1;

Ang nakakatuwa bagay

Ngayon ay nakakonekta ka sa tren oras na para sa lahat ng mga nakakatuwang bagay tulad ng paglipat nito, paggawa ng tunog at pag-on at pag-off ng ilaw. Ito ay simpleng trabaho ng pagpapadala ng tren ng isang prep halaga, na sinusundan ng aktwal na utos hal

function play_horn () {

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

Maaaring kailanganin mong gumawa ng kaunting paghuhukay upang makahanap ng iba pang utos kaysa sa ginamit ko

Mga Pindutan at Levers

Ang pisikal na bahagi ng remote ay tuwid na pasulong sa apat na mga pindutan (upang i-play ang mga tunog, i-on at i-off ang mga ilaw) at isang potensyomiter na kumonekta sa pingga upang makontrol mo ang bilis at direksyon ng tren

Ang pindutan ay hindi kailangan ng pull up risistor sa halip magagawa mo ito sa code, ibig sabihin

pinMode (D15, 'input_pulldown');

Maaari mong ikonekta ang potentiometer sa isa sa mga input at pagkatapos ay basahin ito ang analog signal gamit ang sumusunod na utos

pagbasa ng var = analogRead (D31);

Ang iba pang pagkakaiba sa arduino ay ang esprunio na walang setup at loop. Kaya't sa halip ay inilalagay ko ang lahat ng magkakahiwalay na utos / pag-trigger sa mga pagpapaandar at pagkatapos ay i-set up ang setInterval na loop sa bawat 100 milliseconds, pakikinig sa pindutan pagkatapos ay patakbuhin ang kinakailangang pag-andar kapag ang pindutan ay pinindot.

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

Ang pag-aksyon sa pingga ay mas kumplikado dahil nais na ma-incrementally ayusin ang bilis kaya kailangan ko munang ipadala ang analog na halaga upang gumana

pagbasa ng var = analogRead (D31);

train_direction (pagbabasa * 1024);

Pagkatapos sa pagpapaandar ng tren_direction ay sinira ko ang utos sa 6 na magkakaibang mga pagtaas batay sa halaga ng palayok

Lahat ng paraan, sasabihin sa tren na magpatuloy sa buong bilis

Half way up, sasabihin sa tren na magpatuloy sa 50% na bilis

Gitna, sinasabi sa tren na huminto

Half way down, sasabihin sa tren na paatras sa 50% na bilis

Lahat ng mga paraan pababa, sasabihin sa tren na pumunta sa buong bilis ng pabaliktad

ibig sabihin

pagpapaandar ng train_direction (dir_val) {

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

Ang buong code ay maaaring maging down para sa link sa ibaba

Hakbang 2: Ang Mga Kable

Ang Kable
Ang Kable
Ang Kable
Ang Kable

Ang mga kable ay ang pinakasimpleng bahagi

Ito ay binubuo lamang sa 4 na pindutan ng push na konektado sa D15, D16, D17 at D18 nang walang anumang pull up risistor dahil ginawa ito sa code at 1 10k risistor na konektado sa D31

Nagtatrabaho pa rin ako sa suplay ng kuryente ngunit sa kasalukuyan lahat ng lakas ay nagmumula sa isang micro usb breakout at maaari silang direktang konektado sa isang power bank o isang USB port

Hakbang 3: Ang Build

Ang Build
Ang Build
Ang Build
Ang Build
Ang Build
Ang Build
Ang Build
Ang Build

Ang remote ay halos wala sa 3mm, 6mm o 9mm A4 na mga sheet ng playwud, Sila kung saan gupitin sa aking makina ng CNC gayunpaman gamit ang template na ibinigay ay gagawin ko kahit na hindi imposibleng gawin ito ng kamay

Inaasahan kong ang template at mga larawan ay magbibigay sa iyo ng lahat ng kailangan mo upang muling gawin ngunit may ilang mga tala na maaaring makatulong

Ang mount ng 3mm Push Button ay para sa pagdikit ng pindutan ng itulak, ilalagay ng puwang ang pindutan sa tamang lugar ngunit pinapayagan kang ma-access ang binti sa likod upang maaari kang maghinang sa microchip, sa reverse maaari mo ring mai-mount ang MDBT42Q gamit ang ilang pandikit. Sa harap kakailanganin mong idagdag kaya foam kaya nagbibigay ito ng kaunting bounce sa mga pindutan kapag pinindot mo ang mga ito maaari mo ring gamitin ang mga bukal

9mm na mga pindutan ang kakailanganin ng pintura ng logo, pag-ukit o iba pa upang maipakita kung anong pindutan ang ginagawa

Ang Lever / Handle ay kailangang i-layer, gumamit ako ng isang 6mm dowel upang matulungan silang ihanay ang mga ito sa lahat ng wastong posisyon

Inirerekumendang: