Coder Social home page Coder Social logo

jacob-hoff-man / companion Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 20.47 MB

A repository containing the source code for my undergraduate senior project. The Cycle Statistic Tool is a data recording device attached to the frame of a bicycle. The Arduino hardware was programmed using C++. The cross-platform mobile application was programmed using the .NET/Xamarin platform and C#.

C# 60.21% C 2.90% C++ 36.88%
arduino nano iot 33 cpp xamarin xamarin-forms csharp bicycle cycle statistic tool live metrics bluetooth-low-energy ble

companion's Introduction

Cycle Statistic Tool Companion Mobile Application

A repository containing the source code for my undergraduate senior project at the University of Pittsburgh at Johnstown. The Cycle Statistic Tool is a data recording device attached to the frame of a bicycle. From this position, the Cycle Statistic Tool's network of sensors collects live metrics about the vehicle. Subsequently, the data is transmitted to a companion mobile application that is installed on a user’s smartphone. The Arduino hardware was programmed using C++. The cross-platform mobile application was programmed using the .NET/Xamarin platform and C#.

The senior project final report provides an overview of the Cycle Statistic Tool's engineering process.

Senior Project Final Demonstration Video

The Cycle Statistic Tool final demonstration was presented on 04/20/21. A YouTube video made by the project team was used to demonstrate the project's functionality at this time.

-----

Cycle Statistic Tool Companion Mobile Application

Written in C# using the Xamarin platform.

For documentation of the mobile application design, check out the Software Requirements Specifications.pdf file.

-----

Cycle Statistic Tool Hardware

Written in C++.

-----

Compiling Insructions:

You will need the following devices from the Arduio Device Manager: Arduino Nano IoT 33 Core

You will need the following libraries from the Arduino Library Manager: ArduinoBLE Adafruit_GPS Adafruit_EPD Adafruit_GFX SparkFunLSM6DS3

Delete 'main.cpp' from both the final and secondary microcontroller folders. Those files were placed there only for readability on GitHub. The files named 'final_primary_microcontroller_code.ino' and 'secondary_primary_microcontroller_code.ino' are equivalent to their respective 'main.cpp'.

Place both the /final_primary_microcontroller_code/ folder and /secondary_primary_microcontroller_code/ folder in /Documents/Arduino/

Open the .ino for the microcontroller that you want to program

Compile and upload code.

-----

Comprehension:

main (primary) calls setup functions, polls BLE, and fires event-lists.

CSTDefinitions.h defines constants used throughout the code. includes bluetooth ID's, update frequencies, array indices

CSTExterns.h externs

display.h contains all of the code that operates the display. includes setup code and update code. just call updateDisplay(), the function will pull all necessary data.

PrimaryBLEHandling.h contains function for setting up BLE (adding services, characteristics, names etc.). defines handlers that are called by BLE.poll() in the main loop.

Stat.h simple wrapper that updates BLE characteristics and records a rolling avg.

updateEvent.h abstract class that is used to defines what happens when a sensor is updated. updateEvents should also update BLE Stats (and thereby characteristics) when new measurements are taken.

-----

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.