Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Delphi obsługa czujników po przez USB

30 Nov 2009 22:33 2596 5
  • Level 9  
    Witam serdecznie.

    Pisze bo mam następujący problem. Chciałbym wyposażyć mój samochód w komputer pokładowy ponieważ producent jakoś pominął ten mały szczegół w moim modelu (Rover 216 Coupe 97r).

    Na początku chciałem kupić gotowe rozwiązanie od pana Nestora na pewno powszechnie znany tu na forum jego produkt "komputer pokładowy" no ale nie bardzo mi pasuje jego koncepcja a jak okazuje sie do tgo jedynego programu nie daje źródeł. Co prawda można w łatwy sposób wyciągnąć kod za pomocą reverse enginering ale nie o to tu chodzi.

    W końcu pomyślałem programować umiem więc zrobie coś własnego.

    Pierwsza koncepcja była zrobić własny komputer pokładowy na jakimś procku atmela.

    Później stwierdziłem ze biore się za budowe CarPC. W zwiąku z tym że jestem "prawie informatykiem" i mam nie ograniczony dostęp do podzespołów PC to mam złożony już komputerek, pozostaje jedynie kwestia jego zabudowy.

    Druga koncepcja była taka że na pisze programik w Delphi który komunikowałby by się komputerem pokładowym by Nestor i zczytywał by z niego zmienne: spalanie, prędkość itp... i będzie to wyświetlane na dużym kolorowym wyświetlaczu po kontrolą WinXP. Oczywiście program miałby być w formie nakładki graficznej , shella tak jak to jest w rozwiązane w urządzeniach GPS. No ale myśląc dalej stwierdziłem po co takie kombinacje z mikronktrolerami i portowniem ich pod winde...

    Prościej jest napisać taki sam program, który będzie sam pobierał dane z czujników zamontowanych już w samochodzie.

    Tu pojawia się problem bo z czujnikami chciałbym się komunikować po przez port USB, porty rs232 i LPT odpadają ze względu na budowe komputera i po prostu z fizycznym brakiem tych portów na płycie głównej...
    Problem w tym że nigdy w życiu nie pisałem programu który wykorzystuje jakie kolwiek porty.

    Mam pytanie czy jest w ogóle możliwe aby delphi po przez USB zczytywało informacje z czujników bez jakiś dodatkowych urządzeń / rozwiązań.

    Może ktoś jakoś mnie nakierować na co kolwiek bądź może pokazać jakiś przykład w jaki sposób zczytać informacje z czujnika???

    Czytałem dziś o komponencie TComPort ale nie rozjaśnia mi on w ogóle nic ponieważ nie znalazłem przykładów takiego wykorzystania jak moje.

    Prosze o jakiekolwiek sugestie.

    Z góry dziękuje za cierpliwość a właściwie proszę o nią.
    [30.03.2021, webinar elektroda] Nowoczesna diagnostyka maszyn, monitorowanie i przewidywanie awarii. Zarejestruj się
  • Moderator of Programming
    Jeżeli chcesz poprzestać na odczytaniu kilku czujników, to możesz spróbować wykorzystać protokół OBDII - wtedy potrzebujesz tylko interface USB -> OBD. Bardzo łatwy do zrobienia : FT232 + układ konwertujący sygnał TTL RS232 na logikę OBD.

    Jednak z 'komputerem samochodowym' będzie to miało mało wspólnego.
    Lepiej pomyśl nad zbudowaniem jakiegoś 'małego' komputera, np. wspomniane urządzenie Nestor-a i dodaj do niego obsługę USB/RS232 zamiast wyświetlacza.
    'Mały' komputerek zbiera dane z samochodu, magazynuje je i czeka na twoje zapytanie.
    Łączysz się Delphi jak do normalnego portu COM. Musisz tylko ustalić jakieś standardy komunikacji np. : jak wyślesz w Delphi na port ciąg znaków 'VEL' to z powrotem otrzymujesz prędkość, itd itp.
    Reszta to już graficzne opracowanie danych, i zależy tylko od ciebie.
  • Level 9  
    arnoldziq wrote:
    Jeżeli chcesz poprzestać na odczytaniu kilku czujników, to możesz spróbować wykorzystać protokół OBDII - wtedy potrzebujesz tylko interface USB -> OBD. Bardzo łatwy do zrobienia : FT232 + układ konwertujący sygnał TTL RS232 na logikę OBD.

    Jednak z 'komputerem samochodowym' będzie to miało mało wspólnego.
    Lepiej pomyśl nad zbudowaniem jakiegoś 'małego' komputera, np. wspomniane urządzenie Nestor-a i dodaj do niego obsługę USB/RS232 zamiast wyświetlacza.
    'Mały' komputerek zbiera dane z samochodu, magazynuje je i czeka na twoje zapytanie.
    Łączysz się Delphi jak do normalnego portu COM. Musisz tylko ustalić jakieś standardy komunikacji np. : jak wyślesz w Delphi na port ciąg znaków 'VEL' to z powrotem otrzymujesz prędkość, itd itp.
    Reszta to już graficzne opracowanie danych, i zależy tylko od ciebie.


    No własnie problem jest tego typu że po mimo tego iż mam złącze obdII to akurat ten model nie współpracuje z żadnym interfacem nikt nie wie jakiego protokołu używa... Moj komputer jest w stanie odczytać tylko Komputer TestBook 4 serwisowa zabawka Rovera! Dopiero od 2001 roku Rover jest zgodny z OBDII ;/

    Co do dalszej części ok ale jak pisałem nigdy nie programowałem nic co korzystało fizycznie z portu... Czy mogę prosić o jakiś przykład fragment kodu który z czytuje dane z USB??? Może jakaś lektura albo o jakim komponencie czytać???
  • Moderator of Programming
    DarkRayne wrote:
    No własnie problem jest tego typu że po mimo tego iż mam złącze obdII to akurat ten model nie współpracuje z żadnym interfacem nikt nie wie jakiego protokołu używa... Moj komputer jest w stanie odczytać tylko Komputer TestBook 4 serwisowa zabawka Rovera! Dopiero od 2001 roku Rover jest zgodny z OBDII ;/

    No to straszny pech. W takim przypadku musisz rozgryźć całą komunikację samemu, albo poszukać w inecie jakiegoś opisu.

    DarkRayne wrote:
    Co do dalszej części ok ale jak pisałem nigdy nie programowałem nic co korzystało fizycznie z portu... Czy mogę prosić o jakiś przykład fragment kodu który z czytuje dane z USB??? Może jakaś lektura albo o jakim komponencie czytać???

    Co do odczytu/zapisu do/na USB, to układy FT mają tryb emulacji wirtualnego portu COM. Wiec posługujesz się nim jak zwykłym RS232. Literatury w inecie jest bardzo dużo a komponentów jeszcze więcej.
    Na przykład doskonały komponent TComPort : Link
  • Level 9  
    A jeszcze jedno pytanie pisze o tym obdII w sumie to nie mam pojecia jak rozgryźć protokół w moim roverku... ale czy nie mogę po prostu czujnika np cieczy chłodzącej podpiąć pod usb i w delphi zczytać z niego wartość, tak samo z impulsatora i z wtrysków???? czy musze zbudować zewnetrzny układ który bedzie odbierał i czytał informacje i podawał je dopiero do programu???

    Proszę poprawić wszystkie swoje posty w tym temacie przed napisaniem następnego - krzychoocpp
  • Moderator of Programming
    USB działa na napięcia 3V3 do 5V a na jakie napięcie działają czujniki w twoim samochodzie ?

    Bez układu tłumaczącego dane dostarczane przez czujniki na jakiś format który dasz rade przesłać przez RS232/USB - nie da rady.