Tartalomjegyzék:

Fa Bluetooth távirányító a Lego Duplo Train vonathoz: 3 lépés (képekkel)
Fa Bluetooth távirányító a Lego Duplo Train vonathoz: 3 lépés (képekkel)

Videó: Fa Bluetooth távirányító a Lego Duplo Train vonathoz: 3 lépés (képekkel)

Videó: Fa Bluetooth távirányító a Lego Duplo Train vonathoz: 3 lépés (képekkel)
Videó: БАХШ ПЛОВ Бухарских Евреев 1000 летний РЕЦЕПТ КАК ПРИГОТОВИТЬ 2024, November
Anonim
Fa Bluetooth távirányító a Lego Duplo vonathoz
Fa Bluetooth távirányító a Lego Duplo vonathoz
Fa Bluetooth távirányító a Lego Duplo vonathoz
Fa Bluetooth távirányító a Lego Duplo vonathoz

A gyerekeim imádták ezt a kis Lego Duplo vonatot, különösen a legfiatalabbomat, aki nehezen kommunikálja magát szavakkal, ezért szerettem volna valamit építeni neki, ami segít neki a vonaton játszani, függetlenül a felnőttektől vagy a telefonoktól/táblagépektől. Valami, ami extra dimenziót adna a vonatnak, és extra játékértéket adna neki

A Lego készletnek már kevés módja van a vonat irányítására, előre lehet tolni, hogy elinduljon, és lenyomva tartva megállíthatja, irányíthatja a pályán lévő színcímkék segítségével, így amikor a vonat áthalad rajta, különböző műveleteket indít el, pl. előre, hátra, lejátszási hangok kapcsolják fel a villanyt. Letölthet egy olyan alkalmazást is telefonjára vagy táblagépére, amely Bluetooth -on keresztül csatlakozhat a vonathoz.

Itt a vonat teljes áttekintése

Az interneten való vadászat után azt találtam, hogy elég kevés ember van, akiknek minden kész kódja megvan a vonat irányítására. A "Poweredup" csomópont, amelyet nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) írt, tökéletes kezdetnek tűnt, Javascript használatával írták, amelyet nem ismertem részben, de gondoltam, ha találhatok java alapú mikrochipet, ez jó kezdet lenne.

Ismét az interneten való vadászat után ismét megtaláltam az espruino rendszert, ez hasonló az ardiuno -hoz, de alapja a javascript. Az espriuno kód betölthető volt egy MDBT42Q mircochipre, amely Bluetooth -beágyazással rendelkezik. Azt hittem, ha betölthetem a "bekapcsolt" modult, akkor félúton lennék, de ez nem volt egyszerű, a modul sok könyvtárban volt, hogy betöltse az MDBT42Q -t, ezért úgy tűnik, találj egy egyszerűbb megoldást …

1. lépés: A kód

A kód
A kód

Esprinuo

Azok számára, akik nem ismerik az Espruino platformot https://www.espruino.com (és én nem), nagyon hasonlít az Arduino -hoz így ne legyenek példák, azonban a fórumokon keresztül nyújtott támogatás nagyszerű és nagyon hasznos.

Javascript megfelel a vonatnak

Az első akadály az volt, hogy bluetooth -on keresztül csatlakozzunk a vonathoz. Ezt megtehetjük az espruino kóddal szállított NRF osztály használatával.

Az NRF.connect használható a vonathoz való csatlakozáshoz, de ha először meg kell találnia a vonat címét, akkor az NRF.findDevices segítségével szerezheti meg ezt az információt

Miután ezt megtette, el kell küldenie a vonat két értékét kézfogásra a vonattal, az én vonatomnál ez volt a "00001623-1212-efde-1623-785feabcd123", majd a "00001624-1212-efde-1623-785feabcd123" azt hiszem ez minden gőzmozdony -készletre ugyanaz lesz, de a többi változat, azaz a rakománykészlet eltérő lehet

Ha ez megvan, csatlakoztathatja a vonatot az alábbi funkcióval: tudja megmondani, mikor csatlakozik a vonat, mivel villogni kezd, a fényszórók kék

NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Akkor (függvény (g) {

console.log ("Csatlakozás indítása2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (function (jellemző) {Characteristic_store = jellemző; return jellemző.readValue ();}). then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

A szórakoztató dolgokat

Most, hogy csatlakozott a vonathoz, itt az ideje minden olyan szórakoztató dolognak, mint az előrehaladás, hangzás, valamint a lámpa be- és kikapcsolása. Egyszerű feladat elküldeni a vonatnak egy előkészítési értéket, majd a tényleges parancsot, pl

függvény play_horn () {

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

Lehet, hogy egy kicsit ásni kell, hogy más parancsot találjon, mint amit én használtam

Gombok és karok

A távirányító fizikai oldala nagyon egyenesen négy gomb (a hangok lejátszásához kapcsolja be és ki a lámpákat) és egy potenciométer, amely a karhoz van csatlakoztatva, így szabályozhatja a vonat sebességét és irányát

A gomb nem igényel felhúzó ellenállást, ezt kódban is megteheti, pl

pinMode (D15, 'input_pulldown');

Csatlakoztathatja a potenciométert az egyik bemenethez, majd a következő paranccsal leolvashatja az analóg jelet

var olvasás = analogRead (D31);

A másik különbség az arduinohoz képest az, hogy az esprunio nem rendelkezik beállításokkal és hurokkal. Ehelyett az összes külön parancsot/trigger -t funkciókba helyezem, majd beállítom a setInterval -t, amely 100 ezredmásodpercenként megszakad, hallgatva a gombot, majd a gomb megnyomása után futtassa a kívánt funkciót.

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

A kar működtetése kicsit bonyolultabb volt, mivel fokozatosan akartam beállítani a sebességet, ezért először el kellett küldenem az analóg értéket a működéshez

var olvasás = analogRead (D31);

vonat_irány (olvasás * 1024);

Aztán a vonat_irány funkcióban lebontottam a parancsot 6 különböző lépésekre a pot értéke alapján

Egészen felfelé azt mondja a vonatnak, hogy menjen teljes sebességgel előre

Félúton azt mondja a vonatnak, hogy 50% -os sebességgel menjen előre

Közép, azt mondja a vonatnak, hogy álljon meg

Félúton azt mondja a vonatnak, hogy 50% -os sebességgel menjen hátra

Egészen lefelé azt mondja a vonatnak, hogy fordított sebességgel menjen teljes sebességgel

azaz

függvény vonat_irány (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = új 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);}); }

A teljes kód az alábbi linken található

2. lépés: A huzalozás

A vezetékek
A vezetékek
A vezetékek
A vezetékek

A kábelezés volt a legegyszerűbb rész

Ez csak egy 4 nyomógombból állt, amelyek a D15, D16, D17 és D18 -hoz vannak csatlakoztatva, és nincsenek felhúzható ellenállások, mivel ez a kódban történt, és 1 10 k ellenállás a D31 -hez csatlakoztatva

Még mindig dolgozom a tápegységen, de jelenleg minden áram egy micro usb -ből származik, és ez közvetlenül csatlakoztatható egy tápegységhez vagy egy USB -porthoz

3. lépés: Az építés

Az építés
Az építés
Az építés
Az építés
Az építés
Az építés
Az építés
Az építés

A távirányító többnyire 3 mm -es, 6 mm -es vagy 9 mm -es A4 -es rétegelt lemezből készült, ezeket a CNC -gépemen vágták, de a megadott sablon segítségével, bár nem lenne lehetetlen kézzel csinálni

Remélem, hogy a sablon és a fényképek mindent megadnak, amire szüksége van, de néhány megjegyzés segíthet

A 3 mm -es nyomógombos rögzítés a nyomógomb rögzítésére szolgál, a rés a megfelelő helyre helyezi a gombot, de lehetővé tesszük, hogy hozzáférjen a hátsó lábhoz, így forraszthatja a mikrochipet, a hátlapra pedig felszerelheti az MDBT42Q -t valamilyen ragasztó segítségével. Az előlapon olyan habot kell hozzáadni, hogy a gombok kissé felpattanjanak, amikor lenyomja őket, rugókat is használhat

A 9 mm -es gombokhoz szükség van a logó festésére, gravírozására vagy valami másra, amely megmutatja, hogy melyik gomb mit tesz

A kart/fogantyút fel kell rétegezni, én 6 mm -es dübelt használtam, hogy segítsen igazítani őket a megfelelő pozíciókba

Ajánlott: