gpio

Configure a gpio servo to integrate a hobby servo controlled by general-purpose input/output (GPIO) pins on a non-viam:raspberry-pi:rpi model board into your machine.

{
  "components": [
    {
      "name": "<your-servo-name>",
      "model": "gpio",
      "api": "rdk:component:servo",
      "attributes": {
        "pin": "<your-pin-number>",
        "board": "<your-board-name>",
        "min_angle_deg": <float>,
        "max_angle_deg": <float>,
        "starting_position_deg": <float>,
        "frequency_hz": <int>,
        "pwm_resolution": <int>,
        "min_width_us": <int>,
        "max_width_us": <int>
      }
    }
  }
{
  "components": [
    {
      "name": "local",
      "model": "jetson",
      "api": "rdk:component:board"
    },
    {
      "name": "my_servo",
      "model": "gpio",
      "api": "rdk:component:servo",
      "attributes": {
        "pin": "16",
        "board": "local"
      }
    }
  ]
}

The following attributes are available for gpio servos:

NameTypeRequired?Description
pinstringRequiredThe pin number of the pin the servo’s control wire is wired to on the board.
boardstringRequiredname of the board the servo is wired to.
min_angle_degfloatOptionalThe minimum angle in degrees that the servo can reach.
Default = 0.0
Range = [0.0, 180.0]
max_angle_degfloatOptionalThe maximum angle in degrees that the servo can reach.
Default = 180.0
Range = [0.0, 180.0]
starting_position_degfloatOptionalStarting position of the servo in degrees.
Default = 0.0
Range = [0.0, 180.0]
frequency_hzintOptionalThe frequency of PWM pulses sent to the servo, in Hertz (Hz).
Default = [300]
Range = [0, 450]
pwm_resolutionintOptionalThe resolution of the PWM driver (for example, the number of ticks for a full period). If not specified or given as 0, the driver will attempt to estimate the resolution.
min_width_usintOptionalOverride the safe minimum PWM pulse width in microseconds.
Range > 450
max_width_usintOptionalOverride the safe maximum PWM pulse width in microseconds.
Range < 2500

Test the servo

After you establish the connection to your servo motor, open the servo’s TEST panel on the CONFIGURE or CONTROL tabs. Use the buttons to move the servo motor to the desired angle.

The servo component in the test panel