{"id":21526,"date":"2025-08-01T15:03:20","date_gmt":"2025-08-01T14:03:20","guid":{"rendered":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/?p=21526"},"modified":"2025-08-01T15:03:20","modified_gmt":"2025-08-01T14:03:20","slug":"istny-montypython-czyli-zastosowanie-jezyka-python-w-technice-samochodowej","status":"publish","type":"post","link":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/2025\/08\/01\/istny-montypython-czyli-zastosowanie-jezyka-python-w-technice-samochodowej\/","title":{"rendered":"Istny MontyPython czyli zastosowanie j\u0119zyka Python w technice samochodowej"},"content":{"rendered":"<p style=\"font-weight: 400;\"><em>Dzi\u015b nietypowo, bo chc\u0119 zawodowo i praktycznie.<\/em><\/p>\n<p style=\"font-weight: 400; text-align: justify;\">Informatyka w samochodach to dzi\u015b bardzo rozwini\u0119ta ga\u0142\u0119\u017a przemys\u0142u. Dla potrzeb automotive programy pisze wielu programist\u00f3w. Co ciekawe, wi\u0119kszo\u015b\u0107 kodu, kt\u00f3ry obs\u0142uguje podstawowe funkcje pojazd\u00f3w pisze si\u0119 w j\u0119zykach ni\u017cszego rz\u0119du \u2013 C, C++ lub C#. Python ma zupe\u0142nie inne zastosowanie \u2013 s\u0142u\u017cy inteligentnym systemom wsparcia. Jakim? Podzielili\u015bmy to na kilka kategorii.<\/p>\n<ol style=\"font-weight: 400;\">\n<li style=\"text-align: justify;\"><strong>Testowanie i symulacje<\/strong>\n<ul>\n<li>Automatyzacja test\u00f3w oprogramowania sterownik\u00f3w ECU (Electronic Control Unit).<\/li>\n<li>Symulacje zachowa\u0144 pojazdu, czujnik\u00f3w, system\u00f3w wspomagania kierowcy.<\/li>\n<\/ul>\n<\/li>\n<li style=\"text-align: justify;\"><strong>Analiza danych i diagnostyka<\/strong>\n<ul>\n<li>Przetwarzanie danych z czujnik\u00f3w (np. z CAN bus).<\/li>\n<li>Analiza i wizualizacja danych diagnostycznych, predykcja usterek.<\/li>\n<li>Tworzenie narz\u0119dzi do monitorowania parametr\u00f3w samochodu.<\/li>\n<\/ul>\n<\/li>\n<li style=\"text-align: justify;\"><strong>Systemy infotainment i interfejsy u\u017cytkownika<\/strong>\n<ul>\n<li>Prototypowanie i rozwijanie GUI (np. dashboard\u00f3w, system\u00f3w multimedialnych).<\/li>\n<li>Integracja z aplikacjami smartfon\u00f3w lub chmur\u0105.<\/li>\n<\/ul>\n<\/li>\n<li style=\"text-align: justify;\"><strong>Autonomiczne pojazdy i systemy wspomagaj\u0105ce<\/strong>\n<ul>\n<li>Programowanie algorytm\u00f3w uczenia maszynowego i przetwarzania obrazu (np. rozpoznawanie znak\u00f3w, wykrywanie przeszk\u00f3d).<\/li>\n<li>Budowa system\u00f3w nawigacyjnych i planowania trasy.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Prototypy i narz\u0119dzia deweloperskie<\/strong>\n<ul>\n<li style=\"text-align: justify;\">Python jest cz\u0119sto u\u017cywany do szybkiego tworzenia prototyp\u00f3w funkcji lub narz\u0119dzi do analizy oprogramowania pojazdu.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p style=\"font-weight: 400; text-align: justify;\">Bardziej konkretnie? Wystarczy uruchomi\u0107 kod oprogramowania Tesli czy Waymo. W jakim j\u0119zyku zosta\u0142y napisane? Oczywi\u015bcie w Pythonie. Python ma proste biblioteki do obs\u0142ugi uczenia maszynowego. Baza danych i interfejs w Python GUI stosowane s\u0105 do gromadzenia danych z czujnik\u00f3w s\u0142u\u017c\u0105cych samodzielnej je\u017adzie autonomicznej. Interfejsy diagnostyczne do wi\u0119kszo\u015bci marek r\u00f3wnie\u017c s\u0105 napisane w Pythonie.<\/p>\n<p style=\"font-weight: 400; text-align: center;\"><strong>Poni\u017cej przyk\u0142ad kodu, kt\u00f3rego zadaniem jest zbieranie danych:<\/strong><\/p>\n<div style=\"text-align: center;\">\n<pre>import random\r\n\r\nimport time\r\n\r\nimport matplotlib.pyplot as plt\r\n\r\n# Symulacja odczyt\u00f3w z czujnik\u00f3w samochodu\r\n\r\ndef get_speed():\r\n\r\n # pr\u0119dko\u015b\u0107 w km\/h, losowa zmienna w zakresie 0-120\r\n\r\n  return random.uniform(0, 120)\r\n\r\ndef get_engine_temp():\r\n\r\n# temperatura silnika w stopniach C, zwykle 70-100\r\n\r\n   return random.uniform(70, 100)\r\n\r\n# Zbieranie danych przez 60 sekund\r\n\r\nspeed_data = []\r\n\r\ntemp_data = []\r\n\r\ntime_data = []\r\n\r\nstart_time = time.time()\r\n\r\nwhile time.time() - start_time &lt; 60:\r\n\r\n speed = get_speed()\r\n\r\n temp = get_engine_temp()\r\n\r\n current_time = time.time() - start_time\r\n\r\n speed_data.append(speed)\r\n\r\n temp_data.append(temp)\r\n\r\n time_data.append(current_time)\r\n\r\nprint(f\"Czas: {current_time:.1f}s | Pr\u0119dko\u015b\u0107: {speed:.1f} km\/h | Temp. silnika: {temp:.1f} \u00b0C\")\r\n\r\ntime.sleep(1)\r\n\r\n# Prosta analiza - \u015brednia pr\u0119dko\u015b\u0107 i temperatura\r\n\r\navg_speed = sum(speed_data) \/ len(speed_data)\r\n\r\navg_temp = sum(temp_data) \/ len(temp_data)\r\n\r\nprint(f\"\\n\u015arednia pr\u0119dko\u015b\u0107: {avg_speed:.1f} km\/h\")\r\n\r\nprint(f\"\u015arednia temperatura silnika: {avg_temp:.1f} \u00b0C\")\r\n\r\n# Wizualizacja danych\r\n\r\nplt.figure(figsize=(10,5))\r\n\r\nplt.subplot(2,1,1)\r\n\r\nplt.plot(time_data, speed_data, label=\"Pr\u0119dko\u015b\u0107 (km\/h)\")\r\n\r\nplt.legend()\r\n\r\nplt.subplot(2,1,2)\r\n\r\nplt.plot(time_data, temp_data, label=\"Temperatura silnika (\u00b0C)\", color=\"red\")\r\n\r\nplt.legend()\r\n\r\nplt.xlabel(\"Czas [s]\")\r\n\r\nplt.show()<\/pre>\n<\/div>\n<p style=\"font-weight: 400; text-align: justify;\">Co otrzymali\u015bmy? Prosty skrypt, kt\u00f3ry zbiera i analizuje dane. Dane s\u0105 przedstawione w postaci posortowanej kolekcji. Dane s\u0105 zapisywane z dok\u0142adno\u015bci\u0105 do sekundy. Zwykle jest tak, \u017ce dane mo\u017cna odczyta\u0107 za pomoc\u0105 programu z GUI (graficznym interfejsem u\u017cytkownika) \u2013 programu, kt\u00f3ry odbiera dane i przedstawia je na wykresie. Zanim to nast\u0105pi strumie\u0144 danych mo\u017ce wygl\u0105da\u0107 jak na zdj\u0119ciu. Przed Wami widok danych w konsoli \u015brodowiska programistycznego.<\/p>\n<p style=\"text-align: center;\"><strong>Efekt dzia\u0142ania kodu<\/strong><\/p>\n<p><a href=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/czujnik.png\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-21531 size-full aligncenter\" src=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/czujnik.png\" alt=\"\" width=\"969\" height=\"150\" srcset=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/czujnik.png 969w, https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/czujnik-300x46.png 300w, https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/czujnik-768x119.png 768w, https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/czujnik-660x102.png 660w\" sizes=\"(max-width: 969px) 100vw, 969px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u0179r\u00f3d\u0142o: PyCharmEdu<\/p>\n<p style=\"font-weight: 400; text-align: justify;\">Sk\u0105d pochodz\u0105 te dane? Czujniki i gniazdo ODB-2 lub pochodnych standard\u00f3w. Prezentowanie danych odbywa si\u0119 przez GUI w postaci tabel, wykres\u00f3w lub w prostszej formie jako aktualizowana lista. Oto przyk\u0142ad prostego GUI, kt\u00f3re co sekund\u0119 pokazuje dane odczytane z czujnik\u00f3w i ODB-2. To oczywi\u015bcie jedynie symulacja.<\/p>\n<p style=\"text-align: center;\"><strong>Kod aplikacji do czujnika z GUI<\/strong><\/p>\n<div style=\"text-align: center;\">\n<pre>import tkinter as tk\r\nimport random\r\n\r\nclass VehicleMonitor:\r\n    def __init__(self, root):\r\n        self.root = root\r\n        self.root.title(\"Monitor Pojazdu\")\r\n        self.root.geometry(\"400x250\")\r\n        self.root.configure(bg=\"#1c1c1c\")\r\n\r\n        # Etykiety\r\n        self.speed_label = tk.Label(root, text=\"Pr\u0119dko\u015b\u0107: 0 km\/h\", font=(\"Arial\", 16), fg=\"white\", bg=\"#1c1c1c\")\r\n        self.temp_label = tk.Label(root, text=\"Temp. silnika: 0 \u00b0C\", font=(\"Arial\", 16), fg=\"white\", bg=\"#1c1c1c\")\r\n        self.fuel_label = tk.Label(root, text=\"Zu\u017cycie paliwa: 0 l\/100km\", font=(\"Arial\", 16), fg=\"white\", bg=\"#1c1c1c\")\r\n\r\n        # Pozycjonowanie\r\n        self.speed_label.pack(pady=20)\r\n        self.temp_label.pack(pady=20)\r\n        self.fuel_label.pack(pady=20)\r\n\r\n        # Uruchom cykliczne od\u015bwie\u017canie\r\n        self.update_data()\r\n\r\n    def update_data(self):\r\n        # Symulacja danych\r\n        speed = random.randint(0, 180)\r\n        temperature = random.randint(70, 120)\r\n        fuel_usage = round(random.uniform(3, 15), 1)\r\n\r\n        # Aktualizacja etykiet\r\n        self.speed_label.config(text=f\"Pr\u0119dko\u015b\u0107: {speed} km\/h\")\r\n        self.temp_label.config(text=f\"Temp. silnika: {temperature} \u00b0C\")\r\n        self.fuel_label.config(text=f\"Zu\u017cycie paliwa: {fuel_usage} l\/100km\")\r\n\r\n        # Od\u015bwie\u017canie co 1 sekund\u0119\r\n        self.root.after(1000, self.update_data)\r\n\r\n# Uruchomienie programu\r\nif __name__ == \"__main__\":\r\n    root = tk.Tk()\r\n    app = VehicleMonitor(root)\r\n    root.mainloop()\r\n<span style=\"text-align: justify; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;\">\r\nWidok danych na ekranie w najprostszej postaci wygl\u0105da tak jak na zdj\u0119ciu poni\u017cej. Oczywi\u015bcie wygl\u0105d GUI mo\u017ce si\u0119 r\u00f3\u017cni\u0107 w zale\u017cno\u015bci od ilo\u015bci pozyskanych danych.\r\n<strong>\r\nProsta aplikacja do czujnika z GUI\r\n\r\n<a href=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/gui.png\"><img decoding=\"async\" class=\"size-medium wp-image-21532 aligncenter\" src=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/gui-300x216.png\" alt=\"\" width=\"300\" height=\"216\" srcset=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/gui-300x216.png 300w, https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/gui.png 402w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/strong><\/span><\/pre>\n<\/div>\n<p style=\"text-align: center;\">\u0179r\u00f3d\u0142o: PyCharm<\/p>\n<p style=\"font-weight: 400; text-align: justify;\">Python zawsze b\u0119dzie potrzebny tam, gdzie trzeba diagnozowa\u0107 przyczyny awarii i wypadk\u00f3w. Odczyt setek czy tysi\u0119cy linii danych pozwala na ustalenie \u017ar\u00f3d\u0142a problemu, z kt\u00f3rym musz\u0105 zmierzy\u0107 si\u0119 mechanicy czy \u015bledczy. Napisanie prostego kontrolera przy u\u017cyciu sztucznej inteligencji nie wymaga specjalistycznej wiedzy. To daje mo\u017cliwo\u015b\u0107 personalizacji rozwi\u0105za\u0144 diagnostycznych. Zastosowanie Pythona znacz\u0105co u\u0142atwia ten proces.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzi\u015b nietypowo, bo chc\u0119 zawodowo i praktycznie. Informatyka w samochodach to dzi\u015b bardzo rozwini\u0119ta ga\u0142\u0119\u017a przemys\u0142u. Dla potrzeb automotive programy pisze wielu programist\u00f3w. Co ciekawe, wi\u0119kszo\u015b\u0107 kodu, kt\u00f3ry obs\u0142uguje podstawowe funkcje pojazd\u00f3w pisze si\u0119 w j\u0119zykach ni\u017cszego rz\u0119du \u2013 C, C++ lub C#. Python ma zupe\u0142nie inne zastosowanie \u2013 s\u0142u\u017cy inteligentnym systemom wsparcia. Jakim? Podzielili\u015bmy\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/2025\/08\/01\/istny-montypython-czyli-zastosowanie-jezyka-python-w-technice-samochodowej\/\">Dowiedz si\u0119 wi\u0119cej &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":21533,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[3637,3636,3640,3639,3635,3638],"class_list":["post-21526","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-naukowo-o-motoryzacji","tag-czujniki","tag-programowanie","tag-programowanie-czujnika","tag-pycharm","tag-python","tag-python-ide"],"rttpg_featured_image_url":{"full":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915.png",320,240,false],"landscape":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915.png",320,240,false],"portraits":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915.png",320,240,false],"thumbnail":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915-150x150.png",150,150,true],"medium":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915-300x225.png",300,225,true],"large":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915.png",320,240,false],"1536x1536":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915.png",320,240,false],"2048x2048":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915.png",320,240,false],"post-thumbnail":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915.png",320,240,false],"excerpt-thumbnail":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915-200x140.png",200,140,true],"excerpt-thumbnail-mobile":["https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-content\/uploads\/2025\/08\/pycharm-edu-logo-png_seeklogo-440915-320x200.png",320,200,true]},"rttpg_author":{"display_name":"Zbigniew Kluczkowski","author_link":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/author\/admin\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/category\/naukowo-o-motoryzacji\/\" rel=\"category tag\">Naukowo o motoryzacji<\/a>","rttpg_excerpt":"Dzi\u015b nietypowo, bo chc\u0119 zawodowo i praktycznie. Informatyka w samochodach to dzi\u015b bardzo rozwini\u0119ta ga\u0142\u0119\u017a przemys\u0142u. Dla potrzeb automotive programy pisze wielu programist\u00f3w. Co ciekawe, wi\u0119kszo\u015b\u0107 kodu, kt\u00f3ry obs\u0142uguje podstawowe funkcje pojazd\u00f3w pisze si\u0119 w j\u0119zykach ni\u017cszego rz\u0119du \u2013 C, C++ lub C#. Python ma zupe\u0142nie inne zastosowanie \u2013 s\u0142u\u017cy inteligentnym systemom wsparcia. Jakim? Podzielili\u015bmy\u2026&hellip;","_links":{"self":[{"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/posts\/21526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/comments?post=21526"}],"version-history":[{"count":4,"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/posts\/21526\/revisions"}],"predecessor-version":[{"id":21534,"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/posts\/21526\/revisions\/21534"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/media\/21533"}],"wp:attachment":[{"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/media?parent=21526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/categories?post=21526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.historiazkolemwtle.cal24.pl\/Blog\/wp-json\/wp\/v2\/tags?post=21526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}