–
IoT LEGO Millennium Falcon
Raspberry Pi i JavaScript w klockowym Sokole sterowanym z telefonu
- hardware,
- IoT

Zwykły model Sokoła Millennium z LEGO przerobiłem na zdalnie sterowany, świecący i grający statek – za pomocą technologii frontendowych. W środku siedzi Raspberry Pi Zero W, a całością steruje JavaScript: od pinów GPIO po aplikację na telefonie. Nie budowałem tego dla ideału, tylko dla zabawy i żeby bezkarnie poznać nowe dla mnie technologie.
Jak to działa
Hipernapęd to niebieski pasek LED na baterię 12 V. Raspberry Pi daje najwyżej 5 V, więc pasek włączam przez tranzystor – obwód pomógł mi rozpisać znajomy doktorant z Wojskowej Akademii Technicznej. Białe diody oświetlają kokpit z Chewbaccą i Hanem Solo oraz przód statku. Piny ustawiam w Node.js (paczka onoff). Dźwięk przez Bluetooth po trzech dniach walki odpuściłem; ostatecznie gra przez przejściówkę HDMI–VGA z wyjściem audio, która została mi z czasów wykładania.
Kod na pokład wysyłam przez balena.io: zwykły git push buduje kontener i sam aktualizuje Sokoła. Ze światem statek łączy się przez WebSockety w Syncano – wywołanie endpointu wysyła wiadomość, a skrypt na Raspberry Pi włącza odpowiednie światła. Hipernapęd sam gaśnie po 10 sekundach, żeby nie rozładować baterii. Pilotem jest prosta PWA: rysunek Sokoła w tle i niewidzialne przyciski, bez frameworków, z ikoną na ekranie głównym telefonu.

Na koniec dodałem aplikację GitHuba z webhookiem: każda nowa gwiazdka na moim koncie odpala hipernapęd i dźwięk R2-D2.
Historia
Pierwsza wersja działała tylko lokalnie – prosty serwer HTTP i backend w PHP. Na slajdach „Lego ❤️ Syncano” z kwietnia 2018 roku pokazywałem już wersję przepiętą na Syncano i Node.js. Pełny opis budowy, „Z JavaScriptem w nadprzestrzeń!”, opublikowałem na devstyle.pl w maju 2019 roku, razem z kodem na GitHubie.

Źródła
- Z JavaScriptem w nadprzestrzeń!, devstyle.pl, 23 maja 2019
- millenniumfalcon.js, GitHub
- Lego ❤️ Syncano, slajdy, kwiecień 2018
- JavaScript powered Lego Millennium Falcon, YouTube
- JavaScript Millennium Falcon – GitHub notifications, YouTube