13. Applications and Implications¶
- Propose a final project masterpiece that integrates the range of units covered, answering:
What will it do?¶
In the simplest and less distracting way as possible, display where and when a cyclist needs to turn in order to get from point A to point B in a city.
Some other features could be having routing options (choose only bike paths or less elevation), displaying options (turn-by-turn or compass), haptic feedback, anti-theft system, GPS tracking, automatic turn signaling etc.
But one I’m really interested and willing to include is an emergency alert whenever the biker crashes or falls.
Who’s done what beforehand?¶
From the course archive I could only find one bike navigation related project. Which used haptic feedback. But it seems to be unfinished.
Other than that, I found a couple of project ideas and kickstarters. Which I can trim down to the two below. They were one of the few to actually become a commercial well stablished products (at least they seem).
What will you design?¶
The three main parts of the project:
Enclosure + Mount
Electronics + programming
What materials and components will be used?¶
3D print plastic filament Acrylic Rubber
MCU Display BLE IMU Battery charger Battery
Where will come from?¶
My goal is to use everything that is already available within a Fab Lab. I don’t plan on buying any extra materials.
How much will they cost?¶
What parts and systems will be made?¶
A water resistant enclosure with a handlebar mount.
A board with MCU, Display, BLE, IMU and battery charger.
An iOS application for the user to interface with the device.
What processes will be used?¶
The main board will be designed on Eagle or KiCad. Using mods to process the files afterwards and generate the CAM process codes. So it can then be milled using a precision CNC.
After milling the board, I’ll gather every component in order to solder them onto it. Since this process can be tricky to get right. Before jumping into programming I’ll try to make sure everything is working properly using a multimeter.
To simplify the process and maximize the chances of getting help when I need it, I’ll use the whole Arduino environment and the C language in order to program the board. Since my goal is to have the least amount of code as possible, I don’t think I’ll get to the point of being bothered by its overhead and lack of extensibility. If so, I’ll jump into PlataformIO.
The simplest solution for the board is to display on the screen whatever is sent over bluetooth. So that will leave all the work for the smartphone.
This also allows to operate into a really low power consumption mode, that will make the device battery last longer.
Enclosure and mount¶
After having the main board defined, milled and working. I’ll import its dimensions into Fusion 360, so I can use the 3D CAD design workbench and model the body of the device. For it to stay in a bike’s handlebar, I’ll need to include an appropriate mount. Depending on requisites and time constraints, I’ll include less or more processes into making this.
In its most basic form, only a 3D printed body seems enough to cover the necessities. But it would be interesting to use other processes as Vacuum forming, molding, casting and injection. As for the 3D print, after modeling in Fusion I’ll use a slicer to generate the CAM process codes. Varying depending on the printer available at the time. But it will mainly be Simplify3D or CURA.
iOS App development¶
This will be the heart of the project. Since every interaction and calculation will be made with-in the app. And, to make things a bit more complicated, this is what I know the least. But I’m excited with the challenge.
There are a couple of drag-and-drop iOS development tools, but they come with a lot of implications and limitations. And since I’ll have a simple interface. I’ll use the traditional xCode development environment for coding the app in the Swift language.
In order not to try reinventing the wheel, I’ll use a commercial mapping SDK in the backend. I’ve spoken to developers and doing navigation from the scratch is a difficult and time consuming task. And would be totally out of the context of the course.
Mapbox has a ready to use SDK and API to implement turn-by-turn navigation on iOS. Including examples an a great documentation. Since it’s free up to 50.000 requests per month, I believe that is enough for the prototype phase.
What questions need to be answered?¶
How much time should I invest in the water resistant enclosure right now? Is it even necessary for the prototype?
How to manage data transferred trough bluetooth? I still don’t have a full practical understanding of it. Specially with the conversion into bytes blocks to make the transmissions. Working with C and Swift on the ends makes it a bit more difficult to me, but I realize my lack of understanding is not on the syntax, but on the concept.
Should the device be difficult or easy to remove from the bike? Meaning to leave it there until it needs to be recharged, or take it out after each ride.
If it stays on the bike, how long should the battery last?
Does it make sense to further develop the project as an open source solution?
How will it be evaluated?¶
For the scope of the course, I believe that getting from point A to point B, without knowing the route beforehand, is already a huge win. The goal is for the user not to need to draw his phone to check the map, or ask for directions on the street while dislocating.
As stated above, there are still a couple of measurements to be made, in order to make a vendible product. But that is not the end goal of this project.
Week 13 - Finish past weeks assignments
Week 14 - Define all components of the project
Week 15 - Produce final board
Week 16 - Make app and device communicate
Week 17 - Print enclosure
Week 18 - Program iOS app
Week 19 - Test and adjustments
Week 20 - Improvements
Week 21 - Production (Last week frenzy)
Week 22 - Presentation