Sadržaj:

Drveni Bluetooth daljinski upravljač za Lego Duplo vlak: 3 koraka (sa slikama)
Drveni Bluetooth daljinski upravljač za Lego Duplo vlak: 3 koraka (sa slikama)

Video: Drveni Bluetooth daljinski upravljač za Lego Duplo vlak: 3 koraka (sa slikama)

Video: Drveni Bluetooth daljinski upravljač za Lego Duplo vlak: 3 koraka (sa slikama)
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Novembar
Anonim
Drveni Bluetooth daljinski upravljač za Lego Duplo vlak
Drveni Bluetooth daljinski upravljač za Lego Duplo vlak
Drveni Bluetooth daljinski upravljač za Lego Duplo vlak
Drveni Bluetooth daljinski upravljač za Lego Duplo vlak

Moja djeca su voljela ovaj mali Lego Duplo voz, posebno moj najmlađi koji se bori da komunicira riječima pa sam joj želio izgraditi nešto što bi joj pomoglo da se igra s vlakom neovisno o odraslima ili telefonima/tabletima. Nešto što bi vlaku dodalo dodatnu dimenziju i dalo mu dodatnu igračku vrijednost

Lego set već ima nekoliko načina za upravljanje vlakom, možete ga gurnuti prema naprijed za pokretanje i držati ga za zaustavljanje, možete ga kontrolirati pomoću oznaka u boji koje idu na prugu, tako da kad vlak pređe preko njega pokreće različite radnje, tj. naprijed, natrag, reprodukcija zvukova uključuje svjetla. Također možete preuzeti aplikaciju za svoj telefon ili tablet koja se može povezati s vlakom putem Bluetootha.

Evo potpunog pregleda vlaka

Nakon lova po internetu, otkrio sam da je bilo dosta različitih ljudi koji su imali sve spremne pisane kodove za kontrolu vlaka. Čvor 'Poweredup' koji je napisao nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) izgledao je kao savršeno započet mogao pronaći mikročip baziran na javi, ovo bi bio dobar početak.

Opet sam nakon lova po internetu ponovo pronašao sistem espruino, sličan ardiunu, ali baziran oko javascripta. Kod espriuno mogao se učitati na MDBT42Q mirkočip koji je imao ugrađen bluetooth. Mislio sam da ako mogu učitati "napajani" modul na njega, bio bih na pola puta, međutim ovo jednostavno nije bio slučaj jer je modul sadržavao mnoge biblioteke velike za učitavanje na MDBT42Q, pa izgleda da moram pronađite jednostavnije rješenje …

Korak 1: Kôd

Kodeks
Kodeks

Esprinuo

Za one koji ne poznaju platformu Espruino https://www.espruino.com (a ja nisam) je li vrlo sličan Arduinu, postoji nekoliko glavnih razlika, jedna je napisana za javascript, radije c, čini se da je nešto novija pa da ne postoje primjeri, međutim, podrška putem foruma je velika i od velike pomoći.

Javascript upoznaj voz

Prva prepreka bila je povezivanje s vlakom putem bluetootha. To se može učiniti pomoću klase NRF koja se isporučuje s espruino kodom.

NRF.connect se može koristiti za povezivanje s vlakom, međutim vaša prva potreba da pronađete adresu samog vlaka, možete koristiti NRF.findDevices za dobivanje ovih informacija

Nakon što ste to učinili, morate vlaku poslati dvije vrijednosti u rukovanje s vlakom, jer je za moj vlak ovo bilo "00001623-1212-efde-1623-785feabcd123", a zatim "00001624-1212-efde-1623-785feabcd123" vjerujem to će biti isto za sve komplete parnih vlakova, ali druge verzije, tj. komplet tereta mogu se razlikovati

Nakon što to učinite, možete spojiti vlak pomoću sljedeće funkcije, možete li reći kada se vlak povezao, jer će treptati svijetli plavo

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

console.log ("Pokretanje povezivanja2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (funkcija (karakteristika) {Characteristic_store = karakteristika; return karakteristika.readValue ();}).then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

Zabavne stvari

Sada kada ste se povezali s vlakom, vrijeme je za sve zabavne stvari, poput kretanja naprijed, stvaranja zvuka i paljenja i gašenja svjetla. To je jednostavan posao slanja vlaku pripremne vrijednosti, nakon čega slijedi stvarna naredba, tj

funkcija play_horn () {

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

Možda ćete morati malo kopati okolo kako biste pronašli drugu naredbu osim onih koje sam koristio

Dugmad i poluge

Fizička strana daljinskog upravljača su vrlo ravna četiri dugmeta (za reprodukciju zvukova, paljenje i gašenje svjetla) i jedan potenciometar koji je spojen na polugu tako da možete kontrolirati brzinu i smjer vlaka

Dugme ne mora da vuče otpornik, već to možete učiniti u kodu, tj

pinMode (D15, 'input_pulldown');

Potenciometar možete spojiti na jedan od ulaza i zatim pročitati analogni signal pomoću sljedeće naredbe

var čitanje = analogRead (D31);

Druga razlika u odnosu na arduino je ta što esprunio nema postavku i petlju. Umjesto toga, stavljam sve zasebne naredbe/okidače u funkcije, a zatim postavljam setInterval koji se ponavlja svakih 100 milisekundi, slušajući dugme, a zatim pokreće traženu funkciju kada je dugme pritisnuto.

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

Rad s polugom bio je malo složeniji jer sam htio imati mogućnost postupnog podešavanja brzine pa sam prvo morao poslati analognu vrijednost u funkciju

var čitanje = analogRead (D31);

train_direction (čitanje * 1024);

Zatim sam u funkciji train_direction razbio naredbu na 6 različitih koraka na osnovu vrijednosti pot

Skroz gore, govori vozu da ide punom brzinom

Na pola puta gore, govori vlaku da ide naprijed brzinom od 50%

Sredina, govori vozu da stane

Na pola puta dolje, govori vlaku da ide unatrag brzinom od 50%

Skroz dolje, govori vlaku da ide punom brzinom unatrag

tj

funkcija train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = novi Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = novi Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = novi 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);}); }

Cijeli kôd možete pronaći na donjoj vezi

Korak 2: Ožičenje

The Wiring
The Wiring
The Wiring
The Wiring

Ožičenje je bio najjednostavniji dio

Sastojao se samo od 4 tipke spojene na D15, D16, D17 i D18 bez ikakvog otpornika za podizanje, kao što je to učinjeno u kodu i 1 10k otpornika spojenog na D31

Još uvijek radim na napajanju, ali trenutno sva snaga dolazi iz mikro usb proboja, a to bi se moglo spojiti izravno na banku napajanja ili USB priključak

Korak 3: Izgradnja

The Build
The Build
The Build
The Build
The Build
The Build
The Build
The Build

Daljinski upravljač je uglavnom od 3 mm, 6 mm ili 9 mm A4 listova šperploče, rezani su na mojoj CNC mašini, međutim koristeći šablon pod uslovom da bih to učinio, iako to ne bi bilo nemoguće učiniti ručno

Nadam se da će vam predložak i fotografije dati sve što vam je potrebno za prepravljanje, međutim postoji nekoliko napomena koje bi mogle pomoći

Nosač s gumbom od 3 mm služi za lijepljenje gumba, otvor će postaviti gumb na pravo mjesto, ali vam dopuštamo pristup nozi sa stražnje strane kako biste mogli lemiti na mikročip, na poleđini možete montirati i MDBT42Q koristeći malo ljepila. S prednje strane morat ćete dodati toliko pjene kako bi tipke malo poskakivale kada ih pritisnete, a možete koristiti i opruge

Dugmad od 9 mm trebaju logotip ili boju, gravuru ili nešto drugo da pokažu šta dugme šta radi

Poluga/ručka će morati biti slojevita, upotrijebio sam tiplu od 6 mm kako bih im pomogao u poravnanju u svim ispravnim položajima

Preporučuje se: