Πίνακας περιεχομένων:

Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train: 3 βήματα (με εικόνες)
Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train: 3 βήματα (με εικόνες)

Βίντεο: Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train: 3 βήματα (με εικόνες)

Βίντεο: Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train: 3 βήματα (με εικόνες)
Βίντεο: LEGO® Remote control test (Infrared vs. Bluetooth) 2024, Νοέμβριος
Anonim
Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train
Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train
Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train
Ξύλινο τηλεχειριστήριο Bluetooth για Lego Duplo Train

Τα παιδιά μου λάτρεψαν αυτό το μικρό τρένο Lego Duplo, ιδιαίτερα το μικρότερο μου που αγωνίζεται να επικοινωνήσει με τις λέξεις, έτσι ήθελα να της φτιάξω κάτι που θα την βοηθούσε να παίζει με το τρένο ανεξάρτητα από ενήλικες ή τηλέφωνα/tablet. Κάτι που θα προσθέσει μια επιπλέον διάσταση στο τρένο και θα του δώσει επιπλέον αξία παιχνιδιού

Το σετ Lego έχει ήδη λίγους τρόπους για να ελέγξει το τρένο, μπορείτε να το σπρώξετε προς τα εμπρός για να το ξεκινήσετε και να το κρατήσετε για να το σταματήσετε, μπορείτε να το ελέγξετε χρησιμοποιώντας χρωματικές ετικέτες που πηγαίνουν στην πίστα, ώστε όταν το τρένο να το περάσει να ενεργοποιήσει διαφορετικές ενέργειες, π.χ. εμπρός, αντίστροφα, παίξτε ήχους ανάψτε τα φώτα. Μπορείτε επίσης να κατεβάσετε μια εφαρμογή για το τηλέφωνο ή το tablet σας που μπορεί να συνδεθεί στο τρένο μέσω bluetooth.

Εδώ είναι μια πλήρης ανασκόπηση του τρένου

Μετά από κυνήγι στο διαδίκτυο, βρήκα ότι υπήρχαν λίγοι διαφορετικοί άνθρωποι που είχαν έτοιμο γραπτό κώδικα για να ελέγξουν το τρένο. Ο κόμβος «Poweredup» που γράφτηκε από το nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) έμοιαζε με ένα τέλειο ξεκίνημα. Γράφτηκε χρησιμοποιώντας Javascript με το οποίο δεν ήμουν μερικώς εξοικειωμένος αλλά σκέφτηκα αν θα μπορούσε να βρει μικροτσίπ με βάση java, αυτό θα ήταν μια καλή αρχή.

Και πάλι μετά από κυνήγι στο Διαδίκτυο και πάλι βρήκα το σύστημα espruino, αυτό είναι παρόμοιο με το ardiuno αλλά βασίζεται γύρω από το javascript. Ο κώδικας espriuno θα μπορούσε να φορτωθεί σε mircochip MDBT42Q που είχε ενσωματωμένο bluetooth. Σκέφτηκα ότι αν μπορούσα να φορτώσω την ενότητα "ενεργοποιημένη" σε αυτήν, θα ήμουν μέχρι τη μέση της διαδρομής, ωστόσο αυτό το απλό δεν συνέβη με μια ενότητα που περιείχε σε πολλές βιβλιοθήκες για να φορτώσει στο MDBT42Q, οπότε φαίνεται ότι πρέπει να βρείτε μια πιο απλή λύση…

Βήμα 1: Ο κώδικας

Ο κώδικας
Ο κώδικας

Esprinuo

Για όσους δεν γνωρίζουν την πλατφόρμα Espruino https://www.espruino.com (και δεν το έκανα) είναι πολύ παρόμοιο με το Arduino, υπάρχει μια βασική διαφορά που έγραψε για το javascript μάλλον c, Αισθάνεται ελαφρώς νεότερο έτσι ώστε να μην υπάρχουν παραδείγματα ωστόσο η υποστήριξη μέσω των φόρουμ είναι μεγάλη και πολύ χρήσιμη.

Javascript συναντήστε το τρένο

Το πρώτο εμπόδιο ήταν η σύνδεση με το τρένο μέσω bluetooth. Αυτό μπορεί να γίνει χρησιμοποιώντας την κατηγορία NRF που αποστέλλεται με τον κωδικό espruino.

Το NRF.connect μπορεί να χρησιμοποιηθεί για σύνδεση με το τρένο, ωστόσο η πρώτη σας ανάγκη να βρείτε τη διεύθυνση του ίδιου του τρένου, μπορείτε να χρησιμοποιήσετε το NRF.findDevices για να λάβετε αυτές τις πληροφορίες

Μόλις το κάνετε αυτό, τότε πρέπει να στείλετε στο τρένο δύο χειραψίες με το τρένο, για το τρένο μου αυτό ήταν "00001623-1212-efde-1623-785feabcd123" ακολουθούμενο από "00001624-1212-efde-1623-785feabcd123" Πιστεύω Αυτό θα είναι το ίδιο για όλα τα τρένα ατμού που έχουν ρυθμιστεί αλλά οι άλλες εκδόσεις, δηλαδή το σετ φορτίου μπορεί να είναι διαφορετικό

Μόλις το έχετε αυτό, μπορείτε να συνδέσετε το τρένο χρησιμοποιώντας τη λειτουργία όπως η παρακάτω, μπορείτε να πείτε πότε συνδέεται το τρένο καθώς θα αναβοσβήνει με μπλε προβολείς

NRF.connect ("e0: 7d: ea: 0c: 03: 29"). Στη συνέχεια (συνάρτηση (g) {

console.log ("Έναρξη σύνδεσης2"); gatt = g; return gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). στη συνέχεια (λειτουργία (υπηρεσία) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). στη συνέχεια (συνάρτηση (χαρακτηριστικό) {Characteristic_store = χαρακτηριστικό; επιστροφή χαρακτηριστικού.readValue ();}).then (value => {console.log (value);}). στη συνέχεια (function () {console.log ("Train Connected"); συνδεδεμένο = 1;

Τα διασκεδαστικά πράγματα

Τώρα που συνδεθήκατε με το τρένο, ήρθε η ώρα για όλα τα διασκεδαστικά πράγματα, όπως να το μετακινήσετε μπροστά, να κάνετε ήχο και να ανάψετε και να σβήσετε το φως. Είναι απλή δουλειά να στείλετε στο τρένο μια τιμή προετοιμασίας, ακολουθούμενη από την πραγματική εντολή, δηλ

συνάρτηση play_horn () {

console.log ("message =", Characteristic_store); const prepval = νέο Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = νέο Uint8Array ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => {Characteristic_store.writeValue (τιμή αποστολής);}); }

Youσως χρειαστεί να κάνετε λίγο ψάξιμο για να βρείτε άλλη εντολή από αυτές που χρησιμοποίησα

Κουμπιά και μοχλοί

Η φυσική πλευρά του τηλεχειριστηρίου είναι πολύ ευθεία προς τα εμπρός τέσσερα κουμπιά (για αναπαραγωγή ήχων, ενεργοποίηση και απενεργοποίηση των φώτων) και ένα ποτενσιόμετρο που συνδέεται με το μοχλό, ώστε να μπορείτε να ελέγχετε την ταχύτητα και την κατεύθυνση του τρένου

Το κουμπί δεν χρειάζεται αντίσταση έλξης, μπορείτε να το κάνετε σε κώδικα, δηλ

pinMode (D15, 'input_pulldown');

Μπορείτε να συνδέσετε το ποτενσιόμετρο σε μία από τις εισόδους και στη συνέχεια να το διαβάσετε το αναλογικό σήμα χρησιμοποιώντας την ακόλουθη εντολή

var ανάγνωση = analogRead (D31);

Η άλλη διαφορά στο arduino είναι ότι το esprunio δεν έχει εγκατάσταση και βρόχο. Αντ 'αυτού, τοποθετώ όλες τις ξεχωριστές εντολές/ενεργοποιητές σε συναρτήσεις και στη συνέχεια ρυθμίζω το setInterval που κάνει βρόχο κάθε 100 χιλιοστά του δευτερολέπτου, ακούγοντας το κουμπί και στη συνέχεια εκτελώντας την απαιτούμενη συνάρτηση όταν πατηθεί το κουμπί.

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

Η λειτουργία του μοχλού ήταν λίγο πιο περίπλοκη καθώς ήθελα να μπορώ να προσαρμόσω σταδιακά την ταχύτητα, έτσι έπρεπε πρώτα να στείλω την αναλογική τιμή στη λειτουργία

var ανάγνωση = analogRead (D31);

τρένο_κατεύθυνση (ανάγνωση * 1024)

Στη συνέχεια, στη συνάρτηση train_direction έσπασα την εντολή σε 6 διαφορετικά βήματα με βάση την τιμή του δοχείου

Σε όλη τη διαδρομή, λέει στο τρένο να προχωρήσει ολοταχώς

Στα μισά του δρόμου, λέει το τρένο να προχωρήσει με ταχύτητα 50%

Μέση, λέει στο τρένο να σταματήσει

Στα μισά του δρόμου, λέει στο τρένο να πάει πίσω με ταχύτητα 50%

Καθώς κατεβαίνει, λέει στο τρένο να πάει ολοταχώς αντίστροφα

δηλ

συνάρτηση train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = νέο Uint8Array ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = νέο 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 {Characteristic_store.writeValue (τιμή αποστολής);}); }

Ο πλήρης κωδικός μπορεί να εμφανιστεί για τον παρακάτω σύνδεσμο

Βήμα 2: Η καλωδίωση

Η καλωδίωση
Η καλωδίωση
Η καλωδίωση
Η καλωδίωση

Η καλωδίωση ήταν το απλούστερο μέρος

Απλώς αποτελείτο από 4 κουμπιά που συνδέονταν με τα D15, D16, D17 και D18 χωρίς οποιαδήποτε αντίσταση τράβηξης προς τα επάνω όπως αυτό γινόταν στον κώδικα και 1 αντίσταση 10k συνδεδεμένη στο D31

Εξακολουθώ να εργάζομαι στο τροφοδοτικό, αλλά προς το παρόν όλη η τροφοδοσία έρχεται από μια έξοδο micro usb και αυτό μπορεί να συνδεθεί απευθείας σε τράπεζα ισχύος ή θύρα USB

Βήμα 3: Η κατασκευή

Το χτίσιμο
Το χτίσιμο
Το χτίσιμο
Το χτίσιμο
Το χτίσιμο
Το χτίσιμο
Το χτίσιμο
Το χτίσιμο

Το τηλεχειριστήριο είναι ως επί το πλείστον από φύλλα κόντρα πλακέ 3mm, 6mm ή 9mm, όπου κόβονται στο μηχάνημα CNC, ωστόσο, χρησιμοποιώντας το πρότυπο που θα ήθελα, αν και δεν θα ήταν αδύνατο να το κάνω με το χέρι

Ελπίζω ότι το πρότυπο και οι φωτογραφίες θα σας δώσουν όλα όσα χρειάζεστε για να διασκευάσετε, ωστόσο υπάρχουν λίγες σημειώσεις που μπορεί να σας βοηθήσουν

Η βάση στήριξης κουμπιού 3mm είναι για να κολλήσετε το κουμπί, το κενό θα τοποθετήσει το κουμπί στη σωστή θέση, αλλά σας επιτρέπουμε να έχετε πρόσβαση στο πόδι στο πίσω μέρος, ώστε να μπορείτε να κολλήσετε στο μικροτσίπ, στην πίσω όψη μπορείτε επίσης να τοποθετήσετε το MDBT42Q χρησιμοποιώντας λίγη κόλλα. Στο μπροστινό μέρος θα πρέπει να προσθέσετε τόσο αφρό, ώστε να δίνει στα κουμπιά μια μικρή αναπήδηση όταν τα πιέζετε προς τα κάτω, μπορείτε επίσης να χρησιμοποιήσετε ελατήρια

Τα κουμπιά των 9mm θα χρειαστούν είτε το χρώμα του λογότυπου, είτε την χάραξή του είτε κάτι άλλο για να δείξουν τι κουμπί κάνει τι

Ο μοχλός/λαβή θα πρέπει να στρωθεί, χρησιμοποίησα έναν πείρο 6 mm για να τους ευθυγραμμίσω σε όλες τις σωστές θέσεις

Συνιστάται: