ฮาร์ดแวร์เชิงลึก
ระบบพิกัด (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 ไปยังข้อต่อ ปลายแขน
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 | องศา |
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 1-6 (ระบุ joint ที่เกินขีดจำกัด)
ตรวจสอบด้วย mc.get_error_information() และเคลียร์ด้วย mc.clear_error_information()
Error Code Reference
0ปกติ ไม่มี Error1-6Joint 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 ที่มาในชุดเท่านั้น |
| HDMI | Full-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-C | USB Type-C | ใช้สำหรับ debug/programming Jetson Nano เท่านั้น ไม่ได้จ่ายไฟทั้งระบบ |
| GPIO 40-pin (J41) | Header 40-pin มาตรฐาน Raspberry Pi | เชื่อมต่อปั๊มสุญญากาศ, Sensor, LED ฯลฯ |
| Power Button | ปุ่มกดสีขาว มีไฟ LED | กดเพื่อเปิด/ปิดเครื่อง ไฟ LED บ่งบอกสถานะ |
พอร์ต 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²C | GPIO 2 (SDA), GPIO 3 (SCL) | มี Pull-up ในตัว ใช้งานได้ทันที |
| SPI0 | GPIO 7-11 | Serial Peripheral Interface |
| SPI1 | เพิ่มเติม | ใช้งานได้พร้อมกัน 2 บัส |
| UART | GPIO 14 (TX), GPIO 15 (RX) | Serial communication |
| PWM (Hardware) | GPIO 12, GPIO 13 | PWM ด้วยฮาร์ดแวร์ ความถี่สูง |
| PWM (Software) | ทุก GPIO | ความถี่จำกัดด้วย software |
ขีดจำกัดกระแส
- พินเดี่ยว: ประมาณ 40 mA
- เมื่อใช้พินหลายพินพร้อมกัน: ลดลงเหลือประมาณ 29 mA ต่อพิน
- ไม่ควรขับโหลดสูง (มอเตอร์, รีเลย์) โดยตรงจาก GPIO ต้องใช้ Transistor หรือ Driver IC
ปั๊มสุญญากาศของ 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 Name | ESP32 GPIO | ฟังก์ชัน | การใช้งานทั่วไป |
|---|---|---|---|
G19 | GPIO 19 | Digital I/O / PWM | ขับ servo เสริม, LED indicator |
G21 | GPIO 21 | I2C SDA / Digital I/O | เชื่อม sensor I2C (BME280, etc.) |
G22 | GPIO 22 | I2C SCL / Digital I/O | เชื่อม sensor I2C (pair กับ G21) |
G23 | GPIO 23 | Digital I/O / PWM | ขับ relay, ปุ่มกด |
G25 | GPIO 25 | Digital I/O / DAC | Analog output (0-3.3V) |
G33 | GPIO 33 | Digital I/O / ADC | อ่าน analog sensor (0-3.3V) |
คุณสมบัติทางเทคนิคของ 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)
# 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