IQTLabs / aisonobuoy-collector-pinephone

A PinePhone based maritime data collection system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Contributors Forks Stargazers Issues MIT License


Logo

AISonobuoy-Collector-PinePhone

A PinePhone based maritime data collection system for the IQT Labs AI Sonobuoy project. Designed for continuous hydrophone audio, AIS, and other telemetry data collection for machine learning dataset creation.

Make Contribution · Report Bug · Request Feature

About

The PinePhone Collection System is designed to leverage readily accessible consumer electronics and open-source software in order to create a low-cost collection platform for maritime data. The primary functions of the PinePhone Collection System are hydrophone audio and AIS recording. The software system utilizes a series of docker containers which extend the EdgeTech platform, a bus message architecture built on MQTT, to implement the collection functions. The hardware and electronics are all readily available components which are plug-and-play and can be fitted into a dry box container with a few 3D printed parts.

PinePhone Collector Field Kit

Getting Started

Running

Use the following commands to clone the repo and run the containers. Docker compose and watchtower are used to download the docker images from Docker Hub and run them.

git clone https://github.com/IQTLabs/aisonobuoy-collector-pinephone.git
cd aisonobuoy-collector-pinephone
docker-compose up

Prerequisites

Running this repo requires that you have the PinePhone configured with Docker installed. See EdgeTech Device Setup.

Development

The PinePhone Collector software system utilizes a series of docker containers which extend the EdgeTech platform, a bus message architecture built on MQTT, to implement the collection functions. The implementation of the EdgeTech module docker containers are linked in the diagram below.

flowchart TD
    edgetech-audio-recorder(Audio Recorder) -- Recorded Audio File Name Topic --> mqtt{MQTT}
    edgetech-telemetry-pinephone(Telemetry Data) -- Telemetry Data Topic --> mqtt{MQTT}
    edgetech-daisy(dAISy Sensor Data) -- dAISy Sensor Data Topic --> mqtt{MQTT}

    edgetech-c2(C2) -- Command & Control Topic --> mqtt{MQTT}

    edgetech-couchdb-saver(CouchDB Saver) -- Write to Database --> edgetech-couchdb-server(CouchDB Server)
    edgetech-couchdb-startup(CouchDB Startup) -- Initalized Connection --> edgetech-couchdb-server(CouchDB Server)
    edgetech-couchdb-startup(CouchDB Startup) -- Initalized Connection --> couchdbremote[Cloud-Hosted CouchDB Server]
    edgetech-couchdb-server(CouchDB Server) -- Sync Data with External Databse --> couchdbremote[Cloud-Hosted CouchDB Server]
    
    mqtt{MQTT} -- Subscribed to Telemetry Topic, dAISy Sensor Topic, and Audio File Name Topic --> edgetech-couchdb-saver(CouchDB Saver)
    mqtt{MQTT} -- Subscribed to Telemetry Topic, dAISy Sensor Topic, and Command & Control Topic --> edgetech-filesaver(Filesaver)

    mqtt{MQTT} -- Subscribed to Command & Control Topic --> edgetech-audio-recorder(Audio Recorder)
    mqtt{MQTT} -- Subscribed to Telemetry Topic --> edgetech-http-uploader(HTTP Uploader)
    edgetech-http-uploader(HTTP Uploader) -- POST data to HTTP Endpoint --> httpendpoint[Cloud-Hosted HTTP Endpoint: currently TagIO.io]

    mqtt{MQTT} -- Subscribed to  Command & Control Topic --> edgetech-s3-uploader(S3 Uploader)
    edgetech-s3-uploader(S3 Uploader) -- Upload files to External S3 Bucket --> s3remote[Cloud-Hosted AWS S3 Bucket]


style mqtt fill:#0072bc,color:#ffffff
style edgetech-couchdb-saver fill:#F9D308,color:#5f6475
style edgetech-telemetry-pinephone fill:#80c342,color:#ffffff
style edgetech-daisy fill:#80c342,color:#ffffff
style edgetech-couchdb-startup fill:#6657d3,color:#ffffff
style edgetech-couchdb-server fill:#6657d3,color:#ffffff
style couchdbremote fill:#5f6475,color:#ffffff
style edgetech-filesaver fill:#F9D308,color:#5f6475
style edgetech-c2 fill:#f05343,color:#ffffff
style edgetech-audio-recorder fill:#80c342,color:#ffffff
style edgetech-s3-uploader fill:#F9D308,color:#5f6475
style s3remote fill:#5f6475,color:#ffffff
style edgetech-http-uploader fill:#F9D308,color:#5f6475
style httpendpoint fill:#5f6475,color:#ffffff

click mqtt "https://github.com/IQTLabs/edgetech-core"
click edgetech-s3-uploader "https://github.com/IQTLabs/edgetech-s3-uploader"
click edgetech-telemetry-pinephone "https://github.com/IQTLabs/edgetech-telemetry-pinephone"
click edgetech-http-uploader "https://github.com/IQTLabs/edgetech-http-uploader"
click edgetech-daisy "https://github.com/IQTLabs/edgetech-daisy"
click edgetech-c2 "https://github.com/IQTLabs/edgetech-c2"
click edgetech-filesaver "https://github.com/IQTLabs/edgetech-filesaver"
click edgetech-audio-recorder "https://github.com/IQTLabs/edgetech-audio-recorder"
click edgetech-couchdb-startup "https://github.com/IQTLabs/edgetech-couchdb-startup"
click edgetech-couchdb-server "https://github.com/IQTLabs/edgetech-couchdb-startup"
click edgetech-couchdb-saver "https://github.com/IQTLabs/edgetech-couchdb-saver"

The current required directory structure is below for the development build. You can find this at the dev branch.

aisonobuoy-collector-pinephone
|-- docker-compose.yml
|-- edgetech-core
|-- edgetech-daisy
|-- edgetech-filesaver
|-- edgetech-c2
|-- edgetech-pinephone-telemetry
|-- edgetech-couchdb-saver
|-- edgetech-database-sync
|-- edgetech-audio-recorder
|-- edgetech-http-uploader
|-- edgetech-s3-uploader
... IN PROGRESS
|-- edgetech-pinephone-gps

Contributions should be pushed to the dev branch. See instructions in Contributing.

Hardware

BOM

3D Printed STL Files

Assembly Animation (Coming soon...)

Roadmap

  • TBA

See the open issues for a full list of proposed features (and known issues).

Contributing

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b dev)
  3. Commit your Changes (git commit -m 'adding some feature')
  4. Push to the Branch (git push origin dev)
  5. Open a Pull Request

See CONTRIBUTING.md for more information.

License

Distributed under the Apache 2.0. See LICENSE for more information.

Contact IQTLabs

See our other projects: https://github.com/IQTLabs/

(back to top)

About

A PinePhone based maritime data collection system

License:Apache License 2.0