Configure a Fake Board

The fake board returns incrementing values for digital interrupt ticks and analogs.

Configure a fake board to test integrating a board into your machine without physical hardware:

Navigate to the CONFIGURE tab of your machine’s page in the Viam app. Click the + icon next to your machine part in the left-hand menu and select Component. Select the board type, then select the fake model. Enter a name or use the suggested name for your board and click Create.

An example configuration for a fake board in the Viam app Config Builder.

Edit the attributes as applicable to your board, according to the table below.

{
  "components": [
    {
      "name": "<your-fake-board-name>",
      "model": "fake",
      "type": "board",
      "namespace": "rdk",
      "attributes": {
        "fail_new": <boolean>
      },
      "depends_on": []
    }
  ]
}

The following attributes are available for fake boards:

NameTypeRequired?Description
fail_newboolRequiredIf the fake board should raise an error at machine start-up.
analogsobjectOptionalAttributes of any pins that can be used as Analog-to-Digital Converter (ADC) inputs. See configuration info.
digital_interruptsobjectOptionalPin and name of any digital interrupts. See configuration info.

Attribute configuration

Configuring these attributes on your board allows you to integrate analog-to-digital converters and digital interrupts into your machine.

analogs

An analog-to-digital converter (ADC) takes a continuous voltage input (analog signal) and converts it to an discrete integer output (digital signal).

ADCs are useful when building a robot, as they enable your board to read the analog signal output by most types of sensors and other hardware components.

To integrate an ADC into your machine, you must first physically connect the pins on your ADC to your board.

Then, integrate analogs into the attributes of your board by following the Config Builder instructions or by adding the following to your board’s JSON configuration:

On your board’s panel, click Show more, then select Add analog. Assign a name to your analog and then fill in the required properties outlined below.

An example configuration for analogs in the Viam app Config Builder.

// "attributes": { ... ,
"analogs": [
  {
    "name": "<your-analog-reader-name>",
    "pin": "<pin-number-on-adc>",
    "spi_bus": "<your-spi-bus-index>",
    "chip_select": "<chip-select-index>",
    "average_over_ms": <int>,
    "samples_per_sec": <int>
  }
]
{
  "components": [
    {
      "model": "pi",
      "name": "your-board",
      "type": "board",
      "attributes": {
        "analogs": [
          {
            "name": "current",
            "pin": "1",
            "spi_bus": "1",
            "chip_select": "0"
          },
          {
            "name": "pressure",
            "pin": "0",
            "spi_bus": "1",
            "chip_select": "0"
          }
        ]
      }
    }
  ]
}

The following properties are available for analogs:

NameTypeRequired?Description
namestringRequiredYour name for the analog reader.
pinstringRequiredThe pin number of the ADC’s connection pin, wired to the board. This should be labeled as the physical index of the pin on the ADC.
chip_selectstringRequiredThe chip select index of the board’s connection pin, wired to the ADC.
spi_busstringRequiredThe index of the SPI bus connecting the ADC and board.
average_over_msintOptionalDuration in milliseconds over which the rolling average of the analog input should be taken.
samples_per_secintOptionalSampling rate of the analog input in samples per second.

Test analogs

Once you have configured your analogs, open the board’s TEST panel on the CONFIGURE or CONTROL tabs to monitor analogs. The numbers displayed next to each analog name represent the digital signal received from the analog inputs.

Analogs in the test panel.

digital_interrupts

Interrupts are a method of signaling precise state changes. Configuring digital interrupts to monitor GPIO pins on your board is useful when your application needs to know precisely when there is a change in GPIO value between high and low.

  • When an interrupt configured on your board processes a change in the state of the GPIO pin it is configured to monitor, it ticks to record the state change. You can stream these ticks with the board API’s StreamTicks(), or get the current value of the digital interrupt with Value().
  • Calling GetGPIO() on a GPIO pin, which you can do without configuring interrupts, is useful when you want to know a pin’s value at specific points in your program, but is less precise and convenient than using an interrupt.

Integrate digital_interrupts into your machine in the attributes of your board by following the Config Builder instructions, or by adding the following to your board’s JSON configuration:

On your board’s panel, click Show more, then select Add digital interrupt. Assign a name to your digital interrupt and then enter a pin number.

An example configuration for digital interrupts in the Viam app Config Builder.

// "attributes": { ... ,
"digital_interrupts": [
  {
    "name": "<your-digital-interrupt-name>",
    "pin": "<pin-number>"
  }
]
{
  "components": [
    {
      "model": "pi",
      "name": "your-board",
      "type": "board",
      "attributes": {
        "digital_interrupts": [
          {
            "name": "your-interrupt-1",
            "pin": "15"
          },
          {
            "name": "your-interrupt-2",
            "pin": "16"
          }
        ]
      }
    }
  ]
}

The following properties are available for digital_interrupts:

NameTypeRequired?Description
namestringRequiredYour name for the digital interrupt.
pinstringRequiredThe pin number of the board’s GPIO pin that you wish to configure the digital interrupt for.

Test digital_interrupts

Once you have configured your digital interrupts, open the board’s TEST panel on the CONFIGURE or CONTROL tabs to monitor interrupt activity. The value displayed next to each interrupt name represents the total count of interrupts triggered by the corresponding digital interrupt.

Digital interrupts in the test panel.

Troubleshooting

If your board is not working as expected, follow these steps:

  1. Check your machine logs on the LOGS tab to check for errors.
  2. Review this board model’s documentation to ensure you have configured all required attributes.
  3. Check that all wires are securely connected.
  4. Click on the TEST panel on the CONFIGURE or CONTROL tab and test if you can use the board there.

If none of these steps work, reach out to us on the Community Discord and we will be happy to help.

Next steps

For more configuration and usage info, see:

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

If you notice any issues with the documentation, feel free to file an issue or edit this file.