Sisällysluettelo:

Puinen Bluetooth -kaukosäädin Lego Duplo Trainille: 3 vaihetta (kuvilla)
Puinen Bluetooth -kaukosäädin Lego Duplo Trainille: 3 vaihetta (kuvilla)

Video: Puinen Bluetooth -kaukosäädin Lego Duplo Trainille: 3 vaihetta (kuvilla)

Video: Puinen Bluetooth -kaukosäädin Lego Duplo Trainille: 3 vaihetta (kuvilla)
Video: Формула хороших игр: Лего Дупло «Поезд» для детей от 3 лет 2024, Marraskuu
Anonim
Puinen Bluetooth -kaukosäädin Lego Duplo Trainille
Puinen Bluetooth -kaukosäädin Lego Duplo Trainille
Puinen Bluetooth -kaukosäädin Lego Duplo Trainille
Puinen Bluetooth -kaukosäädin Lego Duplo Trainille

Lapseni rakastivat tätä pientä Lego Duplo -junaa erityisesti nuorin, joka kamppailee kommunikoimaan sanojen kanssa, joten halusin rakentaa hänelle jotain, joka auttaisi häntä leikkimään junalla aikuisista tai puhelimista/tableteista riippumatta. Jotain, joka lisäisi junan ulottuvuutta ja lisäisi pelin arvoa

Lego -setillä on jo muutamia tapoja hallita junaa, voit työntää sitä eteenpäin käynnistääksesi ja pitää sitä pysäyttääksesi sen. eteenpäin, taaksepäin, toistoäänet kytkevät valot päälle. Voit myös ladata puhelimellesi tai tabletillesi sovelluksen, joka voi muodostaa yhteyden junaan Bluetoothin kautta.

Tässä täysi katsaus junaan

Internetissä metsästettyäni löysin, että siellä oli melko vähän erilaisia ihmisiä, joilla oli kaikki valmiit kirjalliset koodit junan hallitsemiseksi. Nathan.kellenickin (https://nathan.kellenicki.com/node-poweredup/) kirjoittama 'Poweredup' -solmu näytti täydelliseltä aloitukselta, se kirjoitettiin Javascriptin avulla, jota en ollut osittain perehtynyt, mutta ajattelin, jos voisi löytää javapohjaisen mikrosirun, tämä olisi hyvä alku.

Jälleen metsästyksen jälkeen Internetissä löysin espruino -järjestelmän, tämä on samanlainen kuin ardiuno, mutta perustuu javascriptiin. Espriuno -koodi voitaisiin ladata MDBT42Q -mircochipiin, jossa oli Bluetooth -upotus. Luulin, että jos voisin ladata "käynnistetty" -moduulin siihen, olisin puolivälissä, mutta tämä ei ollut yksinkertainen tapaus, kun moduuli sisälsi moniin kirjastoihin suuria ladata MDBT42Q, joten näyttää siltä, että minun täytyy löytää yksinkertaisempi ratkaisu …

Vaihe 1: Koodi

Koodi
Koodi

Esprinuo

Niille, jotka eivät tunne Espruino -alusta https://www.espruino.com (enkä minä), onko se hyvin samanlainen kuin Arduino, siellä on muutamia tärkeimpiä eroja, jotka se kirjoitti javascriptille pikemminkin c, se tuntuu hieman uudemmalta joten ei esimerkkejä, mutta foorumien kautta saatava tuki on suuri ja erittäin hyödyllinen.

Javascript tapaa junan

Ensimmäinen este oli muodostaa yhteys junaan bluetoothin kautta. Tämä voidaan tehdä käyttämällä NRF -luokkaa, joka toimitetaan espruino -koodilla.

NRF.connectia voidaan käyttää muodostamaan yhteys junaan, mutta sinun on ensin löydettävä itse junan osoite, voit käyttää näitä tietoja NRF.findDevicesin avulla

Kun olet tehnyt tämän, sinun on lähetettävä junalle kaksi arvoa kättelyyn junan kanssa, junaani tämä oli "00001623-1212-efde-1623-785feabcd123" ja sen jälkeen "00001624-1212-efde-1623-785feabcd123" Uskon tämä on sama kaikille höyryjunille, mutta muut versiot eli lastisarja voivat olla erilaisia

Kun sinulla on tämä, voit yhdistää junan seuraavan toiminnon avulla. Voitko kertoa, milloin juna on muodostanut yhteyden, koska se vilkkuu

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

console.log ("Yhdistämisen aloittaminen2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (feature) {Characteristic_store = feature; return feature.readValue ();}). then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

Hauskoja juttuja

Nyt kun olet yhteydessä junaan, on aika tehdä kaikkea hauskaa, kuten siirtää sitä eteenpäin, tehdä ääntä ja kytkeä valo päälle ja pois. Se on yksinkertainen tehtävä lähettää junaan valmisteluarvo, jota seuraa varsinainen komento eli

toiminto play_horn () {

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

Sinun on ehkä hiukan kaivettava ympäri löytääksesi muita komentoja kuin käyttämäni

Painikkeet ja vivut

Kaukosäätimen fyysinen puoli on hyvin suora eteenpäin: neljä painiketta (äänten toistamiseksi kytke valot päälle ja pois päältä) ja yksi potentiometri, joka on kytketty vipuun, jotta voit hallita junan nopeutta ja suuntaa

Painikkeen ei tarvitse vetää vastusta, vaan voit tehdä tämän koodilla, ts

pinMode (D15, 'input_pulldown');

Voit kytkeä potentiometrin yhteen tuloista ja lukea sen sitten analogisesta signaalista seuraavan komennon avulla

var lukeminen = analoginen (D31);

Toinen ero arduinoon on se, että espruniossa ei ole asetuksia ja silmukkaa. Joten sen sijaan sijoitan kaikki erilliset komennot/laukaisimet toimintoihin ja asetan sitten setIntervalin, joka toistuu 100 millisekunnin välein, kuuntelen painiketta ja suoritan sitten vaaditun toiminnon, kun painiketta on painettu.

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

Vivun käyttäminen oli hieman monimutkaisempaa, koska halusin pystyä säätämään nopeutta asteittain, joten minun oli ensin lähetettävä analoginen arvo toimimaan

var lukema = analoginen (D31);

juna_suunta (lukeminen * 1024);

Sitten juna_suunta -funktiossa hajotin komennon kuuteen eri askeleen potin arvon perusteella

Koko matkan, kertoo junalle täydellä nopeudella eteenpäin

Puolivälissä, kertoo junalle 50% nopeudella

Keskellä, kehottaa junaa pysähtymään

Puolivälissä, käskee junaa ajamaan taaksepäin 50% nopeudella

Alaspäin, kertoo junalle täydellä nopeudella taaksepäin

eli

toiminto juna_suunta (dir_val) {

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

Koko koodi löytyy alla olevasta linkistä

Vaihe 2: Johdotus

Johdotus
Johdotus
Johdotus
Johdotus

Johdotus oli yksinkertaisin osa

Se koostui vain neljästä painikkeesta, jotka on kytketty D15: een, D16: een, D17: een ja D18: een ilman mitään ylösvetovastusta, kuten tämä tapahtui koodissa, ja 1 10k: n vastus, joka on kytketty D31: een

Työskentelen edelleen virtalähteen parissa, mutta tällä hetkellä kaikki virta tulee mikro -usb -katkoksesta ja tämä voidaan kytkeä suoraan virtapankkiin tai USB -porttiin

Vaihe 3: Rakenna

Rakenna
Rakenna
Rakenna
Rakenna
Rakenna
Rakenna
Rakenna
Rakenna

Kaukosäädin on pääosin 3 mm: n, 6 mm: n tai 9 mm: n A4 -vanerilevyjä, ne leikattiin CNC -koneellani, mutta käyttämällä mallia, jonka olisin tehnyt, vaikka se ei olisi mahdotonta tehdä käsin

Toivon, että malli ja valokuvat antavat sinulle kaiken, mitä tarvitset uusimiseen, mutta muutamia huomautuksia, jotka voivat auttaa

3 mm: n painonappikiinnitys on tarkoitettu painikkeen kiinnittämiseen, aukko asettaa painikkeen oikeaan paikkaan, mutta voimme päästä käsiksi takana olevaan jalkaan, jotta voit juottaa mikrosirulle, taaksepäin voit myös kiinnittää MDBT42Q: n käyttämällä jotain liimaa. Edessä sinun on lisättävä niin paljon vaahtoa, että se antaa painikkeille hieman pomppia, kun painat niitä alas, voit käyttää myös jousia

9 mm: n painikkeet tarvitsevat logon joko maalin, kaiverruksen tai jotain muuta, joka osoittaa, mikä painike tekee mitä

Vipu/kahva on kerrostettava, käytin 6 mm: n tappia niiden kohdistamiseen kaikkiin oikeisiin asentoihin

Suositeltava: