INHOUDSOPGAWE:
Video: Houten Bluetooth -afstandsbediening vir Lego Duplo -trein: 3 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
My kinders was mal oor hierdie klein Lego Duplo -trein, veral my jongste wat sukkel om met woorde te kommunikeer, so ek wou vir haar iets bou wat haar sou help om onafhanklik van volwassenes of telefone/tablette met die trein te speel. Iets wat 'n ekstra dimensie aan die trein sou gee en dit ekstra speelwaarde sou gee
Die Lego -stel het reeds 'n paar maniere om die trein te beheer; u kan dit vorentoe stoot om te begin en hou om dit te stop; u kan dit beheer met behulp van kleuretikette wat op die spoor gaan, dus wanneer die trein daaroor ry, word verskillende aksies veroorsaak, dws vorentoe, agteruit, speelgeluide, skakel die ligte aan. U kan ook 'n app vir u telefoon of tablet aflaai wat via Bluetooth met die trein kan skakel.
Hier is 'n volledige oorsig van die trein
Nadat ek op die internet rondgejaag het, het ek gevind dat daar baie min mense was wat al die geskrewe kode gereed gehad het om die trein te beheer. Die 'Poweredup'-knoop wat deur nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) geskryf is, het soos 'n perfekte begin gelyk. Dit is geskryf met behulp van Javascript waarvan ek nie gedeeltelik vertroud was nie, maar ek het gedink as ek As u 'n java -gebaseerde mikroskyfie kan vind, is dit 'n goeie begin.
Nadat ek weer op die internet rondgejaag het, het ek die espruino -stelsel gevind, dit is soortgelyk aan die ardiuno, maar gebaseer op javascript. Die espriuno -kode kan op 'n MDBT42Q -mircochip gelaai word wat met Bluetooth ingebed is. Ek het gedink dat as ek die 'ingeskakelde' module kan laai, ek halfpad daar sou wees, maar dit was eenvoudig nie die geval nie, maar die module bevat in baie groot biblioteke om op die MDBT42Q te laai, so dit lyk asof ek moet vind 'n eenvoudiger oplossing …
Stap 1: Die kode
Esprinuo
Vir diegene wat nie die Espruino -platform ken nie https://www.espruino.com (en ek het nie) is dit baie soortgelyk aan die Arduino; daar is 'n paar belangrike verskille wat dit vir javascript geskryf het, eerder c, dit voel effens nuwer so daar is voorbeelde, maar die ondersteuning via die forums is baie en baie nuttig.
Javascript ontmoet die trein
Die eerste struikelblok was om via Bluetooth met die trein te skakel. Dit kan gedoen word met behulp van die NRF -klas waarmee die espruino -kode gestuur word.
NRF.connect kan gebruik word om met die trein te skakel, maar u moet eers die adres van die trein self vind, u kan NRF.findDevices gebruik om hierdie inligting te kry
Sodra u dit gedoen het, moet u die trein twee waarde stuur om met die trein te handdruk, vir my trein was dit "00001623-1212-efde-1623-785feabcd123" gevolg deur "00001624-1212-efde-1623-785feabcd123" ek glo dit sal dieselfde wees vir alle stoomtreine, maar die ander weergawes, dws die vragstel, kan anders wees
Sodra u dit het, kan u die trein verbind met behulp van die funksie soos die volgende. Kan u weet wanneer die trein aansluit, want dit sal die kopligte blou blits
NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Dan (funksie (g) {
console.log ("Begin met verbinding2"); gatt = g; terugkeer gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). dan (funksie (diens) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). dan) (funksie (kenmerk) {Characteristic_store = kenmerkend; return characterist.readValue ();}).dan (waarde => {console.log (waarde);}). dan (funksie () {console.log ("Train Connected"); connected = 1;
Die lekker dinge
As u nou aan die trein gekoppel is, is dit tyd vir al die lekker dinge, soos om dit vorentoe te beweeg, geluid te maak en die lig aan en af te skakel. Dit is 'n eenvoudige taak om die trein 'n voorafwaarde te stuur, gevolg deur die werklike opdrag, dws
funksie play_horn () {
console.log ("message =", Characteristic_store); const prepval = nuwe Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = nuwe Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).dan (_ => {Characteristic_store.writeValue (sendvalue);}); }
Miskien moet u 'n bietjie gaan soek om 'n ander opdrag te vind as die wat ek gebruik het
Knoppies en hefbome
Die fisiese kant van die afstandsbediening is vier knoppies reguit vorentoe (om klanke te speel, die ligte aan en uit te skakel) en 'n potensiometer wat aan die hefboom gekoppel is, sodat u die spoed en rigting van die trein kan beheer
Die knoppie het nie 'n optrekweerstand nodig nie, maar u kan dit in kode doen, dws
pinMode (D15, 'input_pulldown');
U kan die potensiometer aan een van die insette koppel en dit dan die analoog sein lees deur die volgende opdrag te gebruik
var lees = analogRead (D31);
Die ander verskil met die arduino is dat esprunio nie 'n opstelling en lus het nie. Dus plaas ek al die afsonderlike opdrag/snellers in funksies en stel dan setInterval op wat elke 100 millisekondes loop, luister na die knoppie en voer dan die vereiste funksie uit as die knoppie ingedruk is.
as (digitalRead (D15) == 1) {play_horn (); }
Die hantering van die hefboom was 'n bietjie meer ingewikkeld, omdat ek die snelheid geleidelik wou aanpas, sodat ek eers die analoogwaarde moes stuur om te funksioneer
var lees = analogRead (D31);
trein_rigting (lees * 1024);
Toe het ek in die train_direction -funksie die opdrag in 6 verskillende stappe verdeel, gebaseer op die potwaarde
Heeltemal op, vertel die trein om voluit te ry
Halfpad op, vertel die trein om met 50% spoed vorentoe te gaan
Middel, vertel die trein om te stop
Halfpad af, vertel die trein om met 50% spoed agteruit te gaan
Heeltemal af, vertel die trein om voluit in trurat te ry
ie
funksie train_direction (dir_val) {
//console.log("message = ", Characteristic_store); const prepval = nuwe Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = nuwe Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); as (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = nuwe 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);}); }
Die volledige kode kan onder die skakel hieronder wees
Stap 2: Die bedrading
Die bedrading was die eenvoudigste deel
Dit het net bestaan uit 4 drukknoppies wat gekoppel is aan D15, D16, D17 en D18 sonder enige optelweerstand, aangesien dit in die kode gedoen is en 1 10k weerstand gekoppel aan D31
Ek werk nog steeds aan die kragtoevoer, maar tans kom al die krag uit 'n mikro -usb -uitbraak, en dit kan direk aan 'n kragbank of 'n USB -poort gekoppel word
Stap 3: Die bou
Die afstandsbediening bestaan meestal uit 3 mm, 6 mm of 9 mm A4 -velle laaghout, maar dit is op my CNC -masjien gesny, maar volgens die voorgeskrewe sjabloon sou ek dit nie met die hand kon doen nie
Ek hoop dat die sjabloon en foto's u alles sal gee wat u nodig het om te herskep, maar daar is 'n paar aantekeninge wat kan help
Die 3 mm -drukknop -houer is om die drukknoppie aan te druk, die gaping plaas die knoppie op die regte plek, maar ons gee u toegang tot die been op die rug sodat u aan die mikroskyfie kan soldeer; aan die agterkant kan u ook die MDBT42Q monteer bietjie gom gebruik. Aan die voorkant moet u so skuim byvoeg, sodat die knoppies 'n bietjie weerkaats as u dit afdruk, maar u kan ook vere gebruik
9 mm -knoppies het die logo, verf, gravure of iets anders nodig om te wys watter knoppie doen
Die hefboom/handvatsel moet in 'n laag vasgemaak word; ek het 'n 6 mm -plug gebruik om hulle in al die regte posisies in lyn te bring
Aanbeveel:
Muurhouer vir iPad as bedieningspaneel vir tuisautomatisering, met behulp van servo -beheerde magneet om die skerm te aktiveer: 4 stappe (met foto's)
Muurhouer vir iPad as 'n bedieningspaneel vir tuisautomatisering, met behulp van 'n servo -beheerde magneet om die skerm te aktiveer: Ek het die afgelope tyd baie tyd spandeer om dinge in en om my huis te outomatiseer. Ek gebruik Domoticz as my Home Automation -toepassing, sien www.domoticz.com vir meer inligting. In my soeke na 'n dashboard -toepassing wat alle Domoticz -inligting saam wys
Laserwyser vir brille gemonteer vir mense met bewegingsgestremdhede: 9 stappe (met foto's)
Laserwyser vir brille vir mense met bewegingsgestremdhede: Mense met ernstige bewegingsgestremdhede soos serebrale gestremdheid het dikwels ingewikkelde kommunikasiebehoeftes. Dit kan van hulle verwag word om borde met die alfabet te gebruik of woorde wat gereeld daarop gedruk word om kommunikasie te vergemaklik. Baie
Houten onderstel vir Arduino Rc -motor: 4 stappe
Hout -onderstel vir Arduino Rc -motor: dit is dus my eerste instruksie en ek hoop dat u daarvan hou. Ek het hierdie hout onderstel vir my arduino RC motor gemaak en ek hoop dat dit nuwe tinkerers inspireer. Hout is eintlik 'n bietjie maklik om te werk sonder spesiale gereedskap, en klein stukkies is maklik beskikbaar
Houten LED -muurlamp: 5 stappe (met foto's)
Hout -LED -muurlamp: ek speel graag met LED's, en ek werk ook graag met hout. Waarom nie albei gebruik en iets unieks skep nie? Daar was 'n goeie, aangename ligbron bo my lessenaar nodig, en ek het nie gehou van die lamp wat ek al gehad het nie
Houten LED -klok - analoog styl: 11 stappe (met foto's)
Hout LED -horlosie - analoog styl: dit is 'n analoog -styl hout LED -horlosie. Ek weet nie hoekom ek nog nie een hiervan gesien het nie, alhoewel die digitale tipes baie algemeen is. Anyhoo, hier gaan ons