|
1 | 1 | # Motion classification application on an Arduino board supporting multiple IoT protocols
|
2 | 2 |
|
3 |
| -Final project of the Summer School on Enabling Technologies for IIoT by University of Pisa, 2022. |
4 |
| - |
5 |
| -The objective is to develop a motion classification application on an arduino board (using embedded ML capabilities of the hardware) and connect it to the external world either: |
| 3 | +This is a motion classification application for an arduino board (using embedded ML capabilities of the hardware) that sends events to the external world either: |
6 | 4 |
|
7 | 5 | - by sending the events [through MQTT](./mqtt_version)
|
8 | 6 | - by sending events with the [CoAP protocol](./coap_version/)
|
9 |
| -- by wrapping it as a ["Web Thing"](./webthings_version/), and monitoring it via a WebThings Gateway running on a Raspberry Pi |
| 7 | +- by declaring a ["Web Thing"](./webthings_version/) interface, allowing to monitor it via a WebThings Gateway running on a Raspberry Pi |
10 | 8 |
|
| 9 | +It was my final project at the Summer School on Enabling Technologies for IIoT by University of Pisa, 2022. |
11 | 10 |
|
12 |
| -### Required Hardware: |
| 11 | +## Requirements |
| 12 | +### Hardware: |
13 | 13 | - [Arduino Nano RP2040 connect](https://docs.arduino.cc/hardware/nano-rp2040-connect)
|
14 | 14 | - [Raspberry Pi for running the WebThings Gateway software](https://webthings.io/docs/gateway-getting-started-guide.html) (Optional)
|
15 | 15 |
|
16 |
| -### Required Libraries: |
| 16 | +### Libraries: |
17 | 17 | - [WiFiNINA](https://www.arduino.cc/reference/en/libraries/wifinina/)
|
18 | 18 | - [STM32duino X-NUCLEO-IKS01A3](https://www.arduino.cc/reference/en/libraries/stm32duino-x-nucleo-iks01a3/3)
|
19 | 19 | - [ArduinoMqttClient](https://www.arduino.cc/reference/en/libraries/arduinomqttclient/)
|
20 | 20 | - [CoAP-simple-library](https://www.arduino.cc/reference/en/libraries/coap-simple-library/)
|
21 | 21 | - [webthing](https://webthings.io/framework/)
|
22 | 22 | - [ArduinoMDNS](https://github.com/arduino-libraries/ArduinoMDNS)
|
23 | 23 |
|
24 |
| -### Setup: |
| 24 | +### Example setup: |
25 | 25 |
|
26 |
| - |
| 26 | +<img src="./img/setup.jpg" width="50%"> |
27 | 27 |
|
28 |
| -### Milestones: |
| 28 | +## Features: |
29 | 29 |
|
30 |
| -- [X] Sending the current motion status through an MQTT topic to a broker running on my personal DigitalOcean cloud server |
| 30 | +- Send the current motion status through an MQTT topic to a broker running on a cloud server. [(See source code)](https://github.com/linomp/rp2040-webthing/blob/main/mqtt_version/mqtt_version.ino) |
31 | 31 |
|
32 |
| -  |
| 32 | +  |
33 | 33 |
|
34 |
| -- [X] Sending the current motion status as a CoAP PUT request to a CoAP test server running on my personal DigitalOcean cloud server |
| 34 | +- Send the current motion status as a CoAP PUT request to a CoAP test server running on a cloud server. [(See source code)](https://github.com/linomp/rp2040-webthing/blob/main/coap_version/coap_version.ino) |
35 | 35 |
|
36 |
| -  |
| 36 | +  |
37 | 37 |
|
38 |
| -- [X] Sending the current motion status to a WebThings gateway running on a Raspberry Pi on the local network |
| 38 | +- Send the current motion status to a WebThings gateway running on a Raspberry Pi on the local network. [(See source code)](https://github.com/linomp/rp2040-webthing/blob/main/webthings_version/webthings_version.ino) |
39 | 39 |
|
40 | 40 | 
|
41 | 41 | 
|
42 | 42 |
|
43 | 43 |
|
44 |
| -### References: |
| 44 | +## References: |
45 | 45 |
|
46 | 46 | - [Using the IMU Machine Learning Core Features of the Nano RP2040 Connect](https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-imu-advanced)
|
47 | 47 | - [Article about Coap by Adafruit](https://learn.adafruit.com/alltheiot-protocols/coap)
|
|
0 commit comments