OpenCR

Introduction

 

OpenCR is the main controller board of TurtleBot3 and the sub controller of OP3.

OpenCR; Open-source Control module for ROS, is developed for ROS embedded systems to provide completely open-source hardware and software.

Everything about the board; Schematics, PCB Gerber, BOM and the firmware source code are free to distribute under open-source licenses for users and the ROS community.

The STM32F7 series is the main processor in the OpenCR which is based on a very powerful ARM Cortex-M7 with the Floating Point Unit.

The development environment for OpenCR is wide open from Arduino IDE and Scratch for young students to traditional firmware development for the expert.

OpenCR provides digital and analog input/output pins that can interface with extension board or various sensors.

Also, OpenCR features various communication interfaces: USB for connecting to PC, UART, SPI, I2C, CAN for other embedded devices.

OpenCR supports 12V, 5V, 3.3V power outputs for SBCs and sensors. It also supports hot swap power inputs between battery and SMPS.

 

For more information and examples, please refer to OpenCR wiki.

 

Specifications

Item

Specifications

Microcontroller

STM32F746NGH6 (LQFP144)

32-bit ARM Cortex®-M7 with FPU (216 MHz, 462 DMIPS)

1-Mbyte Flash memory, 320-Kbyte RAM, L1 cache

Sensor

9-axis InvenSense MPU9250(SPI Communication)

Programmer

ARM Cortex 10pin JTAG/SWD connector

USB Device Firmware Upgrade(DFU)

Serial

Extension Pins

32 pins (L : 14, R : 18) *Arduino connectivity

Sensor Module x 4 pins

Extension Connector x 18 pins

Communication Circuits

USB (Micro B USB connector / USB2.0 / Host / Peripheral / OTG)

TTL (JST 3pin / Dynamixel)

RS485 (JST 4pin / Dynamixel)

UART x 2

CAN x 1

LEDs and Buttons

LD2 (red/green) : USB communication

User LED x 4 : LD3(red), LD4(green), LD5(blue)

User Button x 2

Powers

Power Input : 5V USB, 7-24 V Battery or SMPS

Power Output :12V@1A, 5V@4A, 3.3V@800mA

Reset Button x 1 : Power Reset

Power Switch x 1 : Board On/Off

Dimensions

105(W) x 75(D) mm

Weight

60g

 

Pinouts

 

Dimensions

 

Control Table

Control Table consists of data regarding the current status and operation of OpenCR.

The user can control OpenCR by modifying data in the Control Table with an instruction packet.

Control Table for OpenCR is available only with the OP3 firmware.

 

EEPROM and RAM

Data in the RAM area will be reset to initial values whenever the power is on while data in the EEPROM area are kept even if the power is down.

Address

Addresses represent the location of data.

To read from or write data to the control table, users should assign the correct address in the Instruction packet.

Access Authorities

OpenCR has two kinds of access authority for data;

Read-only access that are used mainly for sensing, and read-and-write access that are used for controlling.

Initial Values

In case of data in the EEPROM Area, the initial values in the Init column of the below Control Table are factory default settings.

In case of data in the RAM Area, the initial values in the Init column of the below Control Table are applied when the power is on.

Highest/Lowest Byte

In the Control table, some data share an identical name, but they are attached to (L) or (H) at the end of each name to distinguish the address.

This data requires 16-bit, but it is divided into 8-bit each for the addresses of (low) and (high) byte.

These two addresses should be used in a single Instruction Packet.

 

Area

Address (Hex)

Name

Description

Access

Initial Value

(Hex)

 

 

E

E

P

R

O

M

 

 

0 (0X00)

Model Number(L)

model number low byte

R

0(0X00)

1 (0X01)

Model Number(H)

model number high byte

R

116 (0X74)

2 (0X02)

Version of Firmware

firmware version

R

-

3 (0X03)

ID

OpenCR ID

RW

200 (0XC8)

4 (0X04)

Baud Rate

Dynamixel baud rate

RW

1 (0X01)

5 (0X05)

Return Delay Time

Return Delay Time

RW

0 (0X0)

16 (0X10)

Status Return Level

Status Return Level

RW

0 (0X00)

R

A

M

 

24 (0X18)

Dynamixel Power

Dynamixel On/Off

RW

0 (0X00)

25 (0X19)

LED

LED Pannel On/Off

RW

0 (0X00)

26 (0X1A)

LED_RGB(L)

LED 5 low byte

RW

0 (0X00)

27 (0X1B)

LED_RGB(H)

LED 5 high byte

RW

0 (0X00)

28 (0X1C)

Buzzer(L)

LED 6 low byte

RW

0 (0X00)

29 (0X1D)

Buzzer(H)

LED 6 high byte

RW

0 (0X00)

30 (0X1E)

Button

Button status

R

-

31 (0X1F)

Voltage

Power Voltage

R

-

32 (0X20)

Gyro_Z(L)

Gyroscope Z-axis low byte

R

-

33 (0X21)

Gyro_Z(H)

Gyroscope Z-axis high byte

R

-

34 (0X22)

Gyro_Y(L)

Gyroscope Y-axis low byte

R

-

35 (0X23)

Gyro_Y(H)

Gyroscope Y-axis high byte

R

-

36 (0X24)

Gyro_X(L)

Gyroscope X-axis low byte

R

-

37 (0X25)

Gyro_X(H)

Gyroscope X-axis high byte

R

-

38 (0X26)

ACC_X(L)

Accelerometer X-axis low byte

R

-

39 (0X27)

ACC_X(H)

Accelerometer X-axis high byte

R

-

40 (0X28)

ACC_Y(L)

Accelerometer Y-axis low byte

R

-

41 (0X29)

ACC_Y(H)

Accelerometer Y-axis high byte

R

-

42 (0X2A)

ACC_Z(L)

Accelerometer Z-axis low byte

R

-

43 (0X2B)

ACC_Z(H)

Accelerometer Z-axis high byte

R

-

44 (0X2C)

Roll(L)

IMU Roll low byte

R

-

45 (0X2D)

Roll(H)

IMU Roll high byte

R

-

46 (0X2E)

Pitch(L)

IMU Pitch low byte

R

-

47 (0X2F)

Pitch(H)

IMU Pitch high byte

R

-

48 (0X30)

Yaw(L)

IMU Yaw low byte

R

-

49 (0x31)

Yaw(H)

IMU Yaw high byte

R

-

50 (0X32)

IMU_Control

IMU Control

RW

0x00

 

Address Function Help

EEPROM Area

Model Number

Represents the Model Number.

 

Firmware Version

Represents the firmware version.

 

ID

ID is a unique number to identify each Dynamixel.
Available ID values range from 0 (0x00) to 252 (0xFC) and value 254 (0xFE) is assigned for Broadcasting ID.
If the Broadcast ID is used to transmit instruction Packet, then all Dynamixels will receive the instruction packet.

Do NOT assign an identical ID for DYNAMIXELs in the same network.

 

Baud Rate

Baud Rate represents the communication speed. Baud Rate can be set from 0 (0x00) to 7 (0x07).

Value

Baud Rate[bps]

Target BPS

Margin of Error

1

1000000.0

1000000.0

0.000 %

3

500000.0

500000.0

0.000 %

4

400000.0

400000.0

0.000 %

7

250000.0

250000.0

0.000 %

9

200000.0

200000.0

0.000 %

16

117647.1

115200.0

-2.124 %

34

57142.9

57600.0

0.794 %

103

19230.8

19200.0

-0.160 %

207

9615.4

9600.0

-0.160 %

 

Return Delay Time

Return Delay Time will set a timer to hold a Status Packet transmission for a received Instruction Packet.

This data has a multiplier of 2μsec, therefore set value will be multiplied by 2 microseconds.

For example, if Return Delay Time is set to 10, a Status Packet will be transmitted after 20 microseconds after receiving an Instruction Packet.

Available data values range from 0 (0x00) to 254 (0xFE).

 

Status Return Level

Status Return Level decides whether to return a Status Packet or not for an Instruction Packet.

There are three options as below table.

If an Instruction Packet has a Broadcast ID, Status Packet will not be returned regardless of Status Return Level.

Value

Return of Status Packet

0

  No return against all commands (Except PING Command)

1

  Return only for the READ command

2

  Return for all commands

 

 

RAM Area

Dynamixel Power

Value

Meaning

0

Turn OFF the power of all Dynamixels connected to OpenCR.

1

Turn ON the power of all Dynamixels connected to OpenCR.

 

 

LED

BIT

7

6

5

4

3

2

1

0

Value

X

X

X

X

X

LED_3

LED_2

LED_1

For each set bit, corresponding LED will be turned on.

For each reset bit, corresponding LED will be turned off.

 

LED_RGB

BIT

15

14~10

9~5

4~0

Value

X

LED_B

LED_G

LED_R

Chest LED is a tricolor LED and the color can be represented with RGB values.

 

Buzzer

Value

Description

0 ~ 65535

Frequency(Hz) of Buzzer

If the Buzzer value is set to 0, the buzzer will be turned off.

 

Button Status

BIT

7 ~ 4

3

2

1

0

Value

X

BUTTON_S4

BUTTON_S3

BUTTON_S2

BUTTON_S1

For each bit set to 1, the button is being pressed.

For each bit set to 0, the button is released.

 

Voltage

This value stands for the input voltage of the controller with a multiplier of 10.

For example, when 10V is supplied to the controller, the Voltage value will be 100.

 

Gyro X/Y/Z

The following image represents the direction of Gyro axis of OpenCR.

Each arrow represents the orientation of gyroscope axis.

The data range is -2000dps ~ +2000dps.

The following graph shows relation between actual data value and angular velocity value.

 

 

Acceleration X/Y/Z

The following picture represents the direction of accelerometer axis of OpenCR.

Each arrow represents the orientation of accelerometer axis.

The data range is -2g ~ +2g.

The following graph shows relation between actual data value and acceleration value.

 

IMU Control

This data controls roll / pitch / yaw offset values for the IMU sensor.

BIT

7

6

5

4

3

2

1

0

Value

X

X

X

X

Gyro

Yaw

Pitch

Roll

For each bit set to 1, corresponding roll, pitch, yaw, gyro values will be used for calculating offset values.

The calculation will take for 2 seconds and then each bit will be reset to 0.

 

Downloads

OpenCR_REVF Schematic

OpenCR_REVF PCB

 OpenCR_REVF_Gerber

 OpenCR_REVF Layout

OpenCR_REVF BOM