รีวิว : บอร์ด RejsaCAN-ESP32-S3 กับรถยนต์ในการควบคุมหรืออ่านค่าอุปกรณ์ในรถโดยใช้โปรแกรม Arduino

review RejsaCAN-ESP32-S3

บอร์ด RejsaCAN-ESP32-S3 เหมาะสำหรับนักพัฒนาที่ต้องการสร้างโปรเจคเกี่ยวกับรถยนต์ ควบคุมหรืออ่านค่าอุปกรณ์บนรถได้ผ่าน CAN BUS พร้อมการเชื่อมต่อไร้สายทั้ง Wi-Fi 2.4 GHz และ Bluetooth 5 (LE) เหมาะสำหรับงาน IoT นำข้อมูลของรถ หรือเซ็นเซอร์ที่ต่อกับบอร์ด ส่งไปยัง App, Cloud หรือเก็บไว้ใน SD Card บนบอร์ด ตัวบอร์ดออกแบบให้มีขนาดเล็กพอที่จะติดตั้งในรถยนต์ได้

detail RejsaCAN-ESP32-S3

ตัวบอร์ดพัฒนามาจากรุ่นก่อนที่ใช้ MCU ESP32 ซึ่งรุ่นนี้เปลี่ยนไปใช้ ESP32-S3  โดยสเปคหลักแล้วใกล้เคียงกัน แต่ ESP32-S3 มี Main processor ที่ใหม่กว่าคือ Xtensa 32-bit LX7 dual core ส่วน ESP32 เป็นรุ่น LX6 การเชื่อมต่อ Bluetooth ซึ่งบน ESP32-S3 เป็น BLE 5.0 แล้วบนบอร์ดรุ่นก่อนหน้า ESP32 ต้องใช้ชิป USB to Serial ในการสื่อสาร หรืออัพโหลดโปรแกรมผ่าน PC  แต่บน ESP32-S3 มีพอร์ต USB ในชิปมีส่วนควบคุม USB Serial/JTAG อยู่แล้ว ทำให้ไม่ต้องต่อชิปเพิ่ม ส่วนฟังชั่นอื่นบนบอร์ดที่น่าสนใจยังอยู่ เช่น

  • Auto shutdown  ให้บอร์ดเข้าโหมด sleep เมื่อตรวจสอบรถไม่มีการขับ สามารถดูรายละเอียดของระบบนี้ ได้จากบทความที่แล้ว และสามารถปรับให้ทำงานตลอดได้ผ่านจั้มเปอร์ always on หรือนักพัฒนาสามารถแก้ไขในโปรแกรมได้เอง
  • 3V3 HIGH DRIVER  ปกติขา ESP32-S3 สามรถจ่ายแรงดัน 3.3V ที่ประมาณ 10-20mA  สามารถต่อหลอด LED เล็กๆได้พอ แต่บางงานอาจต้องต่อเซ็นเซอร์ หรือหน้าจอเข้ากับบอร์ด การมีขา 3V3 HIGH DRIVER  ทำให้บอร์ดสามารถควบคุมการจ่ายไฟให้กับอุปกรณ์อื่นได้ เช่นเมื่ออยู่ใน sleep mode ลดการใช้พลังงานหรือตามเงื่อนไขในโปรแกรม
  • Extra UART RX/TX  เพิ่มพอร์ต serial  ซึ่งบอร์ดที่ใช้ ESP32 ไม่มี
  • SD card reader  ทำให้บอร์ดสามรถบันทึกข้อมูลลงใน SD CARD ได้ผ่านพอร์ต SPI
  • 3Dprint ผู้พัฒนาโปรเจคนี้ ยังได้ออกแบบกล่องสำหรับใส่บอร์ด ใครที่มีเครื่อง 3d-printer สามารถดาวน์โหลดไปปริ้นได้ที่ Github

3dprinter RejsaCAN-ESP32-S3

ทดสอบโปรแกรมตัวอย่างใน GitHub ของโปรเจค

เมื่อเราเข้าดูส่วน Example จะเห็นได้ว่ามีโปรแกรมตัวอย่างใน Github ของบอร์ดที่ใช้ ESP32-S3 เช่น

  • ESP32-S3 – SPI settings for SD card reader  เป็นโปรแกรมตัวอย่างตั้งค่าพอร์ต SPI จากนั้นอ่านชื่อและขนาดไฟล์ใน SD Card
  • ESP32-S3 – listen to all CAN broadcasts printed over USB  โปรแกรมแสดงทุกข้อมูลที่ส่งอยู่บน CAN BUS ของรถ
  • ESP32-S3 – simple first test in car โปรแกรมทดสอบอ่านค่ารอบเครื่องยนต์ ถ้ารอบเกินกำหนดให้ LED บนบอร์ดสว่าง
  • Test AUTO-OFF keeping board on after engine stops  โปรแกรมตัวอย่าง เมื่อตรวจสอบว่าเครื่องหยุดทำงานให้ MCU ส่งสัญญาณไปที่ชิป Switching Regulator หยุดจ่ายไฟ  ทำให้ MCU ปิดการทำงาน

ซึ่งในรีวิวนี้เราจะมาทดสอบ โปรแกรมตัวอย่างที่ 2 และ 3 กัน

บอร์ด ESP32 หรือ ESP32-S3  ที่ใช้ main processor Xtensa 32-bit จะมีส่วนจัดการเชื่อมต่อ CAN BUS เรียกว่า Two-Wire Automotive Interface (TWAI) รอบรับมาตรฐาน ISO11898-1  รองรับ Standard Frame Format (11-bit ID) และ Extended Frame Format (29-bit ID)  ทำให้เราเพียงต่อชิปแปลงสัญญาณ (transceiver) เพิ่ม ผู้อ่านสามารถศึกษาเพิ่มได้ที่เอกสารอ้างอิง

ตั้งค่าใน ESP32-S3 บน Arduino

ก่อนที่เราจะทดสอบบอร์ดกับรถ เนื่องจากโปรแกรมตัวอย่างเขียนบน Arduino ดังนั้นเราต้องตั้งค่าให้ตรงกับบอร์ดก่อน

  • ตั้งค่าให้ Arduino รองรับ ESP32 ถ้าผู้อ่านยังไม่ได้ติดตั้ง ให้ทำการติดตั้งก่อน โดยวิธีโดยคร่าวๆคือไปที่ File>>Preferences เพิ่มลิงค์ URL ในช่วง Additional boards manager URLs ดังภาพ จากนั้นไปที่ Tools >> Board… >> Board Manager ค้นหาชื่อ ESP32 จากนั้นกด INSTALL (รายระเอียดการสามารถค้นได้จากอินเตอร์เน็ต)
  • เมื่อติดตั้งเสร็จแล้ว ไปที่ Board >> esp32 >> เลือก ESP32S3 Dev Module

setup arduino1 RejsaCAN-ESP32-S3setup arduino2 RejsaCAN-ESP32-S3setup arduino3 RejsaCAN-ESP32-S3

  • จากนั้นกำหนดค่า Config ของบอร์ดดังภาพ ถ้าทุกอย่างไม่มีข้อผิดพลาด ให้ลองเปิดโปรแกรมตัวอย่างของโปรเจค แล้วกด “Verify” ส่วนหน้าต่าง output ต้องไม่แสดง error ออกมา

ในส่วนของบอร์ด RejsaCAN-ESP32-S3

เตรียมบอร์ด RejsaCAN-ESP32-S3  ที่ใช้ในการรีวิว

สาย USB C สำหรับ Upload โหลดโปรแกรม และส่งข้อมูลมายัง PC

hardware RejsaCAN-ESP32-S3

จากบอร์ดถ้าเรานำมาเขียนเป็นวงจร จะมีสายชุดไฟมี 4 เส้น คือสายไฟเข้าขั้วบวกจากรถ ,สาย GND
ชุดสายสัญญาณมี 2 เส้นคือ CAN_H และ CAN_L ซึ่งถ้าเราดูจากคอนเน็กเตอร์ตัวผู้ของ ODB2  ขาสัญญาณทั้ง 4 จะอยู่ในหมายเลขขาดังภาพ

circuit RejsaCAN-ESP32-S3

ทดลองกับรถ Mazda 2 ปี 2018 ซึ่งตำแหน่งพอร์ต OBD-2 จะอยู่บริเวณใต้พวงมาลัย ใกล้สวิสต์เปิดกระโปรงหน้ารถ  เมื่อต่อบอร์ดเข้ากับพอร์ต OBD-II ของรถ จะอยู่ในลักษณะดังภาพ

mazda2 odb2 RejsaCANtest in car RejsaCAN

ในการทดสอบนี้โปรแกรมตัวอย่างส่งค่าข้อมูลผ่าน Serial port เราจึงต้องเชื่อมกับ notebook ผ่านสาย USB  เข้ากับบอร์ดดังภาพ

ตัวอย่างที่ 1  show all message on the bus

ex1 setup RejsaCAN

จากโค้ดจะเห็นได้ว่า ในส่วน setup กำหนดค่าให้กับพอร์ต CAN BUS จากนั้นให้พอร์ตเริ่มทำงาน ในส่วน loop ถ้ามีการตรวจสอบมีการส่งข้อมูลบนบัสเข้ามา จะprint รายละเอียดของ message ค่าผ่าน Serial port จากนั้นวนปริ้นข้อมูลใน message จนครบ

ex1 loop RejsaCANex1 result RejsaCAN

จากผลการทดสอบ จะเห็นได้ว่าและเรากดปุ่ม start/stop engine  บอร์ดจะจับ message ทั้งหมดที่อยู่ใน CAN BUS ของรถ เมื่อเราเปิด Serial monitor ใน Arduino จะได้ลักษณะข้อมูลดังภาพ

ตัวอย่างที่ 2  read RPM  and alert

ex2 loop RejsaCAN

ตัวอย่างนี้เป็นการอ่านค่ารอบเครื่องยนต์ของรถ  ซึ่งจากโค็ดส่วน setup จะเหมือนกับตัวอย่างที่แล้ว แต่ในส่วน loop มีฟังชั่น CANsend() ที่มีหน้าที่สร้าง message ตามรูปแบบ CAN Bus Data Frame และส่งข้อมูลไปบนบัส

ex2 receive RejsaCANex2 result RejsaCAN

จากนั้นฟังชั่น CANrecv() จะคอยตรวจสอบ message ในบัส ถ้า message นั้นมี ID (0x0C) ของ RPM จะดึงข้อมูลส่วนที่เหลือมาคำนวณ และปริ้นค่าผ่าน Serial port สูตรและข้อมูลดูได้จาก Wikipedia พอได้ค่า rpm แล้ว ถ้าโปรแกรมตรวจสอบได้ว่า มีค่าเกิน 2000 rpm กำหนดให้ LED สีเหลืองสว่าง หรือถ้าไม่ใช่ให้ดับ ผลลัพท์บอร์ดแสดงข้อมูลใน Serial monitor ดังภาพ

สรุป

บอร์ด RejsaCAN-ESP32-S3  ก็เป็นบอร์ดที่น่าสนใจ ด้วยฟังชั่นการเชื่อมต่อไร้สาย การอุปกรณ์ภายนอกที่ง่ายเช่น เซ็นเซอร์ หรือหน้าจอ ก็ทำได้บน Arduino ที่มี Libraries มากมาย ซึ่งถ้าคุณเป็นมือใหม่ อยากเข้าใจระบบ อุปกรณ์บนรถ ทำโปรเจค DIY เราแนะนำให้หาบอร์ดนี้มาทดลองดู ถึงแม้โปรเจคใน GitHub นี้อาจจะยังถูกพัฒนาได้ไม่นาน พวกเอกสาร Tutorial และโค้ดตัวอย่างอาจจะน้อยอยู่ แต่ก็มีการอัพเดทอย่างต่อเนื่อง

ถ้าคุณต้องการสร้างโปรเจคที่มีการทำงานเฉพาะเงื่อนไขการทำงานที่ออกแบบเอง มีการอ่านค่า สั่งงานจากอุปกรณ์อื่น เก็บค่า เชื่อมต่อผ่าน WI-FI Bluetooth ได้  และคุณมีพื้นฐานความเข้าใจมาตรฐานการสื่อสาร CAN BUS เข้าใจการใช้ API ของ ESP32 โดยเฉพาะส่วน TWAI  บอร์ดนี้เหมาะสำหรับโปรเจคนี้

ถ้าโปรเจคของคุณต้องการนำค่าของรถยนต์มาใช้โดยคุณอาจมีเวลาจำกัด  ในการมาดูเรื่องมาตรฐานต่างๆ  รุ่นรถ ปีไหนรองรับบ้างและส่วนของ CAN BUS ไม่ใช่ส่วนสำคัญ เราแนะนำให้ใช้อุปกรณ์ ODB2 reader ที่มีอยู่แล้วเช่นชิป ELM327 และใช้ MCU เข้าไปอ่านจากชิปอีกที เหมาะสำหรับโปรเจคนี้มากกว่า

ฉันต้องขอขอบคุณ Magnus ที่ส่งบอร์ดมาให้เราศึกษาและรีวิวในครั้งนี้ บอร์ดนี้ทำขึ้นเพื่อเสริมเท่านั้น ดังนั้นจึงไม่มีจำหน่าย และถ้าต้องการต้องสร้างบอร์ดขึ้นมาเอง

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
โฆษณา