Tartalomjegyzék:
Videó: Fa Bluetooth távirányító a Lego Duplo Train vonathoz: 3 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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 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
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:
Arduino böngésző alapú távirányító (linux): 9 lépés (képekkel)
Arduino böngészőalapú távirányító (linux): Gyerekeink vannak. Nagyon szeretem őket, de mindig elrejtik a műhold és a TV távirányítóját, amikor bekapcsolják a gyermekcsatornákat. Miután ez több éven keresztül naponta történt, és miután drága feleségem megengedte, hogy
Magic Button 4k: a 20USD BMPCC 4k (vagy 6k) vezeték nélküli távirányító: 4 lépés (képekkel)
Magic Button 4k: a 20USD BMPCC 4k (vagy 6k) vezeték nélküli távirányító: Sokan kérték, hogy osszak meg néhány részletet a BMPCC4k vezeték nélküli vezérlőjéről. A legtöbb kérdés a bluetooth vezérlésre vonatkozott, ezért megemlítek néhány részletet ezzel kapcsolatban. Feltételezem, hogy ismeri az ESP32 Arduino környezetet
GH5 pedál redőny távirányító: 5 lépés (képekkel)
GH5 lábpedál redőny távirányító: Sok asztali fotózást végzek mindkét kezemmel, és a pedálos redőny távirányítója feltétlenül kötelező! Bár lehetséges a kereskedelemben kapható GH sorozatú távirányító módosítása lábpedál hozzáadásával, egy
Távirányító Bluetooth fénykapcsoló: 4 lépés (képekkel)
Távvezérlésű Bluetooth -fénykapcsoló: Ez lesz az első projekt a sorozatban: "Optimalizált lustaság: túltervezett megoldások a rendkívül triviális problémákra" "Valaha feküdt az ágyban késő este, olvasva vagy Netflixet nézett laptopján? A legrosszabb persze az
"Retro Future" Bluetooth távirányító: 9 lépés (képekkel)
"Retro Future" Bluetooth távirányító: Mindig is szerettem a " holnap világa " század közepe sci-fi és koncepciós termékeiben mutattunk be. Oké, ez nem igaz. Fiatal koromban azt gondoltam, hogy a Tricoders a Star Trek -en csúnya és ügyetlen, de