Përmbajtje:

Telekomandë prej druri Bluetooth për Lego Duplo Train: 3 hapa (me fotografi)
Telekomandë prej druri Bluetooth për Lego Duplo Train: 3 hapa (me fotografi)

Video: Telekomandë prej druri Bluetooth për Lego Duplo Train: 3 hapa (me fotografi)

Video: Telekomandë prej druri Bluetooth për Lego Duplo Train: 3 hapa (me fotografi)
Video: FULL BUILD | Rebuilding A DESTROYED Porsche 911 Turbo! 2024, Nëntor
Anonim
Telekomandë prej druri Bluetooth për Lego Duplo Train
Telekomandë prej druri Bluetooth për Lego Duplo Train
Telekomandë prej druri Bluetooth për Lego Duplo Train
Telekomandë prej druri Bluetooth për Lego Duplo Train

Fëmijët e mi e pëlqyen këtë tren të vogël Lego Duplo veçanërisht më të voglin tim i cili lufton të komunikojë me fjalët, kështu që unë doja t’i ndërtoja asaj diçka që do ta ndihmonte të luante me trenin pavarësisht nga të rriturit ose telefonat/tabletët. Diçka që do t'i shtonte një dimension shtesë trenit dhe do t'i jepte vlerë shtesë të lojës

Kompleti Lego tashmë ka pak mënyra për të kontrolluar trenin, ju mund ta shtyni përpara për ta nisur dhe mbajtur atë për ta ndaluar atë, mund ta kontrolloni duke përdorur etiketat e ngjyrave që shkojnë në binarë, kështu që kur treni ta kalojë mbi të shkakton veprime të ndryshme dmth. përpara, prapa, luani tinguj ndizni dritat. Ju gjithashtu mund të shkarkoni një aplikacion për telefonin ose tabletin tuaj që mund të lidhet me trenin përmes bluetooth.

Këtu është një përmbledhje e plotë e trenit

Pas gjuetisë në internet, gjeta se kishte shumë pak njerëz të ndryshëm që kishin të gjithë kodin gati të shkruar për të kontrolluar trenin. Nyja "Poweredup" e shkruar nga nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) dukej si një fillim i përsosur, u shkrua duke përdorur Javascript të cilin nuk e njihja pjesërisht, por mendova nëse mund të gjeni mikroçip me bazë java, ky do të ishte një fillim i mirë.

Përsëri pas gjuetisë në internet përsëri gjeta sistemin espruino, ky është i ngjashëm me ardiuno, por baza rreth javascript. Kodi espriuno mund të ngarkohet në një mircochip MDBT42Q që kishte integruar bluetooth. Mendova se nëse do të mund ta ngarkoja modulin "të ndezur" në të, do të isha në gjysmë të rrugës atje, megjithatë kjo nuk ishte e thjeshtë, një modul që përmbante shumë biblioteka për të ngarkuar në MDBT42Q, kështu që duket se më duhet gjeni një zgjidhje më të thjeshtë…

Hapi 1: Kodi

Kodi
Kodi

Esprinuo

Për ata që nuk e njohin platformën Espruino https://www.espruino.com (dhe nuk e dija) a është shumë e ngjashme me Arduino -n, Ka disa ndryshime kryesore, të cilat i ka shkruar për javascript në vend të c, Ndihet pak më e re kështu që të mos ketë shembuj sidoqoftë mbështetja përmes forumeve është e madhe dhe shumë e dobishme.

Javascript takoni trenin

Pengesa e parë ishte lidhja me trenin nëpërmjet bluetooth -it, kjo mund të bëhet duke përdorur klasën NRF që dërgohet me kodin espruino.

NRF.connect mund të përdoret për t'u lidhur me trenin megjithatë nevoja juaj e parë për të gjetur adresën e trenit në vetvete, mund të përdorni NRF.findDevices për të marrë këtë informacion

Pasi ta keni bërë këtë, atëherë duhet të dërgoni trenin me dy vlera për shtrëngimin e dorës me trenin, për trenin tim kjo ishte "00001623-1212-efde-1623-785feabcd123" e ndjekur nga "00001624-1212-efde-1623-785feabcd123" besoj kjo do të jetë e njëjtë për të gjithë trenat me avull të vendosur, por versionet e tjera, domethënë komplete ngarkesash, ndoshta të ndryshme

Pasi ta keni këtë ju mund të lidhni trenin duke përdorur funksionin si më poshtë, a mund të thoni kur treni të lidhet pasi do të ndezë fenerët blu

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

console.log ("Fillimi i lidhjes2"); gatt = g; kthehu gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). atëherë (funksioni (shërbimi) {kthimi i shërbimit.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). pastaj (funksioni (karakteristik) {Characteristic_store = karakteristike; kthehu karakteristikën.readValue ();}) atëherë (vlera => {console.log (vlera);}). pastaj (funksioni () {console.log ("Treni i lidhur"); i lidhur = 1;

Gjërat argëtuese

Tani ju jeni lidhur me trenin është koha për të gjitha gjërat zbavitëse si lëvizja e tij përpara, bërja e zërit dhe ndezja dhe fikja e dritës. Jobshtë punë e thjeshtë t'i dërgosh trenit një vlerë përgatitore, e ndjekur nga komanda aktuale dmth

funksioni play_horn () {

console.log ("mesazh =", Dyqan Karakteristik); const prepval = i ri Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = re Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).pastaj (_ => {Characteristic_store.writeValue (vlera e dërgimit);}); }

Ju mund të keni nevojë të gërmoni pak për të gjetur komanda të tjera nga ato që kam përdorur

Butonat dhe levat

Ana fizike e telekomandës është shumë e drejtë përpara katër butona (për të luajtur tingujt, ndizni dhe fikni dritat) dhe një potenciometër që lidhet me levën në mënyrë që të kontrolloni shpejtësinë dhe drejtimin e trenit

Butoni nuk ka nevojë për rezistencë tërheqëse, por mund ta bëni këtë në kod, dmth

pinMode (D15, 'input_pulldown');

Ju mund ta lidhni potenciometrin me një nga hyrjet dhe pastaj ta lexoni sinjalin analog duke përdorur komandën e mëposhtme

var leximi = analogRead (D31);

Dallimi tjetër me arduino është se esprunio nuk ka një konfigurim dhe lak. Kështu që në vend të kësaj unë vendos të gjitha komandat/ndezësit e veçantë në funksione dhe pastaj vendos setInterval që lakohet çdo 100 milisekonda, duke dëgjuar butonin dhe më pas ekzekutoj funksionin e kërkuar kur butoni të jetë shtypur.

nëse (digitalRead (D15) == 1) {play_horn (); }

Veprimi i levës ishte pak më i komplikuar pasi doja të isha në gjendje të rregulloja gradualisht shpejtësinë, kështu që së pari më duhej të dërgoja vlerën analoge në funksion

var leximi = analogRead (D31);

drejtimi i trenit (leximi * 1024);

Pastaj në funksionin train_direction e zbërtheva komandën në 6 rritje të ndryshme bazuar në vlerën e tenxhere

Gjatë gjithë rrugës lart, i thotë trenit të ecë përpara me shpejtësi të plotë

Në gjysmë të rrugës lart, i thotë trenit të ecë përpara me 50% shpejtësi

Mesi, i thotë trenit të ndalet

Në gjysmë të rrugës poshtë, i thotë trenit të kthehet mbrapsht me 50% shpejtësi

Gjatë gjithë rrugës poshtë, i thotë trenit të ecë me shpejtësi të plotë në të kundërt

dmth

funksioni train_direction (dir_val) {

//console.log("message = ", Dyqan Karakteristik); const prepval = i ri Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = re 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 (vlera e dërgimit);}); }

Kodi i plotë mund të jetë poshtë për lidhjen më poshtë

Hapi 2: Instalimet

Instalimet elektrike
Instalimet elektrike
Instalimet elektrike
Instalimet elektrike

Instalimet elektrike ishin pjesa më e thjeshtë

Ai vetëm përbëhej nga 4 butona shtypi të lidhur me D15, D16, D17 dhe D18 pa ndonjë rezistencë tërheqëse pasi kjo ishte bërë në kod dhe 1 rezistencë 10k e lidhur me D31

Unë jam ende duke punuar në furnizimin me energji, por aktualisht e gjithë fuqia vjen nga një prishje mikro usb dhe kjo mund të lidhet drejtpërdrejt me një bankë energjie ose një port USB

Hapi 3: Ndërtimi

Ndërtimi
Ndërtimi
Ndërtimi
Ndërtimi
Ndërtimi
Ndërtimi
Ndërtimi
Ndërtimi

Telekomanda është kryesisht jashtë fletëve të kompensatës 3mm, 6mm ose 9mm A4, ato janë prerë në makinën time CNC megjithatë duke përdorur shabllonin e dhënë, edhe pse nuk do të ishte e pamundur ta bëja me dorë

Unë shpresoj që shablloni dhe fotot do t'ju japin gjithçka që ju nevojitet për të ribërë megjithatë ka disa shënime që mund të ndihmojnë

Montimi i butonit me buton 3mm është për fiksimin e butonit, hendeku do ta pozicionojë butonin në vendin e duhur, por ne ju lejojmë të hyni në këmbën në anën e pasme, në mënyrë që të ngjiteni në mikroçip, në anën e pasme gjithashtu mund të montoni MDBT42Q duke përdorur një zam. Në pjesën e përparme ju do të duhet të shtoni aq shkumë që të japë butonat një kërcim të vogël kur i shtypni poshtë, gjithashtu mund të përdorni burime

Butonat 9mm do të kenë nevojë për ngjyrën e logos, gdhendjen ose diçka tjetër që të tregojnë se çfarë butoni bën çfarë

Leva/Doreza do të duhet të shtresohet, kam përdorur një kunj 6 mm për t'i ndihmuar në rreshtimin e tyre në të gjitha pozicionet e sakta

Recommended: