Orodha ya maudhui:

Kijijini cha Bluetooth cha Mbao cha Treni ya Lego Duplo: Hatua 3 (na Picha)
Kijijini cha Bluetooth cha Mbao cha Treni ya Lego Duplo: Hatua 3 (na Picha)

Video: Kijijini cha Bluetooth cha Mbao cha Treni ya Lego Duplo: Hatua 3 (na Picha)

Video: Kijijini cha Bluetooth cha Mbao cha Treni ya Lego Duplo: Hatua 3 (na Picha)
Video: Джон Уэйн | Маклинток! (1963) вестерн, комедия | Полный фильм 2024, Novemba
Anonim
Kijijini cha Bluetooth cha Mbao kwa Treni ya Lego Duplo
Kijijini cha Bluetooth cha Mbao kwa Treni ya Lego Duplo
Kijijini cha Bluetooth cha Mbao kwa Treni ya Lego Duplo
Kijijini cha Bluetooth cha Mbao kwa Treni ya Lego Duplo

Watoto wangu walipenda treni hii ndogo ya Lego Duplo haswa mdogo wangu ambaye anajitahidi kuwasiliana mwenyewe na maneno kwa hivyo nilitaka kumjengea kitu ambacho kitamsaidia kucheza na gari moshi bila watu wazima au simu / vidonge. Kitu ambacho kingeongeza mwelekeo zaidi kwa gari moshi na kuipatia thamani ya kucheza

Seti ya Lego tayari ina njia chache ya kudhibiti gari moshi, unaweza kuisukuma mbele ili kuianza na kuishikilia ili kuizuia, unaweza kuidhibiti kwa kutumia vitambulisho vya rangi ambavyo huenda kwenye wimbo kwa hivyo wakati treni inapopita juu yake husababisha vitendo tofauti yaani. mbele, kugeuza nyuma, kucheza sauti kuwasha taa. Unaweza pia kupakua programu kwa ajili yako simu au kompyuta kibao ambayo inaweza kuungana na gari moshi kupitia Bluetooth.

Hapa ukaguzi kamili wa gari moshi

Baada ya kuwinda kwenye wavuti niligundua kulikuwa na watu wachache tofauti ambao walikuwa na nambari zote zilizoandikwa tayari kudhibiti gari moshi. Nodi ya 'Poweredup' iliyoandikwa na nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) ilionekana kama imeanza kabisa, Iliandikwa kwa kutumia Javascript ambayo sikuwa naifahamu sana lakini nilifikiri ikiwa inaweza kupata microchip msingi java, huu utakuwa mwanzo mzuri.

Tena baada ya kuwinda kwenye wavuti tena nikapata mfumo wa espruino, hii ni sawa na ardiuno lakini msingi karibu na javascript. Nambari ya espriuno inaweza kupakiwa kwenye mircochip ya MDBT42Q ambayo ilikuwa na upachikaji wa Bluetooth. Nilidhani ikiwa ningeweza kupakia moduli "iliyowezeshwa" kwa hiyo ningefika nusu, lakini hii rahisi haikuwa kesi moduli iliyokuwa na maktaba nyingi kubwa kupakia kwenye MDBT42Q, kwa hivyo inaonekana lazima pata suluhisho rahisi….

Hatua ya 1: Kanuni

Kanuni
Kanuni

Esprinuo

Kwa wale ambao hawajui jukwaa la Espruino https://www.espruino.com (na sikujua) ni sawa na Arduino, Kuna tofauti kuu moja iliyoandikwa kwa javascript badala ya c, Inahisi mpya zaidi kwa hivyo kuna isije mifano hata hivyo msaada kupitia vikao ni nzuri na husaidia sana.

Javascript kukutana na treni

Kikwazo cha kwanza kilikuwa kuungana na gari moshi kupitia bluetooth, Hii inaweza kufanywa kwa kutumia darasa la NRF ambalo linasafiri na nambari ya espruino.

Unganisho la NRF linaweza kutumiwa kuungana na gari moshi hata hivyo hitaji lako la kwanza kupata anwani ya gari moshi yenyewe, unaweza kutumia NRF.findDevices kupata habari hii

Mara tu unapofanya hivi basi unahitaji kutuma gari moshi thamani mbili kushikana mkono na gari moshi, kwa treni yangu hii ilikuwa "00001623-1212-efde-1623-785feabcd123" ikifuatiwa na "00001624-1212-efde-1623-785feabcd123" naamini hii itakuwa sawa kwa treni zote za mvuke zilizowekwa lakini matoleo mengine yaani mzigo umewekwa labda tofauti

Mara tu unapokuwa na hii unaweza kuunganisha gari moshi ukitumia kazi kama ifuatayo, je! Unaweza kujua wakati treni imeunganishwa kwani itaangazia taa za bluu

Unganisho la NRF ("e0: 7d: ea: 0c: 03: 29") kisha (kazi (g) {

console.log ("Kuanza kuunganisha2"); gatt = g; kurudi gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); basi). kisha (kazi (huduma) {kurudi huduma.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");})) kisha (kazi (tabia) {Characteristic_store = characteristic; return characteristic.readValue ();} basi (value => {console.log (value);})) kisha (function () {console.log ("Train Connected"); connected = 1;

Vitu vya kufurahisha

Sasa umeunganisha kwenye gari moshi ni wakati wa vitu vyote vya kufurahisha kama kusonga mbele, kutoa sauti na kuwasha taa na kuwasha. Ni kazi rahisi kutuma treni thamani ya utayarishaji, ikifuatiwa na amri halisi yaani

kazi play_horn () {

console.log ("message =", Tabia_duka); const prepval = mpya Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); sentvalue = mpya Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Tabia_duka.writeValue (preval). Basi (_ => {Characteristic_store.writeValue (sentvalue);}); }

Unaweza kulazimika kuchimba kidogo ili upate amri nyingine kuliko zile nilizotumia

Vifungo na Levers

Upande wa mbali wa kijijini uko sawa mbele mbele vitufe vinne (kucheza sauti, kuwasha na kuwasha taa) na potentiometer moja ambayo imeunganishwa na lever ili uweze kudhibiti kasi na mwelekeo wa gari moshi

Kitufe hakihitaji kuvuta kontena badala yake unaweza kufanya hivyo kwa nambari, yaani

pinMode (D15, 'input_pulldown');

Unaweza kuunganisha potentiometer kwa moja ya pembejeo na kisha usome ishara ya analog kwa kutumia amri ifuatayo

kusoma var = analogRead (D31);

Tofauti nyingine kwa arduino ni kwamba esprunio haina usanidi na kitanzi. Kwa hivyo badala yangu ninaweka amri / vichocheo vyote tofauti katika kazi na kisha kuseti setInterval ambayo inazunguka kila milliseconds 100, nikisikiliza kitufe kisha nifanye kazi inayohitajika wakati kifungo kimeshinikizwa.

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

Kuigiza lever ilikuwa ngumu zaidi kwani ingetaka kuweza kuongeza kasi kwa kasi kwanza ilibidi nipeleke thamani ya analog kufanya kazi

kusoma var = analogRead (D31);

mwelekeo wa treni (kusoma * 1024);

Halafu katika kazi ya mwongozo wa treni nilivunja amri kwa nyongeza 6 tofauti kulingana na thamani ya sufuria

Njia yote juu, inamwambia treni iende kasi kamili mbele

Nusu juu, inaambia treni kwenda mbele kwa kasi ya 50%

Katikati, anamwambia treni isimame

Nusu chini, inaambia gari moshi kurudi nyuma kwa kasi ya 50%

Njia yote chini, inamwambia treni iende kasi kamili kwa kurudi nyuma

yaani

kazi treni_direction (dir_val) {

//console.log ("ujumbe =", Duka la Tabia); const prepval = mpya Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); sentvalue = mpya Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); ikiwa (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = mpya Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } ikiwa (dir_val 200) {const sendvalue = mpya Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } ikiwa (dir_val 100) {const sendvalue = mpya Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } ikiwa (dir_val {Characteristic_store.writeValue (sendvalue);}); }

Nambari kamili inaweza kuwa chini kwa kiunga hapa chini

Hatua ya 2: Wiring

Wiring
Wiring
Wiring
Wiring

Wiring hiyo ilikuwa sehemu rahisi zaidi

Ilijumuisha tu kitufe cha kushinikiza 4 kilichounganishwa na D15, D16, D17 na D18 bila kontena yoyote ya kuvuta kwani hii ilifanywa kwa nambari na kipinga 1 10k kilichounganishwa na D31

Bado ninafanya kazi kwenye usambazaji wa umeme lakini kwa sasa nguvu zote huja kuzuka kwa usb ndogo na hii inaweza kuunganishwa moja kwa moja na benki ya umeme au bandari ya USB

Hatua ya 3: Jengo

Jengo
Jengo
Jengo
Jengo
Jengo
Jengo
Jengo
Jengo

Kijijini ni zaidi ya 3mm, 6mm au 9mm karatasi za A4 za plywood, Wao ambapo hukatwa kwenye mashine yangu ya CNC hata hivyo kutumia templeti iliyotolewa ningependa ingawa haingewezekana kufanya kwa mkono

Natumahi kuwa templeti na picha zitakupa kila kitu unachohitaji kurekebisha lakini kuna maelezo machache ambayo yanaweza kusaidia

Mlima wa Kitufe cha 3mm ni kwa kubandika kitufe cha kushinikiza, pengo litaweka kitufe mahali sahihi lakini tunakuruhusu ufikie mguu nyuma ili uweze kutengenezea microchip, upande wa nyuma unaweza pia kuweka MDBT42Q kutumia gundi. Mbele utahitaji kuongeza povu kwa hivyo inapeana vifungo kidogo wakati unavyobonyeza chini unaweza kutumia chemchemi

Vifungo 9mm vitahitaji nembo ya rangi, engraving au kitu kingine ambacho kuonyesha kitufe gani hufanya nini

Lever / Handle itahitaji kuwekwa juu, nilitumia tela ya 6mm kusaidia kuipatanisha katika nafasi zote sahihi

Ilipendekeza: