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
- Pine Phone Pro
- Seahorse SE58 Drybox
- Aquarian H2a Hydrophone
- Voltaic V50 USB Battery Pack
- Voltaic 9 Watt Solar Panel
- Voltaic Solar Panel Bracket
- Right angle Female 3.5x1.1mm - MicroUSB
- dAISy 2+ dual-channel AIS Receiver
- Anker 543 USB-C Hub
- PG 13.5 Cable Gland
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
- Fork the Project
- Create your Feature Branch (
git checkout -b dev
) - Commit your Changes (
git commit -m 'adding some feature'
) - Push to the Branch (
git push origin dev
) - Open a Pull Request
See CONTRIBUTING.md
for more information.
License
Distributed under the Apache 2.0. See LICENSE
for more information.
Contact IQTLabs
- Twtiter: @iqtlabs
- Email: info@iqtlabs.org
See our other projects: https://github.com/IQTLabs/