Czas na mały update z postępu prac.
Dużo się zastanawiałem nad ogólną koncepcją projektu joysticka, bazując na sugestiach kolegów i przemyśleniach, doszedłem do wniosku, że system modułowy będzie najlepszy. Może nawet nie tyle modułowy, co rozbity na kilka mniejszych autonomicznych joysticków z możliwościa ich rozszerzenia.
Celem jest wyeliminowanie konieczności prowadzenia setek kabli przez ruchome przeguby, idealnie byby to tylko jeden kabel usb, albo tylko zasilanie (o tym za chwilę). Do tego posiadanie kilku osobnych joysticków/kontrolerów w systemie pozwoli na traktowanie częsci symulatora jako osobne urządzenia.
I tu dochodzimy do decyzji, którą musiałem podjąć - odejście od platformy Arduino, która niestety w porównaniu do obecnych rozwiązań na mikrokontrolerach wprowadza dużo ograniczeń.
Nie znaczy to, że cała dotychczasowa praca poszła na marne. Biblioteka i przykładowy program działają poprawnie. Na ich bazie, plus całej gamie istniejących bibliotek do Arduino (przetworniki AC np.) można tworzyć sobie przeróżne werjse joysticków. W tej chwili program zajmuje około 40% pamięci Flash, a więc jest jeszcze sporo miejsca na dalsze rozszerzenia.
Atutem użycia arduino, oprócz dostępnych bibliotek, jest śmieszna cena gotowych modułów (co prawda ceny oryginalnych płytek są już mniej zabawne). Jeśli miałbym zaprojektować nową płytkę zgodną z Arduino, to niestety, ale ten atut odpada. Do tego dostajemy bagaż ograniczeń 8 bitowej platformy AVR.
Gwoździem do trumny były problemy z użyciem kilku płytek Leonardo/Pro Micro, ale tak, żeby pojawiały się w systemie pod innymi nazwami. Próbowałem coś w tym temacie zadziałać, nawet grzebiąc edytorem hex w kodzie bootloadera, bezskutecznie. Wygląda na to, że nazwa "Arduino Leonardo" jest na stałe przypisana w sterowniku windowsa. Można ją zmienić, ale wtedy zmieni się ona dla wszystkich podłączonych płytek.
Tak więc sięgnąłem po nowoczesny 32 bitowy ARM i powstał projekt tego typu:


Co jest na podkładzie:
- 4 wejścia analogwe 15bit z pełnymi wzmacniaczami dla osi głównych,
- 2 wejścia analogowe 11bit z uproszczonymi wzmacniaczami,
- 16 wejść dla przycisków,
- 3 wejścia dla enkoderów (sprzętowe dekodery),
- 2 wejścia dla HAT,
- port I2C do rozszerzeń (dodatkowe moduły z ADC i przyciskami)
Płytka ma rozmiar 50x85.5mm i jak widać jest dość gęsto upakowana.
Z komputerem łączy się bezprzewodowo przez Bluetooth 4.0. Jest to ciągle urządzenie HID nie wymagające specjalnych sterowników. Płytkę można umieścić gdzieś w pobliżu przycisków, czujników i z zewnątrz podłączyc tylko zasilanie 9-12VDC.
W ramach testów udało mi się podlączyć i sparować 3 różne moduły pod różnymi nazwami.

Po urlopie zamówię płytki i zabiorę się za zbudowanie prototypu. Sercem układu jest gotowy atestowany moduł ARM Cortex M0 + radio Bluetooth 4.1 f-my Cypress, tej od PSoC5LP. Myślę, że nie powinno być problemów ze stabilnością połączenia. Co prawda jest to BLE, czylu Bluetooth Low Energy z opcjami hibernacji, oszczędzania energii, ale zamierzam to wszystko powyłączać. W naszym przypadku ważnejsza jest stabilna transmisja niż pobór energii, który i tak będzie dość niski.
vito-zmW przypadku HSC w sumie nic nie stoi na przeszkodzie, żeby jeden większy procesor reagował na wszystkie adresy i odpowiednio dekodował dane wypuszczając je na multipleksowane wyjścia dla LEDów. Kwestia wczytania się w protokół transmisji i napisania odpowiedniego dekodera. Myślę, że to zadanie na trochę później.
W Twoim układzie trzeba jeszcze zastosować tranzystory od strony anod. Cały prąd pobierany przez diody będzie płynął z górnych 6 pinów. W tym wypadku ULN2803 zabezpiecza tylko dolne 8 pinów. Rezystory ograniczające prąd powinny być raczej od strony katod i po jednym na każdą diodę.
