OpenCR

Opencr by Robotis

OpenCR 1.0 ARM robot controller compatible with Synthiam ARC-Arduino firmware install, 921,600 baud, pin mapping, PWM & EZ-Script
Connection Type
USB
Number of Servos
200
Audio Support
No
Camera Support
No
UARTs
None
I2C Support
No
ADC Ports
None
Digital Ports
None

Install the Firmware Source Code (Arduino IDE)

You will use the Arduino IDE to open, compile, and upload (flash) the firmware to the OpenCR board. “Firmware source code” means the human-readable code you compile into the program that runs on the board.

  1. Download and install the Arduino IDE.
    If you already have it installed, open it once to ensure it starts correctly.
  2. In Arduino IDE, go to File → Preferences. In the Additional Boards Manager URLs box, paste this link:
    https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
    This tells Arduino IDE where to download the OpenCR “board package” (drivers, definitions, examples, and tools for this controller).
  3. Install the OpenCR board package:
    • Go to Tools → Board → Boards Manager
    • Search for OpenCR
    • Find OpenCR by ROBOTIS and click Install
    When it finishes, you should see it marked as INSTALLED.
  4. Select the OpenCR board in Arduino IDE:
    • Go to Tools → Board
    • Select OpenCR Board (or a similarly named OpenCR option)
    Selecting the correct board ensures the code compiles for the OpenCR’s ARM CPU and uploads properly.
  5. Download the ARC-compatible firmware source code:
    After downloading, unzip the file to a folder you can easily find (for example, your Desktop).
  6. Follow the step-by-step guide to compile and upload (flash) the firmware:
    Uploading firmware replaces the program on the board. If upload fails, double-check the selected COM port under Tools → Port.

Connectivity (ARC Settings)

Many Arduino-style devices use 9600 baud by default, but the OpenCR firmware used here is configured for a much faster connection: 921,600 baud.

Ports (How ARC Maps to OpenCR Pins)

ARC uses familiar port naming (such as D0D13 for digital and A0A* for analog). OpenCR labels and capabilities can differ, so it’s helpful to reference the official pin mapping.

Technical pinout and examples from ROBOTIS: https://emanual.robotis.com/docs/en/parts/controller/opencr10/#examples

OpenCR pinout diagram

Beginner-friendly notes:

  • Ax ports: These can be used as Analog Inputs (reading sensor values like potentiometers, distance sensors, etc.) or as Digital I/O depending on how you use them. In other words, an A* pin can often behave like a D* pin.
  • UART ports: The OpenCR has hardware serial ports. In this firmware mapping:
    • UART 0, 1, 2 map to UART 1, 2, 3 respectively in ARC
    Use UART when connecting serial devices (some sensors, motor controllers, GPS modules, etc.).
  • If you are unsure which pin to use for a device in ARC, consult the ROBOTIS mapping page above to confirm the correct OpenCR header/pin and its supported modes.

PWM Pins (For Servos, Motor Speed, LED Dimming)

PWM stands for Pulse Width Modulation. ARC uses PWM for things like:

  • Controlling servo positions
  • Controlling DC motor speed (with a compatible motor driver)
  • Dimming LED brightness

ARC EZ-Script Example (Blink the Onboard LED)

The OpenCR has an onboard LED connected to Digital 13 (D13 in ARC). This script turns the LED on and off every 500 milliseconds (half a second) in a loop.

:loop

Set(d13, true)

sleep(500)

Set(d13, false)

sleep(500)

goto(loop)
Tip: If the LED does not blink, confirm (1) the firmware is uploaded, (2) ARC is connected to the correct COM port, and (3) the baud rate is set to 921,600.

ARC Pro

Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.