Obsah:

Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train: 3 kroky (s obrázky)
Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train: 3 kroky (s obrázky)

Video: Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train: 3 kroky (s obrázky)

Video: Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train: 3 kroky (s obrázky)
Video: The ABSOLUTE WORST Battery Corrosion I’VE EVER Seen #lego #remotes #battery #toy #problem #shorts 2024, Listopad
Anonim
Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train
Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train
Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train
Dřevěný dálkový ovladač Bluetooth pro Lego Duplo Train

Moje děti milovaly tento malý vlak Lego Duplo, zvláště moje nejmladší, která se snaží komunikovat slovy, takže jsem jí chtěl postavit něco, co by jí pomohlo hrát s vlakem nezávisle na dospělých nebo telefonech/tabletech. Něco, co by vlaku dodalo další rozměr a dodalo mu další herní hodnotu

Souprava Lego již má několik způsobů, jak ovládat vlak, můžete jej zatlačit dopředu, abyste jej spustili, a podržet jej, abyste jej zastavili, můžete jej ovládat pomocí barevných značek, které jdou po trati, takže když ji vlak projede, spustí různé akce, tj. dopředu, dozadu, zvuky přehrávání zapněte světla. Můžete si také stáhnout aplikaci pro svůj telefon nebo tablet, kterou lze připojit k vlaku přes bluetooth.

Zde je kompletní přehled vlaku

Když jsem lovil na internetu, našel jsem tam docela dost různých lidí, kteří měli připravený psaný kód pro ovládání vlaku. Uzel 'Poweredup' napsaný nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) vypadal jako perfektní začátek, byl napsán pomocí Javascriptu, který jsem nebyl částečně obeznámen, ale myslel jsem, kdybych mohl najít mikročip na bázi javy, to by byl dobrý začátek.

Po opětovném hledání na internetu jsem znovu našel systém espruino, který je podobný ardiunu, ale je založen na javascriptu. Kód espriuno bylo možné načíst na mircochip MDBT42Q, který měl vestavěný bluetooth. Říkal jsem si, že kdybych do něj mohl načíst modul „napájený“, byl bych v polovině cesty, nicméně toto nebylo ten případ, kdy by modul obsazený mnoha knihovnami byl dostatečně velký pro načtení na MDBT42Q, takže se zdá, že musím najít jednodušší řešení …

Krok 1: Kód

Kód
Kód

Esprinuo

Pro ty, kteří neznají platformu Espruino https://www.espruino.com (a já jsem to nevěděl), je to velmi podobné Arduinu, Existuje několik hlavních rozdílů, které napsal pro javascript, spíše c, Cítí se mírně novější aby zde nebyly příklady, podpora prostřednictvím fór je skvělá a velmi užitečná.

Javascript potkat vlak

První překážkou bylo připojení k vlaku přes bluetooth. To lze provést pomocí třídy NRF, která je dodávána s kódem espruino.

NRF.connect lze použít k připojení k vlaku, ale vaše první potřeba najít adresu samotného vlaku, můžete použít NRF.findDevices získat tyto informace

Jakmile to uděláte, budete muset poslat vlaku dvě hodnoty k podání ruky s vlakem, u mého vlaku to bylo „00001623-1212-efde-1623-785feabcd123“a za ním „00001624-1212-efde-1623-785feabcd123“to bude stejné pro všechny soupravy parních vlaků, ale ostatní verze, tj. nákladní souprava, se mohou lišit

Jakmile to máte, můžete vlak připojit pomocí funkce jako následující, můžete zjistit, kdy se vlak připojil, protože bude blikat, svítí modře

NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Poté (funkce (g) {

console.log ("Zahájení připojování2"); gatt = g; vrátit gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123");)). pak (hodnota => {console.log (hodnota);}). poté (funkce () {console.log ("Train Connected"); connected = 1;

Zábavné věci

Nyní, když jste připojeni k vlaku, je čas na všechny zábavné věci, jako je pohyb vpřed, vydávání zvuku a zapínání a vypínání světla. Je to jednoduché poslat vlaku hodnotu prep, následovanou skutečným příkazem, tj

funkce play_horn () {

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

Možná budete muset trochu kopat, abyste našli jiný příkaz než ten, který jsem použil

Tlačítka a páčky

Fyzická strana dálkového ovladače je velmi přímá vpřed, čtyři tlačítka (pro přehrávání zvuků, zapnutí a vypnutí světel) a jeden potenciometr, který je připojen k páce, takže můžete ovládat rychlost a směr vlaku

Tlačítko nepotřebuje vytahovací odpor, místo toho to můžete udělat v kódu, tzn

pinMode (D15, 'input_pulldown');

Potenciometr můžete připojit k jednomu ze vstupů a poté jej přečíst analogovým signálem pomocí následujícího příkazu

var reading = analogRead (D31);

Dalším rozdílem pro arduino je, že esprunio nemá nastavení a smyčku. Místo toho tedy umístím všechny oddělené příkazy/spouště do funkcí a poté nastavím setInterval, který se každých 100 milisekund opakuje, poslech tlačítka a spuštění požadované funkce po stisknutí tlačítka.

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

Ovládání páky bylo trochu komplikovanější, protože jsem chtěl, aby bylo možné postupně upravovat rychlost, takže nejprve jsem musel poslat analogovou hodnotu, aby fungovala

var reading = analogRead (D31);

vlak_směr (čtení * 1024);

Pak jsem ve funkci train_direction rozdělil příkaz na 6 různých přírůstků na základě hodnoty potu

Celou cestu nahoru říká vlaku, aby šel vpřed plnou rychlostí

V polovině cesty říká vlaku, aby šel vpřed rychlostí 50%

Middle, říká vlaku, aby zastavil

V polovině cesty řekne vlaku, aby se vrátil 50% rychlostí

Až dolů, říká vlaku, aby šel plnou rychlostí zpět

tj

funkce vlak_směr (dir_val) {

//console.log("message = ", Character_store); const prepval = nový 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 sendvalueue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) {const sendvalueue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalueue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val {Characteristic_store.writeValue (sendvalue);}); }

Úplný kód lze stáhnout z níže uvedeného odkazu

Krok 2: Zapojení

Zapojení
Zapojení
Zapojení
Zapojení

Zapojení bylo nejjednodušší částí

Skládalo se pouze na 4 tlačítcích připojených k D15, D16, D17 a D18 bez jakéhokoli vytahovacího odporu, jak bylo provedeno v kódu, a 1 10k odpor připojený k D31

Stále pracuji na napájecím zdroji, ale v současné době veškerá energie pochází z mikro USB rozbití a to by mohlo být připojeno přímo k powerbance nebo USB portu

Krok 3: Sestavení

Stavba
Stavba
Stavba
Stavba
Stavba
Stavba
Stavba
Stavba

Dálkový ovladač je většinou z překližky formátu A4, 3 mm, 6 mm nebo 9 mm, které byly řezány na mém CNC stroji, ale pomocí šablony, kterou jsem poskytl, ačkoli bych to nemohl udělat ručně

Doufám, že šablona a fotografie vám poskytnou vše, co potřebujete k předělání, ale několik poznámek, které by mohly pomoci

3mm držák na tlačítko slouží k nalepení tlačítka, mezera umístí tlačítko na správné místo, ale my vám umožní přístup k noze na zadní straně, takže můžete pájet na mikročip, na zadní straně můžete také namontovat MDBT42Q pomocí nějakého lepidla. Na přední stranu budete muset přidat pěnu, aby tlačítka trochu poskakovala, když je stisknete dolů, můžete také použít pružiny

9mm tlačítka budou potřebovat buď logo, barvu, gravírování nebo něco jiného, aby bylo vidět, jaké tlačítko co dělá

Páka/rukojeť bude muset být navrstvena, použil jsem 6 mm hmoždinku, která jim pomohla zarovnat ve všech správných polohách

Doporučuje: