Spisu treści:

Drewniany pilot Bluetooth do pociągu Lego Duplo: 3 kroki (ze zdjęciami)
Drewniany pilot Bluetooth do pociągu Lego Duplo: 3 kroki (ze zdjęciami)

Wideo: Drewniany pilot Bluetooth do pociągu Lego Duplo: 3 kroki (ze zdjęciami)

Wideo: Drewniany pilot Bluetooth do pociągu Lego Duplo: 3 kroki (ze zdjęciami)
Wideo: POCIĄG PAROWY 🚂 LEGO DUPLO 10874 RECENZJA 2024, Listopad
Anonim
Drewniany pilot Bluetooth do pociągu Lego Duplo
Drewniany pilot Bluetooth do pociągu Lego Duplo
Drewniany pilot Bluetooth do pociągu Lego Duplo
Drewniany pilot Bluetooth do pociągu Lego Duplo

Moje dzieci uwielbiały ten mały pociąg Lego Duplo, szczególnie moją najmłodszą, która ma problemy z komunikowaniem się za pomocą słów, więc chciałem zbudować dla niej coś, co pomoże jej bawić się pociągiem niezależnie od dorosłych lub telefonów / tabletów. Coś, co nada pociągowi dodatkowy wymiar i nada mu dodatkowej wartości podczas zabawy

Zestaw Lego ma już kilka sposobów na kontrolowanie pociągu, możesz popchnąć go do przodu, aby go uruchomić i przytrzymać, aby go zatrzymać, możesz nim sterować za pomocą kolorowych znaczników, które jeżdżą po torze, więc gdy pociąg przejedzie nad nim wyzwala różne akcje, np. do przodu, do tyłu, odtwarzaj dźwięki włącz światła. Możesz także pobrać aplikację na swój telefon lub tablet, która może połączyć się z pociągiem przez Bluetooth.

Oto pełna recenzja pociągu

Po przeszukaniu internetu odkryłem, że było tam całkiem sporo różnych osób, które miały gotowy napisany kod do sterowania pociągiem. Węzeł „Poweredup” napisany przez nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) wyglądał na doskonały początek. Został napisany przy użyciu JavaScript, którego nie byłem częściowo zaznajomiony, ale pomyślałem, że mógłby znaleźć mikrochip oparty na javie, byłby to dobry początek.

Ponownie po polowaniu w Internecie ponownie znalazłem system espruino, podobny do ardiuno, ale oparty na javascript. Kod espriuno można było załadować do mikroczipa MDBT42Q z wbudowanym bluetoothem. Pomyślałem, że gdybym mógł załadować do niego „zasilany” moduł, byłbym w połowie drogi, jednak nie było to proste, ponieważ moduł zawierał wiele bibliotek zbyt dużych, aby załadować na MDBT42Q, więc wydaje się, że muszę znajdź prostsze rozwiązanie….

Krok 1: Kodeks

Kod
Kod

Esprinuo

Dla tych, którzy nie znają platformy Espruino https://www.espruino.com (a ja nie) czy jest bardzo podobny do Arduino, Istnieje kilka głównych różnic, które napisał dla javascript raczej c, Wydaje się nieco nowszy więc jest mniej przykładów, ale wsparcie na forach jest świetne i bardzo pomocne.

Javascript spotyka pociąg

Pierwszą przeszkodą było połączenie się z pociągiem przez bluetooth. Można to zrobić za pomocą klasy NRF, która jest dostarczana w kodzie espruino.

NRF.connect może być użyty do połączenia z pociągiem, jednak najpierw musisz znaleźć adres samego pociągu, możesz użyć NRF.findDevices, aby uzyskać te informacje

Gdy to zrobisz, musisz wysłać pociągowi dwie wartości, aby uścisnąć dłoń pociągowi, dla mojego pociągu było to „00001623-1212-efde-1623-785feabcd123”, a następnie „00001624-1212-efde-1623-785feabcd123”. to będzie takie samo dla wszystkich zestawów parowozów, ale inne wersje, np. zestaw cargo, może być inny

Gdy już to zrobisz, możesz podłączyć pociąg za pomocą funkcji podobnej do poniższej, czy możesz stwierdzić, kiedy pociąg się połączy, ponieważ będzie migał, gdy reflektory będą świecić na niebiesko

NRF.connect("e0:7d:ea:0c:03:29").then(function(g) {

console.log("Rozpoczęcie łączenia2"); gat = g; return gatt.getPrimaryService("00001623-1212-efde-1623-785feabcd123"); }).then(function(service) { return service.getCharacteristic("00001624-1212-efde-1623-785feabcd123"); }).then(function(characteristic) {Character_store = character; return character.readValue(); }).then(wartość => { console.log(wartość); }).then(function() { console.log("Połączony pociąg"); podłączony = 1;

Zabawne rzeczy

Po połączeniu z pociągiem nadszedł czas na wszystkie zabawne rzeczy, takie jak poruszanie się do przodu, wydawanie dźwięku oraz włączanie i wyłączanie światła. To proste zadanie, aby wysłać pociągowi wartość prep, po której następuje faktyczne polecenie, tj.

funkcja play_horn() {

console.log("wiadomość = ", Charakterystyczny_magazyn); 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]); Charakterystyczny_store.writeValue(prepval).then(_ => { Charakterystyczny_store.writeValue(sendvalue); }); }

Być może będziesz musiał trochę pogrzebać, aby znaleźć inne polecenie niż te, których użyłem

Przyciski i dźwignie

Fizyczna strona pilota to bardzo proste cztery przyciski (do odtwarzania dźwięków, włączania i wyłączania światła) i jeden potencjometr, który jest podłączony do dźwigni, dzięki czemu można kontrolować prędkość i kierunek pociągu

Przycisk nie wymaga rezystora podciągającego zamiast tego możesz to zrobić w kodzie, tj

pinMode(D15, 'input_pulldown');

Możesz podłączyć potencjometr do jednego z wejść, a następnie odczytać sygnał analogowy za pomocą następującego polecenia:

odczyt var = odczyt analogowy (D31);

Inną różnicą w stosunku do arduino jest to, że esprunio nie ma konfiguracji i pętli. Zamiast tego umieszczam wszystkie oddzielne polecenia/wyzwalacze w funkcjach, a następnie ustawiam setInterval, który zapętla się co 100 milisekund, słuchając przycisku, a następnie uruchamiam żądaną funkcję po naciśnięciu przycisku.

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

Działanie dźwigni było trochę bardziej skomplikowane, ponieważ chciałem mieć możliwość stopniowego dostosowywania prędkości, więc najpierw musiałem wysłać wartość analogową, aby działała

odczyt var = odczyt analogowy (D31);

kierunek_pociągu (odczyt * 1024);

Następnie w funkcji train_direction podzieliłem polecenie na 6 różnych przyrostów w zależności od wartości puli

Całą drogę w górę, każe pociągowi jechać pełną parą

W połowie drogi, nakazuje pociągowi jechać do przodu z prędkością 50%

Środek, mówi pociągowi, żeby się zatrzymał

W połowie drogi nakazuje pociągowi cofać się z prędkością 50%

Całą drogę w dół, każe pociągowi jechać z pełną prędkością do tyłu

tj

funkcja kierunek_pociągu(dir_val) {

//console.log("wiadomość = ", Charakterystyczny_magazyn); 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); }); }

Pełny kod można znaleźć w poniższym linku

Krok 2: Okablowanie

Okablowanie
Okablowanie
Okablowanie
Okablowanie

Okablowanie było najprostszą częścią

Składał się po prostu z 4 przycisków podłączonych do D15, D16, D17 i D18 bez żadnego rezystora podciągającego, jak to zrobiono w kodzie, i 1 rezystora 10k podłączonego do D31

Nadal pracuję nad zasilaczem, ale obecnie cała moc pochodzi z breakout micro USB i to może być podłączone bezpośrednio do powerbanku lub portu USB

Krok 3: Kompilacja

Kompilacja
Kompilacja
Kompilacja
Kompilacja
Kompilacja
Kompilacja
Kompilacja
Kompilacja

Pilot jest w większości wykonany z arkuszy A4 3 mm, 6 mm lub 9 mm A4, które zostały wycięte na mojej maszynie CNC, jednak korzystając z dostarczonego szablonu, nie byłoby to niemożliwe do wykonania ręcznie

Mam nadzieję, że szablon i zdjęcia dadzą ci wszystko, czego potrzebujesz do przerobienia, ale jest kilka notatek, które mogą pomóc

Mocowanie przycisku 3mm służy do przyklejenia przycisku, szczelina ustawi przycisk we właściwym miejscu, ale umożliwiamy dostęp do nogi z tyłu, dzięki czemu można przylutować do mikroczipa, na odwrocie można również zamontować MDBT42Q za pomocą kleju. Na froncie trzeba dodać tak piankę, aby przyciski lekko podskakiwały podczas ich dociskania, można również użyć sprężyn

Przyciski 9 mm będą wymagały malowania, grawerowania lub czegoś innego, aby pokazać, co robi przycisk

Dźwignia/uchwyt trzeba będzie ułożyć warstwami, użyłem kołka 6 mm, aby pomóc wyrównać je we wszystkich prawidłowych pozycjach

Zalecana: