Kazalo:
Video: Leseni daljinski upravljalnik Bluetooth za vlak Lego Duplo: 3 koraki (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Moji otroci so ljubili ta mali vlak Lego Duplo, še posebej moj najmlajši, ki se težko sporazumeva z besedami, zato sem ji želel zgraditi nekaj, kar bi ji pomagalo igrati z vlakom neodvisno od odraslih ali telefonov/tablic. Nekaj, kar bi vlaku dodalo dodatno dimenzijo in mu dalo dodatno igralno vrednost
Komplet Lego že ima malo načinov za nadzor vlaka, ga lahko potisnete naprej, da ga zaženete, in ga zadržite, da ga ustavite, lahko ga upravljate z barvnimi oznakami, ki gredo na progo, tako da, ko ga vlak prečka, sproži različna dejanja, tj. naprej, nazaj, predvajajte zvoke, prižgite luči. Prav tako lahko naložite aplikacijo za telefon ali tablični računalnik, ki se lahko poveže z vlakom prek Bluetootha.
Tukaj je popoln pregled vlaka
Po iskanju po internetu sem ugotovil, da je bilo kar nekaj različnih ljudi, ki so imeli pripravljeno napisano kodo za nadzor vlaka. Vozlišče 'Poweredup', ki ga je napisal nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/), je bilo videti kot popoln začetek, napisano je bilo s pomočjo Javascripta, ki ga nisem bil delno seznanjen, vendar sem pomislil, če če bi našli mikročip na osnovi jave, bi bil to dober začetek.
Po ponovnem iskanju po internetu sem spet našel sistem espruino, ki je podoben ardiunu, vendar temelji okoli javascripta. Kodo espriuno lahko naložite na mirkočip MDBT42Q, ki ima vgrajen bluetooth. Mislil sem, da če bi lahko naložil "napajan" modul, bi bil na polovici poti, vendar to preprosto ni bilo, če je modul vseboval številne knjižnice, ki so bile velike za nalaganje na MDBT42Q, zato se zdi, da moram poiščite enostavnejšo rešitev …
1. korak: Koda
Esprinuo
Za tiste, ki ne poznate platforme Espruino https://www.espruino.com (in je nisem), je zelo podoben Arduinu, Obstaja nekaj glavnih razlik, ena je napisana za javascript raje c, zdi se nekoliko novejša tako da ni primerov, vendar je podpora prek forumov velika in zelo koristna.
Javascript izpolnjujejo vlak
Prva ovira je bila povezava z vlakom prek bluetootha. To je mogoče storiti z uporabo razreda NRF, ki je priložen kodi espruino.
NRF.connect se lahko uporablja za povezavo z vlakom, vendar morate najprej najti naslov samega vlaka. Če želite dobiti te podatke, lahko uporabite NRF.findDevices.
Ko to storite, morate vlaku poslati dve vrednosti v rokovanje z vlakom, za moj vlak je bilo to "00001623-1212-efde-1623-785feabcd123", čemur sledi "00001624-1212-efde-1623-785feabcd123" Verjamem to bo enako za vse komplete parnih vlakov, druge verzije, to je komplet tovora, pa bodo morda drugačne
Ko to imate, lahko vlak povežete z naslednjo funkcijo. Ali lahko ugotovite, kdaj se je vlak povezal, saj bo utripal, žarometi bodo modri
NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Nato (funkcija (g) {
console.log ("Začetek povezovanja2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (character) {Characteristic_store = karakteristika; return character.readValue ();}). then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;
Zabavne stvari
Zdaj, ko ste povezani z vlakom, je čas za vse zabavne stvari, kot je premikanje naprej, zvok in vklop in izklop luči. Preprosta naloga je, da vlaku pošljete pripravljalno vrednost, ki ji sledi dejanski ukaz, tj
funkcija play_horn () {
console.log ("message =", Characteristic_store); const prepval = nov Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = nov Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => {Characteristic_store.writeValue (sendvalue);}); }
Morda boste morali malo pobrskati, da poiščete drug ukaz, razen tistih, ki sem jih uporabil
Gumbi in ročice
Fizična stran daljinskega upravljalnika so naravnost štirje gumbi (za predvajanje zvokov, vklop in izklop luči) in en potenciometer, ki je povezan z ročico, tako da lahko nadzorujete hitrost in smer vlaka
Gumbu ni treba potegniti upora, to lahko storite v kodi, tj
pinMode (D15, 'input_pulldown');
Potenciometer lahko priključite na enega od vhodov in nato z naslednjim ukazom preberete analogni signal
var odčitavanje = analogRead (D31);
Druga razlika do arduina je, da esprunio nima nastavitve in zanke. Namesto tega namestim vse ločene ukaze/sprožilce v funkcije in nato nastavim setInterval, ki se ponovi vsakih 100 milisekund, posluša gumb in nato po pritisku na gumb zažene zahtevano funkcijo.
if (digitalRead (D15) == 1) {play_horn (); }
Upravljanje ročice je bilo nekoliko bolj zapleteno, saj sem želel postopoma prilagajati hitrost, zato sem najprej moral poslati analogno vrednost v funkcijo
var odčitavanje = analogRead (D31);
smer vlaka (branje * 1024);
Nato sem v funkciji train_direction ukaz razčlenil na 6 različnih korakov glede na vrednost pota
Vso pot gor pove vlaku, naj gre s polno hitrostjo naprej
Na polovici poti pove vlaku, naj gre naprej s 50 -odstotno hitrostjo
V sredini, vlaku pove, naj se ustavi
Na polovici poti pove vlaku, naj se vrne s hitrostjo 50%
Vse do konca vlaku pove, naj se vrne s polno hitrostjo
tj
funkcija train_direction (dir_val) {
//console.log("message = ", Characteristic_store); const prepval = nov Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = nov Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = nov Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) {const sendvalue = nov Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalue = nov Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val {Characteristic_store.writeValue (sendvalue);}); }
Celotno kodo lahko najdete na spodnji povezavi
2. korak: Ožičenje
Ožičenje je bilo najpreprostejši del
Sestavljen je bil samo iz 4 gumbov, priključenih na D15, D16, D17 in D18 brez vlečnega upora, kot je bilo to storjeno v kodi, in 1 10k upor, priključen na D31
Še vedno delam na napajalniku, vendar trenutno vsa moč prihaja iz izhoda mikro usb in to bi lahko bili priključeni neposredno na banko napajanja ali vrata USB
3. korak: Zgradba
Daljinski upravljalnik je večinoma iz vezanih listov vezanega lesa A4 velikosti 3 mm, 6 mm ali 9 mm, ki so jih rezali na svojem CNC stroju, vendar z uporabo predloge, če bi to storil ročno
Upam, da vam bosta predloga in fotografije dali vse, kar potrebujete za predelavo, vendar obstaja nekaj opomb, ki bi lahko pomagale
3 mm držalo za potisni gumb je namenjeno pritrditvi gumba, reža bo gumb postavila na pravo mesto, vendar vam omogočamo dostop do noge na hrbtu, da ga lahko spajkate na mikročip, na hrbtni strani pa lahko namestite tudi MDBT42Q z uporabo lepila. Na sprednji strani boste morali dodati tako peno, da bodo gumbi rahlo odskočili, ko jih pritisnete navzdol, lahko uporabite tudi vzmeti
9 -milimetrski gumbi bodo potrebovali barvo logotipa, gravuro ali kaj drugega, da pokažejo, kaj gumb počne
Ročico/ročaj bo treba položiti navzgor, uporabil sem 6 mm moznik, ki jim je pomagal poravnati v vseh pravilnih položajih
Priporočena:
Čarobni gumb 4k: brezžični daljinski upravljalnik 20USD BMPCC 4k (ali 6k): 4 koraki (s slikami)
Čarobni gumb 4k: brezžični daljinski upravljalnik BMPCC 4k (ali 6k) 20USD: Mnogi ljudje so me prosili, naj povem nekaj podrobnosti o svojem brezžičnem krmilniku za BMPCC4k. Večina vprašanj se je nanašala na nadzor Bluetooth, zato bom omenil nekaj podrobnosti o tem. Predvidevam, da poznate okolje ESP32 Arduino
DIY komplet stikal za daljinski upravljalnik 2262/2272 M4 plošča za kruh in rele za izdelovalca: 4 koraki (s slikami)
DIY komplet stikal za daljinski upravljalnik 2262/2272 M4 plošča za kruh in rele za izdelovalca: pametni dom prihaja v naše življenje. če želimo, da se pametni dom uresniči, potrebujemo veliko stikal na daljinsko upravljanje. danes bomo naredili preizkus, naredimo enostaven krog, da se naučimo teorije stikala za daljinsko upravljanje. to zasnovo kompleta SINONING ROBOT
Kako popraviti daljinski upravljalnik Xbox - Odpravljanje kondenzatorja: 4 koraki (s slikami)
Kako popraviti daljinski upravljalnik Xbox - Odprava kondenzatorja za ločitev: Ta navodila so napisana kot odgovor na zlomljen daljinski upravljalnik Xbox. Simptomi so, da se zdi, da daljinski upravljalnik dobro deluje. Ko usmerim daljinski upravljalnik v Televizijski sprejemnik samo za testne namene, vidim, da na sprejemniku utripa rdeča LED
Glasovno aktiviran gumb za daljinski upravljalnik: 4 koraki (s slikami)
Gumb za daljinsko upravljanje z glasovnim aktiviranjem: Če ste videli moja druga navodila, veste, da ima naš sin mišično distrofijo. To je en del projekta, ki bi mu naredil stvari bolj dostopne. Imamo vrata, ki se upravljajo z daljinskim upravljalnikom za odpiranje garažnih vrat. To je bilo fantastično v l
Vpad v Stm32: Daljinski upravljalnik za domači medijski center: 4 koraki (s slikami)
Vpad v Stm32: Daljinski upravljalnik za domači medijski center: To je popoln prototip za daljinski upravljalnik domačega medijskega centra, ki temelji na mikro krmilniku smt32, stm32f103c8t6, znanem kot plošča "bluepill". Recimo, da za domači medijski center uporabljate računalnik. To je zelo prilagodljiva rešitev, ki vam omogoča, da namestite