hansj66/dynamixel2espressif

uploaded 2 weeks ago
Dynamixel Servo Library

readme

# Dynamixel2Espressif

This is an espressif port of the [Dynamixel2Arduino](https://github.com/ROBOTIS-GIT/Dynamixel2Arduino) Dynamixel library. 

## Using the component

Run the following command in your ESP-IDF project to install this component from the espressif component registry:

```bash
idf.py add-dependency "hansj66/dynamixel2espressif"
```

Or - add the following to your idf_component.yml to define a dependency to the github repository

```bash
dependencies:
	dynamixel2espressif:
		path: dynamixel2espressif.git
		git: ssh://git@github.com:hansj66/dynamixel2espressif.git
```

To run an example, create it as follows:

```bash
idf.py create-project-from-example "hansj66/dynamixel2espressif:<example name>"
```

Example: If you want to create a project based on the "ping" example:

```bash
idf.py create-project-from-example "hansj66/dynamixel2espressif:ping"
```

The default pinout is:

* TX_PIN=17
* RX_PIN=16
* DIR_PIN=23

To change the default pinout:
```bash
idf.py menuconfig
```
And then navigate to the menu "Dynamixel 2 Espressif configuration" to customize the pinout to your application.

## Examples

Examples beyond the "ping" and "position" examples can be found in the original [Dynamixel2Arduino](https://github.com/ROBOTIS-GIT/Dynamixel2Arduino) repository. The syntax is identical with the espressif version, except for the constructor.

## License

This component is provided under Apache 2.0 license, see LICENSE file for details.

## Hardware

This library has been tested with Dynamixel XL-320 and Dynamixel AX-12 servos. These are all using half duplex protocol.

The DIR_PIN is not necessary if using RS-485 servos (RS-485 is currently not tested).

### Test setup

[schematic](https://github.com/hansj66/dynamixel2espressif/blob/main/schematic/schematic.png)

This schematic shows a section of the schematic for a PCB with 6 physical ports (Since the servos are normally daisy chained, you can get away with having only having one physical port).

Since the ESP32 is a 3.3V device and the servos use 5V logic, we have to add a level shifter between the ESP and the dynamixel bus. 

The level shifter controls the [NC7WZ241](https://no.mouser.com/datasheet/2/308/1/NC7WZ241_D-2316814.pdf)/[74LVC2G241](https://www.ti.com/lit/ds/symlink/sn74lvc2g241.pdf?ts=1714724910252&ref_url=http%253A%252F%252Ffocus.ti.com%252Flit%252Fgpn%252Fsn74lvc2g241) buffer which in turn controls the bus. The port handler pulls the SERVO_DIR pin high before transmission and then pulls it low after transmission, to enable reception of status packets from the servos.

Please refer to the The [Dynamixel 2.0 protocol](https://emanual.robotis.com/docs/en/dxl/protocol2/) in the ROBOTIS e-manual for details.

Links

Supports all targets

Maintainer

  • Hans Jørgen Grimstad <hansj66@gmail.com>

License: Apache-2.0

To add this component to your project, run:

idf.py add-dependency "hansj66/dynamixel2espressif^0.0.4"

or download archive

Dependencies

  • ESP-IDF >=5.0
  • Examples:

    ping

    To create a project from this example, run:

    idf.py create-project-from-example "hansj66/dynamixel2espressif^0.0.4:ping"

    or download archive (40 bytes)

    position

    To create a project from this example, run:

    idf.py create-project-from-example "hansj66/dynamixel2espressif^0.0.4:position"

    or download archive (40 bytes)

    Stats

    • Archive size
      Archive size: 49.03 KB
    • Downloaded in total
      Downloaded in total 2 times
    • Downloaded this version
      This version: 2 times

    Badge

    hansj66/dynamixel2espressif version: 0.0.4
    |