Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Joystick USB - edycja druga

piotrva 04 Lut 2017 21:42 7815 18
  • Joystick USB - edycja druga

    1. O czym opowiem, już po raz drugi.
    1.5 roku temu prezentowałem na forum wykorzystanie płytki eXtrino XL do realizacji joysticka USB.

    http://www.elektroda.pl/rtvforum/topic3082868.html

    Rozwiązanie miało to jednak podstawową wadę - rozmiar. Pierwszy pomysł zakładał wykonanie własnej płytki z podobnym procesorem, jednak ostatecznie znalazłem na zagranicznym serwisie aukcyjnym STM32F103C8T6 ARM STM32 Minimum System Development Board.

    Joystick USB - edycja druga
    ( Źródło: http://artofcircuits.com/ )

    2. Sprzęt elektroniczny
    Zastosowany moduł z mikrokontrolerem STM32 można nabyć za około 2-3 USD z przesyłką, czyli około 8-12 zł.
    W tej cenie otrzymujemy miniaturową płytkę o rozmiarach 23x54mm, wyposażoną w złącze micro-USB i procesor ze sprzętowym interfejsem USB. Na pokładzie znajduje się także stabilizator i inne elementy konieczne do pracy urządzenia.
    W sumie dostępnych mamy 20 wejść cyfrowych i 10 analogowych/cyfrowych.

    3. Oprogramowanie
    Oprogramowanie powstało przy użyciu bibliotek STM32 Cube HAL oraz oprogramowania STM32CubeMX. Środowisko, jakiego użyto, to darmowe SW4STM32.

    Ostatecznie zdecydowałem się (aby nie stwarzać konfliktów sprzętowych) na wykorzystanie 17 wejść cyfrowych na przyciski, oraz 10 wejść analogowych.
    1 wyprowadzenie użyto do sygnalizacji pracy urządzenia za pomocą migania diody zamontowanej na płytce, a 2 kolejne podłączone są do oscylatora 32kHz i niewykorzystane.

    Po stronie USB na komputerze urządzenie przedstawia się jako 2 joysticki. Na pierwszym z nich zmapowano 7 osi analogowych i wszystkie przyciski, na drugim - pozostałe 3 osie analogowe.

    4. Część mechaniczna
    Joystick USB - edycja druga
    Ta część u mnie się nie zmieniła - jako podstawę wykorzystano joystick Logitech Wingman Warior. Tym razem jednak cała elektronika została zamontowana w środku urządzenia. Na zewnątrz wyprowadzono złącze do podłączenia wspomnianego w dawnym projekcie joysticka do widoku, a także podpiąłem pedały z kierownicy.

    Dzięki zastosowaniu obliczeń:
    1. Różnica w położeniu obu pedałów kontroluje położenie steru kierunku
    2. Minimalne wciśnięcie (to które jest mniejsze) pedału kontroluje siłę hamowania
    3. Różnica w położeniu obu pedałów kontroluję symetrię hamowania

    Dodatkowo także obsługuję enkoder, dzięki czemu mogę łatwo kontrolować parametry autopilota.

    Takie "rarytasy" zawdzięczam oprogramowaniu spersonalizowanemu pod własne potrzeby.

    5. Programowanie
    Urządzenie można zaprogramować za pomocą programatora z interfejsem SWD, a także za pomocą fabrycznego bootloadera na interfejsie UART. Wystarczy więc posiadanie dostępu do interfejsu szeregowego lub nawet prawie dowolnego Arduino.

    6. Wady i zalety w porównaniu z innym sprzętem
    Mój sprzęt (a raczej oprogramowanie) można porównywać z podobnymi rozwiązaniami:
    1. MJOY8, MJOY16
    2. Arduino Leonardo
    3. eXtrino XL








    KategoriaSTM-JOYMJOYArduino LeonardoeXtrino XL
    Cena8-12 złok. 40 złKlon ok. 40 zł115 zł
    Ilość kanałów analogowych1086-88-12
    Interfejs USBSprzętowyProgramowySprzętowySprzętowy
    Rozmiaryniewielkiew zależności od konstrukcjiśrednieduże
    ProgramatorDowolny interfejs UART-TTLProgramator ISPbrakbrak


    Jeśli jeszcze zauważycie jakieś kategorie warte do dodania - uzupełnię tabelę.

    7. udostępnienie
    Kod oraz instrukcje jak wykorzystać moje oprogramowanie na tym urządzeniu przedstawiam na repozytorium.
    https://gitlab.com/piotrva/STM-JOY

    Jeśli zainteresowanie projektem będzie wystarczające być może uzupełnię go o wersje obsługujące przyciski w połączeniu matrycowym (nawet 100 przycisków), enkodery, dodatkowe kanały (można podpiąć po SPI lub I2C dodatkowe "karty rozszerzeń").

    Zapraszam do (merytorycznych) komentarzy i zadawania pytań!


    Fajne!
  • Megger
  • Megger
  • #4 05 Lut 2017 10:41
    OlegTor
    Poziom 3  

    @piotrva, Popraw schemat pinologii płytki na J1_BTN17 powinien być PB9.

  • Megger
  • #5 05 Lut 2017 11:02
    lechoo
    Poziom 39  

    Witam, czy przewidujesz dodanie wejścia PPM umożliwiającego podłączenie aparatury RC jako kontrolera? Byłby to miły ukłon w stronę modelarzy trenujących na symulatorach...

    Obecnie w tym celu używam takiej prowizorki polutowanej w wykorzystaniem płytki Arduino pro mini, z programową emulacją USB:
    Joystick USB - edycja druga
    Co prawda działa to poprawnie, ale sprzętowe USB na pewno będzie jeszcze lepsze.

  • #6 05 Lut 2017 11:24
    piotrva
    Moderator Mikrokontrolery

    @OlegTor - już poprawiam, dzięki za uwagę
    @lechoo - nie powinno to być wielkim problemem, ale nie mam żadnej aparatury, żeby taką modyfikację przetestować. Mógłbyś podrzucić link do źródeł Twojego oprogramowania?

  • #7 05 Lut 2017 12:19
    Stefan_2000
    Poziom 17  

    A macie jakieś doświadczenia z force-feedbackiem? Mam takie małe marzenie, żeby zreanimować starą kierownicę ;-)

  • #8 05 Lut 2017 13:23
    lechoo
    Poziom 39  

    W załączeniu zamieszczam źródełka tego prymitywnego programu. Jest to kod z TEJ strony lekko dostosowany do mojej aparatury FS-i6 - zmieniona kolejność kanałów PPM i inne wartości graniczne. Użyta tam biblioteka HIDJoy obsługuje tylko 4 kanały proporcjonalne, ale przez PPM można przesyłać ich nawet 8.
    Myślę, że największy kłopot może Ci sprawić odmierzanie odstępów pomiędzy impulsami PPM z mikrosekundową dokładnością...

  • #10 05 Lut 2017 14:08
    lechoo
    Poziom 39  

    Nie musisz się z tym spieszyć... Zamówię sobie w najbliższym czasie od ryżowców kilka takich płytek jak Twoja abym miał na czym potestować.
    Posiadam stary 2-kanałowy oscyloskop analogowo-cyfrowy 40MHz i 8-kanałowy analizator Saleae (klon).
    Na TEJ stronie jest inny projekt takiego konwertera PPM-to-USB na atmega8 i jest tam pokrótce opisany ten protokół PPM.

  • #12 06 Lut 2017 17:10
    MarekS6
    Poziom 14  

    A czy jest tu możliwość podpięcia enkodera tak by w systemie jego obrót był widoczny jako vol+/vol- a naciśnięcie oznaczało MUTE? Wykorzystał bym to wtedy w carPC do sterowania.

  • #14 06 Lut 2017 18:43
    MarekS6
    Poziom 14  

    Czyli jak rozumiem obecny firmware jest tak napisany, że w menedżerze systemu układ ten jest widoczny dokładnie jako joystick (w sensie tak będzie napisane), a nie jako klawiatura z dodatkowymi multimedialnymi klawiszami do dowolnego użytku? Pytam gdyż kiedyś temat ten już poruszałem i pamiętam z jakiejś tabeli znaków dla biblioteki środowiska C, że vol+/vol- oraz mute to jakieś konkretne kody jednego klawisza.

    W tej chwili obeszłem to tak że wyciągnąłem elektronikę ze starej klawiatury i klawisze dostępne na obudowie carPC podłączyłem bezpośrednio w miejsce jakichś konkretnych klawiszy (jak enter, escape itd) niestety do głośności musiałem użyć dodatkowego układu na mikrokontrolerze który zamienia obrót enkodera na impulsy i poprzez dodatkowy przekaźnik półprzewodnikowy zwieram klawisze głośności w tej elektronice.

    Jest to raczej rozwiązanie czasowe i szukam jakiejś mniejszej alternatywy gdyż to co mam zajmuje za dużo miejsca...

    Niestety w C nie programuje a w bascomie tylko troszkę, więc pozostało mi szukać dalej.

  • #15 06 Lut 2017 19:09
    piotrva
    Moderator Mikrokontrolery

    Zatem widzę, ze Tobie przydałaby się klawiatura, a nie joystick. Szczerze nie testowałem takiego rozwiązania osobiście, ale na pewno jest to możliwe do realizacji (po prostu trzeba po USB udawać klawiaturę z przyciskami multimedialnymi - to nie powinno być nic niestandardowego).

  • #16 06 Lut 2017 19:57
    MarekS6
    Poziom 14  

    Owszem, potrzebuję czegoś co po stronie systemowej jest widziane jako klawiatura, ale zarazem ma enkoder którego obrót stymuluje naciskanie klawiszy głośności. Miałem nadzieję, że ten joystick uda się w ten sposób wykorzystać skoro, jak napisałeś o dobrze zrozumiałem, ma możliwość podłączenia enkodera.

    Próbowałem nawet poskładać układ z tej strony (mam nadzieję że wklejając ten stałe dostępny link nie łamie regulaminu) :

    http://obruboff.ru/english-pages/usb-volume-control/

    Lecz niestety nawet kolega który biegle programuje w C, nie potrafił ogarnąć tego kodu tam, a autor jak widać po komentarzach, nie wiele pomógł...

  • #17 07 Lut 2017 01:10
    Tremolo
    Poziom 43  

    Ja używałem sterownika IR płytki z pilota bezprzewodowego, na niego wpiąłem przekaźniki od sterowania radiowego i w ten sposób sprawdzałem sterowania do pomp do betonu, suwnic i dźwigów. Był to przez swego czasu najdroższy system do gier na świecie :D
    W grach zmapowałem wyskakujące znaki do odpowiednich funkcji.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME