Wysłany: Sro Maj 11, 2016 21:46 [R All]DIY Konwerter do sterowania z kierownicy.
Witam w moim projekcie Może jeszcze nie najwyższych lotów ale powoli do celu.
Do czego służy ten konwerter?
W obecnej sytuacji konwertuje on sygnał analogowy bezpośrednio z pilota przy kierownicy z R75/MG_ZT do postaci cyfrowej. W skrócie zamieniamy przyciski na coś w stylu klawiatury na USB.
Jednakże dzięki zastosowaniu Arduino można zaprogramować praktycznie wszystko, ograniczeniem jest tylko wyobraźnia.
Co jest potrzebne?
Potrzebna jest płytka Arduino. Program zadziała na wszystkich Arduino z procesorami ATMega: 8u2, 16u2, at90usb8, 32u2, 32u4 jednakże ja polecam wybrać coś z ATMega32u4, może to być klon Sparkfun "ProMicro", obecnie chyba najlepsza cena. Niektóre płytki różnią się też zasilaniem, dostępne są np. 5V oraz 3.3V. Dokładniejsza jest wersja 5V ponieważ od 0 do 5V mamy rozdzielczość 1024, w przypadku 3.3V jest mniejsza ale też będzie działać po drobnej modyfikacji programu.
Dodatkowo potrzebny jest oczywiście komputer z zainstalowanym środowiskiem Arduino, biblioteką HID by NicoHood oraz w przypadku płytek innych firm biblioteką dodatkowych płytek.
Jak wygląda kompatybilność?
Urządzenie jest wykrywane jako HID czyli tak samo jak mysz czy klawiatura USB. Testowane na 2 urządzeniach z różną wersją Androida i nie potrzeba żadnych dodatkowych programów czy sterowników. Działa również pod Windowsem jednakże czasami system może zapytać o sterowniki.
Schemat i podłączenie.
Słownie: Przy kostce od radia mamy 2 przewody od sterowania pilotem. Jeden podłączamy do pinu 5V, drugi do pinu A0, między pinem A0 a GND potrzebny jest rezystor 1KOm. Jeśli wcześniej mamy wpięty konwerter K-BUS YWQ100031 (biała obudowa za radiem)
Należy go wypiąć i połączyć przewody wychodzące z wchodzącymi bądź wpiąć się bezpośrednio przed tym konwerterem.
Instalacja.
Z Zainstalowaniem programu każdy powinien sobie poradzić. Link
Chciałbym się skupić co należy zrobić po zainstalowaniu.
Jeśli naszej płytki nie ma na liście należy ją zainstalować. Przykład Sparkfun ProMicro oraz inne klony z napisem ProMicro (ATMega32U4 5V).
Poradnik po angielsku
Podłączamy nasze Arduino do komputera, oczywiście sam nie znajdzie sterowników, pobieramy paczkę ze strony producenta płytki. Sterowniki nie mają certyfikatu podpisanego cyfrowo, jeśli macie windows 8, 8.1 lub 10 należy włączyć jednorazowo obsługę niecertyfikowanych sterowników. Instalujemy sterowniki tak jak na obrazkach,
następnie kiedy już nasze Arduino jest widoczne w systemie trzeba też zainstalować bibliotekę w środowisku. Klikamy Plik>Preferencje i wklejamy adres do dodatkowych płytek :
. Następnie wybieramy Narzędzia>Płytka...>Menadżer Płytek, w filtrze wpisujemy "Sparkfun AVR" i instalujemy. Od tej pory w Narzędzia>Płytka mamy już swoje urządzenie które wybieramy. Dodatkowo w menu Narzędzia wybieramy odpowiedni Procesor oraz wirtualny port COM. Należy pamiętać że przy zmianie gniazda USB zmienia się też numer portu COM i trzeba go od nowa wybrać.
Instalowanie dodatkowych bibliotek.
Wchodzimy w Szkic>Dołącz bibliotekę>Zarządzaj bibliotekami w filtrze wpisujemy "HID-Project" i instalujemy. To samo robimy jeśli w przyszłości będziemy potrzebować innych bibliotek, np. do Enkodera.
Jeśli wszystko jest ok możemy przystąpić do wgrywania pierwszego, testowego programu. Jeśli mamy oryginalne Arduino (np. Leonardo) możemy wgrać program z Plik>Przykłady>Basics>Blink. Na płytce jest dioda led o nazwie L podłączona do pinu 13. Jeśli mamy niestandardową płytkę i nie mamy żadnej testowej diody led, są tylko RX i TX możemy posłużyć się kodem z linku Blink, wystarczy usunąć wszystko ze szkicownika i wkleić skopiowany kod.
Następnie klikamy ptaszek w kształcie V w lewym górnym rogu (Zweryfikuj), jeśli wszystko zakończy się pomyślnie dostaniemy tylko komunikat zwrotny o zajętości pamięci w Arduino, w przeciwnym wypadku wyświetli się błąd z pomarańczowym tekstem. Jeśli wszystko jest i nasze Arduino jest podłączone możemy kliknąć przycisk Wgraj (strzałka w prawo) i po chwili zobaczymy jak nasze arduino miga.
Jeśli mamy możliwość zaprogramować nasze arduino w samochodzie możemy najpierw sprawdzić działanie pilota oraz czy połączenia są poprawne.
Otwieramy program Plik>przykłady>Basics>AnalogReadSerial. Polecam zmienić delay(1); na delay(100); w naszym przypadku jest to szybkość wyświetlania wartości wciśniętych przycisków.
Weryfikujemy program, jeśli wszystko jest ok klikamy Wgraj. Nie zamykamy środowiska Arduino, klikamy Narzędzia>Monitor Szeregowy.
Klikamy po kolei każdy przycisk i zapisujemy jego wartość. Warto to sprawdzić ponieważ czasami tolerancja rezystorów może wyjść poza zakresy jakie przyjąłem. Przy okazji sprawdzamy działanie całego układu oraz wszystkich przycisków.
Na końcu możemy wgrać (a przede wszystkim przeczytać) ten program:
http://pastebin.com/Sp1FKkPX
Dla każdego przycisku mamy przedziały wartości jak w matmie Wszystko powinno się zgadzać ale trzeba po prostu sprawdzić czy wszystko jest na 100% ok. W razie czego trzeba po prostu zmienić odpowiednio przedziały.
Ostatnio zmieniony przez BigBoyPL Czw Paź 20, 2016 20:53, w całości zmieniany 1 raz
SPAMU¦
Wysłany: Sro Maj 11, 2016 21:46 Post o charakterze reklamowym. Każde Twoje kliknięcie zwiększa nasze szanse przeżycia ;)
Dlatego właśnie trzeba zainstalować hid-project. Służy on do definiowania niestandardowych funkcji. Bez niego można zrobić tylko prostą klawiaturę a-z ctrl shift itp. oraz funkcje myszki.
Wymagana jest nowsza atmega przynajmniej 8u8 bo ma w środku bezpośredni konwerter usb a nie rs232 do usb jak starsze. Tylko dzięki temu można zmieniać typ wykrywanego urządzenia USB.
Dziś zmontowałem pilota i sprawdziłem w aucie. Generalnie działa, przyciski bez korekt rezystancji w programie są zidentyfikowane poprawnie. Pisze generalnie, bo jest jedno ale. W programie nie ma nic o wykluczeniu drgań styków w mikroswitchach co skutkuje tym, ze przy jednokrotnym wciśnięciu przycisku w tablecie wywołuje akcje kilkukrotnego wciśnięcia przycisku. BigBoyPL, poradzisz coś?
Ale sam projekt jest bajecznie prosty, instalacja arduino opisana tak ze tylko głupi by sobie nie poradził. Naprawdę BigBoyPL, zrobiłeś kawał dobrej roboty. Dzięki wielkie, bo chyba ja Ci najwięcej trułem i dalej truje w temacie pilota
Jedyna rzecz jaką można zmienić bez kombinowania to zwiększenie wartości delay. Jak dasz mniej to 1 krótkie naciśnięcie zmieni ci od razu głośność do skrajnej. Jak dasz za dużo to trzeba będzie długo trzymać.
zmieniłem delay na 150, na "stole" było ok, ale w aucie jeszcze drgania styków dają o sobie znać. Jeszcze zmienię do 200 i powinno byc ok. Generalnie pilot działa jak trzeba. Jeszcze raz wielkie dzięki.
BigBoyPL, Zamiast delay lepiej uzyc funkcji millis() i liczyc czas jak dlugo sie faktycznie naciska i przez to zrobic rozne mozliwosci czy sie naciska non stop czyli trzyma czy tylko naciska krotko.
_________________ ( ͡° ͜ʖ ͡°) Diagnostyka i Chip Tuning Rover/MG Diesel oraz kodowanie pilotów
Oczywiście że można zrobić sporo. Nie piszę tego z sarkazmem. Jeśli dobrze kojarzę tutorial opisuje nawet cały kod Debounce dla przycisków z wykorzystaniem millis.
Remigiusz, widziałem gdzieś na forum twój projekt z wyświetlaczem. Jako osobie która dopiero poznaje Arduino oraz C++ zajęłoby mi to sporo czasu
Wracając na ziemię mogę powiedzieć że już dawno mógłbym popisać coś odnośnie enkodera, podpatrzeć w gotowcach i przykładach itp.
Jedna wymówka jest taka że praktycznie codziennie robię coś jakiemuś znajomemu albo sobie związanego z elektroniką a druga jest taka że z natury jestem leniwy
BigBoyPL, a jest możliwość dopisania do kodu takiego polecenie żeby po podaniu stanu wysokiego na któreś wejście w płytce uruchamiał sie konkretny program, w moim wypadku easycap viewer?
Ok wszystko podłączone i działa. Nie obyło się bez problemów ale to była wina sterowników. Faktycznie dobrze jest ustawić wartość delay na min. 200 bo przy 100 ciężko jest włączyć play Wielkie dzięki BigBoyPL
A ja niestety mam problem, faktem jest ze projekt nie laduje w roverze tylko chevrolecie ale mniejsza o to.
Komputer arduino widzi na krótko spięte z kompem niby działa niestety nexus juz w żaden sposób nie reagujemy w ogóle po usb nie daje zasilania dopiero po podłączeniu z zewnątrz 5v arduino ożywa ale dalej tablet nie reaguje.
Mam huba i podpiętego daca i to działa.
Ciekawe
Skoro DAC działa to znaczy że tablet jest w trybie OTG i daje zasilanie.
Z drugiej strony skoro Arduino świeci podłączone do komputera to też to zasilanie odbiera.
Za mało danych. Najlepiej foto jak to wszystko jest podłączone razem z przejściówkami itp.
Panowie problem rozwiązany, a okazało się że mój hub usb był uszkodzony po wymianie na nowy DAC działa poprawnie, nie wiesza się i sterowanie z kierownicy ruszyło od razu po podpięciu.
BigBoyPL dzieki za opracowanie tego manuala, dzieki Tobie zrobiłem to czego najbardziej brakowała przy naszych samochodowych tabletach, przy okazji czy kod źródłowy programu może być rozpowszechniany dalej ?
Witam
Na początku podziękowanie dla BigBoyPL-a za fajną prostą i dokładną instrukcje, świetna robota, osoby takie jak ja nie mające styczności z elektroniką powinny sobie poradzić. Ja sobie dałem rade.
Mam pytanie do fachwca.
W moim aucie pilot posiada trzy kabelki zamiast dwóch. Część przycisków vol+, next i mode idą na jednym kablu, a vol-, prev na drugim.
Żeby nie było łatwo to vol+ i vol- mają tą samą wartość (607), tak jak next i prev (865) . W załączniku przedstawiam schemat jak bym połączył kable pilot-arduino i szkic programu po przeróbce.
BigBoyPL proszę powiedz czy dobrze jest to zrobione?
Z góry dziękuje za pomoc.
Pozdrawiam
Dooddie
Dziś akurat mam wolne, nazbierało mi się 6 stron z nowych tematów do przeczytania ale czytam po kolei
dooddie, y= analogRead(A2); ale to byś pewnie zauważył
Niestety nie napisałeś co to za pilot więc nie mogę sobie tego wyobrazić
Najprościej to podłącz wszystko tak jak na schemacie i wrzuć do Arduino przykład AnalogReadSerial, potem zobacz co ci wypluje Monitor portu COM dla każdego przycisku, następnie w programie zmień A0 na A2 i powtórz czynność
Warto byłoby wrócić do tego projektu, mam gdzieś radio z E39 i chyba wyciągnę z niego enkoder
Napisałem w dziale tabletu zamiast tutaj. Zrobiłem pilota i wszystko jest ok poza vol -. Wartości przycisku zmierzone w aucie są na poziomie od 950 do 980. Co zmienić w kodzie żeby przycisk chodził. Próbowałem sam zmienić wartość na x<1000 i wartość wpisałem 980, co spowodowało zadziałanie przycisku, ale na stałe czyli jakby był wciśnięty ciągle.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać załączników na tym forum