Аффтопрограммирование

В авто­мо­би­ли уже дав­но ста­вят ком­пью­тер с бор­то­вой само­ди­а­гно­сти­кой. До 1996 года еди­но­об­ра­зия рабо­ты с этим ком­пью­те­ром не было, а теперь вез­де мож­но с ним пого­во­рить по набо­ру стан­дар­тов OBD2. Рань­ше ска­не­ры, обща­ю­щи­е­ся с диа­гно­сти­че­ской систе­мой, были дико доро­ги­ми, но теперь цена ста­ла более демо­кра­тич­ной, и самые про­стень­кие мож­но купить монет за 20, а то и ещё дешев­ле. Одна­ко дешё­вые ска­не­ры име­ют крайне огра­ни­чен­ные воз­мож­но­сти, и спо­соб­ны толь­ко на самые при­ми­тив­ные дей­ствия — про­смотр диа­гно­сти­че­ских кодов (дале­ко не всех), их сти­ра­ние. Если же тебе нуж­на диа­гно­сти­ка чего-то более слож­но­го, при­дёт­ся серьёз­но рас­ко­ше­лить­ся. Вот, напри­мер, возь­мём такую рас­про­стра­нён­ную вещь как диа­гно­сти­ка ката­ли­за­то­ра. Когда у тебя выла­зит код диа­гно­сти­ки P0420, при­чи­ны для него могут быть самые раз­ные. Может быть, дат­чик кис­ло­ро­да подох. А может быть, и ката­ли­за­тор. Ведь как воз­ни­ка­ет этот код? У тебя сто­ят два дат­чи­ка кис­ло­ро­да — один ДО, дру­гой ПОСЛЕ ката­ли­за­то­ра (в маши­нах, кото­рые дизай­ни­ли пида­ра­сы в пло­хом смыс­ле сло­ва, их аж четы­ре — см. Нис­сан). Код ошиб­ки гене­ри­ру­ет­ся когда пока­за­ния этих дат­чи­ков ОДИНАКОВЫЕ. Что логич­но — это озна­ча­ет, что ката­ли­за­тор ниче­го не дела­ет.

Что­бы одно­знач­но понять, надо ли менять ката­ли­за­тор, надо пока­за­ния этих дат­чи­ков пред­ста­вить гра­фи­че­ски. Какие пока­за­ния будут у них до того, как ката­ли­за­тор про­гре­ет­ся до рабо­чих тем­пе­ра­тур. Какие после. Пока­за­ния дат­чи­ка ДО ката­ли­за­то­ра долж­ны менять­ся, и доволь­но силь­но. Пока­за­ния дат­чи­ка ПОСЛЕ ката­ли­за­то­ра долж­ны оста­вать­ся посто­ян­ны­ми. Уви­дев всё это, лег­ко понять, что про­ис­хо­дит. Но ска­нер OBD2, спо­соб­ный стро­ить гра­фи­ки, уже недё­шев — от 150 монет и выше.

Что мож­но сде­лать, если у тебя руки рас­тут из (наде­юсь) отно­си­тель­но пра­виль­ных мест? Мож­но купить ком­пью­тер­ный адап­тер на чипе ELM327, кото­рый под­клю­ча­ет­ся через USB и ста­но­вит­ся в ком­пью­те­ре допол­ни­тель­ным COM-пор­том. Они недо­ро­гие — за 10 монет мож­но купить. Затем берём любую тер­ми­нал­ку, и цеп­ля­ем­ся к это­му пор­ту, выста­вив ско­ро­сти от 9600 до 38400 и 115200 (зави­сит от кон­крет­но­го адап­те­ра). И раз­го­ва­ри­ва­ем с ним как с обык­но­вен­ным моде­мом. Ага. Он даже коман­дой ATZ ресе­тит­ся 🙂

Вот так, напри­мер:

OKL1 это на самом деле OK, выдан­ное моде­мом на коман­ду ATL1 (вклю­ча­ю­щую добав­ле­ние CR в отве­ты). Ина­че чело­ве­ку неком­форт­но.
AT@1 это запрос «ты кто такой», типа ATI7 на моде­мах US Robotics 🙂

Таким обра­зом мож­но дать коман­ды под­це­пить­ся к авто­мо­биль­но­му ком­пью­те­ру и рас­ска­зать тебе всё, что инте­рес­но. Толь­ко вот выда­вать­ся оно будет в шест­на­дца­ти­рич­ных кодах, что неудоб­но.

Суда­ри мои, за что мы любим язык про­грам­ми­ро­ва­ния Питон? Я вот рань­ше его недо­люб­ли­вал, а потом оце­нил по досто­ин­ству. Язык Питон мы любим за то, что на нём мож­но решить прак­ти­че­ски любые при­клад­ные зада­чи если исполь­зо­вать соот­вет­ству­щие биб­лио­те­ки; ибо кто-то с такой про­бле­мой уже, ско­рее все­го, стал­ки­вал­ся.

Суще­ству­ет спе­ци­аль­ная биб­лио­те­ка Python-OBD, в кото­рой вся эта рас­шиф­ров­ка шест­на­дца­ти­рич­ной бре­дя­ти­ны уже напи­са­на, тебе оста­ёт­ся толь­ко её взать и нари­со­вать, что тебе надо. В част­но­сти, оно может выда­вать зна­че­ния напря­же­ния, выда­ва­е­мо­го дат­чи­ка­ми кис­ло­ро­да. Оста­ёт­ся сунуть эти зна­че­ния в спи­сок (во что же ещё), после чего скор­мить его matplotlib.pyplot, и пред­ста­вить гра­фи­че­ски хоть чор­та бри­то­го, при­чём ров­но так, как тебе надо.

Ну, а те, у кого с про­грам­ми­ро­ва­ни­ем не очень, могут при­об­ре­сти ком­мер­че­ские про­грам­мы, рабо­та­ю­щие с адап­те­ра­ми на ELM327. Их мно­го вся­ких, и они недо­ро­гие — вся­ко дешев­ле 150 дол­ла­ров.

Надо ещё ска­зать, что тут есть заса­да. Стан­дарт­ные OBD2 коды хоро­шо доку­мен­ти­ро­ва­ны. Но есть и спе­ци­аль­ные, про­при­е­тар­ные коды, для каж­дой мар­ки свои, и про­из­во­ди­те­ли не спе­шат их опи­сы­вать и выкла­ды­вать опи­са­ние в откры­тый доступ. Надо же как-то заста­вить юзве­рей уша­стых поку­пать обслу­жи­ва­ние в дилер­ши­пах. Но есть недо­ро­гие про­грам­мы, кото­рые под­дер­жи­ва­ют и эти коды. Так, для БМВ есть Bimmerscan, а для Фор­дов есть Forscan, при­чём на него бес­плат­но дают проб­ную лицен­зию на два меся­ца. Кро­ме того, Forscan рабо­та­ет и не с Фор­да­ми, про­сто он не под­дер­жи­ва­ет спе­ци­аль­ные коды диа­гно­сти­ки для авто­мо­би­лей дру­гих про­из­во­ди­те­лей.

Ну, а мой ката­ли­за­тор ока­зал­ся в поряд­ке. Это про­сто я по луже удач­но про­ка­тил­ся — ката­ли­за­тор остыл до нера­бо­чей тем­пе­ра­ту­ры, и вре­мен­но пере­стал рабо­тать.

PS: Хех, вот уж не думал, что теги «авто­мо­би­ли» и «про­грам­ми­ро­ва­ние» когда-нибудь встре­тят­ся.