{"id":113,"date":"2012-12-12T15:25:21","date_gmt":"2012-12-12T07:25:21","guid":{"rendered":"http:\/\/aidilj.com\/?p=113"},"modified":"2017-07-29T11:15:29","modified_gmt":"2017-07-29T03:15:29","slug":"supported-bmw-obd-pid","status":"publish","type":"post","link":"https:\/\/aidilj.com\/worklog\/2012\/12\/supported-bmw-obd-pid\/","title":{"rendered":"Supported BMW OBDII PIDs"},"content":{"rendered":"<p>An ELM327 to serial interface for the carputer was constructed last time but it was never used. Now with the inception of a new project, it is taken back to life for a new purpose. It will be reading the car info and printing it out on a display.<\/p>\n<p>the original interface<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/carputer\/IMG_2971.jpg\" alt=\"\" \/><\/p>\n<p>The MAX232 IC was removed and connected directly to the <a href=\"http:\/\/www.pjrc.com\/teensy\/\" target=\"_blank\">Teensy 2.0<\/a> board. LCD driver is taken off my old project and all serial data is printed on the screen. Before deciding what to display we need to know what data is available on the port<\/p>\n<p>reference for OBDII PIDs can be found here : http:\/\/en.wikipedia.org\/wiki\/OBD-II_PIDs<\/p>\n<p>Method is reading the PIDs that lists what are the supported PIDs, namely 00, 20, 40, 60 etc<\/p>\n<p>the new hardware<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/DSC09583.jpg\" alt=\"\" \/><\/p>\n<p>PIDs capture<\/p>\n<p>01 00<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/IMG_0323.jpg\" alt=\"\" \/><\/p>\n<p>01 20<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/IMG_0324.jpg\" alt=\"\" \/><\/p>\n<p>01 40<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/IMG_0325.jpg\" alt=\"\" \/><\/p>\n<p>01 60<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/IMG_0326.jpg\" alt=\"\" \/><\/p>\n<p>Logically, the first PID (01 00) would indicate if the next set of PIDs is supported in the last bit. And once the last bit is zero, later set of PIDs would no longer be supported as shown above.<\/p>\n<p>The code decyphered<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/table.gif\" alt=\"\" \/><\/p>\n<p>This is what the final interface would look like<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/IMG_0331.jpg\" border=\"0\" alt=\"\"><\/p>\n<p>Before the LCD was used, the data was displayed on 7-segment but later deem to be too limited.<br \/>\n<img decoding=\"async\" src=\"https:\/\/aidilj.com\/pictures\/obd_pid\/IMG_0299.jpg\" alt=\"\" \/><\/p>\n<p>Here&#8217;s a video of it in action<br \/>\n<a href='http:\/\/www.youtube.com\/watch?v=jL7w8g87PFg'>Digital tachometer using ELM327 and Teensy 2.0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An ELM327 to serial interface for the carputer was constructed last time but it was never used. Now with the inception of a new project, it is taken back to life for a new purpose. It will be reading the car info and printing it out on a display. the original interface The MAX232 IC <a class=\"read-more\" href=\"https:\/\/aidilj.com\/worklog\/2012\/12\/supported-bmw-obd-pid\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[10,4],"tags":[14],"class_list":["post-113","post","type-post","status-publish","format-standard","hentry","category-bmw","category-electronics","tag-teensy"],"_links":{"self":[{"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/posts\/113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/comments?post=113"}],"version-history":[{"count":6,"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/posts\/113\/revisions"}],"predecessor-version":[{"id":367,"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/posts\/113\/revisions\/367"}],"wp:attachment":[{"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/media?parent=113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/categories?post=113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidilj.com\/worklog\/wp-json\/wp\/v2\/tags?post=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}