Sisällysluettelo:
Video: Puinen Bluetooth -kaukosäädin Lego Duplo Trainille: 3 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
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
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 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
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:
Puinen LED -pelinäyttö Powered by Raspberry Pi Zero: 11 vaihetta (kuvilla)
Puinen LED -pelinäyttö Powered by Raspberry Pi Zero: Tämä projekti toteuttaa 20x10 pikselin WS2812 -pohjaisen LED -näytön, jonka koko on 78x35 cm ja joka voidaan helposti asentaa olohuoneeseen retro -pelejä pelaamaan. Tämän matriisin ensimmäinen versio rakennettiin vuonna 2016 ja monet muut ihmiset rakensivat sen uudelleen. Tämä esimerkki
Naarmuuntunut puinen offset -satelliittiantenni: 11 vaihetta (kuvilla)
Naarmuuntunut puinen offset -satelliittiantenni: Olin törmännyt joihinkin verkkosivustoihin, joissa useat ihmiset rakensivat omat ensisijaiset satelliittiantenninsa, yksi australialainen mies jopa rakensi valtavan 13 metrin offset -astian. Mikä on ero? Pääpaino on siinä, mitä ajattelet, kun joku sanoo "satelliittidis
Puinen levysoitin: 20 vaihetta (kuvilla)
Puinen levysoitin: Halusin esitellä kuinka tietojen tallennuslaitteet toimivat rakentamalla suuren mittakaavan levysoitin. Sen sijaan, että perustan kevyisiin häiriöihin, kuten CD-soittimiin, rakentamani laite toistaa puisia levyjä, joissa on reikiä ja "ei-reikiä". (kuten
DIY puinen Bluetooth -kaiutin: 8 vaihetta (kuvilla)
DIY puinen Bluetooth -kaiutin: Internetistä on jo tuhansia versioita tästä projektista. Miksi teen sellaisen? Koska haluan :) Minulla on oma näkemykseni täydellisestä Bluetooth -kaiuttimesta (täydellinen minulle) ja haluaisin näyttää teille suunnittelu- ja rakennusprosessini! Myös
Pieni puinen tietokonekotelo: 3 vaihetta (kuvilla)
Pieni puinen tietokonekotelo: Tässä ohjeessa näytän sinulle, kuinka rakensin oman todella pienen puukotelon erittäin helposti. viivain-vapaa-aika-dremel ja pora-ATX-virtalähdekotelo (käytetään metalliputkessa