Cuprins:

Telecomandă Bluetooth din lemn pentru trenul Lego Duplo: 3 pași (cu imagini)
Telecomandă Bluetooth din lemn pentru trenul Lego Duplo: 3 pași (cu imagini)

Video: Telecomandă Bluetooth din lemn pentru trenul Lego Duplo: 3 pași (cu imagini)

Video: Telecomandă Bluetooth din lemn pentru trenul Lego Duplo: 3 pași (cu imagini)
Video: LEGO DUPLO TRAIN on MEGA circuit - Super Buildings Lego City! 2024, Noiembrie
Anonim
Telecomandă Bluetooth din lemn pentru trenul Lego Duplo
Telecomandă Bluetooth din lemn pentru trenul Lego Duplo
Telecomandă Bluetooth din lemn pentru trenul Lego Duplo
Telecomandă Bluetooth din lemn pentru trenul Lego Duplo

Copiii mei au iubit acest mic tren Lego Duplo, în special cel mai mic al meu, care se străduiește să se comunice cu cuvinte, așa că am vrut să-i construiesc ceva care să o ajute să se joace cu trenul independent de adulți sau de telefoane / tablete. Ceva care ar adăuga o dimensiune suplimentară trenului și i-ar conferi o valoare de joc suplimentară

Setul Lego are deja puține modalități de a controla trenul, îl puteți împinge înainte pentru a porni și ține-l apăsat pentru al opri, îl puteți controla folosind etichete de culoare care merg pe cale, astfel încât atunci când trenul îl trece peste acesta declanșează diferite acțiuni, adică înainte, invers, redarea sunetelor aprinde luminile. De asemenea, puteți descărca o aplicație pentru telefon sau tabletă care se poate conecta la tren prin Bluetooth.

Aici o recenzie completă a trenului

După ce am vânat pe internet, am găsit că erau destul de puțini oameni diferiți, care aveau toate codurile scrise gata să controleze trenul. Nodul „Poweredup” scris de nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) arăta ca un început perfect, a fost scris folosind Javascript, cu care nu eram familiarizat parțial, dar m-am gândit dacă ar putea găsi microcip bazat pe Java, acesta ar fi un început bun.

Din nou, după ce am vânat pe internet, am găsit din nou sistemul espruino, acesta este similar cu ardiuno, dar se bazează pe javascript. Codul espriuno ar putea fi încărcat pe un mircochip MDBT42Q care avea încorporat bluetooth. M-am gândit că dacă aș putea încărca modulul "pornit" pe el, aș fi la jumătatea drumului, totuși acest lucru simplu nu era cazul, modulul conținând mai multe biblioteci pentru a fi încărcat pe MDBT42Q, așa că se pare că trebuie să găsiți o soluție mai simplă …

Pasul 1: Codul

Codul
Codul

Esprinuo

Pentru cei care nu cunosc platforma Espruino https://www.espruino.com (și nu am știut) este foarte asemănător cu Arduino, există câteva diferențe principale pe care le-a scris pentru javascript mai degrabă c, Se simte ușor mai nou deci nu există exemple, dar sprijinul prin intermediul forumurilor este mare și foarte util.

Javascript întâlnește trenul

Primul obstacol a fost conectarea la tren prin Bluetooth, Acest lucru se poate face folosind clasa NRF care este livrată în codul espruino.

NRF.connect poate fi utilizat pentru a vă conecta la tren, însă prima dvs. nevoie pentru a găsi adresa trenului în sine, puteți utiliza NRF.findDevices pentru a obține aceste informații

Odată ce ați făcut acest lucru, trebuie să trimiteți trenului două valori pentru a strânge mâna cu trenul, pentru trenul meu acesta a fost „00001623-1212-efde-1623-785feabcd123” urmat de „00001624-1212-efde-1623-785feabcd123„ Cred acest lucru va fi același pentru toate trenurile cu aburi, dar celelalte versiuni, adică setul de marfă, poate diferit

Odată ce aveți acest lucru, puteți conecta trenul utilizând o funcție precum următoarea, vă puteți da seama când trenul s-a conectat, deoarece va clipi farurile albastre?

NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Apoi (funcția (g) {

console.log („Începând conectarea2”); gatt = g; returnează gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). then (funcție (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). then (funcție (caracteristică) {Caracteristic_magazin = caracteristică; return caracteristică.readValue ();}).then (value => {console.log (value);}). then (function () {console.log ("Train Connected"); connected = 1;

Lucrurile distractive

Acum v-ați conectat la tren, este timpul pentru toate lucrurile distractive, cum ar fi să îl mișcați înainte, să faceți sunet și să aprindeți și să opriți lumina. Este o sarcină simplă de a trimite trenului o valoare de pregătire, urmată de comanda reală, adică

funcție play_horn () {

console.log ("mesaj =", Magazin_caracteristic); const prepval = new 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);}); }

Poate că va trebui să faceți puțini săpături pentru a găsi altă comandă decât cele pe care le-am folosit

Butoane și pârghii

Partea fizică a telecomenzii este foarte dreaptă patru butoane (pentru a reda sunete, aprinde și opri luminile) și un potențiometru care este conectat la pârghie, astfel încât să puteți controla viteza și direcția trenului

Butonul nu are nevoie de rezistență pull up, în schimb puteți face acest lucru în cod, adică

pinMode (D15, 'input_pulldown');

Puteți conecta potențiometrul la una dintre intrări și apoi citiți-l semnalul analogic folosind următoarea comandă

citire var = analogRead (D31);

Cealaltă diferență față de arduino este că esprunio nu are o configurare și o buclă. Deci, în schimb, plasez toate comenzile / declanșatoarele separate în funcții și apoi setez setInterval care se repetă la fiecare 100 de milisecunde, ascultând butonul, apoi rulez funcția necesară când butonul a fost apăsat.

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

Acționarea pârghiei a fost puțin mai complicată, deoarece am vrut să pot regla treptat viteza, așa că mai întâi a trebuit să trimit valoarea analogică pentru a funcționa

citire var = analogRead (D31);

direcție_tren (citire * 1024);

Apoi în funcția train_direction am descompus comanda la 6 trepte diferite pe baza valorii potului

Până la capăt, îi spune trenului să meargă cu viteză maximă

La jumătatea drumului sus, îi spune trenului să meargă înainte cu o viteză de 50%

Middle, spune trenului să oprească

La jumătatea drumului în jos, îi spune trenului să meargă înapoi cu o viteză de 50%

Tot jos, îi spune trenului să meargă cu viteza maximă în sens invers

adică

funcție direcție tren (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = new 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 {Caractere_magazin.writeValue (sendvalue);}); }

Codul complet poate fi oprit pentru linkul de mai jos

Pasul 2: Cablarea

Cablarea
Cablarea
Cablarea
Cablarea

Cablarea a fost cea mai simplă parte

A constat doar pe 4 butoane conectate la D15, D16, D17 și D18 fără rezistență de tragere, deoarece acest lucru a fost făcut în cod și 1 rezistor de 10k conectat la D31

Încă lucrez la alimentarea cu energie electrică, dar în prezent toată puterea vine dintr-un micro usb breakout și ar putea fi conectate direct la o bancă de alimentare sau la un port USB

Pasul 3: Construirea

Clădirea
Clădirea
Clădirea
Clădirea
Clădirea
Clădirea
Clădirea
Clădirea

Telecomanda este în cea mai mare parte din foi de placaj A4 de 3mm, 6mm sau 9mm, acestea au fost tăiate pe mașina mea CNC, totuși folosind șablonul cu condiția aș face, deși nu ar fi imposibil de făcut manual

Sper că șablonul și fotografiile vă vor oferi tot ce trebuie să refaceți, totuși există câteva note care ar putea ajuta

Suportul butonului de 3 mm este destinat lipirii butonului, golul va poziționa butonul în locul corect, dar vă permitem să accesați piciorul din spate, astfel încât să puteți lipi microcipul, pe revers puteți monta și MDBT42Q folosind ceva lipici. Pe partea din față va trebui să adăugați spumă, astfel încât să dea butoanelor un mic salt atunci când le apăsați în jos, puteți folosi și arcuri

Butoanele de 9 mm vor avea nevoie de vopsea, gravură sau altceva pentru a arăta ce buton face ce

Maneta / mânerul va trebui să fie stratificată, am folosit o diblă de 6 mm pentru a le ajuta să le aliniez în toate pozițiile corecte

Recomandat: