2023-08-17 01:55:19 +02:00
# arduino-blume
**Me**asure analog signal using an Arduino and **Blu**etooth communication.
2023-06-26 18:50:49 +02:00
2023-08-30 17:55:32 +02:00
This project was written for my bachelor's thesis.
It mesaures voltage one one of arduino's analog pins and transmits it via Bluetooth LE. It was written for (and only tested with) the **Arduino RP2040 Connect** .
[m-teng ](https://github.com/MatthiasQuintern/m-teng ) has a backend that can connect to the Arduino to receive the data.
2023-06-26 18:50:49 +02:00
## Configuration
See `settings.hpp` for which pin needs to be connected.
The program uses 3 leds for displaying device status, however these are optional.
## Installation
```
2023-08-17 01:55:19 +02:00
git clone https://github.com/MatthiasQuintern/arduino-blume
2023-06-26 18:50:49 +02:00
arduino-cli compile --profile nanorp
arduino-cli upload --profile nanorp
```
## Communication via Bluetooth
The Arduino will advertise a Bluetooth Low Energy service which can be used to interact with the device.
Service UUID: `00010000-9a74-4b30-9361-4a16ec09930f`
2023-06-26 18:52:32 +02:00
2023-06-26 18:50:49 +02:00
0. status (`uint8_t`, `rn` ): `00010001-9a74-4b30-9361-4a16ec09930f`
- `0` : **ERROR** : error occured: invalid command received, can not advertise Bluetooth service, etc.
- `1` : **BUSY**
- `2` : **WAIT_CONNECT** : waiting for Bluetooth connection
- `3` : **CONNECTED** : connected, waiting for command
- `4` : **MEASURING** : connected, measurement running
1. command (`uint8_t`, `rw` ): `00010002-9a74-4b30-9361-4a16ec09930f`
send a command to the arduino:
- `0` - **STOP** : stop active measurements
- `1` - **MEASURE_COUNT** : measure *count* measurements with *interval* *see `count` and `interva` below*
- `2` - **MEASURE** : measure with *interval* until interrupted *see `count` below*
2. reading (`uint16_t` `rn` ): `00010003-9a74-4b30-9361-4a16ec09930f`
the reading from the Arduinos analog pin
3. count: (`uint16_t`, `rw` ): `00010004-9a74-4b30-9361-4a16ec09930f`
set the number of measurements to take with `MEASURE_COUNT`
2023-06-26 18:53:31 +02:00
4. interval: (`uint16_t`, `rw` ): `00010005-9a74-4b30-9361-4a16ec09930f`
2023-06-26 18:50:49 +02:00
set the interval between measurements in ms