Remote-Interface-Unit/RIU-datasheet.md

136 lines
4.8 KiB
Markdown

# Tübingen Instruments RIU-9000 Datasheet
---
## Manufacturer: TI (Tübingen Instruments)
### Overview
The RIU-9000 is a versatile Remote Interface Unit (RIU) designed for spacecraft sensor management. This device interfaces with an Adafruit BMP280 sensor to provide accurate pressure and temperature readings. The RIU-9000 allows users to configure sensor parameters and retrieve sensor data through a structured 4-step communication protocol.
### Features
- **Sensor Support**: Integrated support for BMP280 pressure and temperature sensor.
- **Configurable Parameters**: Offset and sampling rate adjustments for both pressure and temperature readings.
- **Reliable Communication**: 4-step communication protocol to ensure data integrity.
- **Error Handling**: Error messages for invalid commands or parameters.
- **Industry Standard Data Format**: Sensor data is sent in binary format representing 32 bit IEEE-754 Floating Point values.
- **Lightning Fast Response Time**: The RIU-9000 responds to commands after 5 milliseconds.
---
### Commands and Responses
#### General Format
Commands should be sent as strings over the serial interface at 115200 baud rate. Commands are case-sensitive and must be followed by a newline character (`\n`). Parameters and values should be separated by a space. Responses from the RIU-9000 will also be in string format.
#### STARTUP
- **Command**: `STARTUP`
- **Response**: `READY - Tübingen Instruments RIU-9000`
- **Description**: Initializes the device. This command must be sent before any other commands are accepted.
#### GET_SENSOR
- **Command**: `GET_SENSOR [COMMAND] [SENSOR]`
- **Description**: Initiates a 4-step communication process to read sensor data.
- **Steps**:
1. **REQUEST**: Command the device to read sensor value.
- **Command**: `GET_SENSOR REQUEST [SENSOR]`
- **Response**: `OK` or `ERROR`
2. **CONFIRM**: Ask if the device requested the data from the sensor.
- **Command**: `GET_SENSOR CONFIRM [SENSOR]`
- **Response**: `TRUE` or `FALSE`
3. **CHECK**: Ask if the data is present now.
- **Command**: `GET_SENSOR CHECK [SENSOR]`
- **Response**: `TRUE` or `FALSE`
4. **SEND**: Command the device to send the data to the user.
- **Command**: `GET_SENSOR SEND [SENSOR]`
- **Response**: `[DATA]` or `FALSE`
5. **CANCEL**: Cancel the sensor reading request.
- **Command**: `GET_SENSOR CANCEL [SENSOR]`
- **Response**: `OK`
#### SET_PARAMETER
- **Command**: `SET_PARAMETER [PARAM] [VALUE]`
- **Response**: `OK` or `ERROR: UNKNOWN PARAMETER`
- **Parameters**:
- `PRESSURE_OFFSET`: Sets the offset for pressure readings. (In hPa)
- `TEMPERATURE_OFFSET`: Sets the offset for temperature readings. (In °C)
- `PRESSURE_SAMPLING`: Sets the oversampling rate for the pressure sensor (`SAMPLING_NONE`, `SAMPLING_X1`, `SAMPLING_X2`, `SAMPLING_X4`, `SAMPLING_X8`, `SAMPLING_X16`).
- `TEMPERATURE_SAMPLING`: Sets the oversampling rate for the temperature sensor (`SAMPLING_NONE`, `SAMPLING_X1`, `SAMPLING_X2`, `SAMPLING_X4`, `SAMPLING_X8`, `SAMPLING_X16`).
#### GET_PARAMETER
- **Command**: `GET_PARAMETER [PARAM]`
- **Response**: `[VALUE]` or `ERROR: UNKNOWN PARAMETER`
- **Parameters**:
- `PRESSURE_OFFSET`: Retrieves the current pressure offset.
- `TEMPERATURE_OFFSET`: Retrieves the current temperature offset.
- `PRESSURE_SAMPLING`: Retrieves the current pressure oversampling rate.
- `TEMPERATURE_SAMPLING`: Retrieves the current temperature oversampling rate.
#### RESET_SENSORS
- **Command**: `RESET_SENSORS`
- **Response**: `OK`
- **Description**: Resets the request count and communication state.
#### Communication Errors
- **BUSY**: Device is busy. Every 20th request, the device will respond with `BUSY` and not process the command.
- **ERROR**: Generic error message for invalid commands or failed operations.
- **FALSE**: Response for confirmation checks that fail.
- **[NO RESPONSE]**: After 100 requests, the device will stop responding to commands until a `RESET_SENSORS` command is issued.
---
### Example Usage
#### Initialization
```
User: STARTUP
Device: READY
```
#### Setting Parameters
```
User: SET_PARAMETER PRESSURE_OFFSET 10
Device: OK
User: SET_PARAMETER PRESSURE_SAMPLING SAMPLING_X4
Device: OK
```
#### Getting Parameters
```
User: GET_PARAMETER PRESSURE_OFFSET
Device: 10
User: GET_PARAMETER PRESSURE_SAMPLING
Device: SAMPLING_X4
```
#### Reading Sensor Data
```
User: GET_SENSOR REQUEST PRESSURE
Device: OK
User: GET_SENSOR CONFIRM PRESSURE
Device: OK
User: GET_SENSOR CHECK PRESSURE
Device: FALSE
User: GET_SENSOR CHECK PRESSURE
Device: TRUE
User: GET_SENSOR SEND PRESSURE
Device: [Binary Data]
```
#### Resetting Sensors
```
User: RESET_SENSORS
Device: OK
```
---
For more detailed information and troubleshooting, please refer to the official Q&A sessions on friday, 2pm, IRS.
---