Giter Site home page Giter Site logo

tactilevision / tactjam-firmware Goto Github PK

View Code? Open in Web Editor NEW
3.0 5.0 0.0 181 KB

composing and exploring vibrotactile patterns (tactons) in real time; share tactons and design stunning tactile experiences collaboratively

License: MIT License

C++ 99.64% Python 0.36%
tactile-interaction tactile-feedback tactile-interface tactile prototyping hardware

tactjam-firmware's Introduction

TactJam-firmware

TactJam setup

TactJam is a collaborative playground for composing spatial tactons. The project is split into the following repositories:

If you are looking for the software that drives the device, you have come to the right place. Here you find the firmware and a test suite to run isolated tests for several hardware and software components.

How to build and develop the firmware

The TactJam hardware is based on the ESP32 MCU by Espressif (you might need this driver to detect it on Windows). To simplify the embedded development we use PlatformIO. For the sake of convience the code editor VSCodium offers a package for PlatformIO. Please refer to the installation guide for details. Of course you can also use other editors (see the list of supported editors), or use only the CLI. The firmware code includes libvtp as submoule. To include submodules during clone you can use the command git clone --recurse-submodules https://github.com/TactileVision/TactJam-firmware.git.

Configuration

The build configuration of the PlatformIO project is stored in the platformio.ini (see below). Please change the upload_port to the correct port of your ESP and the monitor_speed according to your needs.

[env:tactjam]
platform = espressif32
board = esp32dev
framework = arduino
upload_port = /dev/cu.SLAB_USBtoUART
monitor_speed = 115200

How to contribute

Anyone with the passion for free software is welcome to contribute to this project by:

  • πŸ‘©β€πŸ’» developing software
  • πŸ‘Ύ filing any issues or suggesting new features
  • πŸ§‘β€πŸ­ sending pull requests for fixed bugs or new features

Before you start, please take a look at the project board and the issues. Maybe there is already a similar bug or feature request that is already under construction and may need your expertise and support.

Branching model

In 2010 Vincent Driessen wrote a nice blog post where he introduced a branching model called git-flow. Over the years it became very popular and was used in many projects. Meanwhile GitHub introduced a much simpler workflow called GitHub flow. Both approaches have their pros and cons. That’s why we use a combination – git-flow as the branching model and the pull request workflow suggested in GitHub flow.

How to commit

To make contribution easier for everyone we like use a common structure of git commit messages:

<type>[optional scope]: <description>
[optional body]
[optional footer(s)]

Please refer to www.conventionalcommits.org for more information.

Code style

This might not be the world’s largest code base. However, a consistent code style makes it easier to read and maintain. The people at Google are very experienced in this and have published their guidelines for different languages. For this project we want to orientate ourselves by this (e.g. C++ style guide for firmware code).

Copyright

TactJam-hardware is (C) 2020 Tactile Vision

It is licensed under the MIT license. For details, please refer to the LICENSE file.

tactjam-firmware's People

Contributors

bfrucha avatar derikon avatar source2k avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tactjam-firmware's Issues

How to provide firmware updates?

The firmware may not be finished when we ship the devices. we also want to release new features or bug-fixes. How can we do this in a easy way for users?

  1. rely on a (tagged) release version on GitHub, which users should download and build themselves
  2. provide a single file, which users have to upload to the ESP32 via terminal
  3. some kind of automation

implement slot exchange

TactJam can store multiple tactons. The active tacton can be selected via a rotary switch.

implement screen-layout

We use a 128x64 oLED display to provide basic information (e.g. current state and settings). What should be shown and how to organize information on a tiny display?

implement modulation-mode

After recording the "melody" of a tacton users can alter the amplitude (actuator intensity) in a second pass. These modulations are recorded too.

implement jam-mode

Enable the push buttons to play vibrotactile patterns live (no recording).

test VTP data format

  • decode fixed instruction set
  • play fixed instruction set
  • record tacton and encode it into vtp instructions
  • play recorded tacton

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.