Բովանդակություն:
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Իմ երեխաները սիրում էին Լեգո Դուպլոյի այս փոքրիկ գնացքը, հատկապես իմ ամենափոքրը, ով պայքարում է իրեն բառերով հաղորդակցելու համար, ուստի ես ուզում էի նրան կառուցել մի բան, որը կօգնի նրան խաղալ գնացքի հետ անկախ մեծահասակներից կամ հեռախոսներից/պլանշետներից: Մի բան, որը գնացքին լրացուցիչ հարթություն կհաղորդեր և դրան լրացուցիչ խաղային արժեք կտար
Լեգոյի հավաքածուն արդեն ունի գնացքը կառավարելու մի քանի միջոց, կարող եք առաջ մղել այն սկսելու և պահելու համար, որպեսզի այն կանգնեցնեք, կարող եք կառավարել այն ՝ օգտագործելով գծանշաններով անցնող գունային պիտակներ, այնպես որ, երբ գնացքը դրա վրայով անցնում է, առաջացնում է տարբեր գործողություններ, այսինքն. առաջ, հակառակ, նվագել հնչյունները միացնում են լույսերը: Կարող եք նաև ներբեռնել ձեր հեռախոսի կամ պլանշետի ծրագիր, որը կարող է միանալ գնացքին Bluetooth- ի միջոցով:
Ահա գնացքի ամբողջական ակնարկը
Ինտերնետում որսալուց հետո ես գտա, որ շատ քիչ տարբեր մարդիկ էին, որոնք ունեին բոլոր պատրաստ գրված կոդը `գնացքը կառավարելու համար: «Poweredup» հանգույցը, որը գրել է nathan.kellenicki- ն (https://nathan.kellenicki.com/node-poweredup/), կարծես կատարյալ սկիզբ էր, գրված էր Javascript- ի միջոցով, որին մասամբ ծանոթ չէի, բայց մտածում էի, եթե կարող էր գտնել Java- ի վրա հիմնված միկրոչիպ, սա լավ սկիզբ կլիներ:
Կրկին ինտերնետում որսալուց հետո նորից գտա էսպրուինո համակարգը, սա նման է ardiuno- ի, բայց javascript- ի շուրջ: Espriuno ծածկագիրը կարող է բեռնվել MDBT42Q mircochip- ի վրա, որն ուներ bluetooth ներդիր: Մտածեցի, որ եթե կարողանամ «սնուցված» մոդուլը ներբեռնել դրան, ես կես ճանապարհ կլինեի այնտեղ, սակայն այս պարզը այն դեպքը չէր, երբ շատ գրադարաններում տեղադրված մեծ մոդուլը ՝ MDBT42Q- ում բեռնվելու համար, այնպես որ, թվում է, ես պետք է գտնել ավելի պարզ լուծում…
Քայլ 1: Կոդ
Էսպրինուո
Նրանց համար, ովքեր չգիտեն Espruino պլատֆորմը https://www.espruino.com (և ես դա չէի), արդյո՞ք դա շատ նման է Arduino- ին, մի քանի հիմնական տարբերություն կա, որը գրել է javascript- ի համար ավելի շուտ c, Այն իրեն ավելի փոքր է զգում: այնպես որ գուցե օրինակներ չլինեն, սակայն ֆորումների միջոցով աջակցությունը մեծ է և շատ օգտակար:
Javascript- ը հանդիպեք գնացքին
Առաջին խոչընդոտը գնացքին միանալն էր bluetooth- ի միջոցով: Դա կարելի է անել `օգտագործելով NRF դասը, որն ուղարկում է espruino ծածկագիրը:
NRF.connect- ը կարող է օգտագործվել գնացքին միանալու համար, սակայն գնացքի հասցեն գտնելու առաջին անհրաժեշտությունը կարող եք օգտագործել NRF.findDevices- ը ՝ այս տեղեկությունները ստանալու համար:
Երբ դա անեք, դուք պետք է գնացքին ուղարկեք գնացքի հետ ձեռքսեղմման երկու արժեք, քանի որ իմ գնացքը սա էր «00001623-1212-efde-1623-785feabcd123», որին հաջորդում էր «00001624-1212-efde-1623-785feabcd123»: սա նույնը կլինի գոլորշու գնացքների համար
Սա ունենալուց հետո կարող եք միացնել գնացքը ՝ օգտագործելով հետևյալ գործառույթը, կարո՞ղ եք ասել, թե երբ է գնացքը միանում, քանի որ այն լուսարձակում է կապույտ լուսարձակները
NRF.connect ("e0: 7d: ea: 0c: 03: 29"): ապա (գործառույթ (g) {
console.log («Սկսում է կապը 2»); gatt = g; վերադարձ gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). ապա (ֆունկցիա (ծառայություն) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}).).then (value => {console.log (value);}). ապա (function () {console.log ("Train Connected"); կապված = 1;
Funվարճալի իրեր
Այժմ, երբ միացել եք գնացքին, ժամանակն է բոլոր զվարճալի իրերի համար, ինչպիսիք են այն առաջ շարժելը, ձայնը հնչեցնելը և լույսը միացնելն ու անջատելը: Գնացքին նախապատրաստական արժեք ուղարկելու պարզ գործ է, որին հաջորդում է իրական հրամանը, այսինքն
գործառույթ play_horn () {
console.log ("message =", Characteristic_store); const prepval = նոր Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = նոր Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => {Characteristic_store.writeValue (sendvalue);}); }
Հնարավոր է, որ ստիպված լինեք մի փոքր փորփրել ՝ այլ հրամաններ գտնելու համար, քան ես օգտագործել եմ
Կոճակներ և լծակներ
Հեռակառավարման ֆիզիկական կողմը շատ ուղիղ առաջ է ՝ չորս կոճակ (հնչյուններ նվագարկելու, լույսերը միացնելու և անջատելու համար) և մեկ պոտենցիոմետր, որը միացված է լծակին, որպեսզի կարողանաք վերահսկել գնացքի արագությունն ու ուղղությունը
Կոճակը կարիք չունի ձգվող դիմադրության, փոխարենը կարող եք դա անել ծածկագրով, այսինքն
pinMode (D15, 'input_pulldown');
Կարող եք պոտենցիոմետրը միացնել մուտքերից մեկին, այնուհետև կարդալ այն անալոգային ազդանշանը ՝ օգտագործելով հետևյալ հրամանը
var ընթերցում = analogRead (D31);
Արդուինոյի մյուս տարբերությունն այն է, որ esprunio- ն կարգավորում և հանգույց չունի: Այսպիսով, փոխարենը ես տեղադրում եմ բոլոր առանձին հրամանները/գործարկիչները գործառույթների մեջ, այնուհետև տեղադրում եմ setInterval- ը, որն անցնում է յուրաքանչյուր 100 միլիվայրկյանում, լսելով կոճակը, այնուհետև գործարկում անհրաժեշտ գործառույթը, երբ կոճակը սեղմված է:
եթե (digitalRead (D15) == 1) {play_horn (); }
Գործողությունը
var ընթերցում = analogRead (D31);
գնացքի ուղղություն (կարդալ * 1024);
Հետո train_direction գործառույթում ես կոտրեցի հրամանը 6 տարբեր աստիճանի ՝ ելնելով կաթսայի արժեքից
Մինչև վերև գնացքը ասում է, որ ամբողջ արագությամբ առաջ գնա
Կես ճանապարհ վեր, գնացքին ասում է, որ 50% արագությամբ առաջ գնա
Միջին, ասում է գնացքին կանգ առնել
Կեսից ներքև, ասում է գնացքին հետ գնալ 50% արագությամբ
Ամբողջ ճանապարհով գնացքը ասում է, որ ամբողջ արագությամբ հետընթաց կատարի
այսինքն
ֆունկցիա train_direction (dir_val) {
//console.log("message = ", Բնութագրական_ խանութ); const prepval = նոր Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = նոր 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 {Characteristic_store.writeValue (sendvalue value);}); }
Ամբողջական ծածկագիրը կարող է տրված լինել ստորև բերված հղման համար
Քայլ 2: Հաղորդալարերի տեղադրում
Էլեկտրամոնտաժը ամենապարզ մասն էր
Այն ընդամենը բաղկացած էր 4 կոճակից, որը միացված էր D15, D16, D17 և D18- ին ՝ առանց ցանկացած ձգվող դիմադրության, քանի որ դա արվում էր ծածկագրում և D31- ին միացված 1 10k դիմադրիչ
Ես դեռ աշխատում եմ էներգիայի մատակարարման վրա, բայց ներկայումս ամբողջ էներգիան գալիս է միկրո USB- ի ճեղքումից, և դա կարող է դրանք ուղղակիորեն միացվել հոսանքի բանկին կամ USB պորտին
Քայլ 3: Կառուցեք
Հեռակառավարիչը հիմնականում դուրս է գալիս 3 մմ, 6 մմ կամ 9 մմ նրբատախտակի A4 թերթերից, դրանք կտրվում էին իմ CNC մեքենայի վրա, սակայն, օգտագործելով այն ձևանմուշը, որը ես կցանկանայի, չնայած դա անհնար չէր լինի ձեռքով անել:
Հուսով եմ, որ կաղապարը և լուսանկարները կտան ձեզ այն ամենը, ինչ անհրաժեշտ է վերակառուցման համար, սակայն կան մի քանի նշումներ, որոնք կարող են օգնել
3 մմ կոճակ կոճակը տեղադրելու համար սեղմման կոճակը կպցնելու համար է, բացը կտեղադրի կոճակը ճիշտ տեղում, սակայն մենք թույլ ենք տալիս մուտք գործել ոտքը հետևի մասում, որպեսզի կարողանաք միակցել միկրոչիպին, իսկ հետևի մասում կարող եք նաև տեղադրել MDBT42Q օգտագործելով որոշ սոսինձ: Առջևում ձեզ հարկավոր է այնքան փրփուր ավելացնել, որպեսզի կոճակները մի փոքր ցատկեն, երբ դրանք սեղմում եք ներքև, կարող եք նաև օգտագործել աղբյուրներ
9 մմ կոճակներին անհրաժեշտ կլինի լոգոյի ներկ, փորագրություն կամ այլ բան, որը ցույց կտա, թե ինչ կոճակ է անում
Լծակը/բռնակը պետք է շերտավորվի, ես օգտագործեցի 6 մմ տրամագիծ ՝ դրանք բոլոր ճիշտ դիրքերում հավասարեցնելու համար:
Խորհուրդ ենք տալիս:
Այս փայտե գործիքը պատրաստելու համար օգտագործեք Fusion: 4 քայլ
Օգտագործեք Fusion ՝ այս փայտե գործիքը պատրաստելու համար. Այն ցույց է տալիս ծրագրաշարի որոշ հիմնական գործառույթներ և շատ հեշտ է շատ ժամանակ պահանջել: Պահանջվում է ծրագրակազմ. Fusion 360 by Autodesk Pre-Requisites
Կառավարեք ձեր մոդելային գնացքի դասավորությունը ձեր բջջային հեռախոսով: 11 քայլ (նկարներով)
Վերահսկեք ձեր մոդելների գնացքների դասավորությունը ձեր բջջային հեռախոսով. Բացի այդ, անլար կարգավորիչները, որոնք գալիս են շուկայում, կարող են կամ վերահսկել միայն որոշ շոգեքարշ
Անլար հեռակառավարիչ ՝ օգտագործելով 2.4 ԳՀց NRF24L01 մոդուլ Arduino- ով - Nrf24l01 4 ալիք / 6 ալիք հաղորդիչ ընդունիչ քառանկյունի համար - Rc ուղղաթիռ - Rc ինքնաթիռ Arduino- ի միջոցով. 5 քայլ (նկարներով)
Անլար հեռակառավարիչ ՝ օգտագործելով 2.4 ԳՀց NRF24L01 մոդուլ Arduino- ով | Nrf24l01 4 ալիք / 6 ալիք հաղորդիչ ընդունիչ քառանկյունի համար | Rc ուղղաթիռ | Rc ինքնաթիռ Arduino- ի միջոցով. RC մեքենա շահագործելու համար | Quadcopter | Անօդաչու թռչող սարք | RC ինքնաթիռ | RC նավակ, մեզ միշտ պետք է ընդունիչ և հաղորդիչ, ենթադրենք, որ RC QUADCOPTER- ի համար մեզ անհրաժեշտ է 6 ալիքով հաղորդիչ և ընդունիչ, և այդ տիպի TX և RX- ը չափազանց թանկ են, ուստի մենք դա պատրաստելու ենք մեր
Arduino- ի միջոցով գնացքի ավտոմատ հակադարձ օղակ. 10 քայլ (նկարներով)
Arduino- ի միջոցով գնացքների ավտոմատ հակադարձ օղակ. Հակադարձ հանգույցների պատրաստումը կարող է օգնել գնացքների մոդելների ձևավորմանը `փոխելու գնացքների ուղղությունը, ինչը հնարավոր չէ անել պտտվող սարքերով: Այս կերպ, դուք կարող եք ստեղծել միակողմանի դասավորություններ ՝ յուրաքանչյուր ծայրում հակառակ հանգույցով ՝ գնացքներ վարելու համար ՝ առանց որևէ դադար կամ ընդմիջում
Գնացքի նստատեղերի համակարգ. 4 քայլ (նկարներով)
Գնացքների նստատեղերի համակարգ. Այսօր մենք պատրաստեցինք մի համակարգ, որը կարող է ներդրվել գնացքի նստատեղերի վրա: Մենք պետք է ջղայնություն գտնեինք և դրա համար լուծում անեինք: Մենք որոշեցինք, որ մենք կստեղծենք մի համակարգ, որը ձեզ կասի, եթե տեղ կա ազատ գնացքի սայլի մեջ, որտեղ դուք այժմ գտնվում եք: Ոչինչ չկա