อ่าน CAN Bus ด้วย SavvyCAN และ ESP32

เมื่อเริ่มต้นทำงานกับระบบ CAN bus หลายคนมักเริ่มจากการใช้ไมโครคอนโทรลเลอร์เช่น ESP32 รับ–ส่งข้อความ แล้วดูผลลัพธ์ผ่าน Serial Monitor ซึ่งข้อความที่เห็นมักจะอยู่ในรูปของเลขฐานสิบหก เช่น

01 3C 4F 00 00 FF 00 80

ในช่วงแรกอาจดูเพียงพอสำหรับการทดสอบว่าระบบ CAN สื่อสารกันได้หรือไม่ แต่เมื่อเข้าสู่การใช้งานจริง จะพบข้อจำกัดทันที เช่น

  • ข้อมูลมีจำนวนมากและปะปนจากหลายโหนด
  • วิเคราะห์การเปลี่ยนแปลงระดับบิตได้ยาก
  • ไม่สะดวกต่อการนำข้อมูลไปวิเคราะห์ต่อ

จุดนี้เองที่ SavvyCAN กลายเป็นเครื่องมือสำคัญ


SavvyCAN คืออะไร และเหมาะกับใคร

SavvyCAN เป็นซอฟต์แวร์สำหรับวิเคราะห์ CAN bus ที่ถูกออกแบบมาให้เด่นในด้านการตรวจสอบและทำวิศวกรรมย้อนรอย (Reverse Engineering) โดยเฉพาะ

คุณสมบัติเด่นของ SavvyCAN ได้แก่

  • ใช้งานได้ฟรี และเป็น Open Source
  • ทำงานได้บน Windows, Linux และ macOS
  • รองรับอุปกรณ์ CAN interface หลากหลาย
  • มีเครื่องมือวิเคราะห์เชิงลึกสำหรับ CAN bus

SavvyCAN จึงเหมาะทั้งสำหรับงานเรียนการสอน งานวิจัย และงานพัฒนาระบบยานยนต์

สามารถ Download ได้ที่ GitHub – collin80/SavvyCAN: QT based cross platform canbus tool


ใช้ ESP32 แทนอุปกรณ์ CAN ราคาแพงได้อย่างไร

SavvyCAN ไม่ได้เชื่อมต่อกับ CAN bus โดยตรง แต่ต้องใช้อุปกรณ์ตัวกลางที่เรียกว่า CAN interface

ESP32 สามารถใช้เป็น CAN Interface สำหรับ SavvyCAN ได้ โดยใช้เฟิร์มแวร์ชื่อว่า ESP32RET ซึ่งพัฒนาต่อยอดจากแนวคิดของ GVRET (General Vehicle Reverse Engineering Tool) ซึ่งเป็นแนวคิดในการทำงานของ SavvyCAN

ESP32RET สามารถใช้งานได้โดย copy ทุกไฟล์ใน Link นี้ (Github) และเปิดใช้งานได้ใน Arduino IDE รายละเอียดการใช้งานสามารถอ่านได้ที่นี้

ESP32 จะทำหน้าที่เป็นโหนดหนึ่งบน CAN bus และส่งข้อมูลทั้งหมดมายัง SavvyCAN ผ่าน Serial port

ข้อดีของแนวทางนี้

  • ใช้ ESP32 ราคาประหยัด
  • ไม่ต้องเขียนโค้ด CAN ใหม่ทั้งหมด
  • เหมาะกับห้องแล็บและการเรียนการสอน

ภาพรวมหน้าจอโปรแกรม SavvyCAN

เมื่อเชื่อมต่อ ESP32 เข้ากับ SavvyCAN แล้ว หน้าจอหลักจะประกอบด้วยส่วนสำคัญดังนี้

1. เมนูหลัก

  • File: บันทึกและโหลดไฟล์ log, จัดการ DBC (รายละเอียดของ DBC อ่านได้ที่นี่)
  • RE Tools: เครื่องมือสำหรับช่วยทำ Reverse Engineering
  • Send Frames: ส่งข้อความใน CAN Bus
  • Connection: ตั้งค่าการเชื่อมต่ออุปกรณ์

2. หน้าต่างแสดง CAN Frame

แสดงข้อความ CAN bus ที่รับได้แบบ real-time

3. ส่วนส่งข้อความ (Transmit)

ใช้ส่งข้อความใน CAN Bus

4. ตัวควบคุมการแสดงผล

เช่น หยุดการรับข้อมูล ล้างหน้าจอ หรือ Overwrite mode

5. ตัวกรองและการตีความข้อมูล

เลือกดูเฉพาะ CAN ID ที่สนใจ และเปิด/ปิดการแปลความหมายของข้อมูล

ในทุกหน้าต่างของ Savvy CAN หากเรากด F1 จะมีข้อมูลอธิบายการใช้งานของหน้าต่างนั้นๆ ขึ้นมาให้อ่าน


การเชื่อมต่อกับ ESP32

วิธีการใช้งาน ESP32 ที่ติดตั้ง ESP32RET ร่วมกับ SavvyCAN ให้เปิดโปรแกรม SavvyCAN แล้วไปที่เมนู connection -> Add New Device Connection -> Serial Connection (GVRET) โดยกำหนด Serial port ให้ถูกต้อง -> คลิก Create New Connection โปรแกรมจะเชื่อมต่อกับ ESP32 โดยในช่อง Connected Devices จะแสดงอุปกรณ์ที่เชื่อมต่อ


เครื่องมือ Reverse Engineering ที่น่าสนใจ

Flow View: เป็นหน้าต่างสำคัญใน SavvyCAN ที่ออกแบบมาเพื่อช่วยให้ผู้ใช้งาน มองเห็นการเปลี่ยนแปลงของข้อมูล CAN Frame สำหรับ ID ใด ID หนึ่งตามลำดับเวลา ไม่ใช่แค่ดูค่าปัจจุบัน แต่เห็น “การไหล” ของข้อมูลว่ามันเปลี่ยนอย่างไรจากเฟรมหนึ่งไปอีกเฟรมหนึ่ง

Frame Data Analysis: เป็นหน้าต่างที่ใช้สำหรับ วิเคราะห์สถิติและพฤติกรรมของ CAN Frame อย่างละเอียด โดยเน้นที่ CAN ID ใด ID หนึ่งตลอดช่วงข้อมูลที่บันทึกไว้ ช่วยให้ผู้ใช้งานเข้าใจลักษณะของเฟรมนั้นทั้งในมุมของเวลา โครงสร้างข้อมูล และการเปลี่ยนแปลงของบิต

File Comparison: ใช้เปรียบเทียบ Log file ที่สนใจเพื่อหา CAN ID ที่เหมือนหรือแตกต่างกันระหว่าง Log file ซึ่งช่วยให้ค้นหา CAN ID ที่สนใจได้ง่ายขึ้น

Sniffer: คือเครื่องมือสำหรับดักฟังและเฝ้าดูข้อมูลที่กำลังวิ่งอยู่บน CAN Bus ใช้เพื่อดูว่า CAN ID ใดกำลังส่งข้อมูลอยู่ และข้อมูลใดมีการเปลี่ยนแปลงจริง Sniffer Window จะเน้นแสดงเฉพาะเฟรมที่ยังอัปเดตอยู่ ทำให้ผู้ใช้โฟกัสได้ง่าย ข้อมูลที่เพิ่มหรือลดจะแสดงด้วยสี ช่วยให้เห็นการเปลี่ยนแปลงได้ทันที พร้อมฟีเจอร์ Notching สำหรับตัดข้อมูลที่เปลี่ยนตลอดออกไป เหลือเฉพาะสัญญาณที่มีความหมาย


สรุป

SavvyCAN คือซอฟต์แวร์โอเพ่นซอร์สสำหรับอ่าน บันทึก และวิเคราะห์ข้อมูลจากระบบ CAN bus โดยเด่นเป็นพิเศษด้าน Reverse Engineering (RE) ช่วยให้ผู้ใช้งานสามารถสังเกตพฤติกรรม การเปลี่ยนแปลงของบิตและไบต์ วิเคราะห์ความสัมพันธ์ของข้อความ CAN และตีความข้อมูลดิบให้เข้าใจโครงสร้างของระบบได้อย่างเป็นระบบ

SavvyCAN สามารถใช้งานร่วมกับ ESP32 ได้โดยติดตั้งเฟิร์มแวร์ ESP32RET ซึ่งทำให้ ESP32 ทำหน้าที่เป็น CAN interface ส่งข้อมูลจาก CAN bus มายัง SavvyCAN ผ่านพอร์ต Serial (USB) จึงสามารถใช้ ESP32 ราคาประหยัดแทนอุปกรณ์ CAN เชิงพาณิชย์ได้ เหมาะสำหรับงานเรียนการสอน งานทดลอง และงานวิจัยด้านยานยนต์

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *