Przejdź do treści
Wszystkie projekty

02Portfolio

WireAmbi — oświetlenie auta z telefonu i Android Auto

Aplikacja na Androida, która steruje taśmami LED ELK-BLEDOM/MELK z telefonu i z ekranu Android Auto. Ma tryb muzyczny z własnym torem analizy dźwięku, sterowanie głosem offline i panel auta połączony z bramą led-auto.

  • 01/07
  • 02/07
  • 03/07
  • 04/07

W liczbach

Testy jednostkowe
359
Uderzenie → zapis BLE
6 ms
Style reakcji na muzykę
9
01

Problem

Tanie sterowniki taśm LED z rodziny ELK-BLEDOM nie mają dokumentacji, a aplikacja producenta nie działa na ekranie auta. Ta sama ramka występuje w kilku niezgodnych dialektach: sterownik w aucie ignorował polecenia, choć każdy zapis Bluetooth kończył się sukcesem. Sterownik nie zgłasza stanu, przyjmuje jedno połączenie naraz i nie da się go zaszyfrować. Przy Android Auto dźwięk nie wychodzi z głośnika telefonu, więc tryb muzyczny nie ma czego słuchać przez mikrofon.

02

Podejście

Ramki 7E…EF wziąłem z publicznej tabeli modeli integracji elkbledom dla Home Assistant i sprawdziłem na sprzęcie. Warstwa protokołu wybiera jeden z trzech dialektów po nazwie urządzenia, a efekty, które u różnych modeli znaczą co innego, liczy telefon. Pompa zapisów Bluetooth czeka na potwierdzenie stosu i ponawia odmowy, a kolory w czasie rzeczywistym trafiają do jednoelementowego kanału, żeby taśma nie zostawała w tyle. Tryb muzyczny bierze dźwięk przez AudioPlaybackCapture i przepuszcza go przez FFT, logarytmiczny bank filtrów, detektor SuperFlux i śledzenie tempa z przewidywaniem uderzeń. Logika siedzi w module :core bez zależności od Androida i Bluetooth, więc testy sprawdzają bajty, które poszłyby do sterownika. Ekrany Android Auto trzymają się limitów szablonów wyciągniętych z bajtkodu biblioteki. Z bramą led-auto aplikacja rozmawia szyfrowanym kanałem WireLink.

03

Efekt

Aplikacja działa na prawdziwym sprzęcie (sterownik MELK-OC21, Android 15), a ekran auta jest sprawdzony w Desktop Head Unit. W repozytorium jest ponad 350 testów jednostkowych, lint jest czysty, kompilator nie zgłasza ostrzeżeń, a build release przechodzi z R8. Od uderzenia wykrytego w analizie do zapisu Bluetooth mija średnio 6 ms. Przy utworze 123 BPM mediana odstępów między błyskami wyniosła 487 ms, przy teoretycznych 488 ms. Interfejs jest po polsku i angielsku.

Jak to działa

Najważniejsze funkcje w krótkich klipach.

  1. 01

    Parowanie bez zgadywania

    Kreator prowadzi przez uprawnienia i skan Bluetooth, a sterowniki sortuje po sile sygnału. Wybrany kontroler zapamiętuje, więc w aucie WireAmbi łączy się sam — także po wejściu w Android Auto.

  2. 02

    Kolory, sceny i koło barw

    Osiem gotowych kolorów, koło HSV na pełen zakres i sceny zapisujące kolor, jasność, tryb i tempo pod nazwą. Suwak wysyła tylko wartość, na której zatrzymał się palec, a zapisy Bluetooth czekają na potwierdzenie stosu — żadna ramka nie ginie po cichu.

  3. 03

    Światło w rytm muzyki

    Dźwięk pochodzi z odtwarzanego miksu (AudioPlaybackCapture), nie z mikrofonu, więc działa też z Android Auto. Po drodze: FFT, logarytmiczny bank filtrów, detektor SuperFlux i śledzenie tempa, które przewiduje uderzenia. Do wyboru dziewięć stylów reakcji: od pulsu po tęczę i iskry.

  4. 04

    Kalibracja pod każdy sterownik

    Tanie sterowniki mówią trzema niezgodnymi dialektami tej samej ramki 7E…EF — aplikacja wybiera właściwy po nazwie urządzenia. Gdy taśma jest inaczej okablowana, test kolorów pokazuje to od razu, a jedno stuknięcie ustawia kolejność kanałów.

  5. 05

    Panel auta z bramą led-auto

    Z bramą led-auto telefon rozmawia szyfrowanym kanałem WireLink i na bieżąco pokazuje stan zamków i drzwi na modelu 3D auta. Po otwarciu drzwi zapala się światło wejścia. Odryglowanie i otwarcie szyb wymagają biometrii lub PIN-u właściciela.

  6. 06

    Android Auto i głos offline

    Na ekranie auta: siatka kolorów, sceny i kafle skrótów, które układa się na telefonie. Polecenia głosowe rozpoznaje Vosk bez internetu, na zamkniętej gramatyce — wynik liczy się tylko wtedy, gdy każde słowo ma pewność co najmniej 0,7.

Napisz