Kapitan Bomba

Jakiś czas temu, w ramach prezentu, opracowałem mały biurkowy gadżet dla fana Kapitana Bomby. W zamyśle, wciśnięcie go powoduje odegranie losowego cytatu.

Wykonanie można podzielić na 5 części:

1. Projekt 3D (dałem z siebie całe 30%)

Za bazę posłużył mi panic button znaleziony na Thingverse.
Ściąłem dolną część (za wysoka), dodałem miejsce na port micro USB, do tego ozdobne wcięcie na element z innego niż bazowy filamentu a także dwie ozdobne płytki do przyklejenia na przycisk i poniżej. Sam przycisk, który jest półokrągły, ściąłem u szczytu. Jako program CAD użyłem Shapr3D.

2. Druk 3D

Była to okazja do przetestowania nowego drewnianego filamentu. W praktyce okazał się on zbyt kruchy, wymagał zmiany dyszy na większą (0.5 mm to absolutne minimum, aby się nie zapychała), a estetycznie zostawiał wiele do życzenia, nawet po starannym piaskowaniu (efekt po prawej).


Efekt widoczny na górze przycisku (pojawiające się wyraźnie linie im bliżej do czubka) skłonił mnie również do ścięcia przycisku od góry. Ten efekt jest niezależny od przekroju dyszy czy filamentu, na drukarce filamentowej tak już będzie drukując sferę.

Teoretycznie, można jeszcze użyć jakiegoś neutralnego wypełniacza, ale po co?

Ostatecznie zdecydowałem się na czarny filament jako bazę z miedzianym filamentem do detali (Rosa3D Copper).

3. Elektronika (Czujesz ten zapach? Tak pachnie 100 złoty)

Części jak niżej:

  • 4x przełączniki MX Cherry Red (bo akurat miałem)
  • 1x Raspberry Pi Pico
  • 1x DFPlayer mini MP3
  • 2x Adafruit 4227 Mini Speaker 1W 8 Ohm
  • 1x Goodram M1AA microSD 16GB
  • 1x LED 5mm
  • 1x rezystor 57 Ohm
  • 4x Nóżki samoprzylepne 12x12mm

Do tego rurki termokurczliwe i gwinty M2.
Wszystko poza przełącznikami można znaleźć na Botlandzie.

Przyjąłem założenie, że gadżet będzie zasilany po kablu USB (w końcu gadżet biurkowy, zawsze znajdzie się miejsce do podłączenia), stąd brak aku czy miejsca na baterie.

Całość na płytce prototypowej:


I podczas składania (schludnie, choć nasrane):


4. Zebranie .mp3

Planowałem siąść do oglądania Kapitana Bomby i w miarę oglądania wycinać najlepsze cytaty, szybko jednak mnie to znużyło, zastanowiłem się więc – przecież muszą być już jakieś gotowe soundboardy. Znalazłem kilka webowych, ale to było za mało, szukałem dalej i znalazłem dwa soundboardy na Androida. 

Ponieważ pliki .apk to zwykłe archiwa .zip, a assety wewnątrz okazały się nieobfuskowane, szybko zdobyłem odpowiednie .mp3 nie męcząc się zbytnio:


Sam dźwięk nie był znormalizowany pomiędzy poszczególnymi plikami, ale zasadniczo dało się z tym już coś zrobić. Poszczególne pliki nazwałem wedle szablonu numer_pliku + .mp3 dla łatwego odtwarzania losowego i wrzuciłem na kartę microSD.

5. Soft (po co testować, skoro domyślasz się, że powinno działać?)

Do części softowej skorzystałem z Micropythona. Tak, mógłbym użyć C i cross-compilować cały projekt, ale nie muszę nikomu udowadniać, że umiem 🙂

Całość była niesamowicie szybka i produktywna; wystarczy przerzucić runtime Micropythona na płytkę i stworzyć jako punkt wejścia plik main.py.

Do przerzucania plików i korzystania z repl do developmentu:
https://github.com/dhylands/rshell

Tu nie ma za wiele do powiedzenia; DFPlayer robi większość roboty, sam skrypt jedynie:

  • sprawdza stan przycisku
  • zapala/gasi frontowy LED, gdy wciśnie się przycisk
  • inicjalizuje moduł DFPlayer (komunikacja po UART)
  • podaje do modułu DFPlayer komendę start/stop kolejnego losowego cytatu, gdy wciśnie się przycisk

Wnioski na przyszłość:

  • W projekcie nie uwzględniłem grilla, przez co sam dźwięk był o wiele cichszy już po umiejscowieniu głośników wewnątrz obudowy. Próbowałem to naprawić wiercąc odpowiednie otwory – to był zły pomysł! Miejsce tej próby zakryłem później tabliczką Made In Galaktyka Kurwix. Swoją drogą, model .stl z tekstu wygenerowałem na tej stronie.
  • Ze względu na porowatą strukturę wydruku, do klejenia dobrze sprawdził się Poxipol. Wewnątrz obudowy użyłem pistoletu na klej (myślałem o przewidzeniu w modelu miejsc na wciśnięcie odpowiednich części, ale całość miała jednorazowy charakter a ewentualne poprawki byłyby czasochłonne)
  • Gwinty M2 które umieściłem w obudowie, aby móc ją rozkręcać zamiast permanentnie skleić nie sprawdziły się – wtapianie ich za pomocą grotu lutownicy o mało co nie zepsuło całej obudowy.
  • Na sam start urządzenia odgrywam powitalny cytat – problem jest taki, że urządzenie potrafi spontanicznie się uruchomić, gdy jest podłączone do uśpionego komputera (jakieś optymalizacje zasilania po USB?). Retrospektywnie – raczej nie dodawałbym tego ficzeru.