Week 13 - Interface and Application Programming

This week, I originally planned on making a simple interface in Unity for the ring display I made in Week 10.

As you might expect, things didn't work out as I planned. Not only was the board not functioning properly, I couldn't flash it, either. I noticed this issue at the end of Week 10 (after I had already recorded all of my videos, just trying new things out), but though nothing of it. After various debugging steps (two different programmers, two different FTDI sources for power), I couldn't get it to work. This sucked, and I couldn't use my capacitive touch board from Week 9 since I ripped off the programming header at the end.

Great.

With the final project deadline nearing, I didn't have time to waste remilling the boards just to hit this milestone. Instead, I worked towards more time consuming steps for the final project. That includes:

  • Changing the modules to only connect in one direction
    • This allows for larger network traces
    • Avoids dependencies on every networking via being soldered
    • Reduces the scope of the design
    • In principle, works the same way
  • Fixing the too-small vias on the modules
  • Changing the designs to use the new small headers I got
  • Ordered vibration motors and designed a board to use them with
  • Brainstorming how the interface will work

Here's a sneak peak:

img/Week13/NewBoardPreview.jpg

The Interface Plan

Right now, I plan on designing the interface for my final project in Unity. I've got experience with Unity, so I'm not too worried about the technical details. The serial communication looked straightforward. It will have a (simple) 3D model of the modules and their arrangement, and a UI. The UI will let the user walk up and down the various modules. Depending on what peripheral is plugged in (which can be refreshed manually or automatically), the user will be able to send different commands via buttons in the UI. E.g. if it's the vibration peripheral, then the user can turn the vibration motor on or off. Some modules, like the capacitive touch module, would benefit from an automatic call every 0.1 seconds or so.

Because this is in Unity, I'll have the flexibility to design a simple game, but only if there's time. For example, it could use the capacitive touch input to move, vibration feedback like normal controllers, and display modules to display things like health, magic power, etc.

It's very stressful that I don't have the hardware to test this right now, but I'll do my best to make it work.

This website was created by Harrison Allen for How to Make (Almost) Anything at MIT in 2019