
Nieuchronnie zbliża się koniec konkursu, ale póki co piłka nadal w grze więc na podsumowania i wnioski przyjdzie jeszcze czas. Ostatnie dni spędziłem na poprawkach hardware robota i testowaniu aplikacji mobilnej. Mogę z czystym sumieniem powiedzieć w tej chwili, że projekt w tej chwili spełnia wszystkie moje założenia odnośnie MVP, a nawet nieco ponad.
- zmontować robota z części, które kosztowały sumarycznie mniej niż 100 pln (o czym pisałem w tym i tym poście)
- przygotować aplikację desktopową w WPF MVVM (o czym pisałem w tym poście)
- przygotować aplikację mobilną (o czym pisałem w tym poście)
- przetestować wstępnie tryb ręczny i automatyczny (o czym pisałem w tym poście)
- przetestować pełną funkcjonalność z aplikacji mobilnej na telefonie z Androidem – efekty pokazuje poniższy film.
Udało się też rozwiązać pewne problemy, o których pisałem we wcześniejszych postach:
- problemy z jazdą na wprost udało się znacznie zniwelować przez poprawienie zamocowania kół. Dodatkowo okazało się, że jedna z opon założona jest w drugą stronę (sic!)
- problemy z prędkością komunikacji. Okazało się, że użyłem złej funkcji z klasy UDP Arduino. Zamiast skorzystać z funkcji read, używałem funkcji readBytes, która to funkcja przyjmuje te same parametry i zwraca to samo, ale pochodzi z rodzica tej klasy i działa zdecydowanie wolniej.
Właściwie w tej chwili projekt mógłbym uznać za zakończony. Będę jednak nad nim jeszcze pracował. Pewnej uwagi wymaga jeszcze zamocowanie czujników zbliżeniowych. Ich zakres regulacji jest bardzo mały i sporadycznie pojawiają się mylne wskazania. Być może załatwię to filtrowaniem wejścia (sygnał będzie musiał być obecny przez czas dłuższy niż zdefiniowana wartość) lub przepnę sygnały na inne wejścia.
Aplikacja mobilna wymaga też pewnego liftingu graficznego. Dodatkowo musiałem nieco „na skróty” rozwiązać sterowanie ręczne. W Xamarin Forms nie ma dobrego rozwiązania przechwytującego w MVVM zdarzenie wciśnięcia a następnie puszczenia przycisku. Rozwiązałem ten problem dodając przycisk STOP. Implementacja na wzór aplikacji desktopowej wymaga prawdopodobnie napisania osobnego rozwiązania dla Androida i iOS. Będę jeszcze badał ten temat.
Aktualny kod projektu oczywiście na github.