Inhaltsverzeichnis:

Bluetooth-Fernbedienung aus Holz für Lego Duplo Train - Gunook
Bluetooth-Fernbedienung aus Holz für Lego Duplo Train - Gunook

Video: Bluetooth-Fernbedienung aus Holz für Lego Duplo Train - Gunook

Video: Bluetooth-Fernbedienung aus Holz für Lego Duplo Train - Gunook
Video: Spielzeug aus Holz - Züge und Fahrzeuge - Die Bahnschranke - Brio toys 2024, November
Anonim
Bluetooth-Fernbedienung aus Holz für Lego Duplo Train
Bluetooth-Fernbedienung aus Holz für Lego Duplo Train
Bluetooth-Fernbedienung aus Holz für Lego Duplo Train
Bluetooth-Fernbedienung aus Holz für Lego Duplo Train

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

Der Code
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
Die Verkabelung
Die Verkabelung
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

Das Build
Das Build
Das Build
Das Build
Das Build
Das Build
Das Build
Das 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: