Cuprins:
Video: Telecomandă Bluetooth din lemn pentru trenul Lego Duplo: 3 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
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
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 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
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:
Cadru de afișaj pentru laptop pentru laptop, din lemn: 6 pași (cu imagini)
Cadru de afișaj pentru laptop pentru laptopuri: Când laptopul meu vechi a murit în cele din urmă, nu am vrut toate componentele perfect funcționale care umpleau un depozit de deșeuri. Prin urmare, am recuperat panoul LCD și am construit un cadru simplu din lemn pentru a-l ține pentru a fi utilizat ca monitor autonom. Am proiectat acest produs
Cum să asamblați un braț impresionant din lemn pentru robot (Partea 1: Robot pentru urmărirea liniei) - Bazat pe micro: Bit: 9 pași
Cum să asamblați un braț robot de lemn impresionant (Partea 1: Robot pentru urmărirea liniei) - Bazat pe Micro: Bit: Acest tip de lemn are trei forme, este foarte diferit și impresionant. Atunci hai să intrăm în el unul câte unul
Cum se utilizează câteva bucăți de lemn pentru a se asambla într-un braț de robot din lemn drăguț și puternic: 10 pași
Cum se utilizează câteva bucăți de lemn pentru a se asambla într-un braț de roboți din lemn drăguț și puternic: numele brațului robot este WoodenArm. Arată foarte drăguț! Dacă doriți mai multe detalii despre WoodenArm, vă rugăm să consultați www.lewansoul.com Acum putem face o introducere despre WoodenArm, să mergem mai departe
Suport telefonic pentru mașină din lemn pentru încărcare fără fir Google Home: 7 pași (cu imagini)
Google Home Wireless Wireless Charging Mount Car Phone Mount: Bun venit! Ați dorit vreodată să puneți o întrebare Google în timp ce conduceți fără să vă deschideți telefonul? Asistentul Google este o aplicație excelentă, cu funcții interesante, dar necesită să deblocați telefonul și să aveți aplicația deschisă sau să țineți apăsat acasă, dar
Mod pentru laptop pentru furnir din lemn: 9 pași (cu imagini)
Mod pentru laptop pentru furnir din lemn: acesta este primul meu instructiv YAY! În acest Instructable vă voi arăta cum să aplicați un finisaj de furnir de lemn laptopului dvs. pentru a obține un aspect vechi de școală tehnologiei moderne