Configure a gpio Servo

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

Navigate to the Config tab of your robot’s page in the Viam app. Click on the Components subtab and navigate to the Create component menu. Enter a name for your servo, select the type servo, and select the gpio model.

Click Create component:

An example configuration for a gpio servo in the Viam app Config Builder.

Edit and fill in the attributes as applicable.

{
    "components": [
        {
            "name": "<your-servo-name>",
            "type": "servo",
            "model": "gpio",
            "attributes": {
                "pin": "<your-pin-number>",
                "board": "<your-board-name>"
            }
        },
        ... // insert your board component config
    }
{
  "components": [
    {
        "name": "local",
        "type": "board",
        "model": "jetson"
    }, 
    {
        "name": "my_servo",
        "type": "servo",
        "model": "gpio",
        "attributes": {
            "pin": "16",
            "board": "local"
        }
    }
  ]
}

The following attributes are available for gpio servos:

NameTypeInclusionDescription
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 PMW pulses sent to the servo, in Hertz (Hz).
Default = [300]
Range = [0, 450]
pwm_resolutionintOptionalThe resolution of the PMW 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 PMW pulse width in microseconds.
Range > 450
max_width_usintOptionalOverride the safe maximum PMW pulse width in microseconds.
Range < 2500


Have questions, or want to meet other people working on robots? Join our Community Discord.