หน้านี้ขอเขียนไว้สำหรับเปิดเรื่องเกี่ยวกับ OBD-II และ ELM327 สำหรับผู้ใช้รถนิสสันเป็นหลัก (เนื่องจากปัจจุบันผู้เขียนใช้รถนิสสัน :)) ซึ่งจะไม่ขอลงรายละเอียดไปมากมายในทั้งสองเรื่องนี้ ขอเขียนข้อมูลเบื้องต้นไว้แค่เบาๆให้ผู้ที่สนใจไปค้นหาเพิ่มเติมกันได้
ขอเริ่มจาก OBD-I ซึ่งเป็นมาตรฐานให้ผู้ผลิตรถยนต์ที่ขายในอเมริกาจะต้องออกแบบระบบควบคุมมลพิษและการใช้ Diagnostic Trouble Codes (DTCs) ในการแจ้งเตือนปัญหาที่เกิดขึ้นให้เป็นไปตามมาตรฐานที่กำหนดไว้ ซึ่งอู่ซ่อมรถรวมถึงผู้ใช้รถจะสามารถอ่าน DTC หรือรหัสข้อผิดพลาดที่เกิดขึ้นในรถโดยใช้เครื่องอ่าน (Scan Tool) ง่ายๆและสามารถแก้ไข/ซ่อมรถได้โดยไม่ต้องพึ่งเครื่องอ่านราคาแพงตามที่ผู้ผลิตรถใช้ (เครื่องอ่านขอผู้ผลิตรถนั้นจะมีความสามารถมากกว่า)
ส่วน OBD-II (หรือ OBD2) ก็จะพัฒนามาตรฐานต่อยอดจาก OBD-I ซึ่งจะกำหนดรายละเอียดเพิ่มเติมอีกมากมายเช่น คอนเนคเตอร์และพินที่ใช้งาน (DLC หรือคอนเนคเตอร์ 16 พินอยู่แถวๆใต้พวงมาลัยซึ่งมีในรถทุกคันที่ขายในปัจจุบัน) กำหนดมาตรฐานของ DTC เช่นต้องมี 4 หลัก ขึ้นต้นด้วย P สำหรับข้อผิดพลาดเกี่ยวกับเครื่องยนต์และเกียร์ ขึ้นต้นด้วย B สำหรับข้อผิดพลาดเกี่ยวกับระบบ body ต่างๆ (อ่านจากกล่อง BCM/BCU) ขึ้นต้นด้วย U สำหรับระบบการสื่อสาร (เช่นไม่สามารถติดต่อกับกล่องเกียร์หรือ TCM ได้ก็จะขึ้นโค้ด U) และยังมีข้อกำหนดอื่นๆอีกมากมายซึ่งผู้เขียนขอไม่ยกมาพูดถึงไว้ณที่นี้
บน OBD-II นี้จะรองรับสัญญาณหลายๆมาตรฐาน เช่น SAE J1850 PWM, ISO 14230 KWP2000 และอื่นๆ
รถญี่ปุ่นในปัจจุบันส่วนมากจะใช้ ISO15765 11-bit CAN 500Kbit/sec
ตามข้อกำหนดของ OBD-II เราสามารถอ่านข้อมูลต่างๆจาก ECU ในรถ (อีซียูมีหลายตัว เช่น ECM, TCM, BCM, ABS, และอื่นๆอีกหลายตัว) เพื่อนำมาใช้ตรวจสอบและวิเคราะห์ปัญหา ซึ่งมาตรฐานและวิธีการติดต่อกับ ECU จะถูกกำหนดไว้ใน SAE J1979 (ใครอยากได้เอกสารนี้มาอ่านต้องจ่ายตัง ผู้เขียนเองก็อยากอ่านแต่ไว้ก่อนละกัน) ข้อมูลต่างๆที่เราเข้าถึงได้จะถูกระบุโดยตัวเลข PID (Parameter Identification number) ซึ่งความหมายและสูตรที่ใช้ในการแปลงค่าที่อ่านได้จะเป็นไปตาม J1979 หรือเราสามารถหาข้อมูลได้มากมายบน Internet เกี่ยวกับ PID พื้นฐานต่างๆ เช่น
จากตัวอย่างในหัวข้อด้านบน การเรียกดูข้อมูลพื้นฐานจาก ECU ต่างๆ ก็จะใช้ SID 01 ซึ่งเป็น SID ที่เราใช้งานกันมากที่สุด (เราอาจไม่ได้ใช้ตรงๆ แต่ใช้โดยแอพต่างๆเช่น Torque และอื่นๆ)
นอกจาก SID 01 นี้ยังมีอีกหลาย SID ที่ถูกกำหนดไว้ตามมาตรฐาน OBD-II เช่น SID 03 ใช้อ่านค่า DTC ที่ค้างอยู่ใน ECU
หากผู้อ่านสนใจรายละเอียดเพิ่มเติมสามารถหาได้จากกูเกิล (ตัวอย่างการใช้ Service ID อื่นๆผู้อ่านอาจจะได้เห็นในหัวข้อถัดๆไป)
อ่านๆดูแล้วเหมือนจะยังงงๆ มีเรื่องมาตรฐานสัญญาณต่างๆ เรื่องคอนเนคเตอร์ พินที่ใช้ และอื่นๆอีกเพียบ เรามาดูพระเอกของเรา ELM327 ในหัวข้อถัดไป
ELM327 นั้นคือไอซี Micro controller (MCU) ที่ถูกโปรแกรมมาเรียบร้อย (ตัว MCU เป็น PIC 18F2480 ของ Microchip Technology) โดยบริษัท ELM Electronics เพื่อใช้สำหรับแปลงและจัดการข้อมูลบนมาตรฐาน OBD-II ให้ผู้พัฒนานำไปใช้ต่อได้ง่ายขึ้น (รวมถึงผู้ใช้อย่างเราด้วย) ซึ่งผู้พัฒนา/ผลิตรายถัดๆไปก็จะนำไอซี ELM327 นี้ไปใช้บนผลิตภัณฑ์ของตน ตัวอย่างนึงที่เราเห็นกันมากที่สุดคือ เอาไปใส่ในวงจรที่มีส่วนติดต่อกับ can bus และบลูทูธออกมาเป็น OBD-II Bluetooth Adapter ที่ผู้ใช้รถนิยมใช้กันทั่วโลก ซึ่งพระเอกของเรา ชิพ (หรือไอซี) ELM327 เป็นหัวใจทำงานหลักในวงจรพวกนั้น แต่เป็นเรื่องน่าเสียดายคือผลิตภัณฑ์ OBD-II Bluetooth Adapter ที่ขายๆกันอยู่ในโลกนี้ 99% เป็น ELM327 จากจีนซึ่งไม่ใช่ของแท้ ตัวเฟิร์มแวร์บนไอซีนั้นถูกแกะมาจาก ELM327 เวอร์ชั่น 1.x (น่าจะ 1.3b) และมีการพัฒนาเฟิร์มแวร์ ปรับเปลี่ยนวงจรไปหลากหลายซึ่งหากค้นหาบนกูเกิลเราจะเห็นผลิตภัณฑ์ OBD-II Bluetooth Adapter มีหลากหลายมาก ใครจะซื้อมาใช้ก็เลือกกันดีๆหน่อย ของจีนทั้งหมด ที่พอใช้ได้ก็มี ที่ห่วยก็เยอะ ตัวผู้เขียนเองไม่ได้มีอคติกับผลิตภัณฑ์ทั่วไปจากจีน แต่ในเรื่อง ELM327 นี้เพียงแค่รู้สึกว่า ELM Electronics ผู้คิดค้น น่าจะไปไกลกว่านี้มากถ้าไม่ถูกก๊อปเฟิร์มแวร์ไป (ผู้เขียนค่อนข้างให้ความสำคัญกับเรื่องลิขสิทธ์ซึ่งผู้คิดหรือพัฒนาควรได้รับผลตอบแทนอย่างถูกต้อง... ในช่วงสิบกว่าปีที่แล้วอแดปเตอร์ที่ใช้ชิพ ELM327 แท้นั้นราคาสูงและหาซื้อไม่ได้ในบ้านเรา มาในช่วงหลังนี้พอจะมีทุนทรัพย์แต่ก็หาอแดปเตอร์ที่ใช้ ELM327 แท้ๆยากอีก) นอกเรื่องไปเยอะ กลับมาเข้าเรื่องกันดีกว่า...
หัวข้อนี้อาจจะลงลึกทางเทคนิคมากกว่าการใช้งานทั่วไปซักนิด หากผู้อ่านสนใจในเรื่องการใชแอพสำเร็จรูปอย่างเดียวให้ข้ามหัวข้อนี้ไปได้เลย
สิ่งที่เราต้องมี
ในตัวอย่างนี้จะแสดงการเชื่อมต่อจากคอมพิวเตอร์ไปยัง ECM (Engine Control Module หรือแบรนด์อื่นๆเรียก ECU, PCM) และ TCM (Transmission Control Module) ของรถนิสสัน โดยผ่าน OBD-II Bluetooth adapter
...
...
...
...
...
...
...
สูตรในการแปลงค่าที่ได้รับกลับมาเป็น A-40 (แปลงฐาน 16 เป็นฐาน 10 ก่อนคำนวณด้วย)
ค่าที่ได้คือ A = NN -> NN ฐาน 10, NN-40 = NN °C
...
สูตรในการแปลงค่าที่ได้รับกลับมาเป็น ((A x 256) + B) / 4
ค่าที่ได้คือ A = NN -> NN ฐาน 10, B = NN -> NN ฐาน 10, ((A x 256) + B) / 4 = NNNN rpm
เช่น Standard PID 01 2F - Fuel Tank Level % (% ระดับน้ำมันในถัง) จะใช้ได้ในรถบางค่าย บางรุ่น แต่ใช้ไม่ได้ในรถนิสสัน
...