Skocz do zawartości

Nasza strona utrzymywana jest wyłącznie z reklam. Dlatego prosimy o wyłącznie AdBlocka w przeglądarce podczas korzystania z witryny https://megane.com.pl

Sklep z częściami do Renault - sprawdź iParts.pl

milyges

Użytkownik
  • Postów

    84
  • Dołączył

  • Ostatnia wizyta

Reputacja

8 Neutralny

Kontakt

  • Strona www
    http://mhroczny.net/

Samochód

  • Auto
    Renault Megane II ph2 Grandtour
  • Silnik
    1.5dCi 105KM
  • Przebieg (tys.km)
    255

Ostatnie wizyty

1321 wyświetleń profilu
  1. Hej, 1. Własna apka (launcher) pod androida, źródła są na github - komunikacja po rs232 wbudowanym w odroid. 2. Własny układ (schemat na github w programie Eagle rysowany) 3. Nie wiem, nie używałem nigdy arduino ;) Pozdrawiam, Grzesiek.
  2. Hej, U mnie CANa ogarnia stm32. Mam źródła tylko pod niego. Są na moim githubie: https://github.com/milyges/cardroid/blob/master/src/mainboard-stm32/src/displayemu.h https://github.com/milyges/cardroid/blob/master/src/mainboard-stm32/src/displayemu.c Po przetworzeniu danych na stm32, są wysyłane przez port szeregowy do odroida (funkcja uprintf). Do arduino możesz CANa podłączyć przez np. układ MCP2515. Ja tak rozpracowywałem protokół. Emulację w drugą stronę (sterowanie wyświetlaczem z włąsnego układu) oraz logi znajdziesz na moim serwerze: https://mhroczny.net/pub/can2usb/ Jak coś możesz do mnie pisać, postaram się w miarę wolnego czasu (którego nie mam za wiele) pomóc. Pozdrawiam, Grzesiek.
  3. Witam, Pozwolę sobie odkopać temat ;) Z racji że dalej jeżdżę tym autem, poprzednie raspberry pi wyzionęło ducha, powstaje nowa wersja oparta działająca na androidzie Źródła projektu: https://github.com/milyges/cardroid Całość oparta na STM32F103 odroid-c2, tyle co włożyłem to do auta, ale wydaje się że będzie działać. Postaram się dokładniej opisać projekt + okomentować kod jakby ktoś chciał sobie klona zbudować...
  4. Hej, U mnie nazwy utworów wyświetlane są tylko z USB i odpowiada za to Raspberry PI. Po naciśnięciu 5, w oryginalnym radiu nazwa wyświetlana jest tylko przez chwilę. Pozdrawiam, milyges
  5. No i się chwaliłem... 186 000km i puk puk puk panewka.
  6. Witam, Wiem że takich tematów było już kilka(albo i kilkanaście), przejrzałem je, ale większość dotyczyła Megane II ph I a nie ph II. Otóż wczoraj w renówce wymieniłem komplet filtrów oraz olej (Elf 5W40, wymiana po niecałych 15 tyś km). Wszystko było OK, dziś zrobiłem na miejscu kilka km. Wieczorem wyruszyłem w trasę do Krakowa, auto jechało normalnie. Po dojechaniu na miejsce, ja zostałem w środku, czekając na wolnych obrotach aż turbina nieco przestygnie a brat wysiadł i stwierdził że silnik dziwnie stuka. Rzeczywiście z pod maski wydobywał się klekot: Poza tym że się załamałem bo od razu skojarzyłem to z panewką, to mam kilka pytań: - czy jest jakaś w miarę prosta metoda aby sprawdzić czy nie stuka jednak koło pasowe (mam ograniczony dostęp do narzędzi pod blokiem, tj podnośnik, śrubokręty i podstawowe klucze oczkowo-widlaste). - czy wymieniał ktoś panewki w tym silniku (1.5dci 106KM)? Najbardziej interesuje mnie koszt robocizny (wiadomo - rząd wielkości) - czy jeżeli jest to koło, to czy jadąc spokojnie, może się coś złego (pewnie może) stać? Pasowało by mi zjechać do miejsca garażowania - czy na podstawie filmiku ktoś jest w stanie spróbować określić co to może być? Auto asekuracyjnie zostaje jutro na parkingu pod blokiem a do pracy idę na piechotę :( PS.: Przepraszam za chaos w poście, ale piszę w ogromnym zdenerwowaniu i załamaniu. Pozdrawiam. //EDIT: Nagranie z dziś z rana: stuki jakby mniejsze, bardziej słyszalne poza komorą silnika niż przy silniku, do tego jeszcze jakieś rzężenie jakby z rolki paska akcesoriów. //EDIT 2: Dobrałem się do koła na wale i wygląda ok. Zdjąłem też pokrywę wtrysków i nie widać żeby coś złego się tam działo, jeszcze jedno nagranie klekotu: https://www.youtube.com/watch?v=3SiS0TKPO2Y. Jutro rano jadę na 8smą do warsztatu specjalizującego się w francuzach, mają osłuchać co to może być. Hałas wydaje się być bardziej słyszalny z góry niż z dołu silnika. //EDIT 3: Takie stuki niestety oznaczają początek końca panewki. Próba zjechania do warsztatu zakończyła się głośniejszymi stukami i holowaniem auta do mechaników. Silnik wytrzymał 186 000km
  7. Z tego co wiem, radio jest na osobnej szynie (nie widziałem tam nic poza danymi radia). Musisz się do jego kostki podłączyća nie do gniazda OBD II. //EDIT: W putty włącz sobie logowanie do pliku, bardzo pomaga w późniejszej analizie :)
  8. O MII też ustrzelona na poprzednim mieszkaniu jeszcze ;) http://goo.gl/maps/heqva
  9. Od siebie dodam tylko że Megane II kolegi kataryniarz śmiga dalej bezawaryjnie (obecnie około 170 000km). A od pół roku jest codziennie "katowana" jazdą po Krakowie. Na ostatnim przeglądzie silnika, wszystkie parametry (ciśnienie paliwa, doładowania, etc.) w normie. Pozdrawiam.
  10. Witam, Zmieniła się nieco koncepcja, radyjko zostaje oryginalne a wyświetlacz wyjeżdża. Siadłem więc dziś nad emulacją wyświetlacza. Efekt poniżej. Całość działa sobie wesoło na Raspberry Pi, kontroler CAN MCP2515. Aplikacja napisana w C++ przy wykorzystaniu bibliotek QT. Po ukończeniu prac postaram się spisać jakąś dokumentację protokołu oraz udostępnię kod źródłowy. Pozdrawiam. //EDIT: No teraz wygląda to już nieco lepiej :)
  11. Witam, projekt z braku czasu rozwija się powoli. Stwierdziłem że zamiast dorabiać moduł do oryginalnego radia,zbuduje radio z USB i bluetooth od podstaw i zamknę w oryginalnej obudowie. Jestem na etapie projektowania finalnej wersji po testach na płytkach prototypowych. Aktualna wersja schematu do zobaczenia tutaj https://mhroczny.net/pub/megane-radio/schemat_26.10.png
  12. W 99% przypadków samochodów z takim czujnikiem jest to hallotron + tranzystor. Na wyjściu pojawia się sygnał o przebiegu prostokątnym, którego częstotliwość zależy od prędkości (dla Megane I: 8imp/s ~ 10km/h).
  13. Dzięki :) Na razie siadłem nad tym jak radio dzieli swoje komunikaty do przesłania przez CAN, efektem tego jest taka funkcja: void do_send_to(uint16_t id, uint8_t * data, uint8_t datasz, uint8_t filler) { struct can_packet packet; uint8_t packetnum = 0, i, len = datasz; while (len > 0) { packet.id = id; packet.rtr = 0; packet.len = 8; i = 0; if (packetnum > 0) { packet.data[0] = 0x20 + packetnum; /* Kolejny pakiet z jednego komunikatu */ i++; } while((i < 8) && (len > 0)) { packet.data[i] = *data; data++; len--; i++; } for(; i < 8; i++) packet.data[i] = filler; mcp2515_send(&packet); packetnum++; _delay_ms(1); /* TODO: tutaj powinniśmy poczekać na odpowiedź wyświetlacza / radia zamiast tego delay */ } } static inline void send_to_display(uint16_t id, uint8_t * data, uint8_t datasz) { do_send_to(id, data, datasz, 0x81); } static inline void send_to_hu(uint16_t id, uint8_t * data, uint8_t datasz) { do_send_to(id, data, datasz, 0xA3); } i przykładowe użycie: uint8_t test_packet[] = { 0x10, /* Ustaw tekst */ 0x19, /* Olewamy emblematy, jeżeli chcemy poinformować o nich wyświetlacz, tutaj 0x1C i dodatkowe bajty dalej */ 0x76, /* ??? */ 0x60, /* Dla starego typu: numer stacji nie ustawiony */ 0x01, /* Tekst normalny */ 'H', 'E', 'L', 'L', 'O', ' ', ' ', ' ', /* 8 znaków dla starego typu */ 0x10, /* Serparator? */ 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0', /* 12 znaków dla nowego typu + bajt zerowy */ }; send_to_display(0x121, test_packet, sizeof(test_packet)); Ten kod pokaże dokładnie coś takiego: Teraz można przeskoczyć na wyższy poziom, i zająć się analizą komunikacji na wyższej warstwie. Muszę jeszcze tylko dorobić funkcję która będzie potrafiła składać pofragmentowane komunikaty w całość :) Dodano: 26 maj 2013 - 16:59 Chwile nie pisałem, ale cały czas coś się dzieje, na początek kody klawiszy wysyłane do radia: #define AFFA2_KEY_LOAD 0x0000 /* Ten na dole pilota ;) */ #define AFFA2_KEY_SRC_RIGHT 0x0001 #define AFFA2_KEY_SRC_LEFT 0x0002 #define AFFA2_KEY_VOLUME_UP 0x0003 #define AFFA2_KEY_VOLUME_DOWN 0x0004 #define AFFA2_KEY_PAUSE 0x0005 #define AFFA2_KEY_ROLL_UP 0x0101 #define AFFA2_KEY_ROLL_DOWN 0x0141 #define AFFA2_KEY_HOLD_MASK (0x80 | 0x40) i wygląd pakietu z klawisziem/funckja wysyłająca klawisz do radia: int8_t affa2_send_key(uint16_t key) { uint8_t data[] = { 0x03, 0x89, /* Wyślij klawisz */ ((key >> 8) & 0xFF), (key & 0xFF) /* Kod klawisza */ }; return affa2_send_to_hu(AFFA2_REMOTE_KEY, data, sizeof(data)); } AFFA2_KEY_HOLD_MASK to dodatkowy bit zapalany gdy przytrzymamy klawisz (0x40 dla klawiszy od 3 do 5 i 0x80 dla klawiszy 0 do 3). Sterowanie radiem z laptopa już mi pięknie działa :) Dodatkowo cały kod został przeorganizowany, obsługa radia i wyświetlacza została wydzielona do osobnej biblioteki. Teraz muszę zdemontować wyświetlacz i wpiąć go na stole żeby zorientować się jak działa wyświetlanie poszczególnych ikon na dole + przełączanie trybów (w aucie jest to strasznie niewygodne). Dodano: 26 maj 2013 - 20:42 No i proszę bardzo :) Niestety, przy wyciąganiu daszka byłem za mało delikatny i osłona czujnika nasłonecznienia do klimy ma się średnio //EDIT Biblioteka +/- działa, kod: affa2_display_sync(); /* Synchronizacja szyny */ affa2_display_set(AFFA2_DISPLAY_ENABLE); /* Włączamy wyświetlacz */ affa2_display_set_text_ex("POZDRO ", "Pozdrawiam! ", AFFA2_ICON_NO_MODE | AFFA2_ICON_NO_AFRDS | AFFA2_ICON_NO_TRAFFIC | AFFA2_ICON_NEWS_ARROW, AFFA2_ICON_MODE_NONE); daje dokładnie taki efekt: PS.: Musze wszędzie AFFA2 zmienić na AFFA3, bo tak napisali na naklejce pod wyświetlaczem ;) //EDIT 2 Przepisałem całą bibliotekę od nowa, teraz wykorzystuje takie rzeczy jak przerwania zegarowe, nie ma już problemu z synchronizowaniem się z wyświetlaczem. Do tego tryb menu zapalił: Dodano: 28 maj 2013 - 22:48 Jest cały mój :) W wolnej chwili postaram napisać się podsumowanie, jak to działa + jak skończę bibliotekę to może ją też opublikuje :)
  14. Dzięki wielkie :unsure: Zaktualizowałem posta o nowe informacje. Skoro już rozpiskę pinów mam kompletną zamawiam scalaki PCA-82C250T oraz MCP-2515, buduję interfejs do podsłuchu transmisji i zobaczymy co z tego wyjdzie. Dodano: 15 maj 2013 - 19:06 Mam go :unsure: :!: ;) +CANPACKET: id: 0x0121 len: 8 rtr: 0 Data: 0x10 [?] 0x19 [?] 0x7E [~] 0x72 [r] 0x01 [?] 0x3E [>] 0x20 [?] 0x45 [E] +CANPACKET: id: 0x0121 len: 8 rtr: 0 Data: 0x21 [!] 0x53 [s] 0x4B [K] 0x41 [A] 0x20 [?] 0x3C [<] 0x10 [?] 0x20 [?] Cały log z dzisiejszej analizy w załączniku. Zaraz dorobię do sondy CAN, możliwość filtrowania wiadomości i postaram się jakoś rozpracować co i jak z tym wyświetlaczem :) Co do protokołu: CAN 11bit, 1mbps :) //EDIT: Log z tego co widzę jest niekompletny, sonda gubi paczki, jak poprawię firmware to wrzucę lepszy log :) Na razie staram się rozpracować ID pakietów. Dodano: 15 maj 2013 - 22:13 Z dziś udało mi się spisać: Luźne wnioski: * Szyna CAN pracuje z szybkością 1Mbps * Pakiety wysyłane są na zasadzie pytanie-odpowiedź * Dla pakietu "pytanie" odpowiedź ma ID większą o 0x400, np. dla 0x121 ma 0x521 * Są 4 rodzaje pakietów pojawiające się przy: * Włączenie/wyłączenie radia (para: 0x01B1 i 0x05B1) * Naciśnięcie klawisza na pilocie przy kierownicy (para: 0xA9 i 0x4A9) * Zmiana tekstu na wyświetlaczu (para 0x121 i 0x521) * Cały czas: para 0x03CF i 0x03DF * bajty 0xA3 w pakietach od wyświetlacza wyglądają na zapychacze do pełnych 8 bajtów * bajty 0x81 w pakietach od radia wyglądają na zapychacze do pełnych 8 bajtów * Wygląda na to że radio nie operuje na pojedynczych bajtach a na słowach 16 bitowych, wyjaśniało by to tak spore ilości stałych bajtów (np. przy obsłudze klawiszy) * Radio używa normalnego kodowania ASCII (i chwała mu za to :P) Pakiet 0x0121: * W bajcie 4-tym, bity 0-3 wskazują na numer klawisza, pod jakim zapisana jest stacja radiowa (1-6) Obsługa klawiszy z pilota: * Wyświetlacz wysyła komunikat o id 0x00A9, o długości 8 bajtów - 0 bajt: 0x03 - wygląda na stały - 1 bajt: 0x89 - jw. - 2 bajt: 0x00 - jw. - 3 bajt: kod klawisza :P - 4-7: zapychacze 0xA3 * Radio odpowiada pakietem o ID 0x04A9, pierwszy bajt to 0x74 a pozostałe 0x81 Jeżeli ktoś miałby chwilę czasu i chęci, rzucić okiem na te logi (zwłaszcza na nr. 2) zapraszam, może razem szybciej uda nam się wywnioskować co autor miał na myśli :) Pozdrawiam. Dodano: 20 maj 2013 - 20:52 Dziś w końcu poprawiłem sonde, udało się zebrać pełny (no prawie pełny) LOG :) Samo wysyłanie tekstu na wyświetlacz to 4 pakiety CAN: 0x121 0 8: \x10\x19v`\x1 VO 0x121 0 8: !L 2 \x10V 0x121 0 8: "OLUME 0x121 0 8: #2 \x0\x81\x81 Zauważyłem że radio wysyła wszystkie informacje 2x, raz dla wyświetlaczy graficznych (jak mój) i dla starszego typu (w powyższym przykładzie, u mnie pokazuje się VOLUME 2, a na starszym pokaże się tylko VOL 2 :) Kompletny LOG z dziś w załączniku. Zaraz postaram się to zebrac do kupy i w końcu coś wyświetlić :) Dodano: 20 maj 2013 - 21:35 Nie taki CAN straszny jak go malują :) Pierwsza wersja funkcji: void show_text(char old[8], char new[12]) { struct can_packet packets[4]; uint8_t i; /* Budujemy pakiety */ packets[0].id = 0x121; packets[0].rtr = 0; packets[0].len = 8; packets[0].data[0] = 0x10; packets[0].data[1] = 0x19; packets[0].data[2] = 0x76; packets[0].data[3] = 0x60; packets[0].data[4] = 0x01; packets[0].data[5] = old[0]; packets[0].data[6] = old[1]; packets[0].data[7] = old[2]; packets[1].id = 0x121; packets[1].rtr = 0; packets[1].len = 8; packets[1].data[0] = 0x21; packets[1].data[1] = old[3]; packets[1].data[2] = old[4]; packets[1].data[3] = old[5]; packets[1].data[4] = old[6]; packets[1].data[5] = old[7]; packets[1].data[6] = 0x10; packets[1].data[7] = new[0]; packets[2].id = 0x121; packets[2].rtr = 0; packets[2].len = 8; packets[2].data[0] = 0x22; packets[2].data[1] = new[1]; packets[2].data[2] = new[2]; packets[2].data[3] = new[3]; packets[2].data[4] = new[4]; packets[2].data[5] = new[5]; packets[2].data[6] = new[6]; packets[2].data[7] = new[7]; packets[3].id = 0x121; packets[3].rtr = 0; packets[3].len = 8; packets[3].data[0] = 0x23; packets[3].data[1] = new[8]; packets[3].data[2] = new[9]; packets[3].data[3] = new[10]; packets[3].data[4] = new[11]; packets[3].data[5] = 0x00; packets[3].data[6] = 0x81; packets[3].data[7] = 0x81; for(i = 0; i < 4; i++) { mcp2515_send(&packets[i]); _delay_ms(1); } } Wiadomo, sporo jest jeszcze do zrobienia, ale da się! :) Pozdrawiam serial_log.txt serial_log2.txt serial_log3.txt
  15. Mój też miał uszkodzone zaczepy a do tego jeszcze było widać ślady samodzielnego klejenia (które też puściło). Pan tylko zapytał się czy sam spoiler jest ok i bez problemu zrobili w ramach akcji.
×
×
  • Dodaj nową pozycję...

Nasza strona utrzymywana jest wyłącznie z reklam. Dlatego prosimy o wyłącznie AdBlocka w przeglądarce podczas korzystania z witryny https://megane.com.pl .

Tak, AdBlock został przeze mnie wyłączony!