Sisukord:

Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile: 3 sammu (piltidega)
Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile: 3 sammu (piltidega)

Video: Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile: 3 sammu (piltidega)

Video: Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile: 3 sammu (piltidega)
Video: Аттракцион из конструктора Лего Duplo. STEM для самых маленьких. Конструкторы Robo Master. 2024, November
Anonim
Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile
Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile
Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile
Puidust Bluetooth -kaugjuhtimispult Lego Duplo rongile

Minu lastele meeldis see väike Lego Duplo rong, eriti minu noorim, kellel on raske end sõnadega suhelda, nii et ma tahtsin talle ehitada midagi, mis aitaks tal rongiga mängida, sõltumata täiskasvanutest või telefonidest/tahvelarvutitest. Midagi, mis annaks rongile lisamõõtme ja annaks sellele täiendavat mänguväärtust

Legokomplektil on rongi juhtimiseks juba vähe võimalusi, saate selle käivitamiseks ettepoole lükata ja peatamiseks hoida, saate seda juhtida rajal olevate värviliste siltide abil, nii et kui rong sellest üle sõidab, käivitab see erinevaid toiminguid, st edasi, tagasi, esitushelid lülitavad tuled sisse. Samuti saate oma telefoni või tahvelarvutisse alla laadida rakenduse, millega saab rongiga Bluetoothi kaudu ühenduse luua.

Siin on täielik ülevaade rongist

Pärast internetis jahtimist leidsin, et seal oli üsna vähe erinevaid inimesi, kellel oli rongi juhtimiseks valmis kood. Nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) kirjutatud sõlm „Poweredup” nägi välja nagu täiuslik algus, see oli kirjutatud Javascripti abil, millega ma polnud osaliselt tuttav, kuid arvasin, et võiks leida java -põhise mikrokiibi, see oleks hea algus.

Jälle pärast internetis jahtimist leidsin uuesti espruino süsteemi, see on sarnane ardiunoga, kuid põhineb javascriptil. Espriuno koodi saab laadida MDBT42Q mircochipile, millel oli Bluetooth -manustamine. Ma arvasin, et kui saaksin sinna sisse laadida "sisselülitatud" mooduli, oleksin poolel teel, kuid see ei olnud nii lihtne, kui see moodul sisaldas MDBT42Q laadimiseks palju raamatukogusid, nii et tundub, et pean leidke lihtsam lahendus …

Samm: kood

Kood
Kood

Esprinuo

Neile, kes ei tea Espruino platvormi https://www.espruino.com (ja ma ei teadnud), kas see on Arduinoga väga sarnane, seal on mõned peamised erinevused, mille ta kirjutas pigem JavaScripti jaoks, vaid tundub pisut uuem nii et pole näiteid, kuid foorumite kaudu saadav tugi on suurepärane ja väga kasulik.

Javascript kohtub rongiga

Esimene takistus oli ühendada rongiga Bluetoothi kaudu. Seda saab teha kasutades NRF -klassi, mis saadetakse espruino koodiga.

NRF.connecti saab kasutada rongiga ühenduse loomiseks, kuid kui teil on esmalt vaja leida rongi aadress, saate selle teabe hankimiseks kasutada NRF.findDevices

Kui olete seda teinud, peate saatma rongile kaks väärtust rongiga käepigistusele, minu rongi jaoks oli see "00001623-1212-efde-1623-785feabcd123", millele järgnes "00001624-1212-efde-1623-785feabcd123" see on kõigi aururongide komplekti puhul sama, kuid teised versioonid, st kaubakomplekt, võivad olla erinevad

Kui see on olemas, saate rongi ühendada järgmise funktsiooni abil, kas saate öelda, millal rong on ühendatud, kuna see vilgutab esituled siniselt

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

console.log ("Ühendamise alustamine2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (iseloomustus) {Characteristic_store = iseloomustus; return iseloomustus.readValue ();}). then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

Lõbusad asjad

Nüüd, kui olete rongiga ühenduses, on aeg tegeleda kõigi lõbusate asjadega, nagu selle edasiliikumine, heli tegemine ning tule sisse- ja väljalülitamine. See on lihtne ülesanne saata rongile ettevalmistav väärtus, millele järgneb tegelik käsk st

funktsioon play_horn () {

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

Teil võib tekkida vajadus natuke kaevata, et leida muid käske kui need, mida ma kasutasin

Nupud ja kangid

Kaugjuhtimispuldi füüsiline külg on väga sirgelt neli nuppu (helide esitamiseks lülitage tuled sisse ja välja) ja üks potentsiomeeter, mis on ühendatud hoovaga, et saaksite rongi kiirust ja suunda juhtida

Nupp ei vaja tõmbetakistust, selle asemel saate seda teha koodis, st

pinMode (D15, 'input_pulldown');

Saate ühendada potentsiomeetri ühe sisendiga ja seejärel lugeda seda analoogsignaali kasutades järgmist käsku

var lugemine = analogRead (D31);

Teine erinevus arduinoga on see, et esprunio'l pole seadistust ja tsüklit. Selle asemel paigutan kõik eraldi käsud/käivitajad funktsioonidesse ja seadistan seejärel setInterval, mis kordub iga 100 millisekundi järel, kuulan nuppu ja käivitan seejärel nupu vajutamisel vajaliku funktsiooni.

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

Kangi kasutamine oli pisut keerulisem, kuna tahtsin kiirust järk -järgult reguleerida, nii et kõigepealt pidin analoogväärtuse tööle saatma

var lugemine = analogRead (D31);

train_direction (näit * 1024);

Siis funktsioonis train_direction jagasin käsu 6 erinevaks sammuks, lähtudes potti väärtusest

Kogu tee üles ütleb rongile täie kiirusega edasi

Poolel teel ütleb rong 50% kiirusega edasi

Keskel, käsib rongil peatuda

Poolel teel käsib rong 50% kiirusega tagurpidi sõita

Kogu tee alla ütleb rongile tagurpidi täie kiiruse

st

funktsioon train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = uus Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = uus 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);}); }

Alloleva lingi täielik kood on saadaval

Samm: juhtmestik

Juhtmestik
Juhtmestik
Juhtmestik
Juhtmestik

Juhtmestik oli lihtsaim osa

See koosnes lihtsalt 4 -st nupust, mis olid ühendatud D15, D16, D17 ja D18 -ga ilma tõmmatava takistuseta, nagu seda tehti koodis ja 1 10k takisti, mis oli ühendatud D31 -ga

Töötan endiselt toiteallika kallal, kuid praegu saab kogu toite mikro -usb -katkestuse ja see võib olla ühendatud otse toitepanga või USB -pordiga

3. samm: ehitamine

Ehitus
Ehitus
Ehitus
Ehitus
Ehitus
Ehitus
Ehitus
Ehitus

Kaugjuhtimispult on enamasti valmistatud 3 mm, 6 mm või 9 mm A4 vineerist, need lõigati minu CNC -masinal, kuid kasutades selleks ettenähtud malli, kuigi seda poleks võimatu käsitsi teha

Loodan, et mall ja fotod annavad teile kõik, mida peate uuesti tegema, kuid mõned märkused, mis võivad aidata

3 mm vajutusnupu kinnitus on nupule kinnitamiseks, tühimik paigutab nupu õigesse kohta, kuid võimaldame teil pääseda tagaküljel olevale jalale, et saaksite mikrokiibile jootma panna, tagurpidi saate paigaldada ka MDBT42Q kasutades mõnda liimi. Esiküljel peate lisama nii palju vahtu, et see annaks nuppudele veidi põrkuda, kui neid alla vajutate, võite kasutada ka vedrusid

9 mm nupud vajavad logo värvi, graveeringut või midagi muud, mis näitab, milline nupp mida teeb

Hoob/käepide tuleb kihiti üles panna, ma kasutasin 6 mm tüüblit, et aidata neid kõik õiges asendis joondada

Soovitan: