Final Project Design

The topic of our final project was to make “the intangible, tangible.” We had been using a number of different sensors over the course of the semester such as the noise sensor, flame sensor, and others. Any of these could have been used to develop this project, but I wanted to develop something that utilized my game development skills. I also began brainstorming using the materials I had at the time, which didn’t include any of these sensors.

I decided that I would take something that is usually intangible, like emotions, and make it more tangible. I would also be developing a digital game, which meant that the emotion being measured was even more intangible. I thought about how I might make this emotion into something that would appear in the physical world. I had a motor, so I considered making some kind of a beating heart or a car that would drive around when certain emotions were expressed. In the end, the heart was beyond my skill level and the car just didn’t make any sense.

I also had a Neopixel strip that I could connect to the Motor:bit. I decided to make a “love meter” that would measure the affection of a character in a short visual novel/dating sim game. I used the Unity 3D engine to build the game and made use of some free art assets in the Unity Assets Store and itch.io.

game_demo

I set up a simple script in C# that would send the value of a variable, Augustina’s “affection”, to my Firebase database. This was one of the easiest parts of the entire project. Unity and Firebase tend to play pretty nicely with each other, and Firebase’s interface is very easy to use.

firebase_database

 

I found a tutorial on YouTube for sending data from Firebase to a Micro:bit via Python, so I set up the code below to do that. I have not had extensive experience with python before, so just getting the various libraries set up was time consuming. I also had a lot of errors that required me to scour the internet for solutions.

python_code

 

I tested the system in several different way. I wrote MakeCode that would change the color and number of lit up LEDs on the Neopixel strip every time a button was pushed. I then created another set of code that would read serial data being sent by the Python program and display it on the Micro:bit’s display. Once I understood how each of those parts worked, I combined the two together.

makecode

For an extra bit of style, I used the laser cutter in the Thingspace to cut a piece of acrylic into the shape of a thermometer. I mounted the Neopixel on the acrylic and the acrylic on to two pieces of scrap would so that it would stand up to be displayed.

 

I learned a lot doing this project. I got to exercise a number of difference skills from Unity, Firebase, Python, and MakeCode. I had to work hard to troubleshoot problems, which I mostly did successfully. I did not find working with Neopixel to be all that intuitive, but I was able to produce something that was serviceable. I have enjoyed the projects that I’ve been able to work on for this class, and I’ve definitely grown from the experience.