Welcome to the Infinity Bike repository. A simple and inexpensive indoors bike training video game with built-in sensors that allows the player to ride on a virtual track.
Visit our website! www.infinitybike.net
Rainy days and the Winter season can really disrupt a training program. Riders always have the option to mount their bike on a trainer but the monotony of trainers will always make it a bit difficult to keep up the pace. This is why we decided to add a little bit on interactivity to our training program. The Infinity Bike set-up is designed to be a simple as possible while still allowing a rider to read the speed and steering from a bike mounted on any trainers and relay the information to the computer.
See the Youtube video (for a deprecated version of Infinity Bike):
In its current form, the code should compile on a Windows or Mac. We have the communication between Arduino and Unity established and we even have a demo track that you can use to test your set-up. If you want to take full advantage of this work, you will need to have access to a 3D printer. (Tip : A lot of community libraries are starting to have them available to the public.) Alternatively, you could design and machine your own parts. If you do, let us know!
To participate to this project, start by cloning the repository to a drive on your computer. You should get all the assets for the Unity program in the Infinity Bike folder and the Arduino Code in the ArduiBike folder. Don't have a bike/trainer or access to a 3D printer? You can easily build a small arduino circuit that fits on your desk. Alternatively, the Arduino inputs can be emulated with the keyboard by setting a flag in the Unity inspector.
If you make a change you think is worth including in the main project, send us a pull request and we will review it!
Sadly, we don't have a ready out of the box version yet but it's on the to-do list. For now, you will need to clone the repository and build the current scene for your system.
1 x Arduino nano ($22.00)
1 x Mini Breadboard ($1.33/unit)
1 x 220 Ohm resistor ($1.00/kit)
1 x 10K Potentiometer ($1.80/unit)
1 x Hall sensor ($0.96)
20 cm x 6 mm 3D printer timing belt ($3.33)
1 kit x Various Lenght M3 screws and bolts ($6.82)
1 x Bicycle speedometer magnet ($0.98)
** Estimated prices
All the 3D print .stl files are available on Thingiverse. The picture below list them all. We mounted the material above with 3D printed parts. The files we used are listed bellow and they're numbered with the same convention as the image above. You can use them as-is but make sure that the dimensions we used match your bike.
- FrameConnection_PotentiometerHolder_U_Holder.stl
- FrameConnection_Spacer.stl
- BreadboardFrameHolder.stl
- Pulley_PotentiometerSide.stl
- Pot_PulleyConnection.stl
- FrameConnection.stl
- Pulley_HandleBarSide_Print2.stl
- FrameToHallSensorConnector.stl
- PotHolder.stl
- HallSensorAttach.stl
Please note that we are currently working on a better stearing measurement device. As seen in the picture above, it is based on a rotation platform placed under the bike wheel.
More info on this device is available here.
The following circuit can used for prototyping.
We are currently developping a permanent PCB design to get a more robust platform. The Eagle files of this PCB can be found in the AutodeskEagleProject folder.
We published a short instructable tutorial that should provide enough information to get started with this project.
Please note that this tutorial is no longer up to date with the project and will need to be revisited. Building a more in-depth tutorial for potential contributors is on our To-do list.
** Because we used blender to generate the 3d models, you must have blender installed before opening the project. Otherwise some assets wont load properly.**
From now on, we use the git branching model proposed by Vincent Driessen.
To add features to the project, please branch out of the develop branch. The testing of pull request will be done with the 018.3.12f1 version of Unity.
Alexandre Doucet (Doucet)
Maxime Boudreau (MxBoud)
Alexis Nosovich
This project started after we read the tutorial by Allan Zucconi "how to integrate Arduino with Unity" ( https://www.alanzucconi.com/2015/10/07/how-to-integrate-arduino-with-unity/ )
The request from the Arduino are handled using the SerialCommand library ( https://github.com/kroimon/Arduino-SerialCommand )