Inhaltsverzeichnis:
Video: Bluetooth-Fernbedienung aus Holz für Lego Duplo Train - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Meine Kinder liebten diesen kleinen Lego Duplo-Zug, besonders meine Jüngste, die Schwierigkeiten hat, sich mit Worten zu verständigen, also wollte ich ihr etwas bauen, das ihr hilft, unabhängig von Erwachsenen oder Telefonen / Tablets mit dem Zug zu spielen. Etwas, das dem Zug eine zusätzliche Dimension verleiht und ihm einen zusätzlichen Spielwert verleiht
Das Lego-Set hat bereits einige Möglichkeiten, den Zug zu steuern. Sie können ihn zum Starten nach vorne schieben und zum Stoppen halten vorwärts, rückwärts, Sounds abspielen, die Lichter einschalten. Sie können auch eine App für Ihr Telefon oder Tablet herunterladen, die sich über Bluetooth mit dem Zug verbinden kann.
Hier eine vollständige Bewertung des Zuges
Nachdem ich im Internet herumgestöbert hatte, stellte ich fest, dass es ziemlich wenige verschiedene Leute gab, die alle fertig geschriebenen Code hatten, um den Zug zu steuern. Der von nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) geschriebene 'Poweredup'-Knoten sah wie ein perfekter Start aus. Er wurde mit Javascript geschrieben, mit dem ich nicht teilweise vertraut war, aber dachte, wenn ich Java-basierten Mikrochip finden könnte, wäre dies ein guter Anfang.
Nachdem ich wieder im Internet herumgestöbert hatte, fand ich das Espruino-System, das dem Arduino ähnelt, aber auf Javascript basiert. Der espriuno-Code konnte auf einen MDBT42Q-Mikrochip mit Bluetooth-Einbettung geladen werden. Ich dachte, wenn ich das "eingeschaltete" Modul laden könnte, wäre ich auf halbem Weg, aber dies war nicht der Fall, da das Modul viele Bibliotheken enthält, die zu groß sind, um auf dem MDBT42Q zu laden, also muss ich es anscheinend tun eine einfachere Lösung finden….
Schritt 1: Der Code
Esprinuo
Für diejenigen, die die Espruino-Plattform https://www.espruino.com (und ich nicht) nicht kennen, ist sie dem Arduino sehr ähnlich so gibt es keine Beispiele aber der Support über die Foren ist super und sehr hilfreich.
Javascript trifft den Zug
Die erste Hürde bestand darin, sich über Bluetooth mit dem Zug zu verbinden. Dies kann mit der NRF-Klasse erfolgen, die im espruino-Code enthalten ist.
NRF.connect kann verwendet werden, um eine Verbindung zum Zug herzustellen. Wenn Sie jedoch zuerst die Adresse des Zuges selbst herausfinden müssen, können Sie NRF.findDevices verwenden, um diese Informationen zu erhalten
Sobald Sie dies getan haben, müssen Sie den Wert des Zuges zwei zum Handshake mit dem Zug senden, für meinen Zug war dies "00001623-1212-efde-1623-785feabcd123", gefolgt von "00001624-1212-efde-1623-785feabcd123", glaube ich Dies wird für alle Dampfzug-Sets gleich sein, aber die anderen Versionen, dh das Cargo-Set, können unterschiedlich sein
Sobald Sie dies haben, können Sie den Zug mit einer Funktion wie der folgenden verbinden. Können Sie erkennen, wann der Zug verbunden ist, da er die Scheinwerfer blau blinkt?
NRF.connect("e0:7d:ea:0c:03:29").then(function(g) {
console.log("Verbindung wird gestartet2"); gatt = g; return gatt.getPrimaryService("00001623-1212-efde-1623-785feabcd123"); })).then(value => { console.log(value); }).then(function() { console.log("Zug verbunden"); verbunden = 1;
Das lustige Zeug
Jetzt, wo Sie mit dem Zug verbunden sind, ist es Zeit für all die lustigen Dinge, wie ihn vorwärts zu bewegen, Geräusche zu machen und das Licht ein- und auszuschalten. Es ist einfach, dem Zug einen Vorbereitungswert zu senden, gefolgt von dem eigentlichen Befehl, dh
Funktion play_horn() {
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, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue(prepval).then(_ => { Characteristic_store.writeValue(sendvalue); }); }
Möglicherweise müssen Sie ein wenig herumstöbern, um andere Befehle als die von mir verwendeten zu finden
Tasten und Hebel
Die physische Seite der Fernbedienung besteht aus vier Tasten (zum Abspielen von Geräuschen, Ein- und Ausschalten der Lichter) und einem Potentiometer, das mit dem Hebel verbunden ist, damit Sie die Geschwindigkeit und Richtung des Zuges steuern können
Die Taste benötigt keinen Pull-Up-Widerstand, stattdessen können Sie dies im Code tun, dh
pinMode (D15, 'input_pulldown');
Sie können das Potentiometer an einen der Eingänge anschließen und dann mit dem folgenden Befehl das analoge Signal auslesen
var lesen = analogRead (D31);
Der andere Unterschied zum Arduino besteht darin, dass Esprunio kein Setup und keine Schleife hat. Stattdessen platziere ich alle separaten Befehle/Trigger in Funktionen und richte dann setInterval ein, das alle 100 Millisekunden wiederholt wird, höre auf die Schaltfläche und führe dann die erforderliche Funktion aus, wenn die Schaltfläche gedrückt wurde.
if (digitalRead (D15) == 1) { play_horn (); }
Das Betätigen des Hebels war etwas komplizierter, da ich die Geschwindigkeit schrittweise anpassen wollte, also musste ich zuerst den Analogwert an die Funktion senden
var lesen = analogRead (D31);
train_direction (lesen * 1024);
Dann habe ich in der train_direction-Funktion den Befehl basierend auf dem Pot-Wert in 6 verschiedene Inkremente unterteilt
Ganz nach oben, sagt dem Zug, dass er mit voller Geschwindigkeit vorausfahren soll
Sagt dem Zug auf halbem Weg, dass er mit 50% Geschwindigkeit vorwärts fahren soll
Mitte, sagt dem Zug, dass er anhalten soll
Auf halbem Weg wird der Zug angewiesen, mit 50% Geschwindigkeit rückwärts zu fahren
Ganz nach unten, sagt dem Zug, dass er mit voller Geschwindigkeit rückwärts fahren soll
dh
Funktion train_direction(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 { Characteristic_store.writeValue(sendvalue); }); }
Der vollständige Code kann unten für den Link unten sein
Schritt 2: Die Verkabelung
Die Verkabelung war der einfachste Teil
Es bestand nur aus 4 Drucktasten, die an D15, D16, D17 und D18 ohne Pull-Up-Widerstand angeschlossen waren, wie dies im Code getan wurde, und 1 10k-Widerstand, der an D31. angeschlossen war
Ich arbeite noch an der Stromversorgung, aber derzeit kommt der gesamte Strom aus einem Micro-USB-Breakout und dieser könnte direkt an eine Powerbank oder einen USB-Anschluss angeschlossen werden
Schritt 3: Der Build
Die Fernbedienung besteht meistens aus 3 mm, 6 mm oder 9 mm A4-Sperrholzplatten. Sie wurden auf meiner CNC-Maschine geschnitten, aber mit der mitgelieferten Schablone würde ich mir vorstellen, dass dies von Hand nicht unmöglich wäre
Ich hoffe, dass die Vorlage und die Fotos Ihnen alles geben, was Sie zum Remake brauchen, aber es gibt ein paar Notizen, die helfen könnten
Die 3mm Druckknopfhalterung dient zum Aufkleben des Druckknopfes, die Lücke positioniert den Knopf an der richtigen Stelle, aber wir ermöglichen Ihnen den Zugang zum Bein auf der Rückseite, damit Sie an den Mikrochip löten können, auf der Rückseite können Sie auch den MDBT42Q montieren mit etwas Kleber. Auf der Vorderseite müssen Sie so viel Schaumstoff hinzufügen, dass die Tasten beim Drücken ein wenig Federn lassen. Sie können auch Federn verwenden
9-mm-Knöpfe benötigen entweder die Farbe des Logos, eine Gravur oder etwas anderes, um zu zeigen, welcher Knopf was tut
Der Hebel / Griff muss geschichtet werden, ich habe einen 6-mm-Dübel verwendet, um sie in allen richtigen Positionen auszurichten
Empfohlen:
Wie man aus einem alten Computer einen persönlichen Mini-Schreibtischventilator macht – passt in Ihre Tasche – wikiHow
Wie man aus einem alten Computer einen persönlichen Mini-Schreibtischventilator macht – passt in Ihre Tasche: Ich zeige Ihnen, wie Sie aus einem alten Computer einen persönlichen Mini-Schreibtischventilator machen. Ein Bonus ist, dass es sogar in Ihre Tasche passt. Dies ist ein sehr einfaches Projekt, daher ist nicht viel Erfahrung oder Fachwissen erforderlich. Fangen wir also an
Das Glück geht aus - Spiel: 7 Schritte
Luck's Running Out - Game: Dies ist ein Spiel der Geschwindigkeit und des Zufalls, ähnlich wie heiße Kartoffeln, das Klee wird herumgereicht, bis das Lied und die Animation zu Ende sind. Dieses Spiel macht am meisten Spaß, wenn es mit einer kurzen Aufgabe kombiniert wird, bevor Sie das Kleeblatt passieren. Ich bin kein technisch versierter Mensch
Uhrzeit und Datum aus dem Internet abrufen - Tutorial: 9 Schritte
Abrufen von Uhrzeit und Datum aus dem Internet - Tutorial: In diesem Tutorial erfahren Sie, wie Sie mit M5Stack StickC und Visuino das Datum und die Uhrzeit vom NIST TIME-Server abrufen. Sehen Sie sich ein Demonstrationsvideo an
So tauschen Sie die CPU im Toshiba Satellite C55-A5300 aus – wikiHow
So tauschen Sie die CPU im Toshiba Satellite C55-A5300: So tauschen Sie die CPU im Toshiba Satellite C55-A5300
(Fast) Instant Hard Case für iPod Nano (aus der Apple Box!): 3 Schritte
(Fast) Instant Hard Case für IPod Nano (aus der Apple Box!): Dieses ist so einfach, es braucht wirklich keine Schritt-für-Schritt-Illustrationen, also werde ich es nur beschreiben, was Sie brauchen machen, wie man es zusammenbaut und die fertigen Produktteile zu den passenden Zeiten zeigen. Beginnen Sie mit der Fertigstellung