Robot and wiring
The robot
Section titled “The robot”The rating label on the robot’s right side (−y), redrawn. The serial number is a placeholder, and the barcode and QR code are decorative.
| Item | Value |
|---|---|
| Model | Elephant Robotics myCobot 280 for Arduino |
| Degrees of freedom | 6 (servos J1–J6) |
| Power | 12 V DC, 60 W |
| Controller at the end of the arm | ATOM (M5Stack ATOM Matrix). See ATOM. |
| Stock ATOM firmware | v7.2 |
Where the interfaces are
Section titled “Where the interfaces are”The base is round, with a rectangular box at the back. In robot axes, +x is the front: the arm points in that direction at the zero pose.
| Location | This site | Elephant’s documentation | Contents |
|---|---|---|---|
| Back face of the box (−x) | back face | “front of the base”, function interface groups 1–4 | 2.54 mm Arduino-style sockets and pins. Groups 1 and 4 follow the Arduino UNO/MEGA layout, groups 2 and 3 the MKR WiFi 1010 layout. The FT232R connects here. |
| Top face of the box | top face | “top of the base”, function interface group 5 | Header strip with Arduino pin labels, and the 4-pin TRVG port. |
| −y side | robot’s right | “right side of the base” | DC power jack (12 V; 6.5 mm outer, 2.0 mm inner) on the box, next to the round part. The rating label on the round part. |
| Arm end | ATOM socket | function interface group 6 | See ATOM and Gripper. |
The −y side is on your left when you face the robot. Photos of the base (2026-10-04) agree with the URDF mesh and with Elephant’s documentation.
Back face: function interface groups 1–4
Section titled “Back face: function interface groups 1–4”Only GND and pins 13 and 14 are used.
| FT232R | Base |
|---|---|
| TXD | pin 14 |
| RXD | pin 13 |
| GND | GND |
The base passes the bytes on pins 13/14 to the servo bus, and the servo replies back. The laptop does not receive its own transmissions. The servos also answer when the ATOM is removed, so the base, not the ATOM, makes this bridge.
Top face: function interface group 5 and the TRVG port
Section titled “Top face: function interface group 5 and the TRVG port”The 4-pin TRVG port is probably TX, RX, V and GND. It is not yet known if it carries the same serial line as pins 13/14.
Joint limits
Section titled “Joint limits”The robot description has these limits
(mycobot_description/config/mycobot_280_arduino/joint_limits.yaml). The URDF, the
firmware, the Control page and the planners get them from there:
| Joint | J1 | J2 | J3 | J4 | J5 | J6 |
|---|---|---|---|---|---|---|
| Model limit (°) | ±165 | ±140 | ±150 | ±150 | ±160 | −225 to +135 |
They are round numbers inside the end stops that were measured by hand (below): the largest multiple of 5° that is at least 2° inside both end stops of the joint. J6 has no end stop, but the gripper cable limits it (below). Until 2026-10-04 the URDF had Elephant’s protocol-page limits (±168, ±135, ±150, ±145, ±165, ±180).
Elephant gives two sets of limits. The protocol page and the product parameters (for AtomMain ≥ 7.3) do not agree:
| Joint | J1 | J2 | J3 | J4 | J5 | J6 |
|---|---|---|---|---|---|---|
| Protocol page (°) | ±168 | ±135 | ±150 | ±145 | ±165 | ±180 |
| Product page, AtomMain ≥ 7.3 (°) | ±168 | ±140 | ±150 | ±150 | −155 to +160 | ±180 |
Elephant says the structure cannot reach ±165° on J5. The measurements agree.
Measured by hand (2026-10-04)
Section titled “Measured by hand (2026-10-04)”scripts/measure_joint_range.jl releases the joints and records their angles while
you move them by hand to the end stops. With all, every joint is limp, so a joint
is not blocked by the pose of the others. Results are in
tools/python/recordings/joint_ranges.csv.
| Joint | End stops, all joints limp (°) | Protocol page and URDF (°) | Product page, AtomMain ≥ 7.3 (°) |
|---|---|---|---|
| J1 | −170.9 to +170.9 | ±168 | ±168 |
| J2 | −143.2 to +142.5 | ±135 | ±140 |
| J3 | −155.7 to +154.8 | ±150 | ±150 |
| J4 | −156.4 to +157.1 | ±145 | ±150 |
| J5 | −162.8 to +164.7 | ±165 | −155 to +160 |
| J6 | no end stop (about 9 turns); −237.1 to +139.9 with the gripper (2026-10-06) | ±180 | ±180 |
- The product page limits are all inside the end stops, with 3–8° of margin. They match the hardware better than the protocol page and the URDF.
- The protocol page is conservative on J2, J3 and J4, but its J5 limit (−165°) is past the end stop (−162.8°). The model now uses ±160°.
- With only J4 limp and the other joints holding, J4 stopped at −135.5°: the pose of the other joints blocked it. Measure end stops with all joints limp.
- A joint is stopped by a hard stop or by contact with another link. The values are the largest angles reached with a gentle push.
J6 is therefore continuous without a tool and limited with one.
With the gripper on, the gripper cable stops J6 at −237.1° and +139.9° (measured by hand with only J6 limp, 2026-10-06). The J6 limits are −225° to +135°: one full turn, so the gripper can face every direction.
- +135°: the same rule as for the other joints.
- −225°: past one turn. The firmware (4.5+) sets the J6 servo to multi-turn. At power-up the servo knows only one turn. The limits span one turn, so the power-up reading tells the turn: a reading above +135° is one turn lower.
- At ±135° itself (−225° = +135°) the reading cannot tell the turn. Live mode, JOG and MOVE_TO stop 2° inside the limits, so the arm never stops there under control. If J6 is within 1.5° of ±135° at power-up (turned by hand while off), the ATOM starts in the error state with J6 limp: turn J6 a few degrees by hand, then press Hold.
The servos do not enforce these limits (their angle limit registers allow 0–4095, and 0/0 on J6).
The arm can rest outside them, for example when it is folded by hand while limp.
check_plan also keeps every plan 10° inside the model limits.
Zero pose
Section titled “Zero pose”At 0° on every joint the arm is upright, and the flange points forward (+x). The flange is at (45.6, −64.6, 411.1) mm in the URDF base frame.