Przejdź do treści
Wszystkie projekty

05Portfolio

led-auto — brama Bluetooth do Golfa IV

Brama na Raspberry Pi Zero 2 W w moim Golfie IV: zapala światło przy wejściu, gdy otwierają się drzwi, i steruje taśmą LED, a z telefonem łączy się szyfrowanym kanałem. Działa w aucie z panelem w Android Auto. Jej logikę sprawdziłem automatycznie we wszystkich możliwych stanach.

W liczbach

Reguły sprawdzone we wszystkich stanach
18
Testy automatyczne
154
Celowe błędy wyłapane przez testy
10/10
01

Problem

Sterownik taśmy LED w aucie przyjmuje po Bluetooth tylko jedno połączenie, więc telefon i drugi sterownik zaczęłyby się o nie bić. Nic nie mówi światłu, że drzwi właśnie się otwierają — fabryczny zamek daje tylko dwa gołe sygnały: pozycję rygla i stan drzwi. Do tego sterownik taśmy nie ma żadnego szyfrowania i nie zgłasza swojego stanu.

02

Podejście

Napisałem w C++ program na Pi Zero 2 W, który czyta cztery sygnały z zamków drzwi i jako jedyny steruje taśmą LED, więc nic nie walczy o połączenie. Napięcie z instalacji auta obniża dzielnik, a krótkie zakłócenia są odfiltrowywane. Telefon z aplikacją WireAmbi łączy się z bramą szyfrowanym kanałem WireLink, zgodnym bajt w bajt z wersją w aplikacji. Przy parowaniu porównuje się sześć kolorów na taśmie i w telefonie, a potwierdza się je otwarciem drzwi kierowcy. Logikę bramy oddzieliłem od sprzętu, dzięki czemu mogłem ją sprawdzić automatycznie w każdej możliwej sytuacji: 12,6 mln stanów i 18 reguł. Wśród nich są te, że taśmą steruje tylko jedno urządzenie, że brama oszczędza akumulator i że światło wejścia zawsze się zapali. Zdalny dostęp idzie przez szyfrowany przekaźnik i celowo nie pozwala odryglować auta.

03

Efekt

W aucie brama robi to, co powinna, a wcześniej sprawdziłem to na stole testowym na prawdziwych wejściach zamka: otwarcie drzwi zapala światło wejścia, zamknięcie przywraca kolor ustawiony w telefonie, a zaryglowanie po wyjściu gasi wszystko. Jest przygotowana na nagłe odcięcie zasilania i po trzech twardych resetach wróciła do pracy bez strat. Zajmuje ok. 11 MB pamięci, a opóźnienia w jej pracy nie przekraczają 1 ms. W aucie działa razem z panelem w Android Auto. Kod do sterowania szybami, zamkiem centralnym i lusterkami jest napisany, ale tych funkcji nie podłączyłem jeszcze w aucie.

Napisz