Coder Social home page Coder Social logo

mattogodoy / open-rally-computer Goto Github PK

View Code? Open in Web Editor NEW
59.0 9.0 10.0 12.09 MB

An Open Source tripmaster for navigation rallies

License: GNU General Public License v3.0

C 90.52% HTML 0.37% CSS 0.10% JavaScript 0.10% C++ 8.91% Processing 0.01%
tripmaster rally roadbook ico navigation motorcycles dakar

open-rally-computer's Introduction

Open Rally Computer

An open source tripmaster for navigation rallies

Open Rally Computer

Description

The Open Rally Computer (previously known as Baja Pro) is a complete tripmaster for navigation rallies.

Some of its features are:

  • Based on GPS technology
  • Adjustable partial distance odometer
  • Total distance odometer
  • Speedometer
  • Average speed
  • Max speed
  • Trip time
  • Compass (CAP heading)
  • Multiple languages and unit systems
  • Firmware updates over-the-air

The main goal of this project is to achieve a widely used open-source device that can be improved over time by ourselves, the pilots behind the roadbook.

You can read a detailed writeup of the project here:

Schematics and PCB

You can find all the necessary information for fabricating your own copy of the Open Rally Computer PCB in the pcb and schematics folders of this repository.

HELP NEEDED: My knowledge in electronics is self-taught, so I'm sure there are quite a few improvements to be done in this department. If you know electronics and spot something that can be improved, please let me know by opening an issue.

  • Previous models of this device have been fabricated at JLCPCB with great results and very good prices.
  • The system I used to create the PCB was EasyEDA. You can find files for the schematics and the PCB in their relative folders. There are also versions for Altium Designer.

HELP NEEDED: I'd like to port these schematics and PCB to KiCad, so we continue with the open source spirit :)

If you know your way around KiCad, I'd really appreciate some help porting this board.

The bill of materials is located in a CSV file in the bom folder. If you find a missing component, please report it by opening an issue.

User manual

You can find a PDF version of the User Manual in the manual folder.

HELP NEEDED: The user manual is currently only in Spanish and it still has a lot of Baja Pro branding that has to be changed to "Open Rally Computer". I'd really appreciate some help transcribing it to Markdown and translating it into other languages, being english the top priority right now.

Getting Started

These instructions will allow you to compile the project in you local computer. In order to run it you will need an actual device.

Prerequisites

This project has been developed using VSCode with the PlatformIO plugin, which is is the recommended setup.

git clone https://github.com/mattogodoy/open-rally-computer.git

Building

To build this project you can open the directory of the repository you just downloaded in VSCode.

Once open, go to the sidebar at the left, PlatformIO -> esp32dev -> General -> Build

The required libraries are already bundled in the lib directory of this repo. PlatformIO will automatically try to use them. If for some reason you are getting compilation errors because of missing libraries, you can always install them manually going to PlatformIO -> PIO Home -> Libraries.

You can find the list of necessary libraries in the file platformio.ini.

Flashing into device

Once the project compiles correctly in your computer, you are ready to flash it into the rally computer.

  1. Connect your ESP32 (DevKit or programmer) to your computer via USB.
  2. Go to PlatformIO -> esp32dev -> General -> Upload
  3. PlatformIO should automatically detect the serial port where your ESP32 is connected, buld the project and flash it for you.

Contributing

Please read CONTRIBUTING.md for details on the process for submitting pull requests.

Also read CODE_OF_CONDUCT.md for details on the code of conduct for this project.

Versioning

We use SemVer for versioning.

For a list of available versions, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

TO-DO

There are a few things I'd like to do in order to improve this project and its repository:

  • Build, upload and tag Version 1.0.0 binary as a release
  • Translate user manual to english
  • Port the PCB files to KiCad
  • Create proper documentation in GitHub Wiki
  • Create Continuous Integration using GitHub Actions

License

This project is licensed under the GPL v3 License - see the LICENSE file for details.

This is what this means:

  1. Anyone can copy, modify and distribute this software.
  2. If you do, you have to include the license and copyright notice with each and every distribution.
  3. You can use this software privately.
  4. You can use this software for commercial purposes.
  5. If you build your business based on this code, you have to open-source your whole code base.
  6. Any modifications of this code base MUST be distributed with the same license (GPL v3).
  7. Any changes made to this code MUST be indicated on distribution.
  8. This software is provided without warranty.
  9. The software author or license can not be held liable for any damages inflicted by the software.

Changelog

  • 1.0.0: Initial version
    • The complete project was open sourced, including source code, bill of materials, PCB desings and user manual.

Contributors

open-rally-computer's People

Contributors

mattogodoy avatar turtle3333 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-rally-computer's Issues

GPS Module in BOM

I see that you have included the uBlox Neo 6M breakout board module in the BOM. However, based on your blog post and PCB design, it appears that we should instead be using the BN-180 GPS Module UART TTL module. Which module is compatible with the PCB and code? Thanks!

httpclient compile issue

Hi,

I just built the hardware for the open rally computer, wanted to program it, followed instructions and ended up with the issue that is further on. What could be the problem do you think?
Thank you!

Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (6.0.1) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 @ 3.20006.221224 (2.0.6)
  • tool-esptoolpy @ 1.40400.0 (4.4.0)
  • toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
    LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 41 compatible libraries
    Scanning dependencies...
    Dependency Graph
    |-- U8g2 @ 2.26.1
    | |-- SPI @ 2.0.0
    | |-- Wire @ 2.0.0
    |-- r89m Buttons @ 2.0.1
    |-- r89m PushButton @ 1.0.0
    | |-- r89m Buttons @ 2.0.1
    | |-- Bounce2 @ 2.52
    |-- TinyGPSPlus @ 1.0.2
    |-- Time @ 1.5
    |-- FRAM_MB85RC_I2C @ 0.0.0+20230307194407
    | |-- Wire @ 2.0.0
    |-- Bounce2 @ 2.52
    |-- Wire @ 2.0.0
    |-- HTTPClient @ 2.0.0
    | |-- WiFi @ 2.0.0
    | |-- WiFiClientSecure @ 2.0.0
    | | |-- WiFi @ 2.0.0
    | |-- Time @ 1.5
    |-- Update @ 2.0.0
    |-- WiFi @ 2.0.0
    Building in debug mode
    Compiling .pio\build\esp32dev\src\buttons.cpp.o
    .
    .
    Compiling .pio\build\esp32dev\FrameworkArduino\FirmwareMSC.cpp.o
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp: In member function 'void HTTPClient::setCookie(String, String)':
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1554:15: error: aggregate 'tm tm' has incomplete type and cannot be defined
    struct tm tm;
    ^~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1555:5: error: 'strptime' was not declared in this scope
    strptime(date.c_str(), HTTP_TIME_PATTERN, &tm);
    ^~~~~~~~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1555:5: note: suggested alternative: 'st_ctime'
    strptime(date.c_str(), HTTP_TIME_PATTERN, &tm);
    ^~~~~~~~
    st_ctime
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1556:19: error: 'mktime' was not declared in this scope
    cookie.date = mktime(&tm);
    ^~~~~~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1556:19: note: suggested alternative: 'mktemp'
    cookie.date = mktime(&tm);
    ^~~~~~
    mktemp
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1643:24: error: 'time' was not declared in this scope
    time_t now_local = time(NULL);
    ^~~~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1643:24: note: suggested alternative: 'tone'
    time_t now_local = time(NULL);
    ^~~~
    tone
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1644:29: error: 'gmtime' was not declared in this scope
    time_t now_gmt = mktime(gmtime(&now_local));
    ^~~~~~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1644:29: note: suggested alternative: 'getSize'
    time_t now_gmt = mktime(gmtime(&now_local));
    ^~~~~~
    getSize
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp: In member function 'bool HTTPClient::generateCookieString(String*)':
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1670:24: error: 'time' was not declared in this scope
    time_t now_local = time(NULL);
    ^~~~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1670:24: note: suggested alternative: 'tone'
    time_t now_local = time(NULL);
    ^~~~
    tone
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1671:29: error: 'gmtime' was not declared in this scope
    time_t now_gmt = mktime(gmtime(&now_local));
    ^~~~~~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1671:29: note: suggested alternative: 'getSize'
    time_t now_gmt = mktime(gmtime(&now_local));
    ^~~~~~
    getSize
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1671:22: error: 'mktime' was not declared in this scope
    time_t now_gmt = mktime(gmtime(&now_local));
    ^~~~~~
    C:/Users/banic/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src/HTTPClient.cpp:1671:22: note: suggested alternative: 'mktemp'
    time_t now_gmt = mktime(gmtime(&now_local));
    ^~~~~~
    mktemp
    Compiling .pio\build\esp32dev\FrameworkArduino\FunctionalInterrupt.cpp.o
    *** [.pio\build\esp32dev\libec6\HTTPClient\HTTPClient.cpp.o] Error 1

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.