Skip to content

Project-Owl/QuackPack-DuckGPS

Repository files navigation

QuackPack-DuckGPS

License ClusterDuck Protocol

Overview

This QuackPack makes it easy to work with ublox GPS chips on devices running the ClusterDuck Protocol firmware. This library handles GPS initialization, chip configuration and data parsing. This QuackPack is designed to work with popular ublox modules such as the NEO-6M and NEO-8M series and log messages are handled by the ClusterDuck Protocol's logging framework.

What is a QuackPack?

A QuackPack is a modular library that extends Duck firmware with application-specific functionality. QuackPacks are not standalone projects - they are included in your Duck firmware project and configured through your main sketch.

This QuackPack adds [describe your specific functionality] to the Duck mesh network.

Hardware Requirements

Supported Boards

  • Primary: TTGO T-Beam v1.1 with SX1262
  • Also Supported: TTGO T-Beam v1.0 with SX1276

Additional Hardware

May require a more sensitive GPS antenna for optimal performance.

Example:

  • GPS Module (if not built-in)

Pinout Configuration

Component GPIO Pin Notes
CDPCFG_GPS_RX 34 Receive Pin
CDPCFG_GPS_TX 12 Transfer Pin
CDPCFG_PIN_LED1 25 TBeam LED

Installation

Prerequisites

Option 1: Manual Integration with PlatformIO

Add this QuackPack to your Duck firmware's platformio.ini:

[env:ttgo-t-beam-sx1262]
platform = espressif32
board = ttgo-t-beam
framework = arduino

lib_deps = 
    https://github.com/ClusterDuck-Protocol/ClusterDuck-Protocol.git
    https://github.com/Project-Owl/QuackPack-DuckGPS.git

monitor_speed = 115200

Then build and upload your firmware:

pio run --target upload
pio device monitor

Quick Start

Include this QuackPack in your Duck firmware's main sketch:

Basic Integration

#include <Ducks/MamaDuck.h>
#include <DuckGPS.h>
#include <utils/DuckUtils.h>

MamaDuck duck;
DuckGPS dgps(34, 12); // RX, TX pins

void setup() {
    Serial.begin(115200);
    
    // Initialize the Duck
    duck.begin();
    duck.setDeviceId("DUCK001");
    duck.setupWithDefaults(); // or setupMamaDuck() / setupPapaDuck()
    
    // Initialize and configure your QuackPack
    dgps.setup();
    
    
    Serial.println("Duck ready!");
}

void loop() {
    // Run Duck mesh networking
    duck.run();
    
    dgps.readData(10000);
    
    std::cout << "Latitude: " << dgps.lat() << ", Longitude: " << dgps.lng() << '\n';
    std::cout << "Altitude: " << dgps.altitude(DuckGPS::AltitudeUnit::meter) << " meters" << '\n';
    std::cout << "Satellites: " << dgps.satellites() << '\n';
    std::cout << "Speed: " << dgps.speed(DuckGPS::SpeedUnit::kmph) << " km/h" << '\n';
    std::cout << "Time: " << dgps.epoch() << " epoch seconds" << '\n';
    std::cout << "GeoJSON Point: " << dgps.geoJsonPoint() << '\n';
    
    sleep(5000); // Delay between readings
    
    
}

Dependencies

This QuackPack requires:

Deployment

PlatformIO

Manually integrate into your Duck firmware project using the instructions above.

OWL DMS

[Describe DMS availability status]

To submit this QuackPack for inclusion in the OWL DMS community library, contact [email protected] with:

  • Repository URL
  • Supported hardware
  • Use case description
  • Example configurations

Compatibility

  • ClusterDuck Protocol Version: v5.0+
  • PlatformIO: 6.0+
  • ESP32 Core: 2.0.0+
  • Development Environment: PlatformIO only (Arduino IDE not supported)

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

1.0.0 - [Initial Release Date]

  • Initial release
  • [Feature 1]
  • [Feature 2]

Roadmap

  • [Planned feature 1]
  • [Planned feature 2]
  • [Planned feature 3]

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

Acknowledgments

Resources

Support

For questions and support:

Authors

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages