Coming to ProfHacks we wanted to create something unusual. Anyone can take off the shelf hardware with the bugs rolled out and use it to write basic tech demos. Our goal was to build a device which introduced new and exciting concepts in both affordable hardware and innovative software.
What it does
Code Cubes is a 3d human interface device built using only basic circuit components and aluminum sheets on a box. This allows for an affordable human interface device to be built. We combined this interface with a programming environment which emphasizes the physical presence of each operation. This software makes understanding the inner workings of digital logic hardware easier for beginners and keeps a focus on low-level performance, which has been forgotten in many developer tools today.
How we built it
Code Cubes is built using off the shelf hardware which can be acquired worldwide for less than the cost of a prepared meal. The aluminum sheets act as capacitors, and when a human hand is inserted between them an Arduino oscillating a million times per second is able to sense even the slightest change in this capacitance. An encoding and smoothing algorithm is applied to the signal which is then sent to a computer to be used as input to any program.
The software for code cubes is written using best development practices and designed to be free open source software, so anyone can use and develop with what we have built during ProfHacks. It uses Unity to simplify the 3d space. Physical blocks and code points are represented simultaneously, just as they are when designing real life circuits. Unlike almost all development tools today this means that time of every operation is emphasized, which teaches a much leaner and more efficient method of programming than a standard development tool.
Challenges we ran into
Because our capacitive plates are so sensitive, they are highly prone to error from the smallest of sources, even people walking by in the hallway or lights going on and off. To counter this problem we created a smoothing script which samples the capacitors thousands of times before coming up with a much more accurate capacitance level. We also added layers of shielding to the outside of the box to reduce the effect of nearby interference.
On the software end we had to work with Unity a bit to force it to follow our slightly unconventional programming style. Since we are creating a development tool some objects need to behave as parts of the program and others as impartial observers. A compromise was necessary but now our code responds correctly to every edge case of the development process.
Accomplishments that we're proud of
We are especially proud that we were able to get our pointer to be so accurate. We were concerned that while our design works perfectly in theory that various environmental factors would render it unusable. Thankfully we brought a lot of extra supplies so we were able to adapt our designs repeatedly to get optimal performance.
Neither of us came into the competition with much Unity experience, so we're also quite proud that we were able to get a grasp on Unity as quickly as we did. There are some concepts in it that seem unorthodox at first but which, once learned, created a very efficient environment for us to develop our design.
What we learned
We learned a lot more about the practical side of capacitor performance. In the past we had only done development with standard capacitors or capacitors operating at ranges much lower than a meter. By expanding our previous experiences to a much larger device we solidified our understanding of the inner workings of capacitors.
What's next for Code Cubes
We hope to make our product available to schools so that they can use it to engage students in the technology process. These devices can be built by students in high school with proper guidance and the free software could potentially revolutionize education of otherwise very difficult concepts. Because of the low price it is especially accessible to schools who can't afford more expensive devices but still want to provide an education which prepares students for a technologically focused future.
We wish to also be considered for Best Hardware Hack because we use innovative low level hardware to detect human hands more cheaply than anything on the market.
We wish the be considered for quantified self because our hardware is measuring human location at extremely fast intervals, collecting more data in a second than many sensors on the market collect all day.
We wish the be considered for best smart buildings because we are building smarter schools. Our affordable technology makes learning programming much easier for students of all ages, and as technology becomes more and more important this education is essential to the school of tomorrow.
We are applying to best internal integration because we worked with Noah Dorfman to get our modelling done on time while not sacrificing functionality.