# Rotrics DexArm User Manual V1.2

{% hint style="success" %}
**📅Update: 2021/05/12**
{% endhint %}

## **Overview**

🙌**Welcome on board!**

This manual instructs you on how to assemble and use DexArm's functions for drawing and writing, laser engraving, 3D printing, etc. Each section includes:

1. Steps you must follow to make sure the robot arm works properly. They are marked with "1/2/3".&#x20;
2. FAQs that help you troubleshoot problems you encounter.
3. Tips that you may not notice but is useful for a better experience.

{% hint style="success" %}
**Before Use**
{% endhint %}

* Select the Language:
  * [English](https://www.manual.rotrics.com/)
  * [简体中文](https://manual.rotrics.com/v/v1.0-chinese/)
* Searching for Keywords: click the upper left:mag: **`Search`** to search for keywords.    &#x20;
* Navigating to a Topic: the left navigation bar shows the content structure of this file, click the title to navigate to the relevant page.&#x20;

\*If you have any questions or suggestions for this user manual, please contact us via <support@rotrics.com>

**📰Rotrics Official Website:** [www.rotrics.com](https://www.rotrics.com)

:ballot\_box\_with\_check: **Rotrics User Community:**

* [**Rotrics Discord Group**](https://discord.gg/NWh6f36) **for Technical Support**
* [**Rotrics Facebook Group**](https://www.facebook.com/groups/rotrics) **for project sharing**
* [**Rotrics Owners Forum**](https://community.rotrics.com/) **for project sharing**

*©2018-2020 Rotrics All Rights Reserved*

## Getting Started

{% content-ref url="/pages/-M7LOKV15TBOrS2sxwmS" %}
[🎮Hands-on Guide](/get-start/quick-start-guide)
{% endcontent-ref %}

{% content-ref url="/pages/-LvepZNML1avcfft6\_KK" %}
[🎨Writing/Drawing](/get-start/drawing-and-writing)
{% endcontent-ref %}

{% content-ref url="/pages/-LvhYuKJslpmE5hK4fla" %}
[🎇Laser Engraving](/get-start/laser-engraving)
{% endcontent-ref %}

{% content-ref url="/pages/-Lvh\_9-XKeMxbL0adiVR" %}
[🛸3D Printing](/get-start/3d-printing)
{% endcontent-ref %}

{% content-ref url="/pages/-Lvh\_hDCDvYbw8\_pOvar" %}
[🦾Teach & Pneumatic](/get-start/picking-and-placing)
{% endcontent-ref %}

## Product Overview

{% content-ref url="/pages/-LveozlU5joGAtt8RaaF" %}
[🗺️Product Overview](/product-overview/product-profile)
{% endcontent-ref %}

{% content-ref url="/pages/-Lvh\_0ig-GARQRJd6hMu" %}
[💾Software - Rotrics Studio](/product-overview/software-rotrics-studio)
{% endcontent-ref %}

{% content-ref url="/pages/-LvhafIAzuLVcB6sh6xy" %}
[🍴Accessories](/product-overview/accessories)
{% endcontent-ref %}

## FAQ & Troubleshooting

{% content-ref url="/pages/-MCBlrQkuySU6WeVxE43" %}
[❓FAQs](/faq-troubleshooting/faqs)
{% endcontent-ref %}

{% content-ref url="/pages/-MCBnEDY3UbT\_qbswpRe" %}
[🔑Troubleshooting](/faq-troubleshooting/troubleshooting)
{% endcontent-ref %}

## API(G-code)

{% content-ref url="/pages/-LvharHGWiC18Of\_GpBr" %}
[Introduction](/gcode/api-and-sdk)
{% endcontent-ref %}


# 🎮Hands-on Guide

{% hint style="success" %}
**📅Update: 2020/09/21**
{% endhint %}

{% hint style="info" %}

## **Upgrade Firmware First**&#x20;

Please follow the instructions to upgrade [**DexArm's** ](https://manual.rotrics.com/faq-troubleshooting/faqs/how-to-upgrade-rotrics-firmware)and [**touchscreen firmware**](https://manual.rotrics.com/faq-troubleshooting/faqs/upgrade-touchscreen-firmware) first.
{% endhint %}

{% hint style="info" %}
​​ :man\_mage: **Tips:** You can click the TOP RIGHT table of contents to read the corresponding section​ 👉
{% endhint %}

## Control DexArm with Rotrics Studio

### **1. Setup Rotrics DexArm**

Place DexArm on a clean and flat surface, and power it on.

### **2. Connect with Rotrics Studio software**

#### 2.1 Download Rotrics Studio software from [**www.rotrics.com**](https://www.rotrics.com/pages/download)

#### 2.2 Connect DexArm with the computer with a **`USB A to C`** cable

![USB A-C cable for connecting DexArm with computer.](/files/-MEhdoV_40qSqhqSYr_7)

{% hint style="danger" %}
**Warning:**  Do **NOT** use the dual USB-C cable to connect with your computer
{% endhint %}

![Dual USB C / USB C-C cable for connecting Touchscreen/Air Pump Box with DexArm](/files/-MEhe0vogiDLUImRtQ0L)

#### 2.3 Open Rotrics Studio and click <img src="/files/-MEgRVpWJHD7IvD3EYKg" alt="" data-size="original"> to connect your DexArm.&#x20;

<div align="left"><img src="/files/-MHkP0MTRUd4H7zm7XlJ" alt=""></div>

### **3. Initialize DexArm**

Click <img src="/files/-MEgXqTvMr-z6LDv_qm-" alt="" data-size="original"> **`HOME`** button to initialize DexArm

<div align="left"><img src="/files/-MHkP4RLQ4cRj-suaupe" alt=""></div>

### **4. Control DexArm's movement**&#x20;

Control robot arm movement with control buttons on the right side, as shown in the following image:

<div align="left"><img src="/files/-MHkPUIK_af5JBq3nr6G" alt=""></div>

## Control DexArm with touchscreen

### **1. Setup Rotrics DexArm**

Place DexArm on a clean and flat surface, and power it on.

### **2. Connect with the touchscreen**

Use Dual Type-C cable to connect touchscreen and your DexArm

![Dual USB C / USB C-C cable for connecting Touchscreen/Air Pump Box with DexArm](/files/-MEhe0vogiDLUImRtQ0L)

### **3. Initialize DexArm**

Click <img src="/files/-MEgZSspUzclPkhP9HTO" alt="" data-size="original"> **`Basic`** <img src="/files/-MEgZZtPRqFnb6ao2Bzr" alt="" data-size="original"> **`HOME`** to complete initialization

### **4. Control DexArm's movement**&#x20;

Click **`X±, Y±, Z±`** to control the Arm movement

<div align="left"><img src="/files/-MEgeuLW7qjPraP3WHAK" alt=""></div>


# 🎨Writing/Drawing

{% hint style="success" %}
**📅Update: 2020/09/21**
{% endhint %}

## Table of Contents

{% hint style="info" %}
​​ :man\_mage: **Tips:** You can also click the TOP RIGHT **table of contents** to read the corresponding section​ 👉
{% endhint %}

[1) Set up for First Use](/get-start/drawing-and-writing#1-set-up-for-first-use)

[2) Drawing & Writing Workflow](/get-start/drawing-and-writing#2-drawing-and-writing-workflow)

[3) Fix the Paper](/get-start/drawing-and-writing#3-fix-the-paper)

[4) Set Work Height](/get-start/drawing-and-writing#4-set-work-height-first)

[5) Generate G-code](/get-start/drawing-and-writing#5-generate-g-code)

[6) Start Drawing](/get-start/drawing-and-writing#6-start-drawing)

[7) Use Touchscreen to draw built-in stickers](/get-start/drawing-and-writing#7-use-touchscreen-to-draw-built-in-stickers)

[8) Other resources](/get-start/drawing-and-writing#other-resources)

## 1. Set up for First Use

Read the [**Quick Start Guide**](https://cdn.shopifycdn.net/s/files/1/0255/0195/8216/files/Rotrics_DexArm_Quick_Start_Webview_V1.0.2.pdf?v=1594021017) to check the items, assemble the module and set up DexArm for the first use. You can also watch the [**Video Tutorials**](https://www.rotrics.com/pages/download) on our website to learn how to use DexArm.&#x20;

{% embed url="<https://youtu.be/8Cv3I_wRrsA>" %}

## 2. Drawing & Writing workflow

#### [1) Fix the Paper](/get-start/drawing-and-writing#3-fix-the-paper)

#### [2) Set Work Height](/get-start/drawing-and-writing#4-set-work-height-first)

#### [3) Generate G-code](/get-start/drawing-and-writing#5-generate-g-code)

#### [4) Start Drawing](/get-start/drawing-and-writing#6-start-drawing)

## 3. Fix the Paper

### 3.1 With taps&#x20;

#### 3.1.1 Put the paper 15cm in front of the robot arm.&#x20;

#### 3.1.2 Fix the four corners with taps.&#x20;

### 3.2 With magnets

Magnetic board and magnets are available from Amazon, such as:&#x20;

[Magnetic Dry Erase Board](https://www.amazon.com/Brands-Contempo-Magnetic-Erase-Inches/dp/B00PRYQA4E)

[Strong Neodymium Disc Magnets](https://www.amazon.com/Strong-Neodymium-Disc-Magnets-Pack/dp/B073WJMSCR/ref=sr_1_51)

#### 3.2.1 Place the magnetic board 15cm in front of the robot arm;

#### 3.2.2 Fix paper on the board with magnets.

### 3.3 With clipboard

#### 3.3.1 Put clipboard 15cm in front of the robot arm,&#x20;

#### 3.3.2 Fix the paper with the clip,

## **4. Set Work Height First**

### **4.1 With Rotrics Studio**

#### **4.1.1 Switch to "Write/Draw" panel and click Control**

<div align="left"><img src="/files/-MBxbysmfUqF4DyBqvWW" alt=""></div>

![](/files/-MHkW-nR_a51GNlcmn4h)

**4.1.2 Set Work Height**

A. Click **Control** and click **HOME** button on the right side to initialize the arm, click "**Z-**" button to lower pen height, keep adjusting until the nib touches the paper.&#x20;

{% hint style="warning" %}
:brain: **Note:** Remember **HOME** DexArm every time before working.&#x20;
{% endhint %}

{% hint style="info" %}
:man\_mage: **Tips:** When adjusting pen height, you can choose accuracy "20" at first, and when the nib is near the paper, adjust with accuracy "1", "0.2" and "0.1". Keep adjusting until the nib touches the paper (the pen holder module has spring inside, so it's okay that the nib slightly presses on the paper). &#x20;
{% endhint %}

B. Click **Set Work Height** to set this point as the work height.&#x20;

![](/files/-MHVxrjYogal4WzN-YxR)

### 4.2 With Touchscreen

#### 4.2.1 Click **`Basic` > `HOME`** to initialize DexArm.

<div align="left"><img src="/files/-M7My0IcWUwiQcP8mYuo" alt=""></div>

#### 4.2.2 Click **3D print > Set Work Origin**.&#x20;

Select **Accuracy** and click **-** (Minus )to adjust pen height, keep adjusting until the nib touches the paper.&#x20;

Click **Set Origin** to set this point as Work Origin.&#x20;

## **5. Generate G-code**

{% hint style="success" %}
We provided several sample files for you to try with DexArm drawing function, click the following link to download.
{% endhint %}

{% file src="/files/-M7gsoqhwDiqCsNqZdy1" %}
Rotrics Drawing Sample Files V1.0
{% endfile %}

### 5.1 **Import prepared file.**

**Click G-code, choose preset stickers, or enter texts or upload SVG images**

![](/files/-MBxcCGPZ922ByLpvVot)

<img src="/files/-MEhQNgpdUr2EQ5q3WoS" alt="" data-size="original"> STICKER: preset stickers, click to load into canvas.

<img src="/files/-MEhQSKHjUmmlQYeeLzo" alt="" data-size="original"> SVG: upload SVG files to draw images.

<img src="/files/-MEhQVogp5c1hUEc2oJj" alt="" data-size="original"> TEXT: enter texts, suitable for writing letters or greeting cards.

{% hint style="warning" %}
:brain: **Note:** Rotrics Studio only supports SVG files in this version, if you only have JPG/PNG files, please transfer them into SVG files with free online tools.&#x20;
{% endhint %}

### **5.2 Adjust the image size and position.**

![](/files/-MBxcf2OE4hkcqXGP8n4)

Drag the image to the target position, but it's recommended to keep it on X0 Y300 and move the paper/drawing board to get the biggest work area.

We can also adjust the image size by changing the **Width** and **Height** value.&#x20;

### **5.3 Set working parameters.**

#### 5.3.1 Set work speed and jog speed and pen offset.&#x20;

**Jog Speed:** this is the speed of DexArm travel without drawing, the suggested jog speed for write/draw is **4000 mm/min.**

**Work Speed:** this is the working speed of DexArm, the suggested speed for write/draw is **4000 mm/min.**

**Pen offset:** this is the height that DexArm moves up during travel, the suggested pen height is 10mm.

### 5.4 **Generate G-code**

&#x20;Click **`Generate G-code`** button to generate G-code.

![](/files/-MEhRUA5mqjAZOeReKKJ)

{% hint style="info" %}
:man\_mage:**Tips:** You can download the G-code and copy it to the SD card for touchscreen control.&#x20;
{% endhint %}

## **6. Start Drawing**

### 6.1 Start Drawing with Rotrics Studio

Click **`Start Send`** to start Drawing.

![](/files/-MEhRxNAbQpaU_4WeEYj)

### 6.2 Use Touchscreen to start writing/drawing

{% hint style="warning" %}
:brain: **Note:** Make sure you've **set Work Origin** in [Step 4](/get-start/drawing-and-writing#4-set-work-origin-first).&#x20;
{% endhint %}

#### 6.2.1 Copy the G-code file into th&#x65;**`g-code`**&#x66;older of the SD card.

![](/files/-MEhSfbxrPbRdHSPGHo9)

#### 6.2.2 Connect the Arm and touchscreen with a Dual Type-c cable.

![](/files/-MEhUWfiKmiotuY5edJD)

#### 6.2.3 Clic&#x6B;**`SD Card`**, choose your G-code and clic&#x6B;**`Start`** to start writing/drawing.&#x20;

<div align="left"><img src="/files/-M7MyPn358ftJ2yNsd87" alt=""></div>

You can **Pause** or **Stop** the Arm during working.

{% hint style="warning" %}
:brain: **Note:** You can only return to the previous step or home page only when the working is completed or stopped. &#x20;
{% endhint %}

## 7. Use Touchscreen to draw built-in stickers

{% hint style="info" %}
:man\_mage: **Tips:** To use touchscreen to draw build-in stickers, you need to set writing/drawing start height first.&#x20;
{% endhint %}

### 7.1 Connect the Robot Arm to Touchscreen with a Type-C to Type-C cable.

![](/files/-MEhUWfiKmiotuY5edJD)

### 7.2 Click **`Basic -> HOME`**&#x74;o initialize DexArm.

### 7.3 Click **`Setting`** ->**`Pen Position`**, and adjust the pen position.

<div align="left"><img src="/files/-MEhXm-HxZZJ3NfJn06c" alt=""></div>

Choose movement accuracy, clic&#x6B;**`Down`**&#x74;o lower the pen height. Keep adjusting until the nib touches the paper. Clic&#x6B;**`Save`**&#x74;o record the writing/drawing start height.&#x20;

### 6) Start Drawing

Return to the homepage, clic&#x6B;**`Draw`**&#x61;nd choose a stick, then clic&#x6B;**`Choose -> Start`**&#x74;o start.&#x20;

You can Pause or Stop the Arm during working.

{% hint style="warning" %}
:brain: **Note:** You can only return to the previous step or home page only when the working is completed or stopped.&#x20;
{% endhint %}

## Other Resources

{% content-ref url="/pages/-M5WA-0lQLlaP04ttOsi" %}
[Generate G-code with third-party software](/get-start/drawing-and-writing/generate-writing-drawing-g-code-with-inkscape)
{% endcontent-ref %}


# Generate G-code with third-party software

This section introduces how to generate writing/drawing G-code with a 3rd party software, like Inkscape or Adobe Illustrator.

## Inkscape

Inkscape is a free and open-source vector graphics editor. With abundant plugins, you can easily edit vector images, apply greyscale processing and etc.&#x20;

**Before starting, make sure you have installed Inkscape V0.92.5.**

Inkscape download link: <https://inkscape.org/release/inkscape-0.92.5/>

**1. Download the following Rotrics G-code extension for Inkscape V0.92.5**

{% file src="/files/-M5WIS-7bjeB5o9pFCP2" %}
Rotrics G-code Extension for Inkscape V0.92.5
{% endfile %}

{% hint style="warning" %}
:brain: **Note:** the extension only supports the older version such as V0.92.5, if you use the latest version, you may encounter the output error. &#x20;
{% endhint %}

**2. Install Rotrics G-code extension.**&#x20;

![](/files/-M5VYAHV4uZcYjwRHMIt)

\*For Windows, copy this extension to the "extensions" folder under Inscape installation directory, normally it should be:

`\Program Files\Inkscape\share\extensions`

\*For Mac OS, copy this extension to the "extensions" folder under Inscape installation directory, normally it should be:

`/Applications/Inkscape.app/Contents/Resources/extensions`

If couldn't find the extension folder,  you can find it by clicking **Edit > Preferences > System > Inkscape extension**

![](/files/-MG3U-JidvqApgP14ZVz)

![](/files/-MG3UEMWu9E0YP632LeV)

{% hint style="warning" %}
:brain: **Note:** Reboot the Inkscape software after installation.
{% endhint %}

**3. Open Inkscape, and create a new A4 page.**

<div align="left"><img src="/files/-M5VdfEI5ljo7VRglljR" alt=""></div>

**4. Import your SVG file.**

![](/files/-M5VgwQodfjbIM4o5sJz)

**5. Adjust image size, ensure it's within the A4 page.**&#x20;

![](/files/-M5Vg07KbSIWBImxJi8t)

#### 6. Adjust image position, and make sure image center position is X0 Y0,

<div align="center"><img src="/files/-M5WIkkxmASpdUfLa5ND" alt=""></div>

#### 7. Click **`Extensions->Export to G-code`**

![](/files/-M5WGJTXAWZUPFLRPgjB)

#### 8. Set DexArm write/draw configuration parameters.&#x20;

<div align="left"><img src="/files/-M5WGAvZOO92spvNFT2M" alt=""></div>

* Pen Height Down - writing/drawing start height, fill in the start height value&#x20;
  * G0 Z-
* Pen Height Up - pen rising height, 5-10mm higher than the start height value
  * G0 Z-

#### **9. Set G-code save directory and filename.**&#x20;

<div align="left"><img src="/files/-M5WGk2xq8Pv61tVIypt" alt=""></div>

#### 10. Click Apply to generate G-code.&#x20;

**\*Reference:** <https://jtechphotonics.com/?page_id=2012>

## Adobe Illustrator

&#x20;Adobe Illustrator is a vector graphics editor developed and marketed by Adobe Inc. It can generate writing/drawing G-code for drawing.&#x20;

**Before start, make sure you have installed Adobe Illustrator software.**

1\. Download the following Rotrics G-code Extension for Adobe Illustrator

{% file src="/files/-MYNdqwpd9X326Xh6vVK" %}
Rotrics G-code Extension for Adobe Illustrator
{% endfile %}

**2. Install Rotrics G-code extension.**

![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5Uo-zfqyeUz5rXvsOy%2F-M5UoCn50F7oeT_lrDpi%2Fimage.png?alt=media\&token=83103e98-c07b-490d-9de9-d63401cbd7ea)

**3. Open Adobe Illustrator and create a new A4 page.**

**4. Import your SVG file.**<br>

<div align="left"><img src="/files/-M7N5SkOdprfjeWmNXQH" alt=""></div>

&#x20;5\. **Adjust image size, ensure it's within the A4 page.**

<div align="left"><img src="/files/-M7N5YZunKEQ22_zLWpC" alt=""></div>

**6.** Adjust image position, and make sure the image center position is X0 Y0.

![](/files/-M7N5jXkV2Ayj5zZUydw)

7\. Click **`File -> Scripts ->Export to G-code 1.1`**

![](/files/-M7N5utq-zWZ_78a9WYb)

#### 8. Set write/draw configuration parameters:

<div align="left"><img src="/files/-M7N5ypWkwIZEKe_3H5l" alt=""></div>

* **ON Command** - Pendown height, enter Rotrics Studio drawing height
  * G0 Z-
* **OFF Command** - Penup height, 5-10mm higher than the pen down height
  * G0 Z-

{% hint style="danger" %}
❗**Waring:** Pen up height must be higher than pen down height, otherwise, it might damage the robot arm. If there is any problem, please power off DexArm immediately.&#x20;

\*Don't set the other parameters.
{% endhint %}

#### 9. Set G-code file save directory and filename:

<div align="left"><img src="/files/-M7N64ttfwrpK2Uw83J4" alt="*add .gcode as suffix"></div>

#### 10. Click Generate G-code.&#x20;

## Send G-code with Rotrics Studio

#### 1. Open Rotrics Studio and connect with Dexarm.

![](/files/-MEh__AkuLoNWsVtj-vP)

#### 2. Switch to **Basic** panel, click HOME to initialize DexArm.

![](/files/-MEhaVLTpkU98Q2r32sc)

#### 3. Go to **G-code** on the right side.&#x20;

![](/files/-MEh_iHGC2pRe8zCogtJ)

#### 4. Import the G-code and select the **Pen Holder** module.&#x20;

![](/files/-MEh_nKQoUFknheOdFRd)

![](/files/-MEha3LsmtjPzBQ54VNY)

#### 5. Clic&#x6B;**`Start Send`**&#x62;utton, start writing/drawing.&#x20;

## Send G-code with touchscreen

1\. Copy the G-code file into th&#x65;**`g-code`**&#x66;older of touchscreen SD card.

2\. Connect the DexArm to touchscreen with a dual type-c cable.

3\. Click Basic->HOME to initialize DexArm.

4\. Click **`SD Card`**, choose your G-code, and click **`Start`** to start writing/drawing.&#x20;


# 🎇Laser Engraving

{% hint style="success" %}
**📅Update: 2020/08/17**
{% endhint %}

## Table of Contents

{% hint style="info" %}
&#x20;:man\_mage: **Tips:** You can also click the TOP RIGHT **table of contents** to read the corresponding section​ 👉
{% endhint %}

#### [1) Set up for First Use](/get-start/laser-engraving#1-set-up-for-first-use)

#### [2) Focus Laser Module ](/get-start/laser-engraving#2-focus-laser-module)

#### [3) Set Work Height](/get-start/laser-engraving#2-set-work-height)

#### [4) Generate G-code](/get-start/laser-engraving#4-generate-engraving-g-code)

#### [5) Start Engraving](/get-start/laser-engraving#5-start-engraving)

## Laser Engraving Workflow

#### [1) Focus Laser Module](/get-start/laser-engraving#2-focus-laser-module)

#### [2) Set Work Height](/get-start/laser-engraving#2-set-work-height)

#### [3) Generate G-code ](/get-start/laser-engraving#4-generate-engraving-g-code)

#### [4) Start Engraving](/get-start/laser-engraving#5-start-engraving)

## 1. Set up for First Use

{% hint style="danger" %}
❗Important: Read this [**Safety Guideline**](/get-start/laser-engraving/important-safty-guidelines) or make sure you are using the laser module in a safe environment.&#x20;
{% endhint %}

Read the [**Quick Start Guide**](https://cdn.shopifycdn.net/s/files/1/0255/0195/8216/files/Rotrics_DexArm_Quick_Start_Webview_V1.0.2.pdf?v=1594021017) to check the items, assemble the module and set up laser module for the first use. You can also watch the [**Video Tutorials**](https://www.rotrics.com/pages/download) on our website to learn how to use DexArm.&#x20;

{% embed url="<https://youtu.be/39ljHVh_xt0?list=PLjpnKYSKJyCdy9tfFJ-tq_tV1VjZfw-no>" %}

## 2. Focus Laser Module

{% hint style="danger" %}
❗❗**Notice:** wear the Safety Goggles before setting up and throughout the laser engraving process!
{% endhint %}

### 1) With Rotrics Studio

Before your start, make sure that your DexArm is connected to Rotrics Studio.&#x20;

#### 1. Switch to <img src="/files/-MEuL636n6cZtrJ3wbYK" alt="" data-size="original"> **Laser** panel, click <img src="/files/-MEuLgw8VDnjwRVVCsJQ" alt="" data-size="original">and click <img src="/files/-MEuLqbtHgpxd20vqGgR" alt="" data-size="original"> to move the arm to the HOME position (0, 300, 0)

<div align="left"><img src="/files/-MBxrcbXKzyJkpm3xPPY" alt=""></div>

#### 2. Click **`Laser`**&#x73;lider button at the bottom, turn ON the laser, and set power value as 1.&#x20;

<div align="left"><img src="/files/-MBxhD87XdR8Px2Hxwv5" alt=""></div>

#### 3. Place the engraving material below the laser module, spin the circle under laser module to focus laser module, keep spinning until you get the smallest laser spot.

{% hint style="danger" %}
❗**Notice:** don't touch the laser beam
{% endhint %}

<div align="left"><img src="/files/-M5ZnZHRGt-D2hTaBBUO" alt=""></div>

{% hint style="info" %}
:man\_mage: **Tips:** You can get the best laser engraving results after adjusting the focal length first. As the laser power for adjusting focal length is quite low, it may not be able to engrave on the material. The laser power for actual laser engraving work will be high, you can engrave on the material.
{% endhint %}

{% hint style="info" %}
:man\_mage:**Tips:** different laser modules require different turns to adjust the focal length. Some need to turn three or four turns to see the spot change, while others only need to turn one turn to see the spot change. If you can't get the smallest laser spot, you can click the Z- / Z + buttons to adjust module height, and then spin the circle to obtain the smallest laser spot.
{% endhint %}

#### 4. Click **`OFF`** to turn off the laser

<div align="left"><img src="/files/-MBxharg0MyWcXCk53RS" alt=""></div>

{% hint style="info" %}
💡**Pro Tips**: If you are engraving on the same material next time, there is no need to re-adjust the focal length. If you are changing to a different material with different thickness, please re-adjust the focal length. &#x20;
{% endhint %}

### 2) With touchscreen

#### 1. Connect the Robot Arm to touchscreen with a Dual Type-c cable.

#### 2. Click **`Laser -> HOME`** to initialize DexArm.

<div align="center"><img src="/files/-MEuPcYb8wXDr7k56Tz3" alt=""></div>

#### 3. Click **`Laser ON`** to turn on the laser, default laser power is 1

<div align="center"><img src="/files/-MEuQ-OTx_Zy_vyLCtBA" alt=""></div>

#### 4. Place the engraving material below the laser module, spin the circle under laser module to focus laser module, keep until you get the smallest laser spot.

![](/files/-MEuNBZuREV9frtK4hDW)

{% hint style="danger" %}
❗**Notice:** be careful not to touch the laser beam, and wear the Safety Goggles throughout the process!
{% endhint %}

#### 4. Clic&#x6B;**`Laser OFF`**&#x74;o turn off the laser.

{% hint style="warning" %}
:brain: **Note**: If you are engraving on the same material next time, there is no need to re-adjust the focal length. If you are changing to a different material with different thickness, please re-adjust the focal length. &#x20;
{% endhint %}

## 3. Set Work Height

### 1) With Rotrics Studio

After focusing, click **Set Work Height** to set this point as the work height.&#x20;

<div align="left"><img src="/files/-MHVxrjYogal4WzN-YxR" alt=""></div>

{% hint style="info" %}
:man\_mage: **Tips:** We usually set the HOME position as Work Height to get the biggest working area. If you've adjusted the z-axis value during focus, set the final position as work height instead. &#x20;
{% endhint %}

### 2) With Touchscreen

If you used the touchscreen for focusing, go to **Basic -> Set Work Height** to set the current position as Work Height.&#x20;

![](/files/-MEuWiDYIioPaSfOSS5p)

## 4. Generate Engraving G-code

{% hint style="success" %}
We Provided several sample files for you to try with DexArm laser engraving function, click the following link to download :point\_down:&#x20;
{% endhint %}

{% file src="/files/-M7gtWaaCSnTkJCSQqq-" %}
Rotrics Laser Sample Files V1.0
{% endfile %}

#### 1. Clic&#x6B;**`G-code`**&#x62;ack to g-code pannel, select object engraving mode and upload images

<div align="left"><img src="/files/-MBxiKYdUF5PhQNvZL1b" alt=""></div>

<img src="/files/-MEuSZKdk1bYudzefU5r" alt="" data-size="original"> **B\&W:** black and white mode, supports ***JPG, JPEG, PNG*** files.&#x20;

<img src="/files/-MEuSbirznMZ-68tzu8A" alt="" data-size="original"> **GREYSCALE:** greyscale mode, supports ***JPG, JPEG, PNG*** files.&#x20;

<img src="/files/-MEuSf8GVI2G-jctt-r2" alt="" data-size="original"> **SVG**: vector mode, supports ***SVG*** files.

<img src="/files/-MEuSi3GvPNYiInC2gkP" alt="" data-size="original"> **TEXT**: enter text mode, enter text and cover to vector lines for engraving.&#x20;

#### 2. Set image position parameters and engraving parameters and preview engraving effect. &#x20;

![](/files/-MBxj2ohxGqMb2l5wCa2)

{% hint style="info" %}
**If you have selected B\&W mode**, you can only upload PNG and JPG files. Refer to the following instructions for parameter adjustment:
{% endhint %}

![](/files/-MBxk2Fm1h4i0dfe-iil)

**A. Black on White:** according to the image color, adjust the black and white ratio of the image. The larger the value, the higher the proportion of black, and the darker the picture.

**B. Line Direction**: This determines the motion direction of laser engraving. Horizontal, Vertical, Diagonal, Diagonal2. Select the direction which is consistent with the picture direction to save engraving time.

**C. Density**: This determines the density of the engraving. The larger the density value, the better the engraving quality and the more time it takes. The range is 1-10 pixel/mm, the recommended setting is 10.&#x20;

**D. Invert:** swap black and white areas

{% hint style="info" %}
**If you have selected GREYSCALE mode**, you can only upload PNG and JPG files. Refer the following instructions for parameter adjustment:
{% endhint %}

![](/files/-MBxjv8xV7s_Z1h703m3)

**A.** **Invert:** swap black and white areas.

**B. Contract:** This determines the contrast between light and dark colors. The larger the value, the more obvious the contrast.

**C. Brightness:** The larger the value, the brighter the image is 100.&#x20;

**E. Algorithm:** select the algorithm for processing the image.&#x20;

**F. Density**: This determines the density of the engraving effect. The larger the density value, the better the engraving quality and the more time it takes. The range is 1-10 pixel/mm, the recommended setting is 10.&#x20;

{% hint style="info" %}
**If you have selected VACTOR mode**, you can only upload SVG files.
{% endhint %}

#### 3. Set laser output power and working speed.

* Work Speed(mm/min): the speed when DexArm is engraving.&#x20;
* Jog Speed(mm/min): the speed when DexArm is moving without engraving. &#x20;

{% hint style="success" %}
**Suggested Settings:**

**For 0.25W laser module**, the suggested output power is 70%, work speed is 200mm/min, jog speed is 800mm/min.

**For 2.5W laser module**, the suggested output power is 60%, work speed is 250mm/min, jog speed is 800mm/min as well.
{% endhint %}

#### 4. Clic&#x6B;**`Generate G-code`**&#x74;o generate G-code.

<div align="left"><img src="/files/-MEuU4mrq_HxiuLZLw2a" alt=""></div>

#### 5. Click`Control -> Set Work Hieght`to set work height.

Recommended setting **`HOME`** as work height to get the biggest working area.&#x20;

💡**Tips:** you can click **`Run Boundary`** to preview laser engraving area after G-code generated. Move the material to locate the best engraving position.&#x20;

#### 6. Go back to G-code and click `Start Send` to start engraving.&#x20;

💡**Tips:** You can download the G-code (please add suffix `.gcode` to the file name, otherwise, the touchscreen cannot recognize it), and copy to the SD card for touchscreen control.&#x20;

## 5. Start Engraving

### 1) With Rotrics Studio

Click **`Start Send`** to start engraving.

<div align="left"><img src="/files/-MEuXDi5GMzUtAkrht2Y" alt=""></div>

### 2) With Touchscreen

{% hint style="warning" %}
:brain: **Note:** Make sure you've **set Work Height** in Step 3.&#x20;
{% endhint %}

#### A. Copy the G-code file into th&#x65;**`g-code`**&#x66;older of the touchscreen SD card.

<div align="left"><img src="/files/-MEuXdc76tr3w18bVZ9r" alt=""></div>

####

#### B. Connect the Arm and touchscreen with a Dual Type-c cable.

![](/files/-MEhUWfiKmiotuY5edJD)

#### C. Clic&#x6B;**`SD Card`**, choose your G-code and clic&#x6B;**`Start`** to start writing/drawing.&#x20;

<div align="left"><img src="/files/-M7MyPn358ftJ2yNsd87" alt=""></div>

You can **Pause** or **Stop** the Arm during working.

{% hint style="warning" %}
:brain: **Note:** You can only return to the previous step or home page only when the working is completed or stopped. &#x20;
{% endhint %}


# ❗Important - Safety Guideline

Improper use of the laser engraving module may cause fire, eye or skin injury, or other laser burn hazards. Please read the following safety instructions before using the laser engraving function.

**Before started**

* Make sure that the robot arm is power off before installing laser module,
* Wear the Safety Goggles before set up and throughout the laser engraving process,
* Never expose yourself directly to the laser beam,
* Use with adequate ventilation,
* Any teenager should be continuously supervised by a responsible adult.
* Never use this laser module for pointing purpose.

**Laser safety**

Rotrics laser engraving modules are Class 4 laser product. They can burn the skin, or cause devastating and permanent eye damage as a result of direct, diffuse or indirect beam viewing. We provide a pair of laser safety goggles to protect your eyes, laser safety enclosure is available from our website: [www.rotrics.com](https://manual.rotrics.com/get-start/laser-engraving/www.rotrics.com).&#x20;

**Electornics safety**&#x20;

* Do not modify, disassemble or repair Rotrics robot arm.
* Install and operate the arm and module according to the manual.&#x20;
* If Rotrics arm is operating improperly, turn off the arm and contact our technical support immediately: <support@rotrics.com>.

**Fire safety**

* The laser module may ignite combustible materials, and thus may represent a fire risk.&#x20;
* Never leave the laser engraving module unattended when in operation.&#x20;
* Keep a fire extinguisher at the facility in case laser accidently cause fire outbreak.
* Keep the arm clean.

**Smoke safety**

Fumes and smoke generated during laser engraving is harmful to human body. If you are operating inside a building, make sure that you have installed a properly maintained fume exhausting system.&#x20;

**Material requirements**

Some materials will create toxic gases, vapors and particulates, the following materials are safe to engrave on: wood(MDF), paper, leather, bamboo, fabric, acrylic, anodized aluminum.


# 🛸3D Printing

{% hint style="success" %}
**📅Update: 2020/08/17**
{% endhint %}

## Introduction

3D printing (also called additive manufacturing) builds three-dimensional objects from digital 3D models. With the development of this technology, users can even create complex accessories at home. It helps to bring your ideas into reality in a fast way.&#x20;

With Rotrics Robot Arm, you only need to click a button to transfer into a desktop 3D printing machine. The 3D printing build volume is 220x220x250mm, and it supports PLA, TPU, Carbon Fiber and other filaments.

## Table of Contents

{% hint style="info" %}
​​ :man\_mage: **Tips:** You can also click the TOP RIGHT **table of contents** to read the corresponding section​ 👉
{% endhint %}

[1) First Use Set-Up](/get-start/3d-printing#1-first-use-set-up)

[2) Level DexArm](/get-start/3d-printing#2-level-dexarm)

[3) Set Work Origin](/get-start/3d-printing#3-set-work-origin)

[4) Generate G-code](/get-start/3d-printing#4-generate-g-code)

[5) Start Printing](/get-start/3d-printing#5-start-printing)

[6) Remove the print](/get-start/3d-printing#6-remove-the-print)

## 3D Printing Workflow

[1) Level DexArm](/get-start/3d-printing#2-level-dexarm)

[2) Set Work Origin](/get-start/3d-printing#3-set-work-origin)

[3) Generate G-code ](/get-start/3d-printing#4-generate-g-code)

[4) Start Printing](/get-start/3d-printing#5-start-printing)

[5) Remove the print](/get-start/3d-printing#6-remove-the-print)

## 1. First Use Set-up

Read the [**Guide for 3D Printing**](https://cdn.shopifycdn.net/s/files/1/0255/0195/8216/files/Rotrics_DexArm_3D_Print_Webview_V1.0.2.pdf?v=1594021016) to check the items, assemble the module and set up extruder, load filament for the first use. You can also watch the [**Video Tutorials**](https://www.rotrics.com/pages/download) on our website to learn how to use DexArm.&#x20;

{% embed url="<https://youtu.be/Xf_lmtt2qlo?list=PLjpnKYSKJyCdy9tfFJ-tq_tV1VjZfw-no>" %}

## 2. Level DexArm

It's required to do leveling before printing for the first time or restarting printing after moving the Robot Arm, this is to ensure that the printed module can be firmly attached to the printing pad.&#x20;

You can use Rotrics Studio software or the touchscreen to do leveling.&#x20;

{% hint style="warning" %}
:brain: **Note:** If the robot arm is not leveled before printing, it may cause layer misalignment.
{% endhint %}

{% hint style="warning" %}
&#x20;:brain: **Note:** If you have leveled your Arm before and want to re-level your Arm, make sure you press **`RESET`** or **`Reset XY Slope Rate`** button at first. Rotrics Studio or the touchscreen will clear the previous leveling records and reboot the Arm. After that, be sure to send HOME command (M1112) before re-leveling.&#x20;
{% endhint %}

### 1) Level with Rotrics Studio

#### A. Open Rotrics Studio software and connect it to DexArm.

#### B. Switch to th&#x65;**`3D Print`**&#x70;anel.

![](/files/-MEuxpJlBmXzVyQs-L_X)

#### C. Clic&#x6B;**`Level`**&#x62;utton to enter leveling procedure.

<div align="left"><img src="/files/-MBxsDLaWYAnmsADuNCR" alt=""></div>

![](/files/-MBxs8VCEUff3kjgvxFO)

#### D. Place a piece of A4 paper between the print plate and the nozzle.&#x20;

![](/files/-Ly7R7fu0Vr0ssAsw-yk)

#### E. Do the leveling according to software guide

{% hint style="info" %}
:man\_mage: **Tips:** Lower the module height with accuracy 10mm first, and when the module is near the paper, use accuracy 1mm or 0.1mm.
{% endhint %}

![](/files/-MBxsbath6pCbwuvOEwP)

{% hint style="warning" %}
:brain: **Note:** After leveling is completed, you may need to re-level DexArm if you've moved DexArm or Build Plate.&#x20;
{% endhint %}

#### F. If necessary, restart leveling.&#x20;

### 2) Level with Touchscreen

#### A. Connect the touchscreen with DexArm.

#### B. Place a piece of A4 paper between the Build Plate and the nozzle.&#x20;

![](/files/-Ly7R7fu0Vr0ssAsw-yk)

#### C. Click **`Setting > Leveling`** to switch to leveling interface

<img src="/files/-MEvFOquD2FXzCwY7hTB" alt="" data-size="original"> <img src="/files/-MEvHu2oY555jmAfdJON" alt="" data-size="original">&#x20;

#### D. Click Point 1, and then adjust module height with **`Up`** and **`Down`** button.&#x20;

&#x20;<img src="/files/-MEvIEKfqxtpSPUinlsk" alt="" data-size="original">&#x20;

#### E. Keep adjusting until there is slight resistance on the A4 paper from the nozzle. Click **`Save`**

<div align="left"><img src="/files/-MEvIiSmk6o8lIz2rquG" alt=""></div>

#### F. Click Point 2, and then repeat step 4 and 5 to level the second corner. Repeat the same steps with Point 3 and Point 4.&#x20;

<div align="left"><img src="/files/-MEvJMUrHN7c9Y4J1xLj" alt=""></div>

#### 7. After all four points are saved, clic&#x6B;**`Level`**&#x74;o finish leveling.

<div align="left"><img src="/files/-MEvJapZKLL1cHVhp_hi" alt=""></div>

### 3) Manual Leveling&#x20;

If you can **NOT** level your DexArm with Rotrics Studio or Touchscreen, you may try to check the page below to manually level it.&#x20;

{% content-ref url="/pages/-Lvh\_dyEq\_jiXFNma0LX" %}
[How to replace filament?](/faq-troubleshooting/faqs/faq-replace-filament)
{% endcontent-ref %}

## 3. Set Work Height

#### 1) Put a piece of A4 paper between the Build Plate and the nozzle.&#x20;

![](/files/-Ly7R7fu0Vr0ssAsw-yk)

#### 2) Click **`Home`** to initialize DexArm.&#x20;

#### 3) Select Accuracy(step length) an&#x64;**`Z-`**&#x74;o lower the nozzle.&#x20;

<div align="left"><img src="/files/-MHVxnRZR-rscs4QDHuk" alt=""></div>

#### 4) Keep adjusting until there is slight resistance on the A4 paper from the nozzle. Click **`Set Work Height`**

<div align="left"><img src="/files/-MHVxrjYogal4WzN-YxR" alt=""></div>

## 4. Generate G-code

{% hint style="success" %}
Here are some sample 3D printing models and g-codes for you to test Rotrics 3D printing functions :point\_down:&#x20;
{% endhint %}

{% embed url="<https://drive.google.com/open?id=1eITwxqtkyKYNG1j89zIClBPspqbu019Q>" %}

### Generate 3D Printing G-code with Cura

{% hint style="info" %}
:man\_mage:**Tips:** For users who use Rotrics Studio under version **V0.1.7**, it's recommended to use Cura to generate 3D printing G-code.&#x20;
{% endhint %}

{% content-ref url="/pages/-MBxthzXfxU7-p07p3O6" %}
[Generate 3D Printing G-code with Cura](/get-start/3d-printing/generate-3d-printing-g-code)
{% endcontent-ref %}

### Generate 3D Printing G-code with Rotrics Studio

#### 1) Clic&#x6B;**`Upload`**&#x74;o import prepared model(s), supports STL/OBJ files.

![](/files/-MBxv1lFt5ZRVmbrP-4V)

#### 2) Adjust the size and orientation of the model with the left buttons.&#x20;

![](/files/-MBxw00mrhpP3HaangQj)

#### 3) Choose the print profile and clic&#x6B;**`Generate G-code`button.**

![](/files/-MBxw8JOjKe7mOfV46ao)

####

## 5. Start Printing

### Printing with Rotrics Studio

{% hint style="success" %}
If your G-code file is generated on **Rotrics Studio**
{% endhint %}

After G-code generated, clic&#x6B;**`Start Send`**&#x74;o start printing.

![](/files/-MBy-G2-q3ZyqKl0rsba)

{% hint style="success" %}
If your G-code file is generated on **Cura**
{% endhint %}

{% hint style="info" %}
Make sure you've set the Work Origin in [Step 3](/get-start/3d-printing#3-set-work-origin).&#x20;
{% endhint %}

**1) Go to`Basic > G-code`and click`import`to import the prepared G-code file.**&#x20;

![](/files/-MEvDqYILATAcRUvlfRy)

**2) Select the right module.**&#x20;

![](/files/-MEvDyudK0IWtUsDs_zk)

**3) Click Start Send to start printing.**&#x20;

![](/files/-MEvE8RcBn5lrsUWc1i2)

### **Printing with** Touchscreen

#### 1) Copy G-code file to the **`g-code`** folder under SD card.

<div align="left"><img src="/files/-MEuXdc76tr3w18bVZ9r" alt=""></div>

#### 2) Install the SD card in the touchscreen, and connect it to DexArm.

![](/files/-MEv5zn2fxXCZOjqD-XV)

#### 3) Set Work Origin

A. Put a piece of A4 paper between the build plate and the nozzle.

![](/files/-MEvBNcUmU1JEoxsdMK0)

B. Go to **`3D Printing > Set Work Origin`** to enter the procedure.&#x20;

<div align="left"><img src="/files/-MEvKE4eMTsl0G1PZNLZ" alt=""></div>

C. Click **`Go Home`** to initialize DexArm to the HOME position. Lower the module height with<img src="/files/-MEvPQgxAb7lcJxkbQhs" alt="" data-size="original">button.

<div align="left"><img src="/files/-MEvN4qRRSwe4ETEkd5I" alt=""></div>

D. Keep adjusting until there is slight resistance on the A4 paper from the nozzle.

F. Clic&#x6B;**`Set Origin`**&#x74;o set the **Working Origin** position.

<div align="left"><img src="/files/-MEvNLCcSDHpsaWVSsJ8" alt=""></div>

#### 4) Click`SD Card` button and choose the g-code file.

<img src="/files/-MEvPn88GGsDHu_ybBJ8" alt="" data-size="original"> <img src="/files/-MEvQ7qXT0A0NhtfyF3O" alt="" data-size="original">&#x20;

#### 5) Clic&#x6B;**`Start`**&#x62;utton to start printing.&#x20;

<div align="left"><img src="/files/-Ly7IR_5-THQeIc0TKTx" alt=""></div>

{% hint style="warning" %}
:brain: **Note:** You can only return to the previous step or home page only when the working is completed or stopped. &#x20;
{% endhint %}

## 6. Remove the print

After printing finished, remove the model from the print sheet.


# Generate 3D Printing G-code with Cura

{% hint style="success" %}
:date: **Update: 2020/08/17**
{% endhint %}

## Generate G-code with Cura

**1. Click** [**here**](https://ultimaker.com/software/ultimaker-cura) **to download Cura software.**

**2. Download Cura configuration files and testing models on our Download Center.**

[**Cura Profile for Rotrics DexArm**](https://www.rotrics.com/pages/download)

**3. Open Cura, add printer into the software according to the following instructions:**

It's required to add new printer when you open Cura for the first time. After adding, please jump to step 4 for generating G-code.

A. Click **`Machine`** and add a printer.

`Machine -> Add printer -> Add a non-networked printer -> Custom -> Custom FFF printer`

![](/files/-M7RdslwrY4zhgFU3iiP)

B. Change **`Printer name`** into`Rotrics V1.0` , clic&#x6B;**`Add`** to add a new printer.

![](/files/-M7RdvLPMJQnpseJG_mC)

C. Set the printer settings and extruder parameters:

![](/files/-MFi4h_Oj01vt9Bd_T_H)

* X(Width) - 150 mm  \*this is the width of Rotrics plate. For other plate, please use related width.
* Y(Depth) - 150 mm  \*this is the length of Rotrics plate. For other plate, please use related length.
* Z(Height) - 270 mm
* Origin at center - Yes
* G-code flavor - Marlin
* X min - 0
* Y min - 0
* X max - 0&#x20;
* Y max - 0
* Start G-code, set the module as 3D printing module, set the filament position as 0 and motion mode as straight-line mode

```
;Start G-code
M888 P3
G92 E0 
M2000 
```

* End G-code, stop the cooling fan and stop heating the nozzle and lift up the nozzle after print is finished.

```
;End G-code
M106 S0
M104 S0
G91 
G0 Z20
G90
```

* Set extruder and filament parameters:

![](/files/-MFi52IOb_un9Q8xO5U3)

* Nozzle Size - 0.4 mm
* Compatible material diameter - 1.75 mm

D. Click **`Next`**&#x74;o complete printer setting

4\. Click **`Rotrics V1.0 -> Manage printers -> Profiles -> Import`** to import the recommended Rotrics printing configuration files.

{% hint style="info" %}
:man\_mage: **Tips:** If you haven't downloaded the configuration file in Step 2, click the following file to download > [**Cura Profile for Rotrics DexArm**](https://www.rotrics.com/pages/download)
{% endhint %}

![](/files/-M7RfDExc4xMxNbXNN_W)

You can also customize the printing parameters according to different filaments: layer height, fill density, printing temperature, print speed.&#x20;

5\. Upload your 3D model into workspace.

![](/files/-M7RfPXPaL06NhPmnEcN)

You can get 3D models from these methods:&#x20;

* Use 3D design software, like Fusion 360, Solidworks.&#x20;
* Use 3D scanner.&#x20;
* Through 3D model sharing website like [Thingiverse](https://www.thingiverse.com/).

6\. Adjust 3D model size, orientation with the left control section.&#x20;

![](/files/-M7Rfcx5m_VAVzUYK_tl)

{% hint style="warning" %}
:brain: **Note:** Make sure you've selected the correct machine and print profile before slicing.&#x20;
{% endhint %}

7\. Click **`Slice`** and then **`Save to File`** , save the G-code to your computer.&#x20;


# 🦾Teach & Pneumatic

\*\*📅Update: 2020/08/31\*\*# Introduction

{% hint style="success" %}
**📅Update: 2020/08/17**
{% endhint %}

## Table of Contents&#x20;

{% hint style="info" %}
​​ :man\_mage: **Tips:** You can also click the TOP RIGHT **table of contents** to read the corresponding section​ 👉
{% endhint %}

[1) Teach & Pneumatic Workflow  ](/get-start/picking-and-placing#1-teach-and-pneumatic-workflow)

[2) Set Up for First Use](/get-start/picking-and-placing#2-set-up-for-first-use)

[3) Use Basic Functions ](/get-start/picking-and-placing#3-use-basic-functions)

[4) Teach & Playback](/get-start/picking-and-placing#4-teach-and-playback)

[5) Use Pneumatic Functions with G-code](/get-start/picking-and-placing#5-use-pneumatic-functions-with-g-code-programming)

## 1. Teach & Pneumatic Workflow

[Step 1: Set up Pneumatic Kit and Air Pump Box](/get-start/picking-and-placing#2-set-up-for-first-use)

[Step 2: Start Teach & Play with Rotrics Studio / Touchscreen](/get-start/picking-and-placing#4-teach-and-playback)

## 2. Set Up for First Use

Read the [**Quick Start Guide**](https://cdn.shopifycdn.net/s/files/1/0255/0195/8216/files/Rotrics_DexArm_Quick_Start_Webview_V1.0.2.pdf?v=1594021017) to check the items, assemble the pneumatic module, connect with Air Pump Box and set up DexArm for the first use.

{% hint style="info" %}
:man\_mage: **Tips:** The **M-shape** plastic part is for mounting the transparent air tube on DexArm. <img src="/files/-MEw4N3sB1x6wXI7g4ID" alt="" data-size="original">&#x20;
{% endhint %}

## 3. Use Basic Functions

### Pneumatic Module Status

**1) Air pump box working status**

The air pump box has 3 working status:

* Pump in
* Pump out
* Release air
* Close all pumps

**2) Suction cup working status**

The suction cup has 2 working status:&#x20;

* Pick (pump in)
* Place (pump out)

So you only need to control Air Pump Box to pump in or pump out for a picking/placing task.&#x20;

**3) Soft gripper working status**

The soft gripper has 3 working status:&#x20;

* Pick (pump out)
* Place (pump in)
* Neutral (release air)

Except for pump in and pump out, you need to return soft gripper to neutral status after each action is done.

### With Rotrics Studio software

#### 1) Clic&#x6B;**`Basic -> Front End`**&#x74;o choose relevant modules.

![](/files/-MBy0OyKlR5Z2K08Cu-1)

#### 2) Clic&#x6B;**`Pick / Place`**&#x75;nder Air Pick o&#x72;**`Grip / Release / Neutral`**&#x75;nder Soft Gripper to control pneumatic functions.

![](/files/-MBy0bTBqR-v-5nE_dtA)

<div align="left"><img src="/files/-MBy0fX3ewVmVGoWOyGW" alt=""></div>

#### 3) After picking items up, clic&#x6B;**`X±、Y±、Z±`**&#x62;uttons i&#x6E;**`Control`**&#x73;ection to control DexArm's movement.&#x20;

![](/files/-MBy0uI9WZNWIpJsMuoH)

### With Touchscreen

#### 1) Connect the touchscreen with the robot arm, clic&#x6B;**`Pneumatic`**&#x74;o select the module.

Here, we are using Air Pick as an example.

<div align="left"><img src="/files/-M7Rnd2AjBKeHbPZ8OIJ" alt=""></div>

#### 2) Click **`HOME`** to move DexArm to the  HOME position first.

<div align="left"><img src="/files/-M7Rnm_zIDCDroK1uuKh" alt=""></div>

#### 3) Click `X±、Y±、Z±` buttons to move DexArm to the item position.

<div align="left"><img src="/files/-M7Rny_8hQ2PcpfqM3Ut" alt=""></div>

#### 4. Click **`Pick`** to pick up the item.&#x20;

<div align="left"><img src="/files/-M7Ro8Wz13ggP_zRq2VP" alt=""></div>

#### 5. Click X±、Y±、Z± buttons to move the item to the destination

#### 6. Click Place to place the item.&#x20;

#### 7. Repeat Step 3-6 to move all the items.

#### 8. Click `Stop` to turn OFF Air Pump Box after finished.&#x20;

## 4. Teach & Playback

Rotrics Studio software can control the picking/placing functions and record robot arm movements, you can also control robot arm movement with G-code programming.

### With Rotrics Studio software

#### 1) Clic&#x6B;**`Basic -> Teach & Play -> On`**&#x74;o enter Teach\&Play mode.&#x20;

<div align="left"><img src="/files/-MBy1uXMle1qA_5xu937" alt=""></div>

After turn on the teach\&playback function, select the right module and click OK.

![](/files/-MBy2Gd1S45ouF8qaJwD)

<div align="left"><img src="/files/-MBy2V3YQJQ8YHxNIZbs" alt=""></div>

#### 2) Drag the Arm to a position and click <img src="/files/-MEw-fnMzlytfrQjb5Uy" alt="" data-size="original">**`Record`** to record this position and module status

There will be a new record in the Record List

<div align="left"><img src="/files/-MBy2ykdVIr9H1SH6p9M" alt=""></div>

#### 3) Click Pick to pick the item up, and click<img src="/files/-MEw-fnMzlytfrQjb5Uy" alt="" data-size="original"> **`Record`** to record this position and module status

{% hint style="info" %}
:man\_mage: **Tips:** if you are using soft gripper for Teach & Playback, please click **`Release`** before **`Grip`** item, lower the module to relevant position and then **`Grip`**.
{% endhint %}

![](/files/-MBy3iIOUWK-7qw3rhn_)

#### 4) Move up for a target distance( such 5cm), and click<img src="/files/-MEw-fnMzlytfrQjb5Uy" alt="" data-size="original"> **`Record`** to record this position and module status.&#x20;

{% hint style="info" %}
:man\_mage: **Tips:** In order to prevent DexArm from accidentally colliding with the object during the movement, it is necessary to let the Arm move according to the trajectory of **∏**, which means to lift a certain distance, then move to a position above the target point, and then move down.
{% endhint %}

#### 5) Drag DexArm to a position 5cm higher than the target position, and click <img src="/files/-MEw-fnMzlytfrQjb5Uy" alt="" data-size="original">**`Record`** to record this position and module status.&#x20;

#### 6) Drag the Arm to the target position, and click Place to place item down. Click <img src="/files/-MEw-fnMzlytfrQjb5Uy" alt="" data-size="original"> **`Record`** to record this position and module status.&#x20;

#### 7) Click **`Off`** button beside Teach & Play Mode to complete teaching.&#x20;

#### 8) Scroll Record List, and check all recorded action. Clic **`Set Delay`** to add waiting time between every action.&#x20;

<div align="left"><img src="/files/-MBy4Ka0ojPt5d7IXi2o" alt=""></div>

#### 9) Click <img src="/files/-MEw-01KegfZGYqOhQrg" alt="" data-size="original"> to playback all the actions.

<div align="left"><img src="/files/-MBy4UijFFvqb0M9fo6g" alt=""></div>

### With Touchscreen&#x20;

#### 1) Connect the touchscreen with the robot arm, clic&#x6B;**`Basic -> Reset -> Home`**&#x74;o move DexArm to HOME position.

<div align="left"><img src="/files/-M7Rzg84DEyRAGZ2NfQA" alt=""></div>

#### 2) Click **`Teach -> Air Pick / Soft Gripper`**.

Here we use Air Pick as an example.&#x20;

![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5_wyp3cA9Lpbm6mtfX%2F-M5aCaK-TF-Vcf-5XvWJ%2Fimage.png?alt=media\&token=13b418cb-61a5-4620-896d-3e7d9fba2048)

#### 3) Click `DISABLE` to start Teach\&Play,

<div align="left"><img src="/files/-M7RzzmR2aT5wyKU-teu" alt=""></div>

{% hint style="info" %}
:man\_mage: **Tips:** DISABLE will disable the motor, and allow you to drag the arm
{% endhint %}

#### 4) Drag the Rotrics Arm and move it to the target position.

#### 5) Tap **`PICK`** to pick the item up.

![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5_wyp3cA9Lpbm6mtfX%2F-M5aC48XymjydO-wlyF-%2Fimage.png?alt=media\&token=2e4c5f6c-ce8d-4331-83a2-e08129f26f12)

#### 6) Click **`RECORD`**&#x74;o record this position and the module status

![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5_wyp3cA9Lpbm6mtfX%2F-M5aCPWXBjett0NCcF6K%2Fimage.png?alt=media\&token=afc50d76-dcc4-45b8-a1fe-43e133157fc0)

#### 7) Drag the arm to another position, click `PLACE` to place item down![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5_wyp3cA9Lpbm6mtfX%2F-M5aCLbRkq0vMAE0rnUc%2Fimage.png?alt=media\&token=bb1ef465-93e7-406e-8166-918883edbdfa)

#### &#x20;8) Click `RECORD` to record this position and the module status

![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5_wyp3cA9Lpbm6mtfX%2F-M5aCPWXBjett0NCcF6K%2Fimage.png?alt=media\&token=afc50d76-dcc4-45b8-a1fe-43e133157fc0)

#### 9) Repeat Step 4-8 to record every action and position.

![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5_wyp3cA9Lpbm6mtfX%2F-M5aCaK-TF-Vcf-5XvWJ%2Fimage.png?alt=media\&token=13b418cb-61a5-4620-896d-3e7d9fba2048)

{% hint style="info" %}
:man\_mage: **Tips:** You can add waiting time after each action, so the Arm will wait a few seconds before each action.
{% endhint %}

#### 10) Click **`REPLAY`** to play the whole process.

![](https://gblobscdn.gitbook.com/assets%2F-LtPFIBncU5l4J8tl5Yh%2F-M5_wyp3cA9Lpbm6mtfX%2F-M5aChTKdxk6G4doWWCQ%2Fimage.png?alt=media\&token=de90ab49-44cf-40c0-b8b1-7334ff728d62)

### Function Update

**Old Version**&#x20;

* `M893` obtain the magnetic encoder position;&#x20;
* `M894` move to the magnetic encoder position;
* The above commands remain in the new version.

\
**New Version (for firmware V2.2.0 and above)**

* **`M895`** inversely obtains the front end module position via the magnetic encoder value and the module off-set value.&#x20;
* **`M896`** moves to a specified position under Fast, Line, Jump moving mode.

**P0-2**, corresponding to the three moving modes of Fast, Line, and Jump respectively. The default is Fast mode.

* **Fast mode** corresponds to `G0` or `M2001`,
* **Line mode** corresponds to `G1` or `M2000`, added over-limit detection of interpolation points during line mode,&#x20;
* **Jump mode** is divided into three steps, from the current position to raise the height of H, move horizontally to the target position, and move vertically to the target position.
* **F** corresponds to the moving speed, H corresponds to Jump height, the F default value is 3000unit/min, the H default value is 50mm.&#x20;

\
**Sample**Obtain the current position

* Send: ​`M895`​
* recv: ​`X:0.00 Y:320.00 Z:0.00​`

Set to tech\&play and setup JUMP height, ​`M896 P2 F5000 H20`, ​Move to the target position, `​M896 X0 Y320 Z0`\
**Function Updated**-In the previous version, the target position is not exceeding the limit, but the interpolation point goes beyond the limits during line mode. In the new version, the over-limit detection of the interpolation point is added during Line Mode under `G1` and `M2000`.\
-After the M17 three-axis motor is enabled, the current position value can be obtained and set through the magnetic encoder value, and the front-end module offset value by inverse solution, no need to send `M1112` to return to HOME.

## 5. Use Pneumatic Functions with G-code Programming&#x20;

To use G-code for pneumatic work, you need to create a new **`.gcode`** file, open it with the notepad or a third-party text editor, enter the robot arm motion control commands, and send it to the robot arm through Rotrics Studio software to start picking and placing.

### **1) G-code commands instructions**

#### Motion control commands:

* **`G0 X300 Y20 Z0`** -move to position (300, 20, 0)
* **`G0 F3000`** -move speed 3000mm/min
* **`M2000`**- straight line mode
* **`M2001`**- fast mode

#### Air pump box control commands:

* **`M888 P2`** -identify the end effector as pneumatic module
* **`M1000`** -air pump box to pump in&#x20;
* **`M1001`**- air pump box to pump out
* **`M1002`**- air pump box to release air,
* **`M1003`**- stop air pump box,

### **2) Pneumatic G-code workflow:**

A. Use command M888 P2 to identify the end effector as pneumatic module.

B. Use command M2000 or M2001 to set robot arm motion mode.

C. Use command G0 to control robot arm movement.

D. Use command M1000-M1003 to control air pump box.

{% hint style="warning" %}
:brain: **Note:** the commands for the soft gripper and the suction cup is **opposite**. Specific description is as follows.
{% endhint %}

**Workflow for the suction cup**:&#x20;

* Use command **`M1000`**&#x74;o pump in and pick up items.
* Use command **`M1002`**&#x74;o release air, relieve the internal pressure of the air pump and place the item down.
* Use command **`M1003`**&#x74;o close all air values.&#x20;

**Workflow for the soft gripper:**

* Use command **`M1001`** to make the air pump box to pump out, the soft gripper will grasp, and pick up the item.
* Use command **`M1000`** to make the air pump box to pump in, the soft gripper will release and place the item down.
* Every time the soft gripper stops, use command **`M1002`**&#x74;o release air and relieve internal press of the air pump box.&#x20;
* Then use command **`M1003`** to close all air values.


# 📷Computer Vision

{% hint style="success" %}
**📅Update: 2020/09/02**
{% endhint %}

## Introduction

The Rotrics computer vision kit is the official camera kit that allows you to easily implement vision applications with DexArm. Our plan for this camera kit is not only to use it for vision applications, but also use it in laser engraving to preview the engraving work.&#x20;

Before that, it's recommended to use the Vision Terminal to deploy computer vision projects. In the Vision Terminal, we provide two demos(woodblocks recognizing and chocolate bean sorting) for you to experience the color recognizing process.

We've proudly open-sourced the project on our[ GitHub page](https://github.com/Rotrics-Dev/DexArm_Demo/tree/master/Rotrics%20Vision%20Terminal). If you want to integrate the computer vision kit into your current project, feel free to download and try it out.

Welcome to share your vision projects to the community, really looking forward to your creations! For any questions, please email us at <support@rotrics.com>‌.

## Table of Contents

{% hint style="info" %}
&#x20;:man\_mage: **Tips:** You can also click the TOP RIGHT **table of contents** to read the corresponding section​ 👉
{% endhint %}

[1) First use set-up](/get-start/computer-vision#1-first-use-set-up)

[2) Calibrate the recognizing parameter](/get-start/computer-vision#2-calibrate-the-recognizing-parameter)

[3) Start recognizing](/get-start/computer-vision#3-start-recognizing)

[4) Program your own project](/get-start/computer-vision#4-program-your-own-project)

## Color Recognizing Workflow

[1) First use set-up](/get-start/computer-vision#1-first-use-set-up)

[2) Calibrate the recognizing parameter](/get-start/computer-vision#2-calibrate-the-recognizing-parameter)

[3) Start recognizing](/get-start/computer-vision#3-start-recognizing)

## 1. First use set-up

### 1.1 Download the Rotrics Vision Terminal

* Mac OS: coming soon
* Windows: [https://bit.ly/2GmniPy](https://drive.google.com/file/d/1BEe3hsuC-JQBUHRXuPj7xE3VOSMd6s_0/view?usp=sharing)

### 1.2 Assemble the camera

#### 1.2.1 Assemble the left camera mount on the camera.

#### 1.2.2 Mount the left part on DexArm and assemble the right part.

![](/files/-MGCxwim-fXCAAg5OSMj)

![](/files/-MGDH4icGCkDfE59ghCH)

### 1.3 Connect it to your computer

![](/files/-MGDHZYikGnLXWRbcA04)

## 2. Calibrate the recognizing parameter

### 2.1 Connect with DexArm and camera

Open Rotrics Vision Terminal and connect with DexArm and camera.

![](/files/-MGDI6MiJEkPgZkjcI6E)

Once DexArm has been connected, it will automatically move to the height preview position. You can check the camera's sight area on the **TOP LEFT** image. DexArm couldn't pick up the items that out of the sight area. If you couldn't see all the items in the area, please move DexArm or the items and make sure they are in the sight area.

### 2.2 Choose the demo and adjust the color value.

* Select the **Wood Block Demo** or **Chocolate Bean Demo**.
* Choose the target color.
* Adjust the HSV value until you can see the woodblocks in the **TOP RIGHT** result area.

![](/files/-MGDIEvrL25hHzzOsw8E)

![](/files/-MGDINtXH3jNCEACuvkg)

### 2.3 Set the target position.

Choose the color and use the DexArm panel to move DexArm to the corresponding place position.

![](/files/-MGDIVaiJhiw5s3mcrAO)

{% hint style="info" %}
:man\_mage: **Tips:** Click **HOME** button every time you set a target position for a new color.
{% endhint %}

## 3. Start recognizing.

After all color are set, click **`Start`** to run the demo.

If you find that DexArm couldn't pick at the center of the item, try to adjust the XY Multiple values and run again.

![](/files/-MGDIrPZ7a8A0kffIexq)

* X Multiple: the X axis's ratio between image coordinate and DexArm's cartesian coordinate. The value is different in different Z height.
* Y Multiple: the Y axis's ratio between image coordinate and DexArm's cartesian coordinate. The value is different in different Z height.

## 4. Program your own project

Thanks for the continued support from the crowdfunding and maker community, we finally able to bring our dream to life and ship DexArm to you. Now it's time for us to pay back. We've proudly open-sourced the Rotrics Vision Terminal on GitHub. If you are interested in integrating it into your project, you can get the source code on our [**GitHub Page**](https://github.com/Rotrics-Dev/DexArm_Demo/tree/master/Rotrics%20Vision%20Terminal).

Before building your own vision project, please make sure you've learned to program python.

The concept of the Vision Terminal is to use a camera to recognize the items' color and shape. Here are the IDE and tools we use:

* Programming Language: **Python 3.6**
* Python IDE: **Visual Studio Code**
* Image Process Tools: **OpenCV-Python 3.4.1.15**
* Serial Port Communication: **pySerial 3.1**
* Interface Construction: **PyQt5**

The project is built on Visual Studio Code and it's recommended to use the same platform to build it. But you can also use the other Python IDE such as PyCharm, Idle, PyDev to build it.


# 🔄Rotary Module

{% hint style="success" %}
**📅Update: 2021/06/08**
{% endhint %}

{% hint style="info" %}
:man\_mage: **Tips:** Upgrade DexArm's firmware to **V2.2.2** and above before using the rotary module.
{% endhint %}

{% content-ref url="/pages/-MEv\_w8bMnEWtJpIQWoK" %}
[How to upgrade DexArm's firmware?](/faq-troubleshooting/faqs/how-to-upgrade-rotrics-firmware)
{% endcontent-ref %}

The rotary module allows you to turn your DexArm into a 4-DOF robot arm. It's designed for makers and DIYers with many great features. The built-in 12V coreless motor and reducers design brings up to 500g payload capacity.

The universal adapter design makes it easy to switch between soft gripper, suction cup module. The 360-degree air connector design allows you to pick and rotate items without twisting the air tube.

We are still working on upgrading the Rotrics Studio software to control the rotary module. Before that, it's recommended to use G-code commands to control the rotary module.

## Table of Contents

{% hint style="info" %}
&#x20;:man\_mage: **Tips:** You can also click the TOP RIGHT **table of contents** to read the corresponding section​ 👉
{% endhint %}

[1) First use set-up](/get-start/rotary-module#1-first-use-set-up)

[2) G-code commands for Rotary Module](/get-start/rotary-module#2-g-code-commands-for-rotary-module)

[3) Start picking and placing](/get-start/rotary-module#3-start-picking-and-placing)

[4) Integrate Rotary Module into your projects](/get-start/rotary-module#4-integrate-rotary-module-into-your-projects)

## 1. First use set-up

### 1.1 Part List

![](/files/-MT-jZjPKNT5_oELV8NF)

### 1.2 Rotary Air Pick Module

#### 1.2.1 Assemble Rotary Air Pick Module

![](/files/-MT-jctXLGL-hrc_5gFQ)

#### 1.2.1 Connect with Air Pump Box

![](/files/-MT-jgje2vwXfQQTbh4C)

### 1.3 Rotary Soft Gripper Module

#### 1.3.1 Assemble Rotary Soft Gripper Module

![](/files/-MT-jocrEQXtqFLVWSBE)

#### 1.3.2 Assemble pressure-limiting value

![](/files/-MT-js8OloZulj9ydT0u)

Use two short air tubes in the OLD pneumatic kit to connect the T-shaped air connector.

#### 1.3.3 Connect with Air Pump Box

![](/files/-MT-jxQ5pmkZrY9X3GDF)

## 2. Control Rotary Module with Rorics Studio

{% hint style="success" %}
:man\_mage: ​**Tips:** Make sure you've updated Rotrics Studio to V1.0.1 and above. You can download it on our Download Center - <https://www.rotrics.com/pages/downloads>
{% endhint %}

Go to **Basic -> Control Panel -> Front End**.

### 2.1 Rotary Air **P**icker

#### **2.1.1 Select the Rotary Air Picker module**

<div align="left"><img src="/files/-Mbocl1kVO-WA749rLBb" alt=""></div>

#### **2.1.2 Control Air Picker** function with **pick / release / off** butto&#x6E;**.**

#### **2.1.3 Control Rotary Function**

**A. Relative mode**

In relative mode, the rotary module with mode relatively. We can control the rotated degrees and the direction. Click the <img src="/files/-MbokQIFcjdo5dCStcmq" alt="" data-size="original"> to rotate in clockwise direction and click <img src="/files/-MbokC5aIyRSXey4KZlD" alt="" data-size="original">to rotate in counter-clockwise direction.&#x20;

**B. Absolute mode**

In absolute mode, the rotary module will rotate to the target degree in the shortest way. The degree range is 0 - 360 degrees.&#x20;

**C. Continous mode**

In continuous mode, the rotary module will keep rotating at a specific speed. The speed range is 0 - 100. Set speed to 0 and it will stop.

### 2.2 Rotary Soft Gripper

#### 2.2.1 Select the Rotray Soft Gripper Module

<div align="left"><img src="/files/-Mbom-GpsGA9XuPz9UZf" alt=""></div>

#### 2.2.2 Control Soft Gripper function with grip / release / neutral / off buttons.

**2.2.3 Control Rotary Function**

**A. Relative mode**

In relative mode, the rotary module with mode relatively. We can control the rotated degrees and the direction. Click the <img src="/files/-MbokQIFcjdo5dCStcmq" alt="" data-size="original"> to rotate in clockwise direction and click <img src="/files/-MbokC5aIyRSXey4KZlD" alt="" data-size="original">to rotate in counter-clockwise direction.&#x20;

**B. Absolute mode**

In absolute mode, the rotary module will rotate to the target degree in the shortest way. The degree range is 0 - 360 degrees.&#x20;

**C. Continous mode**

In continuous mode, the rotary module will keep rotating at a specific speed. The speed range is 0 - 100. *Set speed to 0 and it will stop.*

## 3. Start picking and placing

### 3.1 With Teach & Play

#### 3.1.1 Enter Teach & Play mode and select module

<div align="left"><img src="/files/-Mbp2KMFbm6c7H_Sslsf" alt=""></div>

<div align="left"><img src="/files/-Mbp2SEWMFw_Cf-8-n6B" alt=""></div>

#### 3.1.2 Drag DexArm to the target position

#### 3.1.3 Control the rotary and pneumatic functions

<div align="left"><img src="/files/-Mbp2htHKm8lQ9jDxJpW" alt=""></div>

#### 3.1.4 Record the movement

<div align="left"><img src="/files/-Mbp2qeyy0rRc7Pp6YX6" alt=""></div>

#### 3.1.5 Replay the movements

<div align="left"><img src="/files/-Mbp3-Zy1ap94CQy4w42" alt=""></div>

### 3.2 With Scratch

#### 3.2.1 Set front end module

Use the "select module \_\_" block to select the right module.

<div align="left"><img src="/files/-Mbp0aGAC-_1L1Sx3e4a" alt=""></div>

#### 3.2.2 Move DexArm to target position

{% hint style="success" %}
:man\_mage: **Tips:** Make sure you've moved DexArm to HOME position first.
{% endhint %}

<div align="left"><img src="/files/-Mbp0vRa5WJa1xkhsTRl" alt=""></div>

#### 3.2.3 Control Air Picker and Soft Gripper functions

<div align="left"><img src="/files/-Mbp20yJJU8R9vty_6kU" alt=""></div>

#### 3.2.4 Control Rotary function

<div align="left"><img src="/files/-Mbp29uWSA64D6p2XUGa" alt=""></div>

## 4. Integrate Rotary Module into your projects

Basically, the rotary module is a high-level servo motor. We've released the 5-pin end effector port for you to DIY your own rotary module for your projects.&#x20;

**G-code commands for Rotary Module**

### 4.1 Initialize

* **M888 P6** - Set the current end effector as a rotary module and initialize it
* **M2100** - Initialize the rotary module every time DexArm restarts
* **M2103** - Read the current rotary firmware version. The factory version is V1.1.2.

### 4.2 Read position

* &#x20;**M2101** - Read the current rotary position

### 4.3 Relative rotating

* **M2101 R< n >**

Rotate **n** degrees in the clockwise direction

* **M2101 R< -n >**&#x20;

Rotate **n** degrees in the counterclockwise direction

n is a floating number and it could be more than 360. Such as M2101 R1080 stand for rotating 3 turns in the clockwise direction.

### 4.4 Absolute rotating

* **M2101 P< n >**

Rotate to position **n** degree.

**n is a floating number between 0 and 360.**

### 4.5 Continuous rotating

* **M2101 S< n >**&#x20;

Continuously rotating in the clockwise direction at speed **n**.

* **M2101 S< -n >**

&#x20;Continuously rotating in the counterclockwise direction at speed **n**.

**n is a number between 0 and 100. 0 for stopping and 100 for the highest speed.**

Welcome to share your projects with the community! For any questions, please submit a post on [community.rotrics.com](https://community.rotrics.com) or email us at <support@rotrics.com>.


# Sliding Rail Kit

{% hint style="success" %}
**📅Update: 2021/06/05**
{% endhint %}

## Table of Contents

[1) Set up for first use](/get-start/sliding-rail-kit#1-set-up-for-first-use)

[2) Start using](/get-start/sliding-rail-kit#2-start-using)

[3) Integrate Sliding Rail Kit into your project.](/get-start/sliding-rail-kit#integrate-sliding-rail-kit-into-your-project)

## 1. Set up for first use

Read the [**Installation Guide**](/get-start/sliding-rail-kit/sliding-rail-kit-installation-guide) to check the items, assemble the sliding rail and set up for the first use.&#x20;

{% content-ref url="/pages/-MIIYWV5anR\_ZNCxHxH4" %}
[Sliding Rail Kit Installation Guide](/get-start/sliding-rail-kit/sliding-rail-kit-installation-guide)
{% endcontent-ref %}

## 2. Start using

{% hint style="success" %}
:man\_mage:**Tips:** Make sure you've updated Rotrics Studio to V1.0.1 and above. You can download it on our Download Center - <https://www.rotrics.com/pages/downloads>
{% endhint %}

{% hint style="success" %}
:man\_mage: **Tips:** Make sure you've updated DexArm's firmware to V2.2.2 and above. You can update it by clicking **Setting -> General -> check update** on Rotrics Studio.&#x20;
{% endhint %}

### 2.1 Control Sliding Rail with Rotrics Studio.

#### 2.1.1 Initialize the Sliding Rail

{% hint style="warning" %}
:brain:**Note:** The sliding rail uses a different step motor as DexArm. We need to finish the initialization to change the step-per-unit value before using it.&#x20;
{% endhint %}

Move DexArm to the **middle** of the sliding rail and then power on. Open Rotrics Studio and click **Basic -> Accessories -> Sliding Rail ->** <img src="/files/-Mbo02iQgvDmeN8Y1tIE" alt="" data-size="original"> to initialize your sliding rail.

![](/files/-Mbo0H3x3RFXt3zNCjdY)

DexArm will automatically update the "axis\_steps\_per\_unit" of the E axis, meanwhile, the sliding rail will move to its home point through stallguard and sensorless\_homing of TMC2209.&#x20;

Now, we can start controlling it with Rotrics Studio. We can use the **Left / Right** arrow button to control the sliding rail since it's been connected to the 12-pin motor port.&#x20;

{% hint style="success" %}
:man\_mage: **The recommended speed range is 2000 - 5000 mm/min**
{% endhint %}

### 2.2 Drawing with Sliding Rail

We provided a sample svg file for you to experience drawing with the sliding rail. Click the link below to download it.

{% file src="/files/-MITEgi49vJPa-xkcTUe" %}
Landscape of Beijing - for drawing test
{% endfile %}

#### How to use it?

**Step 1:** Set up drawing board and sliding rail.&#x20;

Put a 1 meter long board below DexArm and stick a paper on it.&#x20;

Power on DexArm and move it to the center of the drawing board.&#x20;

![](/files/-MITMLLbBxqgCGFsU0Ve)

{% hint style="success" %}
**Tips:** it's recommended to stack the board up to the Z0 height of DexArm so that we can get the biggest working area.&#x20;
{% endhint %}

**Step 2:** Enter Advance mode

{% hint style="success" %}
:man\_mage:**Tips:** The Advance mode is designed for drawing and laser engraving with sliding rail. It will cancel the workspace limitation of Drawing and Laser. It will also change X-axis movements to E-axis movements.&#x20;
{% endhint %}

Go to **Setting -> Config -> Advance** and toggle the switch.&#x20;

![](/files/-Mbo2AG1BWe8-p9PpCXp)

**Step 3:** Set Work Origin.

Click **Z-** to move DexArm until the nip touches the paper.&#x20;

<div align="left"><img src="/files/-Mbo1qyS126TtooTlzUC" alt=""></div>

Open Termianl and send **G92 X0 Y0 Z0 E0** to set work origin.

![](/files/-Mbo1NoOLiIBox5onbfe)

{% hint style="success" %}
:man\_mage: **Tips:** You can add a custom button to set the Sliding Drawing origin if you drawing with the sliding rail often.
{% endhint %}

<div align="left"><img src="/files/-MboZRARb-0WhXQbXskC" alt=""></div>

<div align="left"><img src="/files/-Mbo3Ntuc-uS01U8YcQP" alt=""></div>

**Step 4:** Import it to Rotrics Studio's drawing panel.&#x20;

![](/files/-Mbo45Wmah_ToUWqUFy3)

**Step 5:** Change the working parameters👇

{% hint style="warning" %}
:brain:**Note:** Do NOT set the SVG width over the Sliding Rail's 1000mm working rage.&#x20;

Make sure the origin of the picture is in X0 Y0.
{% endhint %}

* Width: 800mm
* Move Y: 0
* Move X: 0
* Work Speed: 4000
* Work Acceleration: 200  (Set it in Terminal by sending **M204 S200**)

**Step 6:** Click Generate G-code and Start Drawing.&#x20;

<div align="left"><img src="/files/-Mbo4OakwWTwVB4mCK2f" alt=""></div>

### 2.3 Laser Engraving with Sliding Rail.

{% hint style="danger" %}
❗ **Warning:** This is an experimental feature! Make sure you are waring Safety Goggles thorough the whole process.&#x20;
{% endhint %}

**Step 1**: Set up laser material and sliding rail.&#x20;

Place a long material below DexArm and focus the laser module.  Move DeArm to the center of the material.

![](/files/-MITPOpFqc_hrkgBbQ9p)

**Step 2:** Enter Advance mode

{% hint style="success" %}
:man\_mage:**Tips:** The Advance mode is designed for drawing and laser engraving with sliding rail. It will cancel the workspace limitation of Drawing and Laser. It will also change X-axis movements to E-axis movements.&#x20;
{% endhint %}

Go to **Setting -> Config -> Advance** and toggle the switch.&#x20;

![](/files/-Mbo2AG1BWe8-p9PpCXp)

**Step 3:** Set Work Origin.

Click **Z-** to move DexArm until the nip touches the paper.&#x20;

<div align="left"><img src="/files/-Mbo1qyS126TtooTlzUC" alt=""></div>

Open Termianl and send **G92 X0 Y0 Z0 E0** to set work origin.

![](/files/-Mbo1NoOLiIBox5onbfe)

{% hint style="success" %}
:man\_mage: **Tips:** You can add a custom button to set the Sliding Drawing origin if you drawing with the sliding rail often.
{% endhint %}

<div align="left"><img src="/files/-MboZRARb-0WhXQbXskC" alt=""></div>

<div align="left"><img src="/files/-Mbo3Ntuc-uS01U8YcQP" alt=""></div>

**Step 4:** Import the SVG file above into Rotrics Studio's laser panel.&#x20;

![](/files/-Mbo_ELd2HIRxwtATlJx)

**Step 5:** Set the Transformation parameters as illustrate below and set your common working parameter.&#x20;

* Width: 800mm
* Move X: 0
* Move Y: 0

<div align="left"><img src="/files/-Mbo_ZKvQsPofS1Rx3Da" alt=""></div>

**Step 6:** Click Generate G-code and Start Drawing.&#x20;

<div align="left"><img src="/files/-Mbo4OakwWTwVB4mCK2f" alt=""></div>

## Integrate Sliding Rail Kit into your project.

Just like controlling DexArm, we use G-code commands to control the sliding rail's movement as well.

After setting up the sliding rail kit,  send the G1 Exx Fxx command via serial and you can control the movements.&#x20;

```
;G1 Exx Fxx - move sliding rail xx mm at speed xx mm/min 
G1 E100 F2000; move sliding rail forward 100mm at speed 2000 mm/min 
```

{% hint style="success" %}
:man\_mage: **The recommended speed range is 2000 - 5000 mm/min**
{% endhint %}

Learn more about DexArm's API here👇

{% content-ref url="/pages/-LvharHGWiC18Of\_GpBr" %}
[Introduction](/gcode/api-and-sdk)
{% endcontent-ref %}


# Sliding Rail Kit Installation Guide

## 1. Part List

1. Linear Rail
2. Motor Cage
3. Base Block
4. Coupling
5. Step Motor
6. DexArm Board
7. Air Pump Box Board
8. Wire Set
9. Tool Kit
10. Drag Chain Front Plate
11. Drag Chain Mount Plate
12. Hook
13. M5\*10 Countersunk Head Hex Screw
14. M5\*8 Hex Socket Screw
15. M5\*10 Hex Socket Screw&#x20;
16. M3\*4 Countersunk Head Hex Screw
17. M3\*6 Hex Socket Screw
18. M5 Square Nut
19. Elastic Rubber Ring
20. Step Motor Wire
21. 1.5M DC Y Power Splitter
22. 1.5M USB A-C Cable
23. 10\*2mm Rubber Stopper
24. Foot Mat

## 2. Start Assembly

### 2.1 Prepare cable and drag chain.

![](/files/-MIIjm_wXcAcjZeWbMVi)

#### 2.1.1 Use a tap to fix the DC Y power splitter, 4-pin motor cable, USB A-C cable together.

![](/files/-MIIZ0E5oMjT9RQ-bcBw)

#### 2.1.2 Insert them into the drag chain.

![](/files/-MIIZ9CXb7GSgKmf_2A1)

### 2.2 Prepare for assembling.

**2.2.1 Insert the rubber stoppers into the base.**

![](/files/-MIIZCJn-sXF0ymf0Zwv)

![](/files/-MIIZHMknUMiK3D_6-FS)

**2.2.2 Put the square nuts into the lower slide of linear rail.**

![](/files/-MIIZLA_AD_sxaENctKy)

* Put 8 square nuts to the side of motor axis
* Put 4 square nuts to the other side.

![](/files/-MIIZP4WPyc6FhT2M1Xi)

![](/files/-MIIZR3wohGB5oRUt362)

### 2.3 Assemble the base.

![](/files/-MIIZX4BlKSZ5mwsm7wR)

![](/files/-MIIZYnoL7-OxNcTBrt1)

![](/files/-MIIZ_kJMtpAwanXZkrE)

![](/files/-MIIZd1S_4GHG8xn3N5c)

### 2.4 Assemble the drag chain plates.

![](/files/-MIIZihpSJef3E-pCTp0)

* The front plate is near the motor axis.
* The back plate is on another side.

![](/files/-MISy2DAn2WxYzTF7WST)

![](/files/-MISy0-r1QlFADATxk-y)

### 2.5 Assemble the motor cage.

![](/files/-MII_2VxPna7RXVeBoNY)

![](/files/-MII_43p23SqyzIMcyni)

### 2.6 Assemble the coupling to the step motor.

![](/files/-MII_BbXssKG5iHl_Gs2)

{% hint style="warning" %}
:brain: **Note:** leave a **4mm** gap between coupling and the step motor. &#x20;
{% endhint %}

![](/files/-MISwHpco0ps4ZaDwdm2)

### 2.7 Assemble motor to linear rail.

#### 2.7.1 Fix motor with M4 screws.

![](/files/-MII_LO3l4I7x8wr6uLv)

Note: make sure the cable port is facing the drag chain plates.

![](/files/-MII_Pk2BO3gB-94Lmlt)

#### 2.7.2 Fasten coupling with linear rail.

![](/files/-MII_Swfg0ymdfwHwHVS)

### 2.8 Fix the hook onto the air pump box board.

M3\*4 Countersunk Head Hex Screw x 2.

![](/files/-MII_Y03U7Eh5n22ktct)

![](/files/-MII_Zu3hvQeYGCz1rpz)

### 2.9 Fix the air pump box board onto the DexArm board.

M3\*6 Hex Socket Screw x 4

![](/files/-MII_csSVeKG0MGg282y)

![](/files/-MII_eYt1-vz_X4cqgw0)

### 2.10 Assemble the DexArm board.&#x20;

M5\*10 Countersunk Head Hex Screw x 4

![](/files/-MII_hWnDDAPRahWVyv6)

![](/files/-MII_jNPbmTi0UwEmrYR)

### 2.11 Assemble the drag chain.

M3\*4 Countersunk Head Hex Screw x 4.

![](/files/-MII_mnC3Ocp7alsLXOU)

{% hint style="success" %}
:man\_mage: **Tips:** for the first batch users, we need to use the spare M3\*6 Hex Socket Screw below to mount the drag chain. <img src="/files/-MII_qTfvq9rC0UGEypz" alt="" data-size="original">&#x20;
{% endhint %}

![](/files/-MII_rzuVoW-fzlmRvAv)

### 2.12 Connect the motor cable.

![](/files/-MII_wGySAEtKxHCA3Rf)

## 3. Connect with DexArm

### 3.1 Mount DexArm

Remove four foot mats from the black base before mount DexArm.

{% hint style="success" %}
:man\_mage: Tips: be careful when you remove the foot mats, make sure it's sticky for next use.&#x20;
{% endhint %}

![](/files/-MII_zSLwTv46dEDzW4s)

![](/files/-MIIa1CapvVMi4RtQQjj)

Fix DexArm on the DexArm board with the M4 hex screws in the DexArm's cable box.

![](/files/-MIIa5qeOcAfiaSSFMSR)

{% hint style="success" %}
:man\_mage: **Tips:** To start picking and placing tasks, we can mount the air pump box on the air pump box board.
{% endhint %}

![](/files/-MIIa8Ldbf4Iszu7jT9m)

### 3.2 Connect cables.

![](/files/-MIIaDlmuqpMwswT93h2)

![](/files/-MIIaC8GSH5Lvo92IYzk)


# Conveyor Belt Kit

{% hint style="success" %}
**📅Update: 2021/06/05**
{% endhint %}

## Table of Contents

[1) Set up for first use](/get-start/conveyor-belt-kit#1-set-up-for-first-use)

[2) Production line simulation](/get-start/conveyor-belt-kit#2-production-line-simulation)

[3) Integrate DexArm and Conveyor Belt Kit into your project](/get-start/conveyor-belt-kit#3-build-your-own-project)

## 1. Set up for first use

Read the [**Installation Guide**](/get-start/conveyor-belt-kit/conveyor-belt-kit-installation-guide) to check the items, assemble the sliding rail and set up for the first use.&#x20;

{% content-ref url="/pages/-MISgZDYHoA3NMZm3j0k" %}
[Conveyor Belt Kit Installation Guide](/get-start/conveyor-belt-kit/conveyor-belt-kit-installation-guide)
{% endcontent-ref %}

## 2. Control conveyor belt with Rotrics Studio

### 2.1 Connect Conveyor belt to DexArm’s 12-pin port

### 2.2 Open Rotrics Studio and go to Basic -> Accessories

{% hint style="success" %}
:man\_mage:**Tips:** Make sure you've updated Rotrics Studio to V1.0.1 and above. You can download it on our Download Center - <https://www.rotrics.com/pages/downloads>
{% endhint %}

![](/files/-MbnnJZp4TGIJJLPSvOm)

Click the **Left/Right** arrow to move **forward/backward**. Click the square button to stop it.&#x20;

## 3. Production line simulation

### 3.1 Color sensor sorting with Scratch and Arduino

We developed a new conveyor belt sensor kit that includes a color sensor and a distance sensor. It allows you to detect items recognize their color and start a sorting project.&#x20;

{% hint style="success" %}
:man\_mage:**Tips:** You can order the NEW conveyor belt sensor kit on our website - <https://www.rotrics.com/pages/products>
{% endhint %}

#### 3.1.1 Place the Rotrics Production Line Map on your desk.

#### 3.1.2 Place all the items on the indicated location.

#### 3.1.3 Connection

#### 3.1.3 Tuning the sensors' parameters with Arduino IDE

* Adjust the color value
* Adjust the distance

#### 3.1.4 Download the Scratch program

#### 3.1.5 Start working

### 3.2 Camera sorting with Python

We prepared two demo projects for you to experience the Rotrics conveyor belt kit. The demo project was programed with Python, make sure you have got some Python programming skills before using it.

* **Woodblock color sorting with one DexArm.**

![](/files/-MITSLRkc8onnPTl618v)

We put the woodblocks on conveyor belt and DexArm recognizes the color and sort them.

* **Woodblock color sorting with two DexArms.**

![](/files/-MITSOSUvphz5s8P410X)

One DexArm picks up wood blocks on the conveyor belt and another DexArm recognizes the color and sorts the blocks.

Click here to download the demo code project👇

{% file src="/files/-MITTbve8N4x5YoJOFJd" %}
Rotrics Conveyor Belt Demo V1.0
{% endfile %}

#### 3.2.1 Place the Rotrics Production Line Map on your desk.

#### 3.2.2 Place all the items on the indicated location.

#### 3.2.3 Connection

2.3.1 Connect Conveyor belt to DexArm’s 12-pin port.

2.3.2 Connect Camera Module and DexArm to your computer.

#### 3.2.4 Start working

Choose the demo project and run it with VS Code or any other Python editors. &#x20;

## 4. Build your own project.

### **G-code command to control conveyor belt**

#### **Usage**

`M2012 [F(rate)] [D(direction)]`&#x20;

`M2013` - Stop  conveyor belt

#### **Parameters**

* `[F(rate)]`  The maximum movement rate of the move between the start and end point. This rate is separated from the of the speed of DexArm's movement.
* `[D(direction)]`The rotate direction of conveyor belt. 1 for positive, 0 for negative.

#### Examples:

```
M2012 F5000 D1 ;rotate at speed 5000
G4 S10 ;wait 10 seconds
M2013 ;stop conveyor belt
```

{% hint style="warning" %}
:brain: **Note:** The speed of conveyor belt is separated from the speed of DexArm.&#x20;
{% endhint %}

### Camera Operation

We used a 480P camera to recognize color and shape of the items on the conveyor belt. You can import the Cam\_dev file to your Python project and use it.&#x20;


# Conveyor Belt Kit Installation Guide

## 1. Part List

1. Conveyor Belt x 1
2. Frame x 2
3. Stand x 2
4. Camera Module x 1
5. Wood Block x 16
6. Production Line Map x 1
7. Motor Cable x 1
8. M4 Allen Key x 1
9. Foot Mat x 4
10. M4 x 8 Hex Screw x 16
11. M4 Slide Nut x 7

## 2. Tool

M4 Allen Key

![](/files/-MIShE6rKQfQ2ohZ69Xs)

## 3. Assemble the conveyor belt

### 3.1 Prepare for installation.

#### 3.1.1 Prepare conveyor belt Stand.

Stick 4 foot mats on the back of two Stands.

![](/files/-MIShV_Mc1fEathcFg0D)

![](/files/-MIShSxzYAvy6LlE1qv_)

#### 3.1.2 Prepare the conveyor belt frame.

Screw 6 M4 x 8 hex screws on your conveyor belt frame with the slide nuts. Don't fasten the screws until next step.

![](/files/-MIShhN42dIrnpkYIqwl)

![](/files/-MIShf34MYyETEO6KSmo)

![](/files/-MIShjn1dhXx-FiUqbRq)

{% hint style="success" %}
:man\_mage: **Tips:** If you want to place the conveyor belt on a tilted desk, you could use two slope holes to mount the frames.
{% endhint %}

![](/files/-MIT2_xFZaIiotdVVbRG)

### 3.2 Assemble the conveyor belt Frame.

{% hint style="success" %}
:man\_mage: **Tips:** when screwing on, screw to loose a little bit first and then fasten, it will help the slid nuts firmly stuck in the slide.&#x20;
{% endhint %}

![](/files/-MISihAvHvo-SlhFpBP2)

![](/files/-MISiq34tnJlqghCmIB8)

![](/files/-MISiuP0BYTpg5oZaO3c)

### 3.3 Assemble the conveyor belt Stand.

![](/files/-MISj-1X9erT0fnHBcUh)

![](/files/-MISixifv_zRDPC7MdS3)

![](/files/-MISj21XY6SPWkup5INs)

### 3.4 Assemble the camera module.

![](/files/-MISj5b6z0gAorxrF2_U)

![](/files/-MISj75uMHThQzwn5JDd)

![](/files/-MISj8X0Cvh40AoAf4l0)

### 3.5 Connect the motor cable.

![](/files/-MISjC07g0Ug5LgcuDYD)

That's all for assembling the conveyor belt. Now click the button below and learn to use the conveyor belt kit.&#x20;


# 🗺️Product Overview

{% hint style="success" %}
**📅Update: 2020/09/28**
{% endhint %}

## Table of Contents

{% hint style="info" %}
:man\_mage: **Tips:** You can also click the TOP RIGHT table of contents to read the corresponding section:point\_right:
{% endhint %}

[1. Introduction](/product-overview/product-profile#1-introduction)

[2. Rotrics DexArm Diagram](/product-overview/product-profile#2-rotrics-dexarm-diagram)

[3. Communication Ports](/product-overview/product-profile#3-communication-ports)

[4. DIY Kit](/product-overview/product-profile#4-diy-kit)

[5. Change Modules](/product-overview/product-profile#5-change-modules)

[6. Maintenance](/product-overview/product-profile#6-maintenance)

## 1. Introduction

Rotrics DexArm is a versatile high precision desktop robot arm. It is equipped with specially designed modular end-effector, super noiseless motor driver and patented decelerator which allows 0.05mm extremely high repeatability.&#x20;

Thanks to the modular design, Rotrics Robot Arm can easily switch among different functions, such as writing/drawing, laser engraving, 3D printing and picking/placing. With easy-to-use software, Rotrics give you an intuitive and interactive way to control and bring your ideas in just a few clicks.&#x20;

Rotrics also provides experienced developers with API in multi-language such as Python and C++. You can easily control the Robot Arm with SDK programming, and integrate it into your existing project.&#x20;

## 2. Rotrics DexArm Diagram

![](/files/-MJWCfjByCScHDsv48iO)

### DexArm's Coordinate System

The default coordinate system is Cartesian coordinate system (also called Rectangular Coordinate system). The origin is located at where the base and Axis-2 meet.&#x20;

![](/files/-MBxIulIQa5nYrK-YBpT)

{% hint style="info" %}
💡**Tips:** To acquire the maximum working space, it's recommended to start working with position **`X0，Y300，Z0`**. In Rotrics Studio software and our touchscreen, we call this position as "**HOME**" position.&#x20;
{% endhint %}

For Rotrics Studio software, it's good to go if your image sizes are under **220x220mm**. *We will add the real-time valid working area in our next version.*&#x20;

![](/files/-MBxKVC7rAsVAnQT_i8C)

If you want to work with G-code generated by a 3rd-party software, please set an offset value (set the working origin position as **`X0, Y300`**), or use command G92 to set working origin position (adjust the Arm to a position and then send command **`G92 X0 Y0 Z0`** ).&#x20;

## 3. Communication Ports

#### DexArm **comes with four communication ports:**

![](/files/-M5aVEXwjkrn4hSQvh7Y)

* 1 x 12-pin motor port for 3D printing extruder, conveyor belt and linear rail
* 2 x  USB type-c ports for serial communication to control other accessories such as touchscreen and air pump box.
* 1 x 5-pin header communication port for 3D printing cooling fan, laser engraving module and the upcoming pneumatic rotating module.

### 12-Pin Ext**ernal Motor Port Pinout**

![](/files/-M76dT5T-6d2AaEubPOM)

* Motor-A1, B1, A2, B2: for 4-wire stepper motor
* PWM x 3: three control interfaces for PWM communication, using the same PWM signal
* +12 x 3: for 12V power
* GND
* ADC&#x20;

### USB-C Ports

![](/files/-MIHSLXVAsvoW7EAOnA_)

Note: The blank ports including A5, A8, B8, B5 are disconnected to the main board.&#x20;

### **5-Pin Module Port Pinout**

![](/files/-M76ePFYPNDyZw04xmnf)

**Schematic**

![](/files/-MJaX76SEe5UDCI8vvvZ)

The 5-pin module port is to control different modules' functions, such as laser engraving module, and the rotatable pneumatic module. It can also be used for DIY modules, for example, DIY a higher power laser module.&#x20;

## 4. DIY Kit

### DIY Board

![](/files/-MIHU5F82sP3P1MmBMCk)

The DIY board is for designing your own module for your DexArm.&#x20;

* TX & RX for Serial communication and I/O control, TX - PA9, RX - PA10. For more details, please refer to the laser module ports schematic below.&#x20;
* PWM is for a 12V PWM control.&#x20;

### USB Type-C Breakout Board

![](/files/-MIHXTjcIQD9YvExNJxd)

The USB Type-C breakout board is for extending DexArm's I/O communication capability so that we can communicate with an external MCU such as Arduino, Rasberry Pi and OpenMV. Or you can use the RX6, TX6, RX3, TX3 for I/O control.&#x20;

* When doing serial communication, use RX3, TX3 as a pair, or use TX6 with RX6 as a pair.
* When doing I/O control, RX6=PC7, TX6=PC6, RX3=PD9, TX3=PD8.

{% hint style="warning" %}
:brain:**Note:** Please DO NOT use the D+ and D- as I/O ports or this board will not able to communicate with your PC.
{% endhint %}

**USB Type-C Pinout**

![](/files/-MIHalQheksk74rHiLHs)

### Module Ports Schematic

![](/files/-MIILHwMVguXSkxn2zlD)

![](/files/-MIIw2l2n8I7tRyQ9R03)

The laser power and the front fan of the 3D printing module are controlled by the same PWM. Both M3 S255 or M106 S255 can make the laser or 3D printing front fan run at full power.

When your laser module fails, you can check the front fan of the 3D printing module. If the front fan of the 3D printing module can work normally, it may be a problem with the laser module. On the contrary, it may be that the front-end cable of Dexarm is off or the motherboard is defective.

* **3D printing module**

![](/files/-MH_wwgB8TpEiyyl1Qxa)

***Thermistors and heating tube parameters***

* MF51-100K B:3950 1% NTC Thermistors / Temp sensors.

* Custom 12V 30W 6\*15mm heating tube.

* **Front end modules including laser module and rotary module.**&#x20;

![](/files/-MH_wrehK29mWdxRnStO)

## 5. Change Modules

Please follow these steps to install/Change modules:

### 1. Turn off the power.

{% hint style="warning" %}
❗**Notice: Do turn off the power before changing modules.**
{% endhint %}

### 2. Press the "End-effector Button" to detach the module.

{% hint style="warning" %}
❗**Notice:** The module may clamp over the end-effector mount tightly.&#x20;
{% endhint %}

### 3. Plugin the module and you can hear a *'tick'*  when it is attached.&#x20;

{% hint style="warning" %}
❗**Notice:** Please wait abou&#x74;**`five minutes`**&#x74;o let the nozzle cool down before detaching the 3D printing module.
{% endhint %}

## 6. Maintenance

* Clean the footpads often to ensure the best fix results.&#x20;
* At least turn the Robot Arm on once every month to activate the motor and keep the precision.&#x20;
* Place the arm on a clean and flat surface to achieve optimal results.
* Cover the arm when you don't use it to avoid dust.&#x20;

{% hint style="info" %}
If there is any problem, please contact us via - [**support@rotrics.com**](mailto:support@rotrics.com)
{% endhint %}


# 💾Software - Rotrics Studio

{% hint style="success" %}
**📅Update: 2020/08/14**
{% endhint %}

## Table of Contents

{% hint style="info" %}
​​ :man\_mage: **Tips:** You can click the TOP RIGHT table of contents to read the corresponding section​ 👉
{% endhint %}

#### [1. Introduction](/product-overview/software-rotrics-studio#introduction)

#### [2. Modules and Functions](/product-overview/software-rotrics-studio#modules-and-functions) <a href="#id-3-modules-and-functions" id="id-3-modules-and-functions"></a>

#### [3. Connect to DexArm](/product-overview/software-rotrics-studio#connect-to-rotrics-arm)

#### [4. Generate G-code with Rotrics Studio](/product-overview/software-rotrics-studio#generate-g-code)

## Introduction

Rotrics Studio is a multi-platform control program designed for Rotrics Robot Arm. It contains a rich set of case libraries and equipped with multiple functions such as writing/drawing, laser engraving, pneumatic moving, and Scratch visual programming.&#x20;

It integrates robot arm operation steps from importing images, generating G-code files to sending commands to the robot arm. It supports multi-platform use such as Windows, Mac OS, Linux.&#x20;

This section describes the Rotrics Studio operation under Windows.&#x20;

Click to download Rotrics Studio software - [**www.rotrics.com/download**](https://www.rotrics.com/pages/download)

## Modules and Functions

### Basic Control

![](/files/-MBxShBNiveya1nBZN3-)

**Basic Control**&#x20;

This panel can control robot arm basic movement via parameter adjustment, test modular functions and import G-Code file and etc.

**Writing & Drawing**

Import images/texts, adjust pen height, generate G-code file, send commands to control writing and drawing.&#x20;

**Laser Engraving**

Import images/texts, adjust engraving parameters, adjust laser power, generate G-code file, send commands to control laser engraving.

**3D Printing**

Import STL/OBJ files for slicing and generate 3D printing G-codes and start 3D printing.&#x20;

**Scratch Programming**

Program to control your DexArm with Scratch visual programming. Easy to start coding even without any programming experience.&#x20;

**Setting**

Check your device information and software version, upgrade firmware, set software languages and other configurations.&#x20;

**Discord Group**

Visit to get technical support or submit feedback or suggestions. &#x20;

**Online Tutorials**

Learn everything you need to know about using Rotrics DexArm. &#x20;

**Visit ROTROCS.COM**

Visit Rotrics official website or purchase accessories.

**Connection**

To connect/disconnect with the Arm.

**Control**

Shows the robot arm movement position, click the button to control robot arm movement in X, Y, Z axis, set up working original position, adjust motion speed, and change between the following two motion modes:&#x20;

* **Straight Line**: A pattern in which robot arm moves between two points along a straight line. Assume that there are two points: A and B. Under the straight-line mode, the robot arm will move from A to B along a straight-line trajectory. *This is suitable for motion with a given trajectory*, such as writing, drawing, laser engraving and 3D printing. If the given trajectory is an arc, the arc will be decomposed into subdivided straight lines by interpolation algorithm to simulate the arc trajectory. Please refer to [Wiki](https://en.wikipedia.org/wiki/Interpolation) for a specific interpolation explanation.
* **Fast Mode**: A pattern in which robot arm moves between two points along an uncertain trajectory. Assume that there are two points: A and B. Under fast mode, the mainboard will send commands to multiple motors, the movement trajectory of the robot arm between two points is uncertain. The process is out of control in fast mode, and the computer doesn't run the interpolation algorithm. This is suitable for tasks that don't require movement trajectories, such as picking/placing or playing the piano. The fast mode moves 4-5 times faster than the straight-line mode, and the motor moves more smoothly.

**G-code**

Click to load G-code file generated by third-party software(such as Cura and Inkscape), execute G-code file and check the current status.&#x20;

**Teach & Play**

Drag and record your DexArm's movements and replay for picking and placing.&#x20;

### Writing & Drawing

![](/files/-MBxUZ0VzdgISLMDGVjU)

**Working Area**&#x20;

Check the current working task, click the image/texts to adjust the size, click the button on the right to start, stop, end current work.

**G-code**

Click to upload preset images, texts, or customized images (***only SVG images are supported***). Generate G-codes and start drawing.&#x20;

**Control**

Click to control DexArm''s movement and set work origin.&#x20;

### Laser Engraving

![](/files/-MBxVCUNop2dhKQmVZMF)

**Working Area**&#x20;

Check the current working task, click the image/texts to adjust size, click the button on the right to start, stop, end current work.

**G-code**

Click to enter texts or upload images, adjust images parameters. ***B\&W and GREYSCALE modes support PNG and JPG files, VACTOR mode support SVG files.*** Click to set working speed and laser power, click the button to generate laser engraving G-code file.

**Control**

Turn on laser for focusing and set work origin. &#x20;

### 3D Printing

![](/files/-MBxW0KHNd-HVqsQPaaU)

**Build Area**

Upload STL/OBJ format 3D model for slicing and adjust the model size and orientation and position.&#x20;

**G-code**

Adjust 3D printing parameters, generate 3D printing G-code and start printing.&#x20;

**Control**&#x20;

Set 3D printing work origin and level your DexArm for better 3D printing performance.&#x20;

### Scratch Programming

![](/files/-MBx_1dJBS2-Qzyj0x7F)

**Code Blocks**

Click to execute the movements or drag to write a visual program project.

**Script**

The main program of your project, drag to adjust the blocks' order and control your DexArm to complete a complicated task.&#x20;

## Connect to DexArm

1\. Connect Rotrics DexArm and computer with USB-C cable.

*

![USB A-C cable for connecting DexArm with computer.](/files/-MEhdoV_40qSqhqSYr_7)

2\. Open Rotrics Studio software.

3\. Click the **`Connection`** button on the top, select your robot arm and click **`Connect`**.

<div align="left"><img src="/files/-MBxaMd-mk6Ko3zVS24R" alt=""></div>

## Generate G-code with Rotrics Studio

### G-code Introduction

G-code is the most widely used numerical control programing language. It is used mainly in computer-aided manufacturing.&#x20;

There are different methods to generate G-code for different functions. Click the following link to jump to relevant G-code generating instructions:

#### [Generate G-code for Drawing\&Writing](/get-start/drawing-and-writing#5-generate-g-code)

#### [Generate G-code for laser engraving](/get-start/laser-engraving#4-generate-engraving-g-code)

#### [Generate G-code for 3D printing](/get-start/3d-printing#4-generate-g-code)

#### Generate G-code for pneumatic picking/placing


# 🍴Accessories

{% hint style="success" %}
**📅Update: 2020/08/17**
{% endhint %}

## Introduction

Robot Arm can cooperate with conveyor belt, sliding rail, and other accessories. It can work offline, enlarge the working space, create interesting applications, and even build a mini production line on your desktop.

Except for official accessories, DexArm can also work with hardware from Arduino, Raspberry Pi, OpenMV.

{% content-ref url="/pages/-Lvhak5xf6wg3h2U4xFd" %}
[Touchscreen](/product-overview/accessories/touchscreen)
{% endcontent-ref %}


# Touchscreen

{% hint style="success" %}
**📅Update: 2020/05/17**
{% endhint %}

Rotrics 3.5-inch touchscreen can control robot arm motion and module functions. You can also download G-code files into SD card, and use touchscreen to control offline.&#x20;

## User Interface

### Homepage

<div align="left"><img src="/files/-LyCOzx1XG33nrWxzA3c" alt=""></div>

**Wi-Fi Connection**

Wi-Fi connection status icon, press to check Wi-Fi connection status,

**Return**

The return button, press to return to the previous menu,

**HOME**

The homepage button, press to return to homepage,&#x20;

**Emergency Stop**&#x20;

The emergency stop botton, press to stop robot arm, use only in emergencies,

**Basic**

The basic control interface, to control robot arm movement in X, Y, Z axis, or reset robot arm to origin position,&#x20;

**Laser**

The laser control interface, to control robot arm movement in X, Y, Z axis and power on/off laser, mainly used for adjusting laser focus length,&#x20;

**Draw**

The drawing interface, to select built-in stick figure to draw. It is mainly used to teach children.

**3D Printing**

The 3D printing control interface, to change filaments,

**Air Pick**

The air pump box control interface, to control action of suction cup and softgripper,

**Voice**

The voice recognition function interface, press to start recognize your voice,

**Teach\&Play**

The teaching-playback function interface, to teach robot arm to record and repeat your movement,&#x20;

**SD Card**

The SD card management interface, to choose relevant G-code file and start writing/drawing, laser engraving, 3D printing or picking/placing offline,

**Setting**&#x20;

The setting interface, to choose language, set leveling, adjust pen height, or reset the touchscreen.

### Basic Control

<div align="left"><img src="/files/-M5a8Si1Nr4sjdVTVSYL" alt=""></div>

**X±/Y±/Z±**

Control the movement in X, Y, Z axis, click to control movement in relevant direction,

**Home**

Working HOME position button, click to return robot arm to the HOME position,

**Reset**

Robot Arm calibration button, click to re-calibrate the robot arm.

**Motor Disable**

Motor disable button, click to disable the motor, drag the robot arm to the corresponding position.&#x20;

### Laser

<div align="left"><img src="/files/-LyCWS-Cdv8u4c8z2AHw" alt=""></div>

Laser ON/OFF

Laser on/off button, click to turn on or turn off the laser. The default setting is to turn on/off laser under the max power. **Wear the Safety Goggles before you set up the laser engraver and throughout the laser engraving process.**

### Draw

<div align="left"><img src="/files/-LyCXZeBkQ1ID0x5jhKL" alt=""></div>

<div align="left"><img src="/files/-LyCY1x0VSaeQELkviW1" alt=""></div>

Click the left and right triangle buttons to switch pictures, click "Choose" to select the relevant picture.

**Start / Pause / Stop**

Click the corresponding button to start, pause, stop the current working.

### 3D Printing

<div align="left"><img src="/files/-LyCYhXy5Z8Nw6_8mOL_" alt=""></div>

**Target Temp**

Target temperature of 3D printing nozzle,

**Current Temp**

Current temperature of 3D pinting nozzle,&#x20;

**Change PLA**

PLA filament change button, click to preheat nozzle to 200℃, after temperature reaches 200℃, you can change the filament,

**Change ABS**

ABS filament change button, click to preheat nozzle to 240℃, after temperature reaches 240℃, you can change the filament,

### Picking/Placing

<div align="left"><img src="/files/-LyC_1hxtt3yVmj_sZBE" alt=""></div>

**Pick/Place**

Pick and place button, click to control suction cup or softgripper to pick/place items,

**Stop**&#x20;

Click to stop air pump box,

### Voice

<div align="left"><img src="/files/-LyCbb0RO4BDzwz9Y3-z" alt=""></div>

Voice recognition button, Wi-Fi connection required, support multi-language. Click to recognize voice content, and then command robot arm to complete relevant tasks. Currently, only the built-in picture drawing functions are available.&#x20;

### Teach\&Play

<div align="left"><img src="/files/-LyCcDA3XbxoPjMcu0WK" alt=""></div>

### SD Card

<div align="left"><img src="/files/-LyCeK_rqYfn3W1aKQUJ" alt=""></div>

The G-code excution interface, click to choose relevant G-code and start working.

### Setting

<div align="left"><img src="/files/-M5_6TLp5pBe_LYGfIih" alt=""></div>

Setting interface of the touchscreen, click to adjust pen height, set 3D printing leveling, connect to Wi-Fi, change language, reset the touchscreen.

## Connect with DexArm

Use dual Type-C cable to connect robot arm and the touchscreen.

Click the following link to learn how to use touchscreen to adjust laser focal length, change 3D printing filament, leveling:

* adjust laser focal length
* 3D printing work origin position setting
* leveling
* 3D printing filament change
* control pneumatic module
* control teach\&play

## Control DexArm's Movement

1\. connect touchscreen to the robot arm

2\. Click `Basic`

3\. Click `Home`to move robot arm to HOME position

4\. Click X, Y, Z button to control robot arm movement.&#x20;

## Use SD card to work offline

1\. Copy the G-code file into SD card

2\. Set paremeters before run the G-code file

* For laser engraving, maker sure you have adjusted the focal length and set the origin position
* For writing/drawing, make sure you have set the start height value
* For 3D printing, make sure you have set the start height

3\. Click SD card

4\. Choose your G-code file

5\. Click `Start`to work offline

## Touchscreen Recalibration

Touchscreen recalibration is added in Touchscreen firmware V1.1.0 or above. Please confirm your touchscreen firmware version before recalibration.

Method 1: Touchscreen > Setting > Factory Reset > Touchscreen Recalibration&#x20;

Method 2： Add an empty file named "touchscreen\_recalibration.conf" to the directory: sdcard\firmware. If the Touchscreen reads this file during startup, it will enter the recalibration.

## SetWorkOrigin & SetWorkHeight Difference

For G-code generated by Rotrics Studio, the working start point is X0 Y300. So when 3D printing with the touchscreen, you need to set G92 Z0 E0 (Set WorkHeight).&#x20;

<div align="left"><img src="/files/-MKhsN4FrAPdpYdcyyQM" alt=""></div>

For G-code generated by third-party software, like Cura, the working start point is X0 Y0. So when 3D printing with the touchscreen, you need to set G92 X0 Y0 Z0 E0 (Set WorkOrigin/ Set Origin).

<div align="left"><img src="/files/-MKhsCSEgM-JGF0QxIpE" alt=""></div>

Note: if you set the working start point wrongly, the Arm movement will beyond limits, or when you click start to start printing, only the filament squeezes out, the Arm won't move.&#x20;


# ❓FAQs

{% hint style="success" %}
**📅Update: 2020/08/17**
{% endhint %}

Read the corresponding answer for the frequently asked questions by clicking the page link to the particular topic below or jump to the corresponding page in the LEFT/TOP LEFT navigation list.&#x20;

## **Most Common FAQs**

{% content-ref url="/pages/hp885gupxjJ6uEK8lmg2" %}
[How to toggle developer tools on Rotrics Studio](/faq-troubleshooting/faqs/how-to-toggle-developer-tools-on-rotrics-studio)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvaitsc0Mwo2WhqV1s" %}
[How to re-calibrated DexArm or reset encoder values?](/faq-troubleshooting/faqs/how-to-re-calibrated-dexarm-or-reset-encoder-values)
{% endcontent-ref %}

{% content-ref url="/pages/-MEv\_w8bMnEWtJpIQWoK" %}
[How to upgrade DexArm's firmware?](/faq-troubleshooting/faqs/how-to-upgrade-rotrics-firmware)
{% endcontent-ref %}

{% content-ref url="/pages/-M7bqge7iAYviJ2aIOf8" %}
[How to upgrade the touchscreen firmware?](/faq-troubleshooting/faqs/upgrade-touchscreen-firmware)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvbM\_x6p2xFzbYHGE1" %}
[How to send third-party G-code files with Rotrics Studio?](/faq-troubleshooting/faqs/how-to-send-third-party-g-code-files-with-rotrics-studio)
{% endcontent-ref %}

{% content-ref url="/pages/-Lvh\_dyEq\_jiXFNma0LX" %}
[How to replace filament?](/faq-troubleshooting/faqs/faq-replace-filament)
{% endcontent-ref %}

## General

{% content-ref url="/pages/-MEv\_w8bMnEWtJpIQWoK" %}
[How to upgrade DexArm's firmware?](/faq-troubleshooting/faqs/how-to-upgrade-rotrics-firmware)
{% endcontent-ref %}

{% content-ref url="/pages/-M7bqge7iAYviJ2aIOf8" %}
[How to upgrade the touchscreen firmware?](/faq-troubleshooting/faqs/upgrade-touchscreen-firmware)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvaitsc0Mwo2WhqV1s" %}
[How to re-calibrated DexArm or reset encoder values?](/faq-troubleshooting/faqs/how-to-re-calibrated-dexarm-or-reset-encoder-values)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvbM\_x6p2xFzbYHGE1" %}
[How to send third-party G-code files with Rotrics Studio?](/faq-troubleshooting/faqs/how-to-send-third-party-g-code-files-with-rotrics-studio)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvb\_pTa7xqQ5XHe1AB" %}
[Broken mention](broken://pages/-MEvb_pTa7xqQ5XHe1AB)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvbqvXzMvxP\_j6QquO" %}
[How to change touchscreen language?](/faq-troubleshooting/faqs/how-to-change-touchscreen-language)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvc2H9KWHJc9n3r3Y\_" %}
[How to execute SD card files?](/faq-troubleshooting/faqs/how-to-execute-sd-card-files)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvc6pl-IWSker-OWE3" %}
[Why can't I copy G-code files to the Touchscreen directly?](/faq-troubleshooting/faqs/why-cant-i-copy-g-code-files-to-the-touchscreen-directly)
{% endcontent-ref %}

## Writing\&Drawing

{% content-ref url="/pages/-MEvcQ98bpLw\_1Oz79NK" %}
[How to write/draw with different colors?](/faq-troubleshooting/faqs/how-to-write-draw-with-different-colors)
{% endcontent-ref %}

## Laser Engraving

{% content-ref url="/pages/-MEvcfbYAB6AzKtWTcoZ" %}
[Why it misses part of the image when drawing?](/faq-troubleshooting/faqs/why-it-misses-part-of-the-image-when-drawing)
{% endcontent-ref %}

## 3D Printing

{% content-ref url="/pages/-Lvh\_dyEq\_jiXFNma0LX" %}
[How to replace filament?](/faq-troubleshooting/faqs/faq-replace-filament)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvd8TPRMpf4LnKPwyH" %}
[How to level DexArm manually?](/faq-troubleshooting/faqs/how-to-level-dexarm-manually)
{% endcontent-ref %}

{% content-ref url="/pages/-MG6a1ZoN89vuKqny3Z3" %}
[Why my 3D printing module is clogged?](/faq-troubleshooting/faqs/why-my-3d-printing-module-is-clogged)
{% endcontent-ref %}

## Teach\&Pneumatic


# Received an Error message in Rotrics Studio?

{% hint style="success" %}
**📅Update: 2021/06/09**
{% endhint %}

Now the DexArm and Rotrics Studio V1.0.1 have supported the Error message report function. It will help us to relocate the issue and resolve it.&#x20;

If you received an Error message when using Rotrics Studio. Please check the Error code below to locate the issue and then send an email to <support@rotrics.com> and we will help you to fix it or repair the component.&#x20;

Here is the list of the Error Code.&#x20;

### Error:100, Position Sensor Read Error

**Situations:**

1. &#x20;Send M893 to read current position and get a value bigger than 65535

**Possible reasons:**

1. The 8-pin encoder cable disconnected.&#x20;
2. Encoder sensor is defective.&#x20;

**Solution:**

1. Reconnect the cable or replace the encoder board.&#x20;

### Error: 101, 102 Home Error

**Situation:**

1. Couldn't move to HOME position and report this Error message.&#x20;

**Possible reasons:**

1. The magnets in the reducer are detached or in the wrong position.
2. The motor cable disconnected.&#x20;
3. The motor is out-of-step.

**Solution:**

1. Reconnect the motor cable.
2. Glue on the magnets.

### Error:103, Position Sensor Diff Error

**Situation:**

1. The encoder sensor is out of range.&#x20;

**Possible reasons:**

1. DexArm hasn't been calibrated properly.&#x20;
2. The magnets in the reducer are detached.

**Solutions:**

1. Recalibrated your DexArm. Here is how to - <https://manual.rotrics.com/faq-troubleshooting/faqs/how-to-re-calibrated-dexarm-or-reset-encoder-values>
2. Glue on the magnets.

### Error: 200, Heating failed, system stopped! Heater\_ID: 0

**Situations:**

1. After heating for over 20 seconds, the temperature won't go up.&#x20;

**Possible reasons:**

1. Heated Stick disconnect.&#x20;

**Solutions:**

1. Disassemble the 3D printing module, check the cable connection. If it's disconnected, email <support@rotrics.com> and we will send you a new 3D printing module.&#x20;

### Error: 201, Thermal Runaway, system stopped! Heater\_ID: 0

**Situation:**

1. After heating to the target temperature, the temperature drops sinificantly.&#x20;

**Possible reasons:**

1. The temperature sensor detaches in moving.&#x20;

**Solutions:**

1. Put the temperature sensor back to hotend.&#x20;

### Error: 202, MAXTEMP triggered, system stopped! Heater\_ID: 0

**Possible reasons:**

1. The temperature sensor disconnected after moving.

**Solutions:**

1. Disassemble the printing module and check the cable connection. If it's disconnected, email [support@rotrics.com](mailto:%20support@rotrics.com) and we will send you a new 3D printing module.&#x20;

### Error 203, MINTEMP triggered, system stopped! Heater\_ID: 0

**Possible reasons:**

1. The temperature sensor disconnected.

**Solutions:**

1. Disassemble the printing module and check the cable connection. If it's disconnected, email [support@rotrics.com](mailto:%20support@rotrics.com) and we will send you a new 3D printing module.&#x20;


# How to toggle developer tools on Rotrics Studio

{% hint style="success" %}
**📅Update: 2021/11/20**
{% endhint %}

Our software is built on a cross-platform developing tool so it may have some compatible issues when running on different computer systems.&#x20;

If you meet any bugs that haven't been recorded in the user manual. Please try to toggle the developer tools and send us the screenshot with the <mark style="color:red;">**RED**</mark> <mark style="color:red;"></mark><mark style="color:red;">error messages</mark>. We will look into it and help you out asap.&#x20;

### Here is how to toggle the developer tools on Rotrics Studio.

* #### Restart Rotrics Studio

![](/files/Jkk5U44pXfWNBcP16ysB)

* #### Click the menu of Rotrics Studio and click the "Toggle Developer Tools"

![On Windows](/files/GFOMuREUYHqDHnsZNNx2)

![Click top left menu on Mac OS](/files/Gm0TqmWf7QimBTLblZUr)

![](/files/LijzvqmMSqO1xG1RmL8B)

* #### Repeat the steps you were working on and send us the screenshot of the whole software interface at <support@rotrics.com>

![](/files/8wMHBtyYglvaRoXuR4cB)


# How to re-calibrated DexArm or reset encoder values?

Follow the instructions below to recalibrate your DexArm:&#x20;

**If the robot arm got stuck during operation, you need to reset the encoder value with the following steps:**

1\. Open Rotrics Studio and click Terminal, send command M18, the motor will go into deactivation status.

2\. Adjust the arm to the following position, make sure Axis 1 and Axis 2 is in the maximum position:

![](/files/-M7lFlDBec6LHrfu31n2)

2\.  Send command M889. The robot will read and save this position.&#x20;

3\. Then send command M1112, the Arm will move to HOME position (X0 Y300 Z0).

4\. Encoder value reset completed, you can move the arm smoothly now.&#x20;


# How to upgrade DexArm's firmware?

{% embed url="<https://youtu.be/dXsv2BOau1w>" %}

### With Rotrics Studio V0.1.2 or above

#### 1) Download Rotrics Studio - <https://www.rotrics.com/pages/download>

#### 2) Go to the Setting page and click update.

\*Don't use any VPN service during upgrading.

![](/files/-MCBKIWOnF4yvDkK9gTK)

#### 3) Wait for the upgrade process complete.

During the upgrade process, DexArm will be disconnected, don't worry it will reconnect in the next few seconds.&#x20;

![](/files/-MCBP2Ju-Tedkpr5CC-K)

💡If it is stuck in load firmware more than **`1 minute`**, reconnect DexArm, and try again. &#x20;

Once reconnect, it will pop up a window to upgrade firmware.&#x20;

![](/files/-MCGGf7aWcIYEOosAwk-)

If failed to upgrade, check this troubleshooting to upgrade with 3rd party software - [**HERE**](https://manual.rotrics.com/faq-troubleshooting/troubleshooting/failed-to-upgrade-rotrics-dexarms-firmware).&#x20;


# How to upgrade the touchscreen firmware?

#### 1) Download the newest version of touchscreen firmware on:

#### <https://www.rotrics.com/pages/download>

#### 2) Unzip and copy those files to replace the files in SD card.&#x20;

![](/files/-M7bwFwMNuzJ95dy9I0B)

#### 3) Insert the SD card to your touchscreen, connect to DexArm and power on.&#x20;

Wait for 30s - 1min, the touchscreen will reboot after upgrading completed.&#x20;

{% hint style="danger" %}
❗**Warning:** Do not power off the touchscreen during upgrading!
{% endhint %}

After upgrading, click **`Settings -> About`** to make sure the firmware has been upgraded to the newest version.

❗If the upgrade failed or the screen goes black, follow this instruction to fix it -  <https://manual.rotrics.com/troubleshooting/troubleshooting-accessories#1-how-to-fix-a-black-screen-after-upgrading-the-firmware>


# How to send third-party G-code files with Rotrics Studio?

#### 1) Connect to Rotrics Studio(V0.1.1 and above)

![](/files/-MCBYavZ4ewzvOg-3Q7b)

#### 2) Click Basic -> G-code -> Import G-code -> Select the right module

![](/files/-MCBZmTtkN7YHQTQIUHp)

#### 3) Click Basic -> Control to Set Work Height

![](/files/-MHVxrjYogal4WzN-YxR)

#### 4) Go back to G-code and start sending G-code

![](/files/-MCB_XyTZSru2dVB1Ed5)


# How to replace filament?

### Learn how to replace filament on Youtube :point\_down:&#x20;

{% embed url="<https://youtu.be/dn1_uDTA5LU>" %}

### Or follow the instruction to replace the filament.&#x20;

#### 1) Preheat the nozzle to target temperature.

Open **Terminal** and Send the corresponding command and wait for it reaches the target temperature.&#x20;

* PLA: M109 S190

<div align="left"><img src="/files/-MCe8kkoYiDaGByIvQFe" alt=""></div>

Or you can change filament with Touchscreen by going to **3D printing > change filament**.&#x20;

#### 2) Press the black rubber ring

❗Please be careful and DO NOT touch the hotend.

<div align="left"><img src="/files/-MCeIyJjCOW957DjZpYN" alt=""></div>

<div align="left"><img src="/files/-MCeJ4BB_fzXJlrwkPFs" alt=""></div>

#### 3) Drag out the Bowden tube with the filament.

💡**Tips:** Press the ring with thumb and index finger and drag the tube with other fingers. &#x20;

<div align="left"><img src="/files/-MCeJYf-R_EJLILdtUM5" alt=""></div>

<div align="left"><img src="/files/-MCeJcKp-A2BJ_TAxsKs" alt=""></div>

#### 4) Drage filament out of the Bowden tube.

<div align="left"><img src="/files/-MCeK8MzgUAm2C2nShB7" alt=""></div>

#### 5) Insert the new filament into the extruder to protrude about 5cm out of Bowden Tube.&#x20;

![](/files/-MCe9u74UxYfgtpVidsP)

#### 6) Insert the filament into the 3D printing module.&#x20;

![](/files/-MCeADcLNj2toPIL8-0m)

Keep inserting the filament until you see some filament coming out of the nozzle and couldn't insert deeper.&#x20;

![](/files/-MCeAH42MsyDFiBF2Vic)


# How to change touchscreen language?

Click "Settings>Language", and choose your language.


# How to execute SD card files?

1. Copy your G-code file to the SD card
2. Install SD card into the touchscreen,&#x20;
3. Set working origin position according to different functions
4. Click SD card button, and select your G-code file


# Why can't I copy G-code files to the Touchscreen directly?

Our touchscreen is a single-chip computer-based serial screen, which uses serial communication to transmit instructions. It can't be connected to a computer through the USB protocol.

In other words, you can't use a USB cable to transfer files to the touch screen.


# How to write/draw with different colors?

First, divide your SVG file into different SVG files according to color, and import them into Rotrics Studio to generate G-code. Then start drawing/writing and change the pen manually for different G-code.

{% hint style="info" %}
:man\_mage: **Tips:** the work origin of each G-code must be the same.
{% endhint %}


# Why it misses part of the image when drawing?

The working area of DexArm at different height is different. The working area in Rotrics Studio is the max working area whose pen position is 0. If your pen position lower or higher than 0, the working area will be smaller. You can try to put something below the drawing surface to stack it to Z0 and you can get the max working area.

Here is the working space of DexArm in 3D space:

![](/files/-M8KlKPQm2l8dzPcl_Kk)

Here is the working area whose pen position is -90 mm:

![](/files/-M8KlPMjHZIauZ4Sm6N5)


# How to level DexArm manually?

This method only applied to users who can NOT level DexArm with Rotrics Studio or Touchscreen. If you've done the level procedure, please skip this section. &#x20;

#### A. Open Rotrics Studio and click `Terminal`, send comman&#x64;**`M891 X0 Y0`to reset the slope value. Then reboot DexArm.**

<div align="left"><img src="/files/-MBxpoWiQl7PUCb9q8dc" alt=""></div>

#### **B.** Place a piece of A4 paper between the print plate and the nozzle.&#x20;

![](/files/-M7ldoyAww1yyRPni87Q)

#### C. Adjust Z-axis for 4 points:

a) Point A

Open Rotrics Studio and click "Terminal", send commands "**G0 X0 Y350 Z0**" to move the arm to Point A, switch to "Basic" panel, and adjust module height with "Z-" button, keep adjusting until there is slight resistance on the A4 paper from the nozzle.&#x20;

Send comman&#x64;**`M114`**&#x74;o read and record down the current Z-axis value. We will refer to this value as "**ZA**".&#x20;

b) Point B

Open Rotrics Studio and click "Terminal", send commands "**G0 X0 Y250 Z0**" to move the arm to Point B, switch to "Basic" panel, and adjust module height with "Z-" button, keep adjusting until there is slight resistance on the A4 paper from the nozzle.&#x20;

Send comman&#x64;**`M114`** to read and record down this Z-axis value. We will refer to this value as "**ZB**".&#x20;

b) Point C

Open Rotrics Studio and click "Terminal", send commands "**G0 X50 Y300 Z0**" to move the arm to Point C, switch to "Basic" panel, and adjust module height with "Z-" button, keep adjusting until there is slight resistance on the A4 paper from the nozzle.&#x20;

Send comman&#x64;**`M114`** to read and record down this Z-axis value. We will refer to this value as "**ZC**".&#x20;

b) Point D

Open Rotrics Studio and click "Terminal", send commands "**G0 X-50 Y300 Z0**" to move the arm to Point C, switch to "Basic" panel, and adjust module height with "**Z-**" button, keep adjusting until there is slight resistance on the A4 paper from the nozzle.&#x20;

Send comman&#x64;**`M114`** to read and record down this Z-axis value. We will refer to this value as "**ZD**".&#x20;

**D. Configure and set the slope value**

Please calculate according to the following formula, keep the negative sign of Z-axis value.&#x20;

* Slope value of $$Y axis=(ZA-ZB )/100$$&#x20;
* Slope value of $$X axis=(ZC-ZD )/100$$&#x20;

Then open "Terminal", and set slope values with command **`M891 XSlope YSlope`**, for example: M891 X0.02 Y0.02.&#x20;

Reboot the Arm and the manual leveling is completed.&#x20;


# Why my 3D printing module is clogged?

### 1. The vertical side fan isn't working.&#x20;

<div align="left"><img src="/files/-MCf7lL3sRfK0EMJVK1J" alt=""></div>

The side fan is designed to work and cool off the heatsink once it's power on. If not, it will cause the nozzle clog problem.&#x20;

If you meet this problem, please email <support@rotrics.com> to describe the problem and we will send you a replacement fan part as soon as possible.&#x20;

Or you can order a fan in the local store and replace it. The spec of the fan is:&#x20;

* Size: 30x30x10 mm
* Power: 12V 0.1A


# 🔑Troubleshooting

{% hint style="success" %}
**📅Update: 2020/09/30**
{% endhint %}

Read the corresponding solution for the issue by clicking the page link to the particular topic below or jump to the corresponding page in the LEFT/TOP LEFT navigation list.&#x20;

## Most Common Issues

{% content-ref url="/pages/-Lvh\_bOelUKOicnvvHrq" %}
[Fix the clogged 3D printing nozzle](/faq-troubleshooting/troubleshooting/troubleshooting)
{% endcontent-ref %}

{% content-ref url="/pages/-M9MssjHC4HoRScFnWh3" %}
[DexArm couldn't connect to my computer](/faq-troubleshooting/troubleshooting/troubleshooting-cant-connect)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvhu2oGbZ9wszNpW-Y" %}
[Failed to upgrade Rotrics DexArm's Firmware](/faq-troubleshooting/troubleshooting/failed-to-upgrade-rotrics-dexarms-firmware)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvhSFSi0cOEaMx7ArM" %}
[DexArm beyond limits/stuck problem](/faq-troubleshooting/troubleshooting/dexarm-beyond-limits-stuck-problem)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvlG-ZIA-GrJtQDdYT" %}
[DexArm movement accuracy problem](/faq-troubleshooting/troubleshooting/dexarm-movement-accuracy-problem)
{% endcontent-ref %}

## General

{% content-ref url="/pages/-MXtU7ShwduFT7O9wyG5" %}
[“G-code sending task started...”  Error](/faq-troubleshooting/troubleshooting/g-code-sending-task-started...-error)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvhu2oGbZ9wszNpW-Y" %}
[Failed to upgrade Rotrics DexArm's Firmware](/faq-troubleshooting/troubleshooting/failed-to-upgrade-rotrics-dexarms-firmware)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvhSFSi0cOEaMx7ArM" %}
[DexArm beyond limits/stuck problem](/faq-troubleshooting/troubleshooting/dexarm-beyond-limits-stuck-problem)
{% endcontent-ref %}

{% content-ref url="/pages/-M9MssjHC4HoRScFnWh3" %}
[DexArm couldn't connect to my computer](/faq-troubleshooting/troubleshooting/troubleshooting-cant-connect)
{% endcontent-ref %}

{% content-ref url="/pages/-MCBo5rKAJxLaxnUq1\_d" %}
[How to Fix a Black Screen after upgrading the firmware?](/faq-troubleshooting/troubleshooting/troubleshooting-black-screen)
{% endcontent-ref %}

{% content-ref url="/pages/-MFZNDZMskCfA9t1Iz8x" %}
[Rotrics Studio "Internal error occurred"](/faq-troubleshooting/troubleshooting/rotrics-studio-internal-error-occurred)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvlG-ZIA-GrJtQDdYT" %}
[DexArm movement accuracy problem](/faq-troubleshooting/troubleshooting/dexarm-movement-accuracy-problem)
{% endcontent-ref %}

{% content-ref url="/pages/-MITNalokfW0V2l8UlR9" %}
[Safety enclosure wiring changes](/faq-troubleshooting/troubleshooting/safety-enclosure-wiring-changes)
{% endcontent-ref %}

{% content-ref url="/pages/-MJQWYF7BbIibLkHzAHK" %}
[Software connect problem after safety enclosure installed](/faq-troubleshooting/troubleshooting/software-connect-problem-after-safety-enclosure-installed)
{% endcontent-ref %}

{% content-ref url="/pages/-MIIR4dKfchOzyrX51rs" %}
[Replace the cracked case](/faq-troubleshooting/troubleshooting/cracked-case)
{% endcontent-ref %}

## Drawing & Writing

{% content-ref url="/pages/-MEvlO1\_gkbegGFSn25J" %}
[The pen doesn't write with ink](/faq-troubleshooting/troubleshooting/the-pen-doesnt-write-with-ink)
{% endcontent-ref %}

## Laser Engraving

{% content-ref url="/pages/-MIHbOV6av1LC2A0ca\_0" %}
[Laser module won't light](/faq-troubleshooting/troubleshooting/laser-module-wont-light)
{% endcontent-ref %}

{% content-ref url="/pages/-MITNalokfW0V2l8UlR9" %}
[Safety enclosure wiring changes](/faq-troubleshooting/troubleshooting/safety-enclosure-wiring-changes)
{% endcontent-ref %}

## 3D Printing

{% content-ref url="/pages/-Lvh\_bOelUKOicnvvHrq" %}
[Fix the clogged 3D printing nozzle](/faq-troubleshooting/troubleshooting/troubleshooting)
{% endcontent-ref %}

{% content-ref url="/pages/-MEvls1u9ldu2hiH4efb" %}
[3D printing module won't heat up](/faq-troubleshooting/troubleshooting/3d-printing-module-wont-heat-up.)
{% endcontent-ref %}

{% content-ref url="/pages/-MKhsxR38CaTdmhOIYVG" %}
[The Arm doesn't move, only filament comes out](/faq-troubleshooting/troubleshooting/the-arm-doesnt-move-only-filament-comes-out)
{% endcontent-ref %}

## Teach\&Pneumatic

{% hint style="info" %}
If you couldn't find any solution for the problem you met, please email <support@rotrics.com>
{% endhint %}


# “G-code sending task started...”  Error

To avoid users accidentally clicking Rotrics Studio when DexArm working on drawing, laser, and 3D printing tasks, we implemented a Serial listener to detect the Serial port communication. It will report "**G-code sending task started please do not repeat**" and STOP sending any G-code commands when the Serial port is sending commands.

![](https://rotrics.feishu.cn/space/api/box/stream/download/asynccode/?code=YzBjZDZkNDkyNTI3YzEzZDUyM2Q3MzZjNTBkYmU1M2NfaGJOR2hIYmx5WlZQQVZtektJcTRsRmFtQXNkdTJVODRfVG9rZW46Ym94Y25Nc1E3NHNlWUU2VjdXOVFuZncyVmhlXzE2MTgyMjgwODk6MTYxODIzMTY4OV9WNA)

But when Rotrics Studio hasn't received the parameter from DexArm, it will also STOP sending G-code commands and report "**G-code sending task started please do not repeat**".

Under our test, if we turn OFF or lose the connection of DexArm when sending G-codes such as power OFF DexArm, leveling and upgrade firmware, the Error will occur.

### Solution:

Restart DexArm and Rotrics Stuio and reconnect DexArm.

We are fixing this bug in the current **V1.0.0** version. If you encountered this bug in the released **V1.0.0** version, please report the error by emailing <support@rotrics.com>


# Laser module won't light

{% hint style="success" %}
**📅Update: 2020/09/28**
{% endhint %}

### Potential reasons:

1. The P5 cable is loose.&#x20;
2. The laser module is defective.&#x20;
3. The front end board is defective.
4. The DexArm motherboard is defective.

### Diagnose steps:

{% hint style="danger" %}
**Notice:** wear the Safety Goggles before setting up and throughout the laser engraving process!
{% endhint %}

1. Connect your DexArm to Rotrics Studio.
2. Plugin the laser module.
3. Check if the laser fan is running or not.&#x20;
4. Open **Terminal** and send **`M3 S255`** and check if the laser is on.&#x20;
5. If not, switch to 3D printing module, send **`M3 S255`** via Terminal, and see if the fan in front of 3D module is running or not.&#x20;

<div align="left"><img src="/files/-MIHeLoJdBFdg0kef5Br" alt=""></div>

### Analysis

1\. If the laser fan is not running after power on, please unscrew the Arm base plate and check if the following P5 cable is connected or not. If it is loose, pls connect it, and then retry the laser module.  If it is connected, then the motherboard and front end board need to be replaced. Please email <support@rotrics.com> about the problem.&#x20;

![](/files/-MLvCMaZqJ3u8fggv3W1)

2\. If the laser fan is working after power on and the laser module starts to emit light after sending the command **`M3 S255`**,  then pls re-try laser engraving by following our user manual.

3\. If the laser fan is working after power on, but the laser module still won't light with command **`M3 S255`**, and after switching to 3D printing module, the fan in front of 3D module works under this command, then the laser module is defective. please email <support@rotrics.com> with the relevant image/videos and we will help you to make it right.&#x20;

&#x20;


# Rotrics Studio "Internal error occurred"

{% hint style="success" %}
**📅Update: 2020/08/25**
{% endhint %}

Our software is built on a cross-platform developing tool so it may have some compatible issues when running on different computer systems.&#x20;

If your Rotrics Studio pop up an **Internal error occurred** message, here is how to fix it.&#x20;

<div align="left"><img src="/files/-MFZPFo0vLt3C--QZraM" alt=""></div>

## Windows

### 1. Try to restart your computer.

In most situations, restarting your computer will fix this issue.&#x20;

If not, please follow the instructions to provide the detailed info to us:

Go to Studio's View > Toggle Developer Tools to open the console and send us a screenshot of the bug at [**support@rotrics.com**](mailto:support@rotrics.com)

![](/files/-MFZQnQcIpwpgiNgdJks)

![](/files/-MFZQr92qArN4qIi_X2L)

Once we get the info, we will look into the issue and try to fix it ASAP. And we keep optimizing our software and firmware, those bugs will be fixed gradually.&#x20;

## Mac

### 1. Make sure you installed it in the right way.

Make sure you installed Rotrics Studio by dragging the icon to the Applications folder.&#x20;

![Double click the installer and drag it to the Applications folder.](/files/-MG38QMh_2Bs75Qrz6b4)

### 2. Try to restart your computer.

In most situations, restarting your computer will fix this issue.&#x20;

If not, please follow the instructions to provide the detailed info to us:

Go to Studio's View > Toggle Developer Tools to open the console to look into the error.&#x20;

![](/files/-MFZQnQcIpwpgiNgdJks)

![](/files/-MFZQr92qArN4qIi_X2L)

If you find the **mkdir '/Volumes/xxx'** error in console,  please uninstall the Studio and install it in the right way above.&#x20;

![](/files/-MG39aW61gskCTZ2eYQu)

If you get other error messages, send us a screenshot of the bug at [**support@rotrics.com**](mailto:support@rotrics.com)**.**&#x20;

Once we get the info, we will look into the issue and try to fix it ASAP. And we keep optimizing our software and firmware, those bugs will be fixed gradually.&#x20;


# Failed to upgrade Rotrics DexArm's Firmware

If the upgrade failed, the machine will be stuck in the bootloader and could execute the loaded application. You can see there is a green LED blinking inside the 12-pin port aka **Port 1**.&#x20;

In that case, we need to use third-party software to upgrade the firmware. Please follow the instruction to updated the firmware.&#x20;

### &#x20;Windows System‌

Before going through the firmware update, make sure your DexArm has connected to your computer and open Device Manager to check the COM port.&#x20;

![](/files/-MCQvPy6HDyshj3M9ghF)

It should be an STM Virtual COM Port. If couldn't find it, make sure the cable is physically connected.&#x20;

#### 1) Download Tera Term software and the newest version of the firmware.

* <https://www.rotrics.com/pages/download>‌‌

#### 2) Connect Rotrics DexArm to your PC with the USB A-C cable‌

![Picture from the internet. ](/files/-MCQsHDeF8tN0RLZbeIG)

#### 3) Launch Tera Term software, select`Serial`, choose the corresponding COM port, click `OK`

<div align="left"><img src="/files/-MCQrtor0C3Qq68R0N11" alt=""></div>

You can also click​ **File -> New Connection**​ to connect DexArm

#### ‌4) Send command​ **M2002** ​to start preparing mode, send ​**M2003** ​to enter Boot Loader mode.

{% hint style="info" %}
:man\_mage: **Tips:** Jump to **Step 5** if you see a blinking LED in port 1 at the back of DexArm.&#x20;
{% endhint %}

‌The software won't display the commands during inputting, just type in and hit enter.&#x20;

<div align="left"><img src="/files/-MCFZYpMCQRsZWZ9HpEu" alt=""></div>

#### ‌5) Send ​`5`​, check the hardware version, it should be V3.1 or V3.2, send &#x200B;**`1`**&#x200B; to enter firmware uploading mode.

<div align="left"><img src="/files/-MGpzeXNWmTSIZ_n0M32" alt=""></div>

#### 6) Click​ `File - Transfer -> YMODEN -> Send​`, select the ​corresponding firmware​ and click ​**Open**​

❗Warning: Make sure you've selected the corresponding firmware version, check your hardware version and select the correct firmware: if your ​`hardware version is V3.1`​, select the ​`Firmware_V2.1.x_For_Hardware_V3.1_xx`. The ​`Firmware_V2.1.x_For_Hardware_V3.2_xx` ​is for​ `hardware version V3.2`.

<div align="left"><img src="/files/-MCFZl5GTE0cSwQvK5k6" alt=""></div>

![](/files/-MCFZpB5BGMbokU_jVjz)

#### ​‌7) Wait for the firmware burning process to finish

<div align="left"><img src="/files/-MGpzRM4GwR0BHxVl1Bh" alt=""></div>

<div align="left"><img src="/files/-MGpzIyyrmKJPr0LGYSS" alt=""></div>

{% hint style="success" %}
After finished, you will get a successful message as below.
{% endhint %}

<div align="left"><img src="/files/-MGpz8shmiQo3OrfGQ3j" alt=""></div>

{% hint style="info" %}
:man\_mage: **Tips:** If fail(the progress bar disappears before 100%), send ​**a**​ to cancel burning and send 1 to re-enter firmware uploading mode and repeat **steps 5) and 6)**.‌&#x20;

Try again and again until you get the successful message output.&#x20;
{% endhint %}

{% hint style="info" %}
:man\_mage: **Tips:** If Tera Term outputs "Verification failed!", shown as below, please send **4** to disable the write protection and the system will restart.&#x20;
{% endhint %}

<div align="left"><img src="/files/-MJPv9dUy9GtHHl7PEIh" alt=""></div>

<div align="left"><img src="/files/-MJPvKW22_SWQgFn-8F5" alt=""></div>

{% hint style="info" %}
:man\_mage: **Tips:** If ​**Tera Term**​ outputs ​**Invalid Number**​ and ​**Start program execution** ​show as below, please reboot the machine and repeat **Step 5 and the rest.**&#x20;

:bulb: No need to close Tera Term.
{% endhint %}

<div align="left"><img src="/files/-MCF_uD17xpEWN2UtkYK" alt=""></div>

{% hint style="success" %}
You will get the Main Menu output once DexArm has been rebooted.&#x20;
{% endhint %}

<div align="left"><img src="/files/-MEvkfbFWSstaRByHdKF" alt=""></div>

#### 8) Send ​3​, start the program of the newest firmware version.

<div align="left"><img src="/files/-MEvknEXRCwRAprt1SUa" alt=""></div>

#### 9) Close Tera Term software, open Rotrics Studio to start using your Rotrics Arm.‌

### **Mac OS System‌**

Watch the tutorial video to upgrade Rotrics's firmware on Mac

{% embed url="<https://youtu.be/wDeUeTTzO6M‌>" %}

Or follow the step-by-step instructions below:‌

#### 1) Download the Serial 2 software and Rotrics Firmware‌

* [www.decisivetactics.com](http://www.decisivetactics.com)
* <https://www.rotrics.com/pages/download>

Click ​**Try Free**​

![](/files/-MCFaHQkK8OH9HP1TL5p)

**2) Connect Rotrics Arm to your Mac with the USB A to C cable and power on**‌

![Picture from the internet. ](/files/-MCQsHDeF8tN0RLZbeIG)

**3) Launch**​**Serial 2**&#x200B;**, click** ​**USB** ​**to select Rotrics Arm and click** ​**Open**​

![](/files/-MCFfS7QvwbjnHVT_Qr0)

#### 4) Send command​ **`M2002`** to start preparing mode, send​ **`M2003`**&#x200B; to enter Boot Loader mode.‌

💡**Tips:** Jump to **Step 5** if you see a blinking LED in port 1.&#x20;

💡**Tips:** The Serial 2 software will discount with Rotrics after sending M2003. We need to re-open the Serial 2 software.

![](/files/-MCFfVPnGcAh_qFMjA8v)

#### ‌5) Send ​5​, check the hardware version, it should be V3.1 or V3.2, send ​1​ to enter firmware uploading mode‌

💡**Tips:** After reconnecting, the screen will be blank, send **`5`** and it will show the hardware info.

![](/files/-MCFfZa_49AhnNf6KIJI)

![](/files/-MCFfct824o-netDXz8M)

#### ‌6) Click **`File - Send File`**, select the corresponding firmware and click &#x200B;**`Send File​`**

❗Warning: Make sure you've selected the corresponding firmware version, check your hardware version and select the correct firmware: if your `​hardware version is V3.1`​, select the ​Firmware\_`V2.1.x_For_Hardware_V3.1_xx`​. The ​`Firmware_V2.1.x_For_Hardware_V3.2_xxx` ​is for​ `hardware version V3.2`.

![](/files/-MCFfu-_jaTAcJjPPPb6)

![](/files/-MCFfxBvpWokj6jaOf9u)

#### ​‌7) Select ​YMODEM ​transfer protocol, click send and wait for the firmware burning process finish

![](/files/-MCFgCoTHWNTCsPhEObP)

![](/files/-MCFgEuu8av47CQa49GD)

![](/files/-MCFgHLHUwD4a_DeJsuc)

‌❗**Notice**: Serial 2 won't show the successful message after burning. Under our test, it's 100% successful.‌

#### 8) Send ​`3`​, start the program of the newest firmware version.

![](/files/-MCFgJ51HSbjsXg6tJvc)

#### 9) Reconnect DexArm and send M2010 to check the firmware has been updated. &#x20;

#### 10) If success, close ​Serial 2 ​software, open Rotrics Studio to start using your Rotrics Arm.


# Fix the clogged 3D printing nozzle

{% hint style="danger" %}
❗️**Warning:** Make sure the 3D printing module is un-heated before replacing it.
{% endhint %}

#### 1. Unscrew the two hex screws with an Allen wrench.

<div align="left"><img src="/files/-MCf0HtD_u7KsQOClLzL" alt=""></div>

<div align="left"><img src="/files/-MCf0LO5sQISzveAjo5x" alt=""></div>

#### 2. Unscrew the heater and the temperature sensor

Be careful, don’t break the temperature sensor‘s glass cover.

<div align="left"><img src="/files/-MCf0UdJ2VsxcnORIETB" alt=""></div>

<div align="left"><img src="/files/-MCf0YGjVc_knoDo0XYH" alt=""></div>

<div align="left"><img src="/files/-MCf0h-TVRb7pu7FUuU4" alt=""></div>

#### 3. Spinout the hot end and the nozzle at the counter-clockwise direction.

<div align="left"><img src="/files/-MCf0lx_bYo69ANP-20e" alt=""></div>

<div align="left"><img src="/files/-MCf0qhjDcXrT3L_fqeZ" alt=""></div>

#### 4. Spin on the spare hot end and nozzle.

<div align="left"><img src="/files/-MCf0u2axF8_W0Y-MI0J" alt=""></div>

#### 5. Screw on the heater and the temperature.

<div align="left"><img src="/files/-MCf0xcJNY275dGiF3fQ" alt=""></div>

#### 6. Screw on the two hex screws.

<div align="left"><img src="/files/-MCf12DvWlt0lZadw6Qs" alt=""></div>


# Replace the cracked case

{% hint style="success" %}
**📅Update: 2020/09/28**
{% endhint %}

## 1. Tools

1. M2.5 Hex Key
2. Phillips Screwdriver x 2
3. Tweezers

![](/files/-MIIRX8XCu67G2UuoYLO)

## 2. Disassemble the cracked case.

### 2.1 Disassemble the black base.

Use an M2.5 Hex Key to unscrew the 6 hex screws.

![](/files/-MIIRdSxTMwTT4PFgMS8)

### 2.2 Disconnect the motor cables, switch wire, and the 5-pin front end signal cable.

![](/files/-MIIRqLEzqQz7mP9p0dl)

![](/files/-MIISrT_5Ck-hTJxNRek)

### 2.3 Disassemble the motherboard PCB.

Use a Phillips driver to unscrew the 4 motherboard screws.

![](/files/-MIISv5Wpw2MrVvivEJy)

![](/files/-MIISxwN8sGdrZzwHVW5)

### 2.4 Disassemble the base encoder board.

![](/files/-MIIT-jaqJaISZHM4DvW)

![](/files/-MIIT25k5Zc6-1nRPhBp)

### 2.5 Disassemble the base reducer.

{% hint style="warning" %}
:brain: **Note:** There are four small screws beside the magnet.
{% endhint %}

![](/files/-MIIT5tN5HUNMP5eFMqq)

![](/files/-MIIT8l-K7dzPga9M9qR)

![](/files/-MIITBer9J9HCJwgLvDk)

That's all to disassemble the base part. Now let's replace the new case.

## 3. Replace the new case.

### 3.1 Replace the base bearing to the new case part.

![](/files/-MIITF6RwHC32j4rq72Y)

### 3.2 Put the motor cables and 5-pin cables through the case.

![](/files/-MIITJicrG38_qCHxUVS)

### 3.3 Assemble the reducer.

Use the Phillips screwdriver to fix 8 screws.

![](/files/-MIITNdefOXwrnpObXPl)

If one of the small screws stick on the magnet, use the tweezers to put it back and screw on.

![](/files/-MIITSHUrs6Bad9cTIor)

![](/files/-MIITUl3FOewUbocFFXK)

### 3.4 Assemble the encoder board.

Assemble the encoder board and connect the short cable to the base motor.

![](/files/-MIITmAKHoh0a_Kb5zNn)

### 3.5 Assemble the motherboard.

![](/files/-MIITqrBuM1DrryTUbz5)

### 3.6 Cable connections.

Connect the #1, #2, #3 cables to the corresponding port and connect the 5-pin cable and the switch wire.

![](/files/-MIIU-6zrYrRENaeHrFu)

![](/files/-MIIU1rm8ezyR-o3nqo-)

{% hint style="warning" %}
:brain: **Note**: be careful and don't break the motherboard.
{% endhint %}

### 3.7 Test your DexArm.

Connect it to Rotrics Studio, move it to the HOME position and test the font cable with your laser module.

### 3.8 Assemble the black base.

![](/files/-MIIU7shiQk9HzBaE7IR)

![](/files/-MIIUAD0tI3JytqfhFfa)

Now you've run through all the replacement steps. Have fun making!


# How to Fix a Black Screen after upgrading the firmware?

If the touchscreen reboot to a black screen after firmware upgraded, you need to restore the touchscreen to factory settings:&#x20;

#### 1) Download the newest touchscreen firmware below and unzip the ‘V1.0.10 For Black Touchscreen.zip‘ file and copy those files to the SD card.&#x20;

<https://www.rotrics.com/pages/download>

#### 2) For the Arm firmware V2.1.2 or above, please open Rotrics Studio and click "**Terminal**", then send command **`M5010000`** to restore.&#x20;

For the Arm firmware lower than V2.1.2, please refer to these steps to upgrade your firmware: [How to upgrade Rotrics firmware](/faq-troubleshooting/faqs/upgrade-touchscreen-firmware#q-1-how-to-upgrade-rotrics-firmware).  then use Terminal to send command **`M5010000`**.&#x20;

#### 3) Connect touchscreen to the robot arm, the touchscreen will light up again after a few seconds.&#x20;

#### &#x20;4) DexArm needs to be powered off and reboot to complete the touchscreen reset.&#x20;


# DexArm couldn't connect to my computer

## 1) Make sure you are using the `USB A to C` cable to connect DexArm with your computer.&#x20;

The Dual USB-C cable won't work. If your computer doesn't have a USB-A port, go get a **USB Hub**.

![USB A-C cable for connecting DexArm with computer.](/files/-MCP_8lsS_3xVfh4ELdK)

## 2) Make sure DexArm is physically connected to your computer.&#x20;

### 💻**Windows Users**

A. Open **Device Manager** and you should see an **STMxxx COM port** which is for DexArm.&#x20;

<div align="left"><img src="/files/-MCQvPy6HDyshj3M9ghF" alt=""></div>

If it doesn't show as an STM port, please [**DOWNLOAD** ](https://www.rotrics.com/pages/download)and install the STM virtual serial driver.&#x20;

* Install W7 if your system is Windows 7.&#x20;
* Install W8 if your system is Windows 8 or 10.&#x20;

B. Open Rotrics Studio to connect DexArm.&#x20;

<div align="left"><img src="/files/-MCj6b3mqisFAF72a2R0" alt=""></div>

If couldn't find the port in Rotrics Studio, check the port 1 at the back of DexArm and see if there is a LED blinking or not. If you can see the blinking LED, pleas follow the [**instruction** ](https://manual.rotrics.com/troubleshooting/troubleshooting-3#3-failed-to-upgrade-rotrics-dexarms-firmware)to update DexArm's firmware with a third-party software.&#x20;

### 💻**Mac Users**

**A.** Go to **About This Mac > System Report > USB** and you should see an **STMxx** device.&#x20;

![](/files/-MCjEsVJEbakfkjQGPIY)

![](/files/-MCjExs6SgMxCCqk3rtc)

![](/files/-MCjFNopmIYrZjb9M4MO)

B. Open Rotrics Studio to connect DexArm.&#x20;

<div align="left"><img src="/files/-MCj6b3mqisFAF72a2R0" alt=""></div>

If couldn't find the port in Rotrics Studio, check the port 1 at the back of DexArm and see if there is a LED blinking or not. If you can see the blinking LED, pleas follow the [**instruction**](/faq-troubleshooting/troubleshooting/failed-to-upgrade-rotrics-dexarms-firmware) to update DexArm's firmware with a 3rd party software.&#x20;


# DexArm beyond limits/stuck problem

**Reason:**

The Arm obtains the absolute position through the magnetic encoder located on the three-axis motor, and then calculate and complete the subsequent movement. If the Arm does not calibrate the initial position correctly or starts to move without obtaining position data, it will cause movement beyond limits or the Arm get stuck.

Solutio&#x6E;**:**&#x20;

1. Re-calibrate the Arm - [How-To](/faq-troubleshooting/faqs/how-to-re-calibrated-dexarm-or-reset-encoder-values)
2. After power on the Arm, be sure to send HOME command (M1112) at first, and then send motion commands (such as G0 G1). The subsequent motion calculation is based on this HOME position.&#x20;
3. If you have leveled your Arm before and want to re-level your Arm, make sure you press **RESET** button at first. Rotrics Studio or the touchscreen will clear the previous leveling records and reboot the Arm. After that, be sure to send HOME command (M1112) before re-leveling.
4. After you have re-leveled your Arm, Rotrics Studio or the touchscreen will save your new leveling records and reboot the Arm. Make sure you send HOME command (M1112) before any other commands.
5. In addition, Your Arm coordinate system might change under certain circumstances, this will also cause the Arm beyond limits or get stuck. For example, after command G92 X0 Y0 Z0.&#x20;
6. In order to avoid the Arm beyond limits or stuck problem, we will add protection functions in our next firmware, such as, it will compulsory to send a HOME command before any motion commands.


# DexArm movement accuracy problem

**1) DexArm's initial calibration position:** the Axis-1 and Axis-2 arms are at the maximum position, and the base is right in the middle, as shown in the following picture:

![](https://lh3.googleusercontent.com/kTVl8caIJ17fHBGgmrnFot-zEQCdIr_sGxVL9Gw9KmXGofeRVSMJekulTTsyB2qS8TTllOn5DolZAt5Fj5Tiq6wG0OtFveOPHzGfUuyznpph6G6EHFYutKWAsK4UPvTYzltkPW9B)

* The Arm inverse kinematics is calculated based on this initial calibration position.
* Command M1111 moves the Arm to this initial calibration position. Please re-calibrate the arm if there is any position deviation.&#x20;
* Manually place the Arm in this initial calibration position, and then send command M889 via Terminal to re-calibrate the Arm.&#x20;
* HOME button (or command M1112) moves the Arm to the Home position (X0 Y300 Z0)

**2) The end-effector offset value**

* The Arm inverse kinematics also requires different offset values for different end-effectors. A wrong offset value will cause a large deviation in Y-axis.
* Command M888 Pn can set the right offset value for different modules. Command M888 without P parameter can check the current module.
* When using the pen holder module, please pays attention to the installation of the pen. The pen must be parallel to the pen module. If not, the end-effector offset value will be incorrect, and your writing/drawing works will have a large deviation in the size.&#x20;

**3) Leveling**&#x20;

* It’s required to leveling the Arm when the working desktop (such as the 3D printing plate) and the Arm base are unlevel.&#x20;
* Generally speaking, if you are working on a relatively flat desktop, there is no need to do leveling, and please send command M891 X0 Y0 to clear history leveling records.
* After sending command M891 X0 Y0, please do reboot the arm at first. Command M892 is to read the Leveling parameters, this command does not require a reboot.
* If the XY-axis parameters are too large during leveling, please double-check your working desktop and calculation method. Due to the kinematic structure of the Arm, it is not recommended to set a large XY-axis parameter.

**4) Technical Support:**&#x20;

If the above solutions still cannot solve your problem, please sort out the following information and contact us.&#x20;

* The current firmware version and Rotroics Studio version,
* The G-code file you are using,
* Please specify the deviation axis,
* A video will help us to analyze the problem.


# The pen doesn't write with ink

It may be that the pen is turned upside down for a long time during long-distance transportation, and please shake the tip of the pen several times before use. If it still cannot write, please replace it with another pen.


# 3D printing module won't heat up

The known reasons for the heating problem are:

### 1) The Temperature Sensor connection is unstable or the Sensor is short-circuited.&#x20;

Please visit our troubleshooting tutorial to fix it

{% embed url="<https://youtu.be/G1UYqM9W7YY>" %}

Or follow the instructions below to repair it:

If the plastic cover is broken or the wire touches the metal part, the sensor can't read the temperature. You can check it out by sending **`M105`**&#x69;n Terminal,  with this issue,  you should see a minus temperature value(usually -15 ℃) or see a MINTEMP message shown as the picture above. &#x20;

<div align="left"><img src="/files/-MCebhmlbP42GD69qhYG" alt=""></div>

To fix this:

#### A. Unscrew two hex screws with an Allen wrench.&#x20;

<div align="left"><img src="/files/-MCexKagoAgedrTDLOvj" alt=""></div>

#### B. Unscrew the temperature sensor.

<div align="left"><img src="/files/-MCezcZDCGN5FwmVuKrr" alt=""></div>

#### C. Make sure the cover is complete and then screw on the temperature sensor.&#x20;

<div align="left"><img src="/files/-MCezxBlyj5LsjttB5xV" alt=""></div>

#### D. Connect with Rotrics Studio and send `M109 S190` to test the heating.&#x20;

<div align="left"><img src="/files/-MCf-OPSEeAuYL4kMG1z" alt=""></div>

### 2) The heat stick wire is disconnected.&#x20;

<div align="left"><img src="/files/-MCfHaOrLHLTTzquH-z0" alt=""></div>

Temperature couldn't reach the target temperature after a few minutes. &#x20;

To fix this:

#### A. Unscrew two hex screws with an Allen wrench.&#x20;

<div align="left"><img src="/files/-MCexKagoAgedrTDLOvj" alt=""></div>

#### B. Split the heat stick connection cover.

<div align="left"><img src="/files/-MCf5NheehO_flK-JTQt" alt=""></div>

#### C. Solder the wires together and put on the covers.&#x20;

#### D. Connect with Rotrics Studio and send`M109 S190`to test the heating.&#x20;

<div align="left"><img src="/files/-MCf-OPSEeAuYL4kMG1z" alt=""></div>


# The Arm doesn't move, only filament comes out

The working start points are different for G-codes generated by Rotrics Studio and third-party software.&#x20;

For G-code generated by Rotrics Studio, the working start point is X0 Y300. So when 3D printing with the touchscreen, you need to set `G92 Z0 E0` (Set WorkHeight).&#x20;

For G-code generated by third-party software, like Cura, the working start point is X0 Y0. So when 3D printing with the touchscreen, you need to set `G92 X0 Y0 Z0 E0` (Set WorkOrigin/ Set Origin).

If you set the working start point wrongly, the Arm movement will beyond limits, or when you click `start` to start printing, only the filament squeezes out, the Arm won't move.&#x20;


# Software connect problem after safety enclosure installed

After connecting the Arm with the safety enclosure, if you couldn't connect the Arm with Rotrics Studio:&#x20;

1. Please unplug the safety enclosure first, then reboot your robot arm.&#x20;
2. Send commands **M888 P1** to set the front-end module as laser module, then connect with the safety enclosure again.&#x20;
3. After the front end is set as laser module, the Arm can connect with Rotrics Studio without any problem.


# Safety enclosure wiring changes

{% hint style="success" %}
:date: **Update: 2020/09/30**
{% endhint %}

In our original design, the safety enclosure fan is controlled by DexArm via the PWM cable, which is using the same controlling IO as the 3D printing heater. But this design has a safety risk. When using the laser module, if the Arm 2\*6Pin is connected to the 3D printing module by accident, the heater will be heated continuously with the highest power, which may cause damage to the 3D printing module, or burn your skin, or cause a fire.&#x20;

For safety reasons, we have redesigned the enclosure fan control logic in our latest firmware (V2.1.8). And in order to ensure the normal operation of the enclosure fan, we have changed the enclosure wiring method. If your enclosure hasn't been shipped yet, we will send you the enclosure in the new wiring method. If you have received the enclosure already, please kindly adjust the wiring manually according to the following steps:&#x20;

1\. Take the black cable(marked in the red) out of the plastic shell:&#x20;

<div align="center"><img src="/files/-MITPoB0tjo0-sPCUK0a" alt=""></div>

2\.  Move the black cable outer sheath and solder the wire to the PCB( as shown in the following picture):

<div align="center"><img src="/files/-MITQ-_00tU4x-Xq-Ywo" alt=""></div>

<br>


# Introduction

{% hint style="success" %}
3**📅Update: 2020/09/04**
{% endhint %}

DexArm is developed based on the world's leading open-source project [**Marlin**](https://marlinfw.org/meta/gcode/), the DexArm firmware is completely open-source, and its control commands (G-code) are compatible with Marlin. **Please visit** [**GitHub**](https://github.com/Rotrics-Dev) **for more details of our firmware project.**&#x20;

G-code commands are the general control commands for CNC machines, 3D printers, etc. It is composed of ASCII strings, such as `G1 F2000 X0 Y300 Z0`, G-code commands usually uses `\n` as the sending end character.

In Marlin, the slave device will reply `ok` after receiving the G-code commands, the host computer then can send the next commands after receiving the `ok`. In DexArm SDK (pydexarm - download below👇), we have encapsulated this sending and receiving mechanism and make it convenient for users to use.

{% file src="/files/-MGNm5YDMZKXsl8gkoEo" %}
DexArm Python SDK V1.0
{% endfile %}

## Communication Parameters

* Baud rate: 115200
* Data bits: 8
* Stop bits: 1
* Parity: None
* Flow control: None
* Commands end with CR+LF, hereinafter referred to as 0D0A.
* When the slave device receives a command, if the command is correct, it returns "ok"; if not, it returns "unknown command".

## **Initialization**

After the host computer is connected to the robot arm, please send the command  `M1112`  first to move the arm to the HOME (`X0 Y300 Z0`) position.

## Basic Motion Control Commands

#### M1112

* Reset to the HOME position (X0 Y300 Z0)

{% hint style="info" %}
Don't mix up with the M112 Emergency stop command.&#x20;
{% endhint %}

#### M1111

* Move to the recalibration position

![](/files/drutbS618nBoPg8GjEWf)

#### M1113

* Execute M1111 first, then M1112

#### G0 - Rapid Movement

* X - Movement distance of X-axis in mm, accuracy 0.1mm
* Y - Movement distance of Y-axis in mm, accuracy 0.1mm
* Z - Movement distance of Z-axis in mm, accuracy 0.1mm
* E - Movement distance of E-axis in mm, accuracy 0.1mm
* F - Movement speed in mm/s, default speed is 40mm/s

#### G1 - Linear Movement

* X - Movement distance of X-axis in mm, accuracy 0.1mm
* Y - Movement distance of Y-axis in mm, accuracy 0.1mm
* Z - Movement distance of Z-axis in mm, accuracy 0.1mm
* E - Movement distance of E-axis in mm, accuracy 0.1mm
* F - Movement speed in mm/s, default speed is 40mm/s

#### G90 - Absolute Positioning

Under this command, G0 and G1 movement is in absolute mode.&#x20;

For example, the current position is X300 Y0 Z0, sending G0 X310, the Arm moves to X310 Y0 Z0.&#x20;

#### G91 - Relative Positioning

Under this command, G0 and G1 movement is in relative mode.&#x20;

For example, the current position is X300 Y0 Z0, sending G0 X10, the Arm moves to X310 Y0 Z0.&#x20;

#### G92 X0 Y0 Z0 E0&#x20;

Set the current position as the Work Origin

#### G92.1 - Reset G92 Command

For example, if the arm is currently at X300 Y0 Z0 E0, sending G92 X0 Y0 Z0 E0 will set the current position as the Work Origin. Sending M114 to read position, you will get X0 Y0 Z0 E0, the arm is working under the Work Object Coordinate System. Sending G92.1 will reset G92 command, and the arm will reset to the original coordinate system.

#### G4 - Dwell Command

* P500 - dwell for 500ms
* S10 - dwell for 10s

### Return Values

**M2010** - Return firmware version

**M2011** - Return hardware version

**M503** - Return device status info

**M115** - Return Marlin firmware info

**M897** - Whether the arm moved to the target position

**M1004** - Check air pump box status

Air pump

* In - pump in
* Out - pump in
* Neutral - release air
* Off - turn off&#x20;

**M2014** - check the status of the conveyor belt, including moving direction and speed.

* Forward xx mm/s
* Backward xx mm/s
* Stop

**M6** - check the status of laser module&#x20;

* On - the laser is on&#x20;
* Off - the laser is off

**M18** - motor deactivation command. After sending M18, the motor will go into deactivation and can be manually adjusted for recalibration or the teach & Play function.

## Motion Commands

**M114** - return the current position value, in mm. If the rotary module is connected, it also returns the R absolute angle value.&#x20;

**M204** - read and set robot arm moving acceleration value. The default setting is M204 P200 R60 T200.&#x20;

* When it is without any parameters, it reads the acceleration value.&#x20;
* P - printing acceleration value.&#x20;
* R - returning acceleration value.&#x20;
* T - idle stroke acceleration value.&#x20;

**M889** - Read magnet encoder value and set the initial calibration position.&#x20;

* X Y Z - set magnet encoder value of current position for recalibration.

**M890** - get the magnet encoder position readings.&#x20;

**M891**&#x20;

* X Y - set the current XY slope value, usually used in 3D printing leveling.

**M892** - read the current XY slope value

**M893** - refresh the magnet encode value from the sensor

**M894** - set a target value of the magnet encoder

* X - the X-axis encoder value of target position, range&#x20;
* Y - the Y-axis encoder value of target position, range&#x20;
* Z - the Z-axis encoder value of target position, range&#x20;

**M895**&#x20;

* read the magnet encode values from the sensors and then convert it into actual coordinate values, displayed in the Cartesian coordinate system, in mm.&#x20;
* for teach & play function

**M81** - turn off the fan, heating or other functions.

**M410** - stop the arm movement quickly, send G0 and G1 commands to continue the movement.

**M112** - emergency stop command, the arm will not respond to any commands. Need to reboot the arm for more action.&#x20;

## Basic Controls

### Motion Mode

#### M2000

Switch G0 to linear movement.&#x20;

#### M2001

Switch G0 to rapid movement.&#x20;

### **Basic Movement commands**

**G91**: enter relative mode.

**G0 X1**: move +1mm on the X-axis.&#x20;

**G90**: enter absolute mode.

## Front-end Module Switch

### M888

**P0 -** set the front-end module as the pen holder module

**P1** - set the front-end module as the laser module

**P2** - set the front-end module as the pneumatic module

**P3** - set the front-end module as the 3D printing module

**P4** - set the front-end module as the rotary module

**P10** - turn on the safety enclosure laser protection

**P11** - turn off the safety enclosure laser protection

**P13** - check safety enclosure door status

No Parameter/send M880 directly - check the current module

{% hint style="info" %}
Each time when you enter a module function interface, you need to send the module setting command.&#x20;
{% endhint %}

## Writing/Drawing

#### Process of G-Code files:&#x20;

1. send by code line, each line ends with 0D0A
2. only sending the next code when it receives the "ok" return value from the server
3. the code line starting with";" will be automatically filtered by the host computer, and will not be sent to the server
4. Pause/Resume, corresponding to pause or continue sending commands in the host computer.

## Laser Module

**M3** - command to turn on laser

#### Parameters

1. S corresponds to the laser power duty cycle, the range is 0-255. <mark style="color:red;">Special definition</mark>: when it is S1, the laser power is very low, suitable for laser engraving borders.
2. Example: M3 S10 - turn on the laser with a duty cycle of 10.&#x20;

**M5** - Turn off the laser module.

**M6** - Return to laser on/off status.&#x20;

## Pneumatic Module

**M1000** - air pump box pump in/soft grip start gripping

**M1001** - air pump box pump out/soft grip start opening&#x20;

**M1002** - air pump box/soft grip return to original status

**M1003** - all air pump boxes stop working&#x20;

## Teach & Play

* Teach: Send M893, the arm returns M894 + the magnet encoder value of 3-axises, the software or touch screen saves the corresponding data.
* Replay: Resend the saved information and the arm will repeat the previously recorded movement.

## 3D Printing

**M104 Sxx** - set the extrusion head temperature, during which the motion command is possible.&#x20;

* Sxx - target temperature, accuracy 1°C
* Example: M104 S200 - Set the extrusion head target temperature to 200°C.

**M105** - get the current extrusion head temperature

**M108** - get the extruder speed

**M109 Sxx** - Set the extruder target temperature xx and wait for the temperature to rise. No command will be executed during this period. The server unit will return the current temperature in real-time.&#x20;

Sxx - target temperature, precision 1°C&#x20;

Example: M109 S200 - Sets the extrusion head target temperature to 200°C and wait for the temperature to rise.

**M106 Sxx** - Set fan speed xx

**M107** - turn off the fan

**M130** - Set heater bar PID P value

**M131** - Set the heater bar PID I value

**M132** - Set heater bar PID D value

**G0 EXXX FXXX** - Extrude E length at F speed

## Conveyor Belt&#x20;

**M2012** - control the rotation of the conveyor belt

* Parameters: F speed (in mm/min), D direction (0 is clockwise, 1 is counterclockwise)
* For example:
  * M2012 F1000 D0 - rotate clockwise in 1000mm/min speed.
  * M2012 F200 D1 - rotate counterclockwise in 200mm/min speed.

**M2013** - stop the conveyor belt

**M2014** - check the status of the conveyor belt

**M1115 - M1119** - return the color recognition sensor data. For the scratch color recognition function and other demos. Parameters:

* 1115: item - means there is an item.&#x20;
* 1116: red - indicates a red block.&#x20;
* 1117: green - indicates a red block.&#x20;
* 1118: blue - indicates a blue block.&#x20;
* 1119: yellow - Indicates a yello block.

## Sliding Rail&#x20;

**M2005** - E axis return to the home point. With the locked rotor test function of TMC2209, it drives the slide back to the home point twice, when the TMC is pushed to the limit, the slide is returned to the home point successfully.&#x20;

* Parameters: XYZE must be fully set, otherwise use the default values (30, 10, 60, 60).
  * X - HOME maximum speed
  * Y - HOME lowest speed
  * Z - the 1st TMC detection threshold value
  * E - the 2nd TMC detection threshold value

**M2006 -** check if the return operation is completed.&#x20;

**M914** - set the sensitivity of TMC blocking for the E-axis.

## Rotary Module

**M888 P6** - set the offset value and initialize the rotary module

**M2100** - initialize the rotary module

**M2101** - get the rotary module angle value, control the movement, with 1-degree accuracy. Parameters:

* Without parameters: get the absolute angle of the rotary module.
* R(relative) - rotate the module by n degrees from the current position, n can be greater than 360.
  1. Clockwise rotation n degrees, M2101 Rn&#x20;
  2. Counterclockwise rotation n degrees, M2101 R-n
* P(position) - rotates the rotary joint to an absolute angle n.&#x20;
  1. **M2101 Pn** - rotate the module to an absolute angle n, the range of n is 0 - 360.
* S - set the module rotates continuously, speed range from 0-100. S0 refers to speed zero(stop). S1 refers to rotation at a low speed, S100 refers to rotation at the highest speed.
  * clockwise rotation continuously, M2101 Sn&#x20;
  * counterclockwise rotation continuously, M2101 S-n&#x20;

**M2102** - Upgrade the firmware of the rotary module

Parameter U - Upgrade step number, default is 0.&#x20;

* 0 - no operation
* 1 - enter boot&#x20;
* 2 - set the file size with the s parameter
* 3 - receive the file

**M2103** - check the current rotary module firmware version

* For example, M2103, return Rotary Firmware V1.1.2

## Firmware Upgrade

**M2002** - enter Bootloader

**M2003** - confirm the upgrade, enter Bootloader

* Once enter Bootloader, send numbers 1-5 to view device data, send firmware, etc.&#x20;
  * 1 - download firmware to the robot arm&#x20;
  * 2 - upload firmware from the robot arm&#x20;
  * 3 - execute firmware&#x20;
  * 4 - enter boot protection mode, no firmware transfer&#x20;
  * 5 - print the device firmware and hardware version data.&#x20;

**M2004** - Cancel upgrade

**M2007** - Reboot the device.

## Error Report

**ERROR 100-199**, motion and initialization related, such as M1112

**ERROR 200-299**, motion and initialization related, 3D printing related, such as heating, temperature, etc.

**Error:100**, Position Sensor Read Error&#x20;

* Position sensor error&#x20;
* Exceed the sensor reading maximum range, such as 65535&#x20;
* Possible causes: usually 8Pin wire loose, off, or magnetic code board damage

**Error:103**, Position Sensor Diff Error&#x20;

* M1112 M1111 sensor DIFF exceeds the maximum angle range&#x20;
* Possible causes: calibration error, magnet off

**Error: 101, 102** Home Error&#x20;

* Home Error (Axis data).&#x20;
* Possible causes: wrong magnet, magnet off, motor wire loose, motion out of step, etc.

**Error: 203**, MINTEMP triggered, system stopped! Heater\_ID: 0

* When the heating is turned on, the minimum temperature is triggered, usually, the temperature sensor is not inserted, or the temperature sensor is disconnected.

**Error: 202**, MAXTEMP triggered, system stopped! Heater\_ID: 0

* the maximum temperature is triggered, usually caused by a broken temperature sensor.

**Error:200**, Heating failed, system stopped! Heater\_ID: 0

* No significant temperature change (<2°C) after a certain heating time (20S)

**Error: 201**, Thermal Runaway, system stopped! Heater\_ID: 0

* After heating up to the specified temperature, the temperature drops significantly.

## Leveling related commands

### Set leveling coefficient

`M891 Xn Yn`

### Read leveling coefficient

`M891`

## Magnet encoder related commands

### Read current encoder position data

`M893`

### Move to a specific encoder value position

`M894 Xn Yn Zn`

## End effector control commands

### **Pneumatic module control commands**

* M1000 - air pump box to pump in
* M1001 - air pump box to pump out
* M1002 - air pump box to release air
  * To return to original status when the suction cup/soft gripper is not working.
* M1003 - stop air pump box

### **Laser engraving module control commands**

Related control commands [`M003`](/gcode/marlin-original-commands/marlin-m003-laser-on) [`M005`](/gcode/marlin-original-commands/marlin-m005-laser-off)&#x20;

### 3D printing control commands

* [`M104`](/gcode/marlin-original-commands/marlin-m104-set-hotend-temperature)
* [`M105`](/gcode/marlin-original-commands/marlin-m105-report-temperatures)
* [`M108`](/gcode/marlin-original-commands/marlin-m108-break-and-continue)
* [`M106`](/gcode/marlin-original-commands/marlin-m106-set-fan-speed)
* [`M107`](/gcode/marlin-original-commands/marlin-m107-fan-off)
* [`M109` ](/gcode/marlin-original-commands/marlin-m109-wait-for-hotend-temperature)

### Accessory control commands

#### Conveyor belt control commands

set conveyor belt working speed as 2000mm/min, clockwise

`M2012 F2000 D0`

set conveyor belt working speed as 2000mm/min, counter-clockwise

`M2012 F2000 D1`

stop conveyor belt

`M2013`

#### Reset the touchscreen firmware

Connect the touchscreen to DexArm after sending the following commands:

`M5010000`

## Reset DexArm Settings

## Reboot DexArm and enter bootloader

Send commands `M2002`, `M2003` in sequence to enter bootloader mode.

## Reboot DexArm commands

`M2007`

## **Re-calibrate the initial position**

The DexArm HOME position and motion coordinates are based on the initial position. The initial position has been calibrated before leaving the factory. If there is an error in the arm movement, please re-calibrate the initial p~~o~~sition according to the following instruction:

1\. Adjust the arm to the following position, make sure Axis 1 and Axis 2 is in the maximum position:

![](/files/-MGDZGQNkqLgKHmKU-a6)

2\. Send command `M889`

## Advanced commands

{% content-ref url="/pages/-MHVNSeGWHS\_1Q\_AWz5t" %}
[\[Marlin\] G020 - Inch Units](/gcode/marlin-original-commands/marlin-g020-inch-units)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSeHnGI\_x1W\_v02L" %}
[\[Marlin\] G021 - Millimeter Units](/gcode/marlin-original-commands/marlin-g021-millimeter-units)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSeiz9nez327oO0t" %}
[\[Marlin\] M906 - TMC Motor Current](/gcode/marlin-original-commands/marlin-m906-dwell)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSedpiXakLxj1cfn" %}
[\[Marlin\] M500 - Save Settings](/gcode/marlin-original-commands/marlin-m500-save-settings)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSee6Vqfllyz0KlG" %}
[\[Marlin\] M501 - Restore Settings](/gcode/marlin-original-commands/marlin-m501-restore-settings)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSef\_jGuxmf0sFSY" %}
[\[Marlin\] M502 - Factory Reset](/gcode/marlin-original-commands/marlin-m502-factory-reset)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSegha2KjC8ET5fV" %}
[\[Marlin\] M503 - Report Settings](/gcode/marlin-original-commands/marlin-m503-report-settings)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSeNhwaRgoew36V1" %}
[\[Marlin\] M082 - E Absolute](/gcode/marlin-original-commands/marlin-m082-e-absolute)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSeO2vM4i493K7JT" %}
[\[Marlin\] M083 - E Relative](/gcode/marlin-original-commands/marlin-m083-e-relative)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSePCrAnhEm-OIa8" %}
[\[Marlin\] M092 - Set Axis Steps-per-unit](/gcode/marlin-original-commands/marlin-m092-set-axis-steps-per-unit)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSeXd9aIsKbyDWaA" %}
[\[Marlin\] M200 - Set Filament Diameter](/gcode/marlin-original-commands/marlin-m200-set-filament-diameter)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSeb7aHMFy4\_F7tm" %}
[\[Marlin\] M400 - Finish Moves](/gcode/marlin-original-commands/marlin-m400-finish-moves)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSecv6S7b53fnKNP" %}
[\[Marlin\] M410 - Quickstop](/gcode/marlin-original-commands/marlin-m410-quickstop)
{% endcontent-ref %}

{% content-ref url="/pages/-MHVNSehrmP47dkvmRUo" %}
[\[Marlin\] M504 - Validate EEPROM contents](/gcode/marlin-original-commands/marlin-m504-validate-eeprom-contents)
{% endcontent-ref %}


# Marlin Original Commands

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}


# \[Marlin] G000-G001 - Linear Move

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

The `G0` and `G1` commands add a linear move to the queue to be performed after all previous moves are completed. These commands yield control back to the command parser as soon as the move is queued, but they may delay the command parser while awaiting a slot in the queue.

A linear move traces a straight line from one point to another, ensuring that the specified axes will arrive simultaneously at the given coordinates (by linear interpolation). The speed may change over time following an acceleration curve, according to the acceleration and jerk settings of the given axes.

A command like `G1 F1000` sets the feedrate for all subsequent moves.

By convention, most G-code generators use `G0` for non-extrusion movements (those without the E axis) and `G1` for moves that include extrusion. This is meant to allow a kinematic system to, optionally, do a more rapid uninterpolated movement requiring much less calculation.

For Cartesians and Deltas the `G0` (rapid linear movement) command is (and must be) a direct alias for `G1` (rapid movement). On SCARA machines `G0` does a fast non-linear move. Marlin 2.0 introduces an option to maintain a separate default feedrate for `G0`. *Note: Slicers tend to override firmware feedrates!*

## Notes

* Coordinates are given in millimeters by default. Units may be set to inches by `G20`.
* In Relative Mode (`G91`) all coordinates are interpreted as relative, adding onto the previous position.
* A single linear move may generate several smaller moves to the planner due to kinematics and bed leveling compensation. Printing performance can be tuned by adjusting segments-per-second.

## Developer Notes

* Developers: Keep using `G0` for non-print moves. It makes G-code more adaptable to lasers, engravers, etc.

## Usage

`G0` `[E(pos)]` `[F(rate)]` `[X(pos)]` `[Y(pos)]` `[Z(pos)]`

### Parameters

* `[E(pos)]` The length of filament to feed into the extruder between the start and end point
* `[F(rate)]` The maximum movement rate of the move between the start and end point. The feedrate set here applies to subsequent moves that omit this parameter.
* `[X<pos>]` A coordinate on the X axis
* `[Y<pos>]` A coordinate on the Y axis
* `[Z<pos>]` A coordinate on the Z axis

## Examples

The most basic move sets a feedrate and moves the tool to the given position.

```
G0 X12   ; move to 12mm on the X axis
G0 F1500 ; set the feedrate to 1500mm/m
G1 X90.6 Y13.8 ; move to 90.6mm on the X axis and 13.8mm on the Y axis
```

There are some caveats related with feedrates. Consider the following:

```
G1 F1500 ; set the feedrate to 1500mm/m
G92 E0
G1 X50 Y25.3 E22.4 ; move while extruding
```

In the above example the feedrate is set to 1500mm/m, then the tool is moved 50mm on the X axis and 25.3mm on the Y axis while extruding 22.4mm of filament between the two points.

```
G1 F1500
G92 E0
G1 X50 Y25.3 E22.4 F3000
```

However, in the above example, we set a feedrate of 1500mm/m on line 1 then do the move described above, accelerating to a feedrate of 3000mm/m (if possible). The extrusion will accelerate along with the X and Y movement, so everything stays synchronized.


# \[Marlin] G002-G003 -  Arc or Circle Move

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

`G2` adds a clockwise arc move to the planner; `G3` adds a counter-clockwise arc. An arc move starts at the current position and ends at the given XYZ, pivoting around a center-point offset given by `I` and `J` or `R`.

[`CNC_WORKSPACE_PLANES`](https://app.gitbook.com/docs/gcode/G017-G019.html) allows `G2/G3` to operate in the selected XY, ZX, or YZ workspace plane.

This command has two forms:

#### I J Form

* `I` specifies an X offset. `J` specifies a Y offset.
* At least one of the `I` `J` parameters is required.
* `X` and `Y` can be omitted to do a complete circle.
* The given `X` `Y` is not error-checked.

  The arc ends based on the angle of the destination.
* Mixing `I` or `J` with `R` will throw an error.

#### R Form

* `R` specifies the radius. `X` or `Y` is required.
* Omitting both `X` and `Y` will throw an error.
* `X` or `Y` must differ from the current XY position.
* Mixing `R` with `I` or `J` will throw an error.

Arc moves actually generate several short straight-line moves, the length of which are determined by the configuration option `MM_PER_ARC_SEGMENT` (default 1mm). Any change in the Z position is linearly interpolated over the whole arc.

'ARC\_P\_CIRCLES' enables the use of the 'P' parameter to specify complete circles

## Usage

`G2` `[E<pos>]` `I<offset>` `J<offset>` `[P<rate>]` `R<radius>` `[X<pos>]` `[Y<pos>]` `[Z<pos>]`

### Parameters

* `[E<pos>]` The amount to extrude between the start point and end point
* `I<offset>` An offset from the current X position to use as the arc center
* `J<offset>` An offset from the current Y position to use as the arc center
* `[P<rate>]` Specify complete circles - requires `ARC_P_CIRCLES`
* `R<radius>` A radius from the current XY position to use as the arc center
* `[X<pos>]` A coordinate on the X axis
* `[Y<pos>]` A coordinate on the Y axis
* `[Z<pos>]` A coordinate on the Z axis

## Gallery

### G3 command geometry

This illustrates a counter clockwise arc, starting at \[9, 6]. It can be generated either by `G3 X2 Y7 I-4 J-3` or `G3 X2 Y7 R5`

![avatar](https://marlinfw.org/assets/images/gcode/G3fig.png)

## examples:

Move in a clockwise arc from the current position to \[125, 32] with the center offset from the current position by (10.5, 10.5).

```
G2 X125 Y32 I10.5 J10.5
```

Move in a counter-clockwise arc from the current position to \[125, 32] with the center offset from the current position by (10.5, 10.5).

```
G3 X125 Y32 I10.5 J10.5
```

Move in a complete clockwise circle with the center offset from the current position by \[20, 20].

```
code: G2 I20 J20
```


# \[Marlin] G004 - Dwell

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Dwell pauses the command queue and waits for a period of time.

## Notes

* If both `S` and `P` are included, `S` takes precedence.
* '[`G4`](https://app.gitbook.com/docs/gcode/G004.html) with no arguments is effectively the same as [`M400`](https://app.gitbook.com/docs/gcode/M400.html).'

## Usage

`G4` `[P<time in ms>]` `[S<time in sec>]`

### Parameters

* `[P<time in ms>]` Amount of time to dwell
* `[S<time in sec>]` Amount of time to dwell

## Examples

```
G4 P500 ; Dwell for 1/2 second
```


# \[Marlin] G020 - Inch Units

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set units to inches. In this mode, all positions, offsets, rates, accelerations, etc., specified in G-code parameters are interpreted as inches.

## Usage

`G20`

## Examples

```
G20 ; set units to inches
```


# \[Marlin] G021 - Millimeter Units

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set units to millimeters. In this mode, all positions, offsets, rates, accelerations, etc., specified in GCode parameters are interpreted as millimeters.

## Usage

`G21`

## Examples

```
G21 ; set units to millimeters
```


# \[Marlin] G028 - Home and StallGuard

{% hint style="success" %}
**📅Update: 2020/10/13**
{% endhint %}

## Description

DexArm supported TMC2209 StallGuard.

## Notes

<div align="left"><img src="/files/-MJWCfjByCScHDsv48iO" alt=""></div>

Because of the particularity of DexArm, We have made some customization to the `G28`.

* `G28` Go to X0 Y300 Z0. Similar to M1112. Based on the position sensor of 3 Axiss.
* `G28 C` or `G28 Z` Home C Axis to the machine home position. Based on the stallguard of TMC2209.
* `G28 B` or `G28 Y` Home B Axis to the machine home position. Based on the stallguard of TMC2209.
* `G28 A` or `G28 X` Home A Axis to the machine home position. Based on the stallguard of TMC2209.
* Home C/Z before Home AB/XY.

## Examples

Modify some mesh points and view the new mesh:

```
> G28
> G28 C
> G28 B
> G28 A
```


# \[Marlin] G029 - Bed Leveling Manual

{% hint style="success" %}
**📅Update: 2020/10/13**
{% endhint %}

## Description

Mesh Bed Leveling (MBL) allows interactively measuring a Z height mesh without a bed probe. The only tool required is a piece of paper or a feeler gauge. MBL uses the mesh to compensate for variations in height across the bed.

1. Use `G29 S0` to get the current status and mesh. If there’s an existing mesh, you can send M420 S1 to use it.
2. Use `G29 S1` to move to the first point for Z adjustment.
3. Adjust Z so a piece of paper can just pass under the nozzle.
4. Use `G29 S2` to save the Z value and move to the next point.
5. Repeat steps 3-4 until completed.
6. Use [`M500`](https://app.gitbook.com/docs/gcode/M500.html) to save the mesh to EEPROM, if desired.

## Notes

* Requires the `MESH_BED_LEVELING` option in `Configuration.h`.
* "[`G28`](https://app.gitbook.com/docs/gcode/G028.html) disables bed leveling. Follow with `M420 S` to turn leveling on, or use `RESTORE_LEVELING_AFTER_G28` to automatically keep leveling on after [`G28`](https://app.gitbook.com/docs/gcode/G028.html)."

## Usage

`G29` `[I<index>]` `[J<index>]` `S<0|1|2|3|4|5>` `[X<count>]` `[Y<count>]` `[Z<linear>]`

## Parameters

* `[I<index>]` With S3, the (0…n-1) X index of the mesh value to modify.
* `[J<index>]` With S3, the (0…n-1) Y index of the mesh value to modify.
* `[S<0|1|2|3|4|5>]`
  * S0: Produce a mesh report (see examples below).
  * S1: Start probing mesh points.
  * S2: Probe the next mesh point.
  * S3: Manually modify a single point with X Y Z parameters. (See also M421.)
  * S4: Set a global Z offset. Positive values are away from the bed; negative values are closer.
  * S5: Reset and disable mesh.

## Examples

S0 mesh report:

```
> G29 S0
Num X,Y: 3,3
Z offset: 0
Measured points:
       0      1       2
0 +0.011 -0.020  -0.026
1 +0.017 +0.002  -0.019
2 +0.022 -0.030  -0.013
```

Modify some mesh points and view the new mesh:

```
> G29 S3 I2 J2 Z0.042
> G29 S3 I1 J1 Z-0.666
> G29 S0
3x3 mesh. Z offset: 0
Measured points:
       0      1       2
0 +0.011 -0.020  -0.026
1 +0.017 -0.666  -0.019
2 +0.022 -0.030  +0.042
```


# \[Marlin] G090 - Absolute Positioning

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

In absolute mode all coordinates given in G-code are interpreted as positions in the logical coordinate space. This includes the extruder position unless overridden by [`M83`](https://app.gitbook.com/docs/gcode/M083.html).

## Usage

`G90`

## Examples

Enable absolute mode

```
G90 ; Set all axes to absolute
```


# \[Marlin] G091- Relative Positioning

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set relative position mode. In this mode all coordinates are interpreted as relative to the last position. This includes the extruder position unless overridden by [`M82`](https://app.gitbook.com/docs/gcode/M082.html).

## Usage

`G91`

## Examples

Enable relative mode

```
G91 ; Set all axes to relative
```


# \[Marlin] G092 - Set Position

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set the current position to the values specified. In Marlin 1.1.0 and up, the software endstops are adjusted to preserve the physical movement limits. Thus you could use [`G92`](https://app.gitbook.com/docs/gcode/G092.html) to set the middle of the bed to 0,0 and then run .gcode that was sliced for a Deltabot.

The [`CNC_COORDINATE_SYSTEMS`](https://app.gitbook.com/docs/gcode/G054-G059.html) option enables use of `G92.1` to reset the selected workspace to native machine space. See [`G54-G59`](https://app.gitbook.com/docs/gcode/G054-G059.html) and [\`G53'](https://app.gitbook.com/docs/gcode/G053.html).

## Notes

* In earlier versions of Marlin [`G92`](https://app.gitbook.com/docs/gcode/G092.html) doesn't update the software endstops, so it was unsupported to set coordinates outside these boundaries. In Marlin 1.1.0 and up, the physical boundaries are maintained. This means you can no longer use [`G92`](https://app.gitbook.com/docs/gcode/G092.html) to move below the bed, for example.

## Usage

`G92` `[E<pos>]` `[X<pos>]` `[Y<pos>]` `[Z<pos>]`

### Parameters

* `[E<pos>]` New extruder position
* `[X<pos>]` New X axis position
* `[Y<pos>]` New Y axis position
* `[Z<pos>]` New Z axis position

## Examples

Specify that the nozzle's current X position is 10 and the current extruder position is 90.

```
G92 X10 E90
```

Specify that the nozzle's current XYZ position is 0, 0, 0.

```
G92 X0 Y0 Z0
```

Resets selected workspace is 0, 0, 0.

```
G92.1
```


# \[Marlin] M003 - Laser On

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Wait for moves to complete, then set the spindle speed (clockwise) or laser power.

## Notes

* 'S is interpeted as the configured value range: PWM (default), Percentage, or RPM. (See `CUTTER_POWER_UNIT`)'
* "[`M3`](https://app.gitbook.com/docs/gcode/M003.html) and [`M4`](https://app.gitbook.com/docs/gcode/M004.html) aren't needed with `LASER_POWER_INLINE` and `LASER_MOVE_POWER` enabled. Power is set directly in [`G1`](https://app.gitbook.com/docs/gcode/G000-G001.html)…[`G5`](https://app.gitbook.com/docs/gcode/G005.html)"

## Usage

`M3` `[I<mode>]`

### Parameters

* `[I<mode>]` Inline mode ON / OFF.

## Examples

Set spindle rotation clockwise at 50% with `CUTTER_POWER_UNIT` set to `PERCENT`

```
M3 S50
```

Set spindle rotation clockwise at 6K RPM with `CUTTER_POWER_UNIT` set to `RPM`

```
M3 S5000
```

Set laser power to 50% in PWM

```
M3 O128
```

Turn on the laser at full / `SPEED_POWER_STARTUP` power

```
M3
```

Fire laser at 80% on next G1,G2 and G3 move

```
M3 S204 I
```


# \[Marlin] M005 - Laser Off

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Wait for moves to complete, then turn off the spindle / laser power and PWM.

## Notes

* 'With `LASER_MOVE_G0_OFF` and `LASER_MOVER_G28_OFF` enabled, [`G0`](https://app.gitbook.com/docs/gcode/G000-G001.html) and [`G28`](https://app.gitbook.com/docs/gcode/G028.html) will also turn the laser off'

## Usage

`M5`

## Examples

pre: Turn off the spindle or laser

```
M5
```


# \[Marlin] M082 - E Absolute

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

This command is used to override [`G91`](https://app.gitbook.com/docs/gcode/G091.html) and put the E axis into absolute mode independent of the other axes.

## Notes

* G90 and G91 clear this mode.

## Usage

`M82`


# \[Marlin] M083 - E Relative

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

This command is used to override [`G90`](https://app.gitbook.com/docs/gcode/G090.html) and put the E axis into relative mode independent of the other axes.

## Notes

* G90 and G91 clear this mode.

## Usage

`M83`


# \[Marlin] M092 - Set Axis Steps-per-unit

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Use [`M92`](https://app.gitbook.com/docs/gcode/M092.html) to set the steps-per-unit for one or more axes. This setting affects how many steps will be done for each unit of movement. Units will be in steps/mm unless *inch* mode is set with [`G20`](https://app.gitbook.com/docs/gcode/G020.html) (which requires `INCH_MODE_SUPPORT`).

## Notes

* |Get the current steps-per-unit settings with [`M503`](https://app.gitbook.com/docs/gcode/M503.html).

  With `EEPROM_SETTINGS` enabled:
* This setting for all axes is saved with [`M500`](https://app.gitbook.com/docs/gcode/M500.html) and loaded with [`M501`](https://app.gitbook.com/docs/gcode/M501.html).
* [`M502`](https://app.gitbook.com/docs/gcode/M502.html) resets steps-per-unit for all axes to the values from `DEFAULT_AXIS_STEPS_PER_UNIT`.

## Usage

`M92` `[E<steps>]` `[T<index>]` `[X<steps>]` `[Y<steps>]` `[Z<steps>]`

### Parameters

* `[E<steps>]` E steps per unit
* `[T<index>]` Target extruder (Requires DISTINCT\_E\_FACTORS)
* `[X<steps>]` X steps per unit
* `[Y<steps>]` Y steps per unit
* `[Z<steps>]` Z steps per unit

## Examples

Set E steps for a new extruder

```
M92 E688.4
```


# \[Marlin] M104 - Set Hotend Temperature

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set a new target hot end temperature and continue without waiting. The firmware will continue to try to reach and hold the temperature in the background.

Use [`M109`](https://app.gitbook.com/docs/gcode/M109.html) to wait for the hot end to reach the target temperature.

## Notes

* With `PRINTJOB_TIMER_AUTOSTART` this command will stop the print job timer if the temperature is set at or below half of `EXTRUDE_MINTEMP`.

## Usage

`M104` `[B<temp>]` `[F<flag>]` `[I<index>]` `[S<temp>]` `[T<index>]`

### Parameters

* `[B<temp>]` `AUTOTEMP`: The max auto-temperature.
* `[F<flag>]` `AUTOTEMP`: Autotemp flag. Omit to disable autotemp.
* `[I<index>]` Material preset index. Overrides `S`.
* `[S<temp>]` Target temperature. `AUTOTEMP`: the min auto-temperature.
* `[T<index>]` Hotend index. If omitted, the currently active hotend will be used.

## Examples

Set target temperature for the active hotend

```
M104 S185
```

Set target temperature for E1

```
M104 T1 S205
```

`AUTOTEMP`: Set autotemp range

```
M104 F S180 B190
```

`AUTOTEMP`: Disable autotemp

```
M104
```


# \[Marlin] M105 - Report Temperatures

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Request a temperature report to be sent to the host at some point in the future.

## Notes

* Some hosts may hide the reply from [`M105`](https://app.gitbook.com/docs/gcode/M105.html).
* A better way for hosts to get regular temperature updates is to use [`M155`](https://app.gitbook.com/docs/gcode/M155.html) (requires `AUTO_REPORT_TEMPERATURES` and `EXTENDED_CAPABILITIES_REPORT`). Hosts then no longer need to run an extra process or use up slots in the command buffer to receive temperatures.

## Usage

`M105` `[T<index>]`

### Parameters

* `[T<index>]` Hotend index

## Examples

Get a temperature report

```
M105
```


# \[Marlin] M106 - Set Fan Speed

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Turn on one of the fans and set its speed. If no fan index is given, the print cooling fan is selected. The fan speed applies to the next block added to the planner, so it will not take effect until previous moves in the planner are done. Under manual control with an idle machine, [`M106`](https://app.gitbook.com/docs/gcode/M106.html) will change the fan speed immediately.

## Notes

* '[`M106`](https://app.gitbook.com/docs/gcode/M106.html) with no speed sets the fan to full speed.'
* Turn off fans with [`M107`](https://app.gitbook.com/docs/gcode/M107.html).

## Usage

`M106` `[I<index>]` `[P<index>]` `[S<speed>]` `[T<secondary>]`

### Parameters

* `[I<index>]` Material preset index. Overrides S.
* `[P<index>]` Fan index
* `[S<speed>]` Speed, from 0 to 255. S255 provides 100% duty cycle; S128 produces 50%.
* `[T<secondary>]` Secondary speed. Added in Marlin 1.1.7. (Requires `EXTRA_FAN_SPEED`)
  * `M106 P<fan> T3-255` sets a secondary speed for `<fan>`.
  * `M106 P<fan> T2` uses the set secondary speed.
  * `M106 P<fan> T1` restores the previous fan speed.

## Examples

Turn on the fan at 200/255 DC

```
M106 S200
```


# \[Marlin] M107 - Fan Off

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Turn off one of the fans. If no fan index is given, the print cooling fan.

## Notes

* Turn on fans with [`M106`](https://app.gitbook.com/docs/gcode/M106.html).

## Usage

`M107` `[P<index>]`

### Parameters

* `[P<index>]` `AUTOTEMP`: Fan index


# \[Marlin] M108 - Break and Continue

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

The [`M108`](https://app.gitbook.com/docs/gcode/M108.html) command requires `EMERGENCY_PARSER` for full effectiveness. (Otherwise a full queue blocks the parser.)

Some G-code commands cause Marlin to go into a closed loop, waiting indefinitely for a certain state or event. For example, [`M109`](https://app.gitbook.com/docs/gcode/M109.html) waits for the target temperature to be reached, and [`M0`](https://app.gitbook.com/docs/gcode/M000-M001.html) waits for an LCD click.

In the case of [`M109`](https://app.gitbook.com/docs/gcode/M109.html), the [`M108`](https://app.gitbook.com/docs/gcode/M108.html) command stops waiting for the target temperature and continues processing G-code. This may result in "cold extrude" messages. For a full stop use [`M112`](https://app.gitbook.com/docs/gcode/M112.html).

In the case of [`M0`](https://app.gitbook.com/docs/gcode/M000-M001.html) the [`M108`](https://app.gitbook.com/docs/gcode/M108.html) command acts like the LCD button, breaking out of [`M0`](https://app.gitbook.com/docs/gcode/M000-M001.html) and continuing to process the G-code queue.

## Notes

* With both `EMERGENCY_PARSER` and `HOST_KEEPALIVE_FEATURE` enabled, hosts will be able to prompt for continuation or cancellation, confirming with [`M108`](https://app.gitbook.com/docs/gcode/M108.html) and cancelling with [`M112`](https://app.gitbook.com/docs/gcode/M112.html).

## Usage

`M108`

## Examples

Use [`M108`](https://app.gitbook.com/docs/gcode/M108.html) as a "Continue" button in your host software.

```
M0 You're up, mate ; in your G-code file
M108               ; as your "Continue" button
```


# \[Marlin] M109 - Wait for Hotend Temperature

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

This command optionally sets a new target hot end temperature and waits for the target temperature to be reached before proceeding. If the temperature is set with `S` then [`M109`](https://app.gitbook.com/docs/gcode/M109.html) waits *only when heating*. If the temperature is set with `R` then [`M109`](https://app.gitbook.com/docs/gcode/M109.html) will also wait for the temperature to go down.

## Notes

* With `PRINTJOB_TIMER_AUTOSTART` this command will start the print job if heating, and stop the print job timer if the temperature is set at or below half of `EXTRUDE_MINTEMP`.
* This command (as well as [`M109`](https://app.gitbook.com/docs/gcode/M109.html) and [`M190`](https://app.gitbook.com/docs/gcode/M190.html)) can block new commands from the host, preventing remote shutdown. However, if `EMERGENCY_PARSER` is enabled, a host can send [`M108`](https://app.gitbook.com/docs/gcode/M108.html) to break out of the wait loop.
* To set the hot end temperature and proceed without waiting, use [`M104`](https://app.gitbook.com/docs/gcode/M104.html).

## Usage

`M109` `[B<temp>]` `[F<flag>]` `[I<index>]` `[R<temp>]` `[S<temp>]` `[T<index>]`

### Parameters

* `[B<temp>]` With `AUTOTEMP`, the max auto-temperature.
* `[F<flag>]` Autotemp flag. Omit to disable autotemp.
* `[I<index>]` Material preset index. Overrides `S`.
* `[R<temp>]` Target temperature (wait for cooling or heating).
* `[S<temp>]` Target temperature (wait only when heating). Also `AUTOTEMP`: The min auto-temperature.
* `[T<index>]` Hotend index. If omitted, the currently active hotend will be used.

## Examples

Set target temperature and wait (if heating up)

```
M109 S180
```

Set target temperature, wait even if cooling

```
M109 R120
```

Set target temperature for E1 and wait (if heating up)

```
M109 T1 R205
```

`AUTOTEMP`: Set autotemp range, wait for temp

```
M109 F S180 B190
```

'`AUTOTEMP`: Disable autotemp, wait for temp'

```
M109
```


# \[Marlin] M114 - Get Current Position

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Get the current position of the active nozzle. Includes stepper values.

If `M114_DETAIL` is enabled the `D` parameter will provide more details such as leveling information and kinematics.

## Notes

* Hosts should respond to the output of [`M114`](https://app.gitbook.com/docs/gcode/M114.html) by updating their current position.

## Usage

`M114` `[D<|>]`

### Parameters

* `[D<|>]` Detailed information (requires `M114_DETAIL`)

## Examples

Get the current position

```
M114
```


# \[Marlin] M200 - Set Filament Diameter

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set the filament's current diameter and enable volumetric extrusion.

In volumetric extrusion mode the E axis specifies cubic mm instead of linear mm, and the firmware calculates how much length to extrude for the given volume based on the filament diameter.

## Usage

`M200` `[D<diameter>]` `[T<index>]`

### Parameters

* `[D<|>]` Detailed information (requires `M114_DETAIL`)

## Examples

A common diameter close to 3mm:

```
M200 D2.85
```

Turn off volumetric extrusion

```
M200 D0
M200 D  ; also works
```


# \[Marlin] M201 - Set Print Max Acceleration

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set the max acceleration for one or more axes (in current units-per-second squared).

## Notes

* View the current setting with [`M503`](https://app.gitbook.com/docs/gcode/M503.html).
* If `EEPROM_SETTINGS` is enabled, these are saved with [`M500`](https://app.gitbook.com/docs/gcode/M500.html), loaded with [`M501`](https://app.gitbook.com/docs/gcode/M501.html), and reset with [`M502`](https://app.gitbook.com/docs/gcode/M502.html).

## Usage

`M201` `[E<accel>]` `[T<index>]` `[X<accel>]` `[Y<accel>]` `[Z<accel>]`

### Parameters

* `[E<accel>]` E axis max acceleration
* `[T<index>]` Target extruder (Requires DISTINCT\_E\_FACTORS)
* `[X<accel>]` X axis max acceleration
* `[Y<accel>]` Y axis max acceleration
* `[Z<accel>]` Z axis max acceleration

## Examples

Set max acceleration lower so it sounds like a robot:

```
M201 X50 Y50
```


# \[Marlin] M203 - Set Max Feedrate

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set the max feedrate for one or more axes (in current units-per-second).

## Notes

* View the current setting with [`M503`](https://app.gitbook.com/docs/gcode/M503.html).
* If `EEPROM_SETTINGS` is enabled, these are saved with [`M500`](https://app.gitbook.com/docs/gcode/M500.html), loaded with [`M501`](https://app.gitbook.com/docs/gcode/M501.html), and reset with [`M502`](https://app.gitbook.com/docs/gcode/M502.html).

## Usage

`M203` `[E<units/s>]` `[T<index>]` `[X<units/s>]` `[Y<units/s>]` `[Z<units/s>]`

### Parameters

* `[E<units/s>]` E axis max feedrate
* `[T<index>]` Target extruder (Requires DISTINCT\_E\_FACTORS)
* `[X<units/s>]` X axis max feedrate
* `[Y<units/s>]` Y axis max feedrate
* `[Z<units/s>]` Z axis max feedrate

## Examples

Set max feedrate for XY to 100mm/s:

```
M203 X100 Y100
```


# \[Marlin] M204 - Set Starting Acceleration

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set the preferred starting acceleration for moves of different types.

## Notes

* View the current setting with [`M503`](https://app.gitbook.com/docs/gcode/M503.html).
* If `EEPROM_SETTINGS` is enabled, these are saved with [`M500`](https://app.gitbook.com/docs/gcode/M500.html), loaded with [`M501`](https://app.gitbook.com/docs/gcode/M501.html), and reset with [`M502`](https://app.gitbook.com/docs/gcode/M502.html).
* Legacy `M204 S<accel>` is deprecated. Use separate paremeters `M204 P<accel> T<accel>` instead.

## Usage

`M204` `[P<accel>]` `[R<accel>]` `[S<accel>]` `[T<accel>]`

### Parameters

* `[P<accel>]` Printing acceleration. Used for moves that include extrusion (i.e., which employ the current tool).
* `[R<accel>]` Retract acceleration. Used for extruder retraction moves.
* `[S<accel>]` Legacy parameter for move acceleration. Set both printing and travel acceleration.
* `[T<accel>]` Travel acceleration. Used for moves that include no extrusion.


# \[Marlin] M205 - Set Advanced Settings

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set various motion settings. See parameters for details.

## Notes

* View the current setting with [`M503`](https://app.gitbook.com/docs/gcode/M503.html).
* If `EEPROM_SETTINGS` is enabled, these are saved with [`M500`](https://app.gitbook.com/docs/gcode/M500.html), loaded with [`M501`](https://app.gitbook.com/docs/gcode/M501.html), and reset with [`M502`](https://app.gitbook.com/docs/gcode/M502.html).

## Usage

`M205` `[B<µs>]` `[E<jerk>]` `[J<deviation>]` `[S<units/s>]` `[T<units/s>]` `[X<jerk>]` `[Y<jerk>]` `[Z<jerk>]`

### Parameters

* `[B<µs>]` Minimum segment time (µs)
* `[E<jerk>]` E max jerk (units/s)
* `[J<deviation>]` Junction deviation (requires JUNCTION\_DEVIATION)
* `[S<units/s>]` Minimum feedrate for print moves (units/s)
* `[T<units/s>]` Minimum feedrate for travel moves (units/s)
* `[X<jerk>]` X max jerk (units/s)
* `[Y<jerk>]` Y max jerk (units/s)
* `[Z<jerk>]` Z max jerk (units/s)

## Examples

Set some advanced settings.

```
M205 T40 ; Travel feedrate = 40mm/s
```


# \[Marlin] M400 - Finish Moves

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

This command causes all GCode processing to pause and wait in a loop until all moves in the planner are completed.

## Usage

`M400`

## Examples

Wait for moves to finish before turning off the spindle

```
M400
M5    ; Without M400 this happens too soon
```


# \[Marlin] M410 - Quickstop

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Stop all steppers instantly. Since there will be no deceleration, steppers are expected to be out of position after this command.

## Notes:

* This command is intended only for emergency situations.
* If `EMERGENCY_PARSER` is not enabled, this will be delayed.

## Usage

`M410`

## Examples

Stop all steppers now.

```
M410
```


# \[Marlin] M420 - Bed Leveling State

{% hint style="success" %}
**📅Update: 2020/10/13**
{% endhint %}

## Description

Get and/or set bed leveling state. For mesh-based leveling systems use `Z` parameter to set the Z Fade Height.

## Notes

The "current position" may change in response to `M420 Sn`.

## Usage

`M420` `[S<bool>]` `[V<bool>]` `[Z<linear>]`

## Parameters

* `[S<bool>]` Set enabled or disabled. A valid mesh is required to enable bed leveling. If the mesh is invalid / incomplete leveling will not be enabled.
* `[V<bool>]` Verbose: Print the stored mesh / matrix data
* `[Z<linear>]` Set Z fade height (Requires ENABLE\_LEVELING\_FADE\_HEIGHT)
  * With Fade enabled, bed leveling correction is gradually reduced as the nozzle gets closer to the Fade height. Above the Fade height no bed leveling compensation is applied at all, so movement is machine true.
  * Set to 0 to disable fade, and leveling compensation will be fully applied to all layers of the print.

## Examples

Enable bed leveling:

```
M420 S1
```

Disable bed leveling:

```
M420 S0
```

Print the stored mesh/matrix data

```
M420 V
```


# \[Marlin] M500 - Save Settings

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Save all configurable settings to EEPROM.

## Notes:

* Requires `EEPROM_SETTINGS`.
* Since Marlin 1.1.0 only changed bytes are written to prolong EEPROM life.

  **Usage**

  `M500`

## Examples

Save settings

```
M500
```


# \[Marlin] M501 - Restore Settings

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Load all saved settings from EEPROM.

## Notes:

* Requires `EEPROM_SETTINGS`.

  **Usage**

  `M501`

## Examples

Restore all settings.

```
M501
```


# \[Marlin] M502 - Factory Reset

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Reset all configurable settings to their factory defaults.

To also reset settings in EEPROM, follow with [`M500`](https://app.gitbook.com/docs/gcode/M500.html).

## Notes:

* Requires `EEPROM_SETTINGS`.
* Since Marlin 1.1.0 only changed bytes are written to prolong EEPROM life.

  **Usage**

  `M500`

## Examples

Reset settings and save them to EEPROM

```
M502 ; reset!
M500 ; saved!!
```


# \[Marlin] M503 - Report Settings

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Print a concise report of all current settings (in SRAM) to the host console.

## Notes:

* Does not require `EEPROM_SETTINGS`.

## Usage

`M503` `[S<flag>]`

### Parameters

* `[S<flag>]` Detailed output flag. (true if omitted.)


# \[Marlin] M504 - Validate EEPROM contents

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Validate the contents of the EEPROM.

## Notes

* Requires `EEPROM_SETTINGS`.

## Usage

`M504`

## Examples

Validate EEPROM contents.

```
M504
```


# \[Marlin] M906 - TMC Motor Current

{% hint style="success" %}
**📅Update: 2020/09/18**
{% endhint %}

## Description

Set the current for a stepper motor in milliamps units.

## Notes

* Requires one or more TMC stepper drivers.

## Usage

`M906` `[E<mA>]` `[I<index>]` `[T<index>]` `[X<mA>]` `[Y<mA>]` `[Z<mA>]`

### Parameters

* `[E<mA>]` Current for the E0 stepper
* `[I<index>]` (>=1.1.9) Index for dual steppers. Use I1 for X2, Y2, and/or Z2.
* `[T<index>]` (>=1.1.9) Index (tool) number for the E axis. If not specified, the E0 extruder.
* `[X<mA>]` Current for the X stepper
* `[Y<mA>]` Current for the Y stepper
* `[Z<mA>]` Current for the Z stepper

## Examples

Set the XYZ motor currents to 200mA

```
M906 X200 Y200 Z200
```

Set the E1 motor current to 10mA

```
M906 T1 E10
```

Set the X2 motor current to 5mA

```
M906 I1 X5
```


# Rotrics Arm 用户手册\_V1.0

## 中文的使用说明不是最新版，请点击下方链接查阅英语版本的使用说明。

<https://manual.rotrics.com/>

## 概览

{% hint style="success" %}
**📅更新日期: 2020/05/10**
{% endhint %}

Rotrics机械臂用户手册将指导用户如何安装与使用Rotrics机械臂的各个模块和功能，包括写字绘画、激光雕刻、3D打印和气动搬运等。每个版块内容包括：

* 如何安装以及保证机械臂正常运行的步骤，用“1/2/3”标识。
* 使用建议和故障排除。
* 帮助解决使用过程中遇到的问题的FAQ。

**💡使用建议：**

* **切换语言：**&#x70B9;击左上角切换语言或者点击下方选项选择对应的语言。
  * [English](https://rotricsarm.gitbook.io/rotrics-manual/)
  * [简体中文](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/)
* **快速搜索关键词：**&#x70B9;击右上角的�&#xDD0D;**`Search`**&#x67E5;找功能搜索关键词。
* **点击目录跳转：**&#x901A;过左侧目录了解文档的内容结构，点击标题即可跳转到相应的页面。

\*内容如有更新，恕不另行通知。

\*如果您对说明书有任何问题或建议，请通过如下方式联系我们 - <info@rotrics.com>

**📰Rotrics 官网：** [www.rotrics.com](https://www.rotrics.com)

**📰Rotrics用户社区：**

* [Rotrics Facebook小组](https://www.facebook.com/groups/rotrics)

*©2018-2020 深圳赛文博特智能科技有限公司 版权所有*

## 目录

#### 快速入门指南

#### [产品概述](https://www.manual.rotrics.com/v/v1.0-chinese/overview_chn)

#### [Rotrics Studio软件](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/rotrics_studio_chn)

#### [写字绘画](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/drawing_and_writing_chn)

#### [​激光雕刻](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/laser_engraving_chn)

#### [3D打印](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/3d_print_chn)

#### [拾取和搬运](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/pick_and_place_chn)

#### [配件说明](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/accessories_chn)

#### [API和SDK](https://rotricsarm.gitbook.io/rotrics-manual/v/v1.0-chinese/api_and_sdk_chn)


# 快速入门指南

## 简介

本节内容关于如何快速上手使用Rotrics机械臂，在开箱后第一时间使用Rotrics机械臂。用户可以连接Rotrics Studio或者触控屏控制机械臂运动，跟随下面的操作指导，即可快速完成机械臂的初始化，控制XYZ三轴运动、前端模块功能等。

如需使用机械臂完成写字绘画、激光雕刻、3D打印、示教等复杂功能，请点击左侧菜单跳转到对应的章节查看详细的功能说明。

## 使用Rotrics Studio控制机械臂

#### 1. 安装机械臂

将机械臂置于平整干净的桌面上，插上电源，即可完成机械臂的安装。

#### 2. 连接Rotrics Studio

* 在[www.rotrics.com](https://rotrics.oss-cn-shenzhen.aliyuncs.com/rotrices/udpate/Rotrics%20Studio%20Setup%200.0.23.exe)下载并安装Rotrics Studio软件；
* 使用USB-C线将机械臂连接到电脑；&#x20;
* 打开Rotrics Studio，连接机械臂；

![](/files/-M76xz9oRGY64aSyQizg)

#### 3. 初始化机械臂

切换到Basic界面，右侧Basic版块下的HOME按钮，即可完成机械臂的初始化。

![](/files/-M7BSlIwskkVGEvcUyvT)

#### 4. 使用Rotrics Studio控制机械臂的运动和功能

通过右侧&#x7684;**`Basic`**&#x7248;块或底部&#x7684;**`Easy Control`**&#x5373;可控制机械臂的运动和功能。

![](/files/-M7BSuRcBiPcqUOy3X1u)

## 使用触控屏控制机械臂

#### 1. 安装机械臂

将机械臂置于平整干净的桌面上，插上电源，即可完成机械臂的安装。

💡**Tips:** 如果已经完成使用Rotrics Studio控制机械臂运动，直接连接触控屏即可点&#x51FB;**`Basic -> HOME`**&#x63A7;制机械臂运动，无需重启。

#### 2. 连接触控屏

使用双头Type-C线将触控屏连接到机械臂。

#### 3. 初始化机械臂

点&#x51FB;**`Basic -> HOME`**，即可完成机械臂的初始化。

#### 4. 使用触控屏控制机械臂的运动

点击X＋、Y±、Z±即可控制机械臂的运动。


# 产品概述

## 简介

Rotrics机械臂是一款小型的桌面级高精度机械臂，独有的0.05毫米超高重复定位精度减速器、模块化的前端执行器和超静音的电机驱动模块，使得桌面级机械臂有了更多的可能。

Rotrics机械臂搭载不同的前端模块能够完成包括写字绘画、激光雕刻、3D打印和拾取搬运等多种功能。配套的简单易用的桌面控制软件，支持多种功能，提供了所见即所得的使用体验。

机械臂还提供包括Python和C++在内的多种语言的API，用户可以通过API编程控制机械臂，将机械臂集成到已有的项目中。

## 本节目录

#### 部件名称

#### 机械臂坐标系说明

#### 通信接口

#### 安装模块

#### 产品维护


# 部件名称

## 部件名称

![](/files/-M5aSXkbiBLsTjcsy3aP)

* Axis-1 - 关节1
* End-effector Mount - 前端模块接头
* End-effector Button - 前端模块更换按钮
* Power Button - 电源开关
* Base - 底座
* Ports - 电源端子和外部通信接口
* Axis-2 -关节2


# 机械臂坐标说明

机械臂默认使用的是基于机械坐标原点（位于底座和大臂连接处）的直角坐标系（也叫机床坐标系）。坐标系说明如下图：

![Rotrics机械臂坐标系](/files/-M5aUfEIlgsBm1gCrG5U)

💡**Tips: 机械臂获得较大工作面积的点在`X300，Y0，Z0`的位置，即Rotrics Studio和触控屏上的HOME点。对于3D打印来说，X300，Y0在打印平面上的投影是最合适的打印开始点。**

Rotrics Studio软件激光和写字绘画界面展示的灰色工作区域就是在机械坐标系下的工作范围。

![Rotrics机械臂在平面下的工作区域](/files/-M76c-7fMU1M6KLcHlKs)

当使用第三方软件生成G-code时，需要设定动作坐标偏置（设置工作中心坐标为`X300, Y0`），或者使用G92指令设定工作坐标系（调整到合适的开始位置后，发送`G92 X0 Y0 Z0`）。具体会在对应功能生成G-code部分详细说明。


# 通信接口

### Rotrics机械臂有4个通信接口：

![](/files/-M5aVEXwjkrn4hSQvh7Y)

* 1 x 12pin的步进电机控制接口。主要用于驱动3D打印挤出机，滑轨和传送带等。
* 2 x USB Type-C接口。主要用于通过串口与外部模块和PC通信，可以连接PC、触控屏、气泵盒等。
* 1 x 5pin的前端通信接口。主要用于控制激光、3D打印的冷却风扇以及气动旋转模块等。

### 12-pin步进电机接口引脚说明

![](/files/-M76dT5T-6d2AaEubPOM)

* Motor A1、B1、A2、B2，四线步进电机的对应连接线；
* PWM x 3，三个PWM通信控制接口，使用同一个PWM信号；
* +12V x 3，12V电源；
* GND；
* ADC，ADC接口；

### 5-pin前端引脚说明

![](/files/-M76ePFYPNDyZw04xmnf)

前端5-pin接口主要用于控制前端模块功能，比如激光雕刻模块、3D打印模块、以及后续推出的旋转关节模块，还可以用于DIY前端模块，比如制作更高功率的激光雕刻模块。


# 安装模块

## 请按照以下步骤完成模块的安装和更换。

#### 1) 关闭机械臂电源。

❗**Notice:** 在更换模块的时候，一定要关闭机械臂电源，重启机械臂。

#### 2) 按下“前端模块更换按钮”即可拆下模块。

模块可能卡的太紧，在拆卸模块的时候要注意安全。

#### 3) 将模块插入到机械臂前端接口，听到”咔“的声音，即可完成安装。

❗❗**Notice:** 拆下3D打印模块时请注意安全，**不要触碰到高温喷嘴**`。`


# 产品维护

* 请定期清洁机械臂底部脚垫，保证最好的固定效果。
* 请把机械臂放置在干净平整的桌面上，以实现最好的工作效果。
* 请避免机械臂长期（超过一个月）保持在某一个姿态，请**至少每个月启动一次机械臂**，以保证机械臂的精度。
* 不用的时候请把机械臂遮盖起来，防止落尘。

如果有任何使用问题，请通过如下方式联系我们 - <support@rotrics.com>


# FAQ

## Q1：如何更新固件？

我们在生产的过程中一直在不断的优化Rotrics机械臂的底层固件，因此第一批用户收到的机械臂固件和最新的固件不一致，需要更新机械臂固件之后再开始正式使用。

由于目前Rotrics Studio还不支持更新固件（下一版本会支持），目前需要使用第三方的软件来更新 。由此带来的不便，希望您能够谅解。

请按照下面的步骤更新Rotrics机械臂的固件：

### Windows系统

#### 1) 下载第三方固件烧录软件并且下载最新版本的固件

{% embed url="<https://osdn.net/projects/ttssh2/>" %}

{% file src="/files/-M7biGpI8ktrFFwhtjIP" %}
Rotrics Firmware V2.1.1\_20200518
{% endfile %}

#### 2) 使用USB-C线将机械臂连接到电脑

#### 3) 打开Tera Term软件，选中Serial，选择对应的串口，点击OK

<div align="left"><img src="/files/-M7bjk6BqQdgcEVJFBU0" alt=""></div>

也可以点击 File-> New Connection选择串口。

#### 4) 发送`M2002`准备进入Boot loader，发送`M2003`确认进入Boot Loader

发送的时候软件不会显示输入的指令。

<div align="left"><img src="/files/-M7bkFtFP_WalENwHJpT" alt=""></div>

#### 5) 输入`5`，确认硬件版本，版本号为V3.1或者V3.2，输入`1`，进入固件烧录准备模式

<div align="left"><img src="/files/-M7blMGmadxVUke2mhSJ" alt=""></div>

<div align="left"><img src="/files/-M7bnpejGcg1RS_wPoml" alt=""></div>

#### 6) 点击 `File -> Transfer -> YMODEN -> Send`，选择对应的固件版本后点击`Open`

<div align="left"><img src="/files/-M7bl-q63gTSJ2OpWLEM" alt=""></div>

![](/files/-M7blostaMeCwZUpqpEf)

#### 6) 等待固件自动烧录完成

<div align="left"><img src="/files/-M7bm0aB3LyK3vcyXqQ1" alt=""></div>

<div align="left"><img src="/files/-M7bn1komAzZGphjtjxM" alt=""></div>

如果烧录失败，输&#x5165;**`a`**，取消烧录，输&#x5165;**`1`**，重新进入烧录准备模式，再重复步骤5)和6)

#### 7) 输&#x5165;**`3`**，运行当前固件版本主程序

<div align="left"><img src="/files/-M7bnCm6YmIKT3nVx6lK" alt=""></div>

8\) 关闭Tera Term软件，打开Rotrics Studio正常使用机械臂。

## Q2： 如何更新触控屏固件

1\) 下载新版本的触控屏SD卡内容

{% file src="/files/-M7bp7EsJVbevFqKUMo6" %}
Rotrics\_SDcard\_20200518
{% endfile %}

2\) 将文件拷贝到SD卡，点击替换文件

![](/files/-M7bqO9conA2dVK5dl8s)

#### 3) 将SD卡插入到触控屏，连接到机械臂，打开电源

等待几秒钟，触控屏会自动完成更新。

更新完成之后，点击Settings -> About，确认版本号为1.0.8即为最新版本

## Q3：机械臂运动过程中出现卡顿

**如果机械臂出现运动干涉等情况，需要按一下步骤进行重新标定机械臂：**

1\. 将机械臂摆到标定位置，摆正，大小臂摆到最大位置，如下图所示&#x20;

![](/files/-M7lFlDBec6LHrfu31n2)

2\. 通过Rotrics Studio的Serial monitor发送M889命令,机械臂会重新读取并保存机械臂标定位置。

3\. 发送M1112命令或点击HOME键，机械臂会自动运行到X300 Y0 Z0。


# Troubleshooting

**影响机械臂运动尺寸偏差的几大因素：**

**1. 机械臂初始标定位置**，即大小臂摆到最大位置，底座摆到中间位置。

![](https://lh3.googleusercontent.com/kTVl8caIJ17fHBGgmrnFot-zEQCdIr_sGxVL9Gw9KmXGofeRVSMJekulTTsyB2qS8TTllOn5DolZAt5Fj5Tiq6wG0OtFveOPHzGfUuyznpph6G6EHFYutKWAsK4UPvTYzltkPW9B)

* 机械臂的运动学逆解(inverse kinematics)是基于初始标定位置开始计算
* M1111指令可以让机械臂回到初始标定位置，如果发现位置出现偏差需要重新标定
* 将机械臂大小臂摆到最大位置，底座摆到中间位置，然后发送M889，重新标定初始位置
* HOME(M1112指令)可以让机械臂前端运动到X300 Y0 Z0的位置

**2. 前端模块偏置尺寸**

* 机械臂的运动学逆解(inverse kinematics)同样需要前端模块偏置尺寸，如果模块尺寸错误，会造成Y轴出现较大偏差。
* M888 Pn可以设置模块，M888不带P参数，可以查看当前模块尺寸
* 还要注意笔的安装，笔必须与笔模块平行。之前有用户的笔与笔模块出现较大夹角(前端模块尺寸不再正确)导致最终尺寸出现很大的偏差。
* 通常情况下错误的前端模块偏置尺寸会造成Y轴出现较大偏差。

**3. Leveling系数**

* 当工作平面(如3D打印玻璃平面)与机械臂底座平面不平整时，通常需要进行Leveling
* 如果桌面平整时，一般不需要进行调平，可以通过M891 X0 Y0进行清零
* 发送M892调平命令后，必须重启才能生效。M892是读取Leveling系数，此命令不需要重启。
* 通常情况下，在较平整的桌面，M891 X0 Y0即可完成写字画画激光等功能
* 如果在Leveling过程中发现，XY系数过大，请重新检查工作平面及计算方法。由于机械臂的运动学结构原因，不建议设置过大的XY系数。

**4. 故障反馈**

&#x20;   如果以上检查仍无法解决问题，请整理以下故障反馈信息并反馈给我们

* 当前Firmware、Rotroics Studio的版本信息
* 出现问题的gcode文件
* 请标注出现偏差的轴，方便我们排查故障，例如通常情况下错误的前端模块偏置会造成Y轴出现较大偏差。
* 最好有工作视频，方便我们观察可能的原因.

## **机械臂超限/碰撞的解决办法**

**原理：**&#x673A;械臂主要通过位于三轴电机上的磁编码器获得绝对位置，从而计算并完成后续的运动。如果机械臂没有正确标定初始位置，或者在没有获得位置信息的情况下开始运动，均会造成运动超限或碰撞。

解决办法：

1. 重新标定初始位置
2. 机械臂开机后，在执行常规运动指令(如G0 G1)前，请务必执行HOME指令(M1112),机械臂后续运动均是以HOME位置开始计算。
3. 在调平RESET时，客户端或触摸屏会执行系数清零并重启指令，重启后也需要执行HOME指令
4. 同样的，调平设置完成时，客户端或触摸屏会执行保存系数并重启指令，重启后也需要执行HOME指令
5. 另外在不经意的坐标系变换后，也会出现超限或碰撞功能，例如G92 X0 Y0 Z0之后
6. 根据大家的反馈，为了保护机械臂发生超限或碰撞，我们会在下一版固件中，增加更多的保护功能，如必须执行HOME指令后，才能执行常规运动指令(如G0 G1)


# Rotrics Studio软件

## 简介

Rotrics Studio是为Rotrics机械臂量身打造的一款多平台控制程序。它内置了丰富的案例库以及绘画、激光雕刻、气动搬运、Blockly图形化编程等多种功能，集成了从导入图片、生成G-code文件到发送指令给机械臂等多个环节。支持Windows、Mac OS、Linux等多平台跨平台使用。

本节以Windows下Rotrics Studio的使用进行说明，具体界面以相应平台显示为准。

**点击下载 Rotrics Studio软件 -** [**www.rotrics.com/download**](https://rotrics.oss-cn-shenzhen.aliyuncs.com/rotrices/udpate/Rotrics%20Studio%20Setup%200.0.23.exe)

## 本节目录

#### 模块和功能

#### 连接机械臂

#### 生成G-code


# 模块和功能

本节是关于Rotrics Studio软件的各个界面和功能的讲解。**点击右侧目录可跳转到对应的页面内容。👉**

## 欢迎页

![](/files/-M76l_WQ1cRST5QBXB_6)

#### Welcome Page / 欢迎页

Rotrics Studio的主页，提供快速上手指南以及连接机械臂窗口。

#### Basic / 基础控制

点击进入可通过调整参数控制机械臂的运动，测试不同模块的功能，导入G-code文件等。

#### Drawing & Writing / 写字绘画

点击进入可导入图片/文字，设置笔高度，生成G代码，发送指令开始写字绘画。

#### Laser Engraving / 激光雕刻

点击进入可导入图片/文字，调整雕刻参数，调整激光功率，生成G代码，发送指令开始激光雕刻。

#### Setting / 设置

点击进入可获取设备信息，查看软件版本，进行3D打印调平等。

#### Connection / 连接设备

点击可选择连接设备，断开设备。

#### User Gallery / 使用建议

点击进入可访问网站上的用户分享的案例。

#### Studio Tips / 软件操作说明

点击进入可学习了解Rotrics Studio各个按钮的功能。

#### Submit Bugs and Review/ 提交反馈

点击进入可以提交软件反馈或者软件故障缺陷。

#### Visit ROTRICS.COM / 访问Rotrics官网

点击可访问Rotrics官网，购买更多配件和材料。

#### Studio Toturials / 软件教程

点击进入可以访问对应界面的使用指导，了解各项功能的使用。

#### Control Pannel / 控制窗口

点击可展开机械臂的运动控制窗口。通过按钮控制机械臂的运动或者生成G-code。

#### Record List / 示教过程记录列表

点击查看示教过程记录下来的动作，并在动作之间增加延时。

#### Record Movements / 记录机械臂状态

在示教过程中，点击即可记录当前机械臂的位置坐标和前端模块的状态值。

#### Emergency Stop / 紧急停止

点击可紧急停止机械臂，中止当前的工作。

❗**Notice:** 非紧急状态下请勿操作。

#### Connection Status / 查看连接状态

点击可查看当前设备的连接状态，连接设备或断开连接。

#### User Guide Tour / 软件使用指南

点击可学习如何使用Studio的功能。

## &#x20;基础控制页

![](/files/-M76qtpiCe3_TH7fVSfe)

#### Working Area

工作区域，后续版本可查看机械臂当前的运动姿态。

#### Easy Control

点击可选择并打开和关闭对应的模块功能，调整机械臂运动速度，控制X、Y、Z三轴运动。

#### Basic

点击可查看机械臂当前的运动位置，点击按钮控制机械臂三轴运动，重置机械臂坐标，设置工作原点，与运动到工作，切换运动模式，调整机械臂运动速度。

机械臂有两种运动模式，具体说明如下：

* **直线模式：**&#x673A;械臂沿着直线在两点之间运动的模式。假设有A、B两个点，在直线模式下，机械臂会沿着直线轨迹从A点运动到B点。***适用于给定轨迹的运动***，比如写字绘画、激光雕刻和3D打印功能。如果给定的轨迹是圆弧，则会通过插值算法把圆弧分解为细分的直线，模拟出圆弧轨迹。具体的插值说明可以参考[Wiki](https://zh.wikipedia.org/wiki/%E6%8F%92%E5%80%BC)。
* **快速模式：**&#x673A;械臂沿着不确定的轨迹在两点之间运动的模式。假设有A、B两个点，在快速模式下，主板会分别给机械臂的多个电机发送控制指令，机械臂在A、B两点之间的运动轨迹是不确定的。快速模式下不能进行过程控制，计算机不进行插值运算。适用于不要求运动轨迹的工作，比如拾取搬运和弹钢琴等。快速模式运动速度比直线模式快4-5倍，电机运动更顺滑。

#### Function

点击可选择开关对应模块功能，控制激光、吸盘、柔性爪模块，进行示教。

#### G-code

点击可加载第三方软件（比如Cua和Inkscape）生成的G代码文件，执行G代码文件，并查看当前进度。

## 写字绘画

![](/files/-M76s6PycU2Tl2KZ9iTC)

#### Working Area&#x20;

可查看当前的工作任务，点击图片/文字可调整大小，点击右侧按钮可开始、暂停、结束当前任务。

#### CREATE

点击可导入预设图片、文字、自定义图片。***仅支持SVG格式图片。***

#### OUTPUT

点击设置机械臂工作速度、画笔高度，点击按钮可生成G代码。

#### G-CODE

点击可加载G代码到工作区域或加载第三方G代码文件，执行G代码，查看当前进度。

## 激光雕刻

![](/files/-M76sH3uG8oJpBXwjC75)

#### Work Area / 工作区域

可查看当前的工作任务，双击图片/文字可调整大小，点击右侧按钮可开始、暂停、结束当前任务。

#### CREATE

&#x20;点击可输入文字，导入图片，调整图片参数，**B\&W和GREYSCALE支持导入PNG和JPG格式**，**VACTOR格式支持导入SVG格式**。

#### OUTPUT

点击设置机械臂工作速度，激光功率，点击按钮生成G代码。

#### G-CODE

点击可加载G代码到工作区域或加载第三方G代码文件，执行G代码，查看当前进度。




---

[Next Page](/llms-full.txt/1)

