Spisu treści:
Wideo: Drewniany pilot Bluetooth do pociągu Lego Duplo: 3 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
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
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 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
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:
DIY drewniany głośnik Bluetooth: 8 kroków (ze zdjęciami)
DIY Drewniany Głośnik Bluetooth: W Internecie są już tysiące wersji tego projektu. Dlaczego go robię? Bo chcę :) Mam własną wizję idealnego głośnika Bluetooth (idealnego dla mnie) i chciałbym Wam pokazać mój proces projektowania i budowy! Także
Pilot zdalnego sterowania Przełącznik światła Bluetooth: 4 kroki (ze zdjęciami)
Pilot zdalnego sterowania Przełącznik światła Bluetooth: To będzie pierwszy projekt z serii zatytułowanej: „Optymalizacja lenistwa: nadmiernie zaprojektowane rozwiązania niezwykle trywialnych problemów” Czy kiedykolwiek leżałeś w łóżku późno w nocy, czytając lub oglądając Netflix na swoim laptopie? Najgorsze jest oczywiście
Arduino 2-w-1 kontroler modelu pociągu: 4 kroki
Arduino 2-w-1 Kontroler Modelu Pociągu: Czterdzieści lat temu zaprojektowałem dla paru przyjaciół opartą na op-ampie przepustnicę do modelu pociągu, a następnie około cztery lata temu odtworzyłem ją za pomocą mikrokontrolera PIC. Ten projekt Arduino odtwarza wersję PIC, ale dodaje również możliwość korzystania z
Arduino UNO CO-pilot (Auto-pilot): 6 kroków
Arduino UNO a CO-pilot (Autopilot): Witam wszystkich, zamieszczam mały system autopilota dla samolotu RC ze stałymi skrzydłami (Sky surfer V3), ponieważ sky surfer v3 jest szybowcem z napędem, możemy używać tego systemu autopilota podczas ślizga się, a nawet gdy jest zasilany. Przed rozpoczęciem mojego pomysłu na auto
System siedzeń w pociągu: 4 kroki (ze zdjęciami)
System siedzeń w pociągu: Dzisiaj stworzyliśmy system, który można wdrożyć w siedzeniach pociągów. Musieliśmy znaleźć irytację i znaleźć dla niej rozwiązanie. Zdecydowaliśmy, że stworzymy system, który powie Ci, czy miejsce jest dostępne w wagonie, w którym aktualnie się znajdujesz. Nic nie jest mo