myCobot 280 JN + AIKit 3D Vision
บทที่ 7

ฮาร์ดแวร์เชิงลึก

ระบบพิกัด (Coordinate System), ขีดจำกัดมุมแต่ละข้อต่อ, พอร์ตที่ฐาน (HDMI/USB/GPIO/Type-C/Power) และ Pinout ของ Jetson Nano สำหรับนักพัฒนาที่ต้องการเข้าใจระบบในเชิงลึกก่อนเริ่มเขียนโปรแกรม

7.0 ภาพรวมสถาปัตยกรรมระบบ

myCobot 280 JN ประกอบด้วย คอมพิวเตอร์ฝังตัว 2 ตัว (Jetson Nano + ESP32) ทำงานร่วมกัน + บอร์ดเล็ก Atom ที่ปลายแขนสำหรับขับ LED/IO ของ End-Effector

รูปที่ 7-0: สถาปัตยกรรมระบบ Input (User/Camera) เข้า Jetson ส่งคำสั่งผ่าน ESP32 ไปยังข้อต่อ ปลายแขน

ℹ️
เข้าใจการสื่อสาร 3 ระดับ

1) PC ↔ Jetson: HDMI (จอ), SSH/VNC (remote)
2) Jetson ↔ ESP32: UART ภายในผ่าน /dev/ttyTHS1 (baudrate 1 Mbps)
3) ESP32 ↔ Servo + Atom: Serial protocol บนสาย ribbon ภายในแขน

7.1 ระบบพิกัด (Coordinate System)

myCobot 280 JN ใช้ระบบพิกัด 6 ค่า (6D pose) สำหรับระบุตำแหน่งและทิศทางของปลายแขน (TCP Tool Center Point):

  • X, Y, Z ตำแหน่งในหน่วยมิลลิเมตร อ้างอิงจากฐานหุ่นยนต์
  • Rx, Ry, Rz มุมเอียงของปลายแขน (Roll, Pitch, Yaw) ในหน่วยองศา

ช่วงพิกัดที่ใช้ได้ (Workspace)

แกนช่วงค่าหน่วย
X−281.45 ถึง +281.45มิลลิเมตร
Y−281.45 ถึง +281.45มิลลิเมตร
Z−70 ถึง +412.67มิลลิเมตร
Rx, Ry, Rz−180 ถึง +180องศา
ℹ️
ข้อมูลสำคัญ กรอบอ้างอิง 2 แบบ

myCobot รองรับกรอบอ้างอิง 2 แบบ: Base frame (อ้างจากฐาน) และ Tool frame (อ้างจากปลายเครื่องมือ) เลือกผ่าน mc.set_reference_frame(0) หรือ mc.set_reference_frame(1)

7.2 ขีดจำกัดมุมของข้อต่อ (Joint Limits)

หุ่นยนต์มี 6 ข้อต่อ (J1 J6) แต่ละข้อต่อมีช่วงการหมุนที่จำกัด ดังนี้:

ข้อต่อช่วงมุมหมายเหตุ
Joint 1 (ฐาน)−165° ถึง +165°หมุนรอบแกน Z ของฐาน
Joint 2 (ไหล่)−165° ถึง +165°ก้ม/เงย
Joint 3 (ศอก)−165° ถึง +165°งอ/เหยียดศอก
Joint 4 (ข้อมือ 1)−165° ถึง +165°เอียงข้อมือ
Joint 5 (ข้อมือ 2)−165° ถึง +165°หมุนข้อมือ
Joint 6 (Flange)−175° ถึง +175°หมุนจานปลาย (End-effector)
⚠️
คำเตือน Error Code

หากสั่งให้ข้อต่อเคลื่อนเกินขีดจำกัด ระบบจะคืน Error Code 1-6 (ระบุ joint ที่เกินขีดจำกัด) ตรวจสอบด้วย mc.get_error_information() และเคลียร์ด้วย mc.clear_error_information()

Error Code Reference

  • 0 ปกติ ไม่มี Error
  • 1-6 Joint 1-6 เกินขีดจำกัดมุม
  • 16-19 ตรวจพบการชน (Collision Detection)

7.3 พอร์ตที่ฐานหุ่นยนต์ (Base Interface)

ที่ฐานของ myCobot 280 JN มีพอร์ตเชื่อมต่อที่สำคัญดังนี้:

พอร์ตรายละเอียดการใช้งาน
Power (DC)DC Jack 6.5mm OD × 2.0mm ID, 12V/5Aแหล่งจ่ายไฟหลัก ใช้ Adapter ที่มาในชุดเท่านั้น
HDMIFull-size HDMIต่อจอแสดงผลสำหรับใช้งาน Ubuntu Mate
USB 3.0 × 2 + USB 2.0 × 2มาตรฐาน USB Type-Aต่อคีย์บอร์ด, เมาส์, กล้อง 3D Vision, Flash Drive ฯลฯ
Ethernet (LAN)RJ-45 Gigabitเชื่อมต่อเครือข่ายแบบสาย — Jetson Nano มี Wi-Fi 802.11ac (dual-band) + Bluetooth ในตัวอยู่แล้ว จะใช้ไร้สายก็ได้
Type-CUSB Type-Cใช้สำหรับ debug/programming Jetson Nano เท่านั้น ไม่ได้จ่ายไฟทั้งระบบ
GPIO 40-pin (J41)Header 40-pin มาตรฐาน Raspberry Piเชื่อมต่อปั๊มสุญญากาศ, Sensor, LED ฯลฯ
Power Buttonปุ่มกดสีขาว มีไฟ LEDกดเพื่อเปิด/ปิดเครื่อง ไฟ LED บ่งบอกสถานะ
⚠️
คำเตือน Type-C ไม่ใช่พอร์ตจ่ายไฟหลัก

พอร์ต Type-C ของ Jetson Nano สามารถจ่ายไฟให้บอร์ดได้บางส่วนเท่านั้น ไม่เพียงพอที่จะขับเคลื่อนหุ่นยนต์และโหลด GPU พร้อมกัน ต้องใช้ DC Jack 12V/5A เป็นแหล่งจ่ายหลักเสมอ

7.4 GPIO 40-pin Pinout

Header GPIO ที่ฐาน Jetson Nano เป็นมาตรฐานเดียวกับ Raspberry Pi รองรับโหมด BCM (Broadcom GPIO numbering) ผ่านไลบรารี Jetson.GPIO

พินจ่ายไฟ

  • 5V 2 พิน (Pin 2, Pin 4)
  • 3.3V 2 พิน (Pin 1, Pin 17)
  • GND หลายพินกระจายตามบอร์ด

พินสื่อสาร (Communication)

โปรโตคอลพินที่ใช้หมายเหตุ
I²CGPIO 2 (SDA), GPIO 3 (SCL)มี Pull-up ในตัว ใช้งานได้ทันที
SPI0GPIO 7-11Serial Peripheral Interface
SPI1เพิ่มเติมใช้งานได้พร้อมกัน 2 บัส
UARTGPIO 14 (TX), GPIO 15 (RX)Serial communication
PWM (Hardware)GPIO 12, GPIO 13PWM ด้วยฮาร์ดแวร์ ความถี่สูง
PWM (Software)ทุก GPIOความถี่จำกัดด้วย software

ขีดจำกัดกระแส

  • พินเดี่ยว: ประมาณ 40 mA
  • เมื่อใช้พินหลายพินพร้อมกัน: ลดลงเหลือประมาณ 29 mA ต่อพิน
  • ไม่ควรขับโหลดสูง (มอเตอร์, รีเลย์) โดยตรงจาก GPIO ต้องใช้ Transistor หรือ Driver IC
ℹ️
ข้อมูลสำคัญ Pin สำหรับ AIKit Vacuum Pump

ปั๊มสุญญากาศของ AIKit ใช้ Pin 38 = BCM 20 (ดูด) และ Pin 40 = BCM 21 (ปล่อยลม) โหมด Logic Invert (0 = ON, 1 = OFF)

ดูเอกสาร Pinout ฉบับเต็มได้ที่ Jetson Nano Developer Kit User Guide

7.5 ปลายแขน (Atom End-Effector)

ที่ปลายแขนหุ่นยนต์ (Joint 6 / Flange) มีบอร์ดควบคุมขนาดเล็กชื่อ Atom ที่ทำหน้าที่:

  • ขับ RGB LED ใช้แสดงสถานะ (สั่งสีผ่าน mc.set_color(r, g, b))
  • ควบคุม Digital I/O ของ End-Effector (Gripper, Sensor)
  • ส่ง PWM ควบคุมมอเตอร์ของ Gripper
  • ปุ่มกดสำหรับ เริ่ม-รีเซ็ต โหมดต่าง ๆ

IO ที่ปลายแขน (Atom IO)

มีพินสำหรับเชื่อมต่อ End-Effector ภายนอก ใช้คำสั่งผ่าน pymycobot:

python
# ตั้งโหมดพิน (0=output, 1=input, 2=input_pullup)
mc.set_pin_mode(pin_no=1, pin_mode=0)

# ส่งสัญญาณ Digital Output
mc.set_digital_output(pin_no=1, pin_signal=1)

# อ่านสัญญาณ Digital Input
value = mc.get_digital_input(pin_no=2)

# PWM
mc.set_pwm_output(channel=1, frequency=1000, pin_val=128)

รายชื่อ ATOM GPIO Pins (ESP32)

Atom Board ใช้ ESP32 microcontroller ที่มี GPIO ใช้งานได้ 6 พิน เปิดเผยที่ปลายแขนสำหรับต่อ sensor/IO:

Pin NameESP32 GPIOฟังก์ชันการใช้งานทั่วไป
G19GPIO 19Digital I/O / PWMขับ servo เสริม, LED indicator
G21GPIO 21I2C SDA / Digital I/Oเชื่อม sensor I2C (BME280, etc.)
G22GPIO 22I2C SCL / Digital I/Oเชื่อม sensor I2C (pair กับ G21)
G23GPIO 23Digital I/O / PWMขับ relay, ปุ่มกด
G25GPIO 25Digital I/O / DACAnalog output (0-3.3V)
G33GPIO 33Digital I/O / ADCอ่าน analog sensor (0-3.3V)
⚙️
ATOM = ESP32 ที่ปลายแขน

คุณสมบัติทางเทคนิคของ Atom Board:

  • MCU: ESP32 dual-core @ 240 MHz
  • Performance: 600 DMIPS
  • SRAM: 520 KB
  • Flash: 4 MB
  • LED Matrix: 5×5 RGB LED (สั่งสีผ่าน set_color())
  • ปุ่มกด: 1 ปุ่ม (ใช้ reset / mode switch)
💡
ตัวอย่าง อ่านค่า analog sensor จาก G33 python
# Pin G33 เป็น ADC อ่าน analog ได้
mc.set_pin_mode(pin_no=33, pin_mode=1)  # input mode
analog_value = mc.get_analog_input(pin_no=33)
print(f"Sensor: {analog_value}")  # 0-4095 (12-bit)

7.6 เซนเซอร์เสริม (Optional Sensors)

  • ToF Distance Sensor เซนเซอร์วัดระยะ (อุปกรณ์เสริม) python
    distance_mm = mc.get_tof_distance()
    print(f"Distance: {distance_mm} mm")
  • 3D Camera สำหรับชุด AIKit เชื่อมต่อผ่าน USB 3.0 ดู บทที่ 4.6