Next
fake
Follow the setup guide to install and run viam-micro-server
before configuring an esp32
board.
Viam recommends purchasing the ESP32 with a development board. The following ESP32 microcontrollers are supported:
Your microcontroller should have at least the following resources available to work with viam-micro-server
:
To test your board as you configure it, power it on.
If you plan to connect hardware to the board’s pins, connect the hardware while it’s powered off.
To configure an esp32
board, navigate to the CONFIGURE tab of your machine’s page in the Viam app and select JSON mode.
Theesp32
board model is not currently available as a built-in option in the Viam app, so you cannot use Builder mode to configure this board.
Copy the following JSON template and paste it into your configuration inside the "components"
array:
{
"name": "<your-board-name>",
"model": "esp32",
"type": "board",
"namespace": "rdk",
"attributes": {
"pins": [
<int>
],
"analogs": [
{
"pin": <int>,
"name": "<your-analog-name>"
}
],
"digital_interrupts" : [
{
"pin": <int>
}
]
},
"depends_on": []
}
{
"name": "board",
"model": "esp32",
"type": "board",
"namespace": "rdk",
"attributes": {
"pins": [15, 34],
"analogs": [
{
"pin": "34",
"name": "sensor"
}
],
"digital_interrupts": [
{
"pin": 4
}
]
},
"depends_on": []
}
Edit and fill in the attributes as applicable. Click the Save button in the top right corner of the page.
The following attributes are available for esp32
boards:
Name | Type | Required? | Description |
---|---|---|---|
analogs | array | Optional | Attributes of any pins that can be used as analog-to-digital converter (ADC) inputs. See configuration info. |
i2cs | array | Optional | Any Inter-Integrated Circuit (I2C) pins’ bus index and name. See configuration info. |
digital_interrupts | array | Optional | Any digital interrupts’ GPIO number. See configuration info. |
pins | array | Optional | The GPIO number of any GPIO pins you wish to use as input/output with the board API. |
Any pin not specified in either "pins"
or "digital_interrupts"
cannot be interacted with through the board API.
Interaction with digital interrupts is only supported with the board API; these digital interrupts cannot be used as software interrupts in driver implementations.
analogs
The following properties are available for analogs
:
Name | Type | Required? | Description |
---|---|---|---|
name | string | Required | Your name for the analog reader. |
pin | integer | Required | The GPIO number of the ADC’s connection pin, wired to the board. |
i2cs
The following properties are available for i2cs
:
Name | Type | Required? | Description |
---|---|---|---|
name | string | Required | name of the I2C bus. |
bus | string | Required | The index of the I2C bus. Must be either i2c0 or i2c1 . |
data_pin | integer | Optional | The GPIO number of the data pin. Default: 11 . |
clock_pin | integer | Optional | The GPIO number of the clock pin. Default: 6 . |
baudrate_hz | integer | Optional | The baudrate in HZ of this I2C bus. Default: 1000000 |
timeout_ns | integer | Optional | Timeout period for this I2C bus in nanoseconds. Default: 0 |
digital_interrupts
The following properties are available for digital_interrupts
:
Name | Type | Required? | Description |
---|---|---|---|
pin | integer | Required | The GPIO number of the board’s GPIO pin that you wish to configure the digital interrupt for. |
esp32
pinsYou can set PWM frequencies with Viam through the GPIOPin
API.
Refer to the Espressif documentation for valid frequencies and duty resolutions.
A configured esp32
board can support a maximum of four different PWM frequencies simultaneously, as the boards only have four available timers.
For example:
Pin | PWM Frequency (Hz) |
---|---|
12 | 2000 |
25 | 3000 |
26 | 5000 |
32 | 6000 |
At this point, if you want to add another PWM signal, you must do the following:
For example, you can set pin 33 to 2000 Hz:
Pin | PWM Frequency (Hz) |
---|---|
12, 33 | 2000 |
25 | 3000 |
26 | 5000 |
32 | 6000 |
Then, follow these requirements to change the PWM frequencies of a pin:
If your board is not working as expected, follow these steps:
If none of these steps work, reach out to us on the Community Discord and we will be happy to help.
For more configuration and usage info, see:
Was this page helpful?
Glad to hear it! If you have any other feedback please let us know:
We're sorry about that. To help us improve, please tell us what we can do better:
Thank you!