Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DOCS-1637: Make ultrasonic sensor page in micro-RDK #2614

Merged
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions docs/build/micro-rdk/sensor/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: "Micro-RDK Sensor Models"
linkTitle: "Sensor"
weight: 30
type: "docs"
description: "Support in the micro-RDK for sensors, devices that measur information about the outside world."
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sp. measure

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops! thanks

images: ["/icons/components/sensor.svg"]
tags: ["sensor", "components", "micro-rdk"]
no_list: true
# SMEs: Andrew Morrow
---

A sensor is a device that can measure information about the outside world.
For more information and models supported by the {{< glossary_tooltip term_id="rdk" text="RDK" >}}, see [Sensor Component](/components/sensor/).

## Supported models

For configuration information, click a supported sensor model name:

<!-- prettier-ignore -->
| Model |Description |
| ----- | ---------- |
| [`ultrasonic`](ultrasonic/) | [HC-SR04](https://www.sparkfun.com/products/15569) ultrasonic sensors |

{{% readfile "/static/include/micro-create-your-own.md" %}}

## API

The micro-RDK [sensor API](/components/sensor/#api) supports only the following client SDK API methods, which operate the same as in the full-featured RDK:

- [`GetReadings()`](/components/sensor/#getreadings)
109 changes: 109 additions & 0 deletions docs/build/micro-rdk/sensor/ultrasonic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
---
title: "Configure an Ultrasonic Sensor (Micro-RDK)"
linkTitle: "ultrasonic"
weight: 60
type: "docs"
description: "Configure an ultrasonic sensor."
tags: ["sensor", "components", "ultrasonic"]
icon: true
images: ["/icons/components/sensor.svg"]
# SME: Andrew Morrow
---

Configure an `ultrasonic` sensor to integrate the [HC-S204](https://www.sparkfun.com/products/15569) ultrasonic distance sensor into your machine:

{{< tabs >}}
{{% tab name="Config Builder" %}}

Navigate to the **Config** tab of your machine's page in [the Viam app](https://app.viam.com).
Click on the **Components** subtab and click **Create component**.
Select the `sensor` type, then select the `ultrasonic` model.
Enter a name for your sensor and click **Create**.

![Creation of a ultrasonic sensor in the Viam app config builder.](/build/micro-rdk/ultrasonic/ultrasonic-sensor-ui-config.png)

Copy and paste the following attribute template into your sensor's **Attributes** box.
Then remove and fill in the attributes as applicable to your sensor, according to the table below.

{{< tabs >}}
{{% tab name="Attributes template" %}}

```json {class="line-numbers linkable-line-numbers"}
{
"trigger_pin": "<pin-number>",
"echo_interrupt_pin": "<pin-number>",
"timeout_ms": <int>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have a convention for indicating optional parameters in an attributes template like this? If so, timeout_ms should be noted as optional.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't, but re. later comment removed this

}
```

{{% /tab %}}
{{% tab name="Attributes example" %}}

```json {class="line-numbers linkable-line-numbers"}
{
"trigger_pin": "15",
"echo_interrupt_pin": "18",
"timeout_ms": "200"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For most purposes with this sensor it should be fine to select the default timeout and not specify one. Maybe this should be omitted? Similar for other examples with an explicit value here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed it from the examples

}
```

{{% /tab %}}
{{< /tabs >}}

{{% /tab %}}
{{% tab name="JSON Template" %}}

```json {class="line-numbers linkable-line-numbers"}
{
"components": [
{
"name": "<your-ultrasonic-sensor-name>",
"model": "ultrasonic",
"type": "sensor",
"namespace": "rdk",
"attributes": {
"trigger_pin": "<pin-number>",
"echo_interrupt_pin": "<pin-number>",
"timeout_ms": <int>
},
"depends_on": []
}
]
}
```

{{% /tab %}}
{{% tab name="JSON Example" %}}

```json {class="line-numbers linkable-line-numbers"}
{
"components": [
{
"name": "my-ultrasonic-sensor",
"model": "ultrasonic",
"type": "sensor",
"namespace": "rdk",
"attributes": {
"trigger_pin": "15",
"echo_interrupt_pin": "18",
"timeout_ms": "200"
},
"depends_on": []
}
]
}
```

{{% /tab %}}
{{% /tabs %}}

The following attributes are available for `ultrasonic` sensors:

<!-- prettier-ignore -->
| Attribute | Type | Inclusion | Description |
| --------- | ---- | --------- | ----------- |
| `trigger_pin` | string | **Required** | The GPIO number of the [board's](/build/micro-rdk/board/) GPIO pin that you have wired to the trigger pin of your ultrasonic sensor. |
| `echo_interrupt_pin` | string | **Required** | The GPIO number of the board's GPIO pin that you have wired to the echo pin of your ultrasonic sensor. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unlike the RDK usonic sensor, the micro-rdk one cannot use a digital interrupt, and I think it is worth noting that important distinction here. The language in the comments in the implementation say this: Please note that unlike the RDK ultrasonic sensor, you must not use a named pin associated with a digital interrupt configured on the board: it will not (currently) work..

| `timeout_ms` | int | Optional | Time to wait in milliseconds before initiating a timeout when requesting readings from your ultrasonic sensor. <br> Default: `1000`. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default timeout for the micro-rdk usonic sensor is actually 50ms, and it is clamped to 100ms.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean by clamped, it can't go any higher than?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's right. Even if you put in 1000 it will internally limit the timeout to 100ms. The implementation in the micro-rdk is currently blocking. The sensor device itself never needs more than, say, 60ms. But if you set the timeout to 10000ms or something you would basically hang the micro-rdk, so we ignore any timeout above 100ms.


{{< readfile "/static/include/components/test-control/sensor-control.md" >}}
3 changes: 2 additions & 1 deletion static/include/micro-rdk.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@ The micro-RDK is a lightweight version of the {{% glossary_tooltip term_id="rdk"

The only microcontroller the micro-RDK currently supports is the [ESP32](https://www.espressif.com/en/products/socs/esp32).

[Client API](/build/program/apis/) usage with the micro-RDK currently supports only the following {{< glossary_tooltip term_id="resource" text="resources" >}}:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great change!

[Client API](/build/program/apis/) usage with the micro-RDK currently supports the following {{< glossary_tooltip term_id="resource" text="resources" >}}:

- [Base](/build/micro-rdk/base/)
- [Board](/build/micro-rdk/board/)
- [Encoder](/build/micro-rdk/encoder/)
- [Movement Sensor](/build/micro-rdk/movement-sensor/)
- [Motor](/build/micro-rdk/motor/)
- [Sensor](/build/micro-rdk/sensor/)
- [Servo](/build/micro-rdk/servo/)
- [Generic](/build/micro-rdk/generic/)

Expand Down
Loading