Final Entry - lglik/Portfolio GitHub Wiki

05/31/19

Final Portfolio Entry

Magnetic Dancing Trees

Hardware

The very first hardware change I made was that I added in a new board that connected to the Pi through I2C that would read the voltages of the batteries and pass that information to the Pi.

Image 1

The board I assembled to read the batteries' voltage

I experimented with how to make the magnetic trees more visually appealing and more durable, I tried at over 15 different compositions of ferrous oxide and many different configurations of magnets before swapping out all of the iron filings and magnets and adding in a new acrylic plate under the trees.

Image 2

The new magnet and acrylic plate configuration

Later, I designed an entirely new layout for the batteries and all of the relays. With the old setup, only one of the two banks on the charger would be used and two batteries would charge off of the one bank while the other two powered the project. I completely redid all the wiring for the batteries and the relay and replaced or modified every single wire on that half of the project. In the end, I also switched out the batteries since the old ones had been fried in the previous year.

Image 3

The new completed battery system

Software

I first wrote code that would allow me to read the voltages of the batteries and then switch which batteries were being used automatically. I completely rewrote the code for how the electromagnets are controlled to be able to send them PWM signals to have them move to any position I wanted them to be at. This was to prevent the electromagnets from changing state too fast and flinging the filings away from themselves. I squashed numerous pre-existing bugs I found in the GUI. I also simplified the GUI while retaining all of its functionality.

image 4

The original code I wrote for changing the electromagnets to the "in" state

I added more detailed instructions and a mini-lesson about electromagnets to the GUI. Before, for each frame, the 33 trees could only be toggled by tapping on each of them individually. I was able to make it so that you could swipe to change the trees and could even use multiple fingers at once to do so. I increased the power efficiency of the project by changing the starting code and adding code that would reset the project to the start screen after no one touches it for a little bit.

Image 5

The instructional screen about electromagnets

I also made a working admin screen that allows the user to manual control much of the project and quit either to the console or shut down the project. Near the end of the year, I rewrite pretty much all of the code for the project and decreased its length by over 50%.

Final Thoughts

I am very proud of the work I did with this project. Four days ago, I plugged in my project to the wall and have not touched it since. It has not gone through four days of schoolchildren using it without a single bug or any other issue. Seeing this project that I have put SO many hours into work so well is extremely gratifying. The skills and knowledge I have learned along the way have also been invaluable.

Schlieren Effect

Image 7

The Schlieren Effect Project

Software

I wrote code in the Arduino to control the point-source LED, and to make the fans on the Peltier devices be on constantly at full power. I also experimented extensively with how much power to send to the Peltier devices so that the hot and cold plates on the top of the project would be the right temperature.

Final Thoughts

I only spent a few days on this project since the wiring was already completed and there was very minimal programming to do, but it was still quite fun to work on a different project, especially one so cool!

Rube Goldberg Gumball Vending Machine

Software

Successfully slaved an Arduino to a Pi so that I could program on the Pi but still use all the Arduino hardware. I was able to successfully control the stepper motors from the Pi and have the stepper motors turn worm gears to pick up the gumballs based on hypothetical sensor input. I tested out the servos and identified, and installed libraries for almost all of the hardware on the project.

Final Thoughts

I wish I had been able to start working on this project sooner since I would have loved to bring the project up to MVP (minimum viable product). Unfortunately, I only had a few days in total to work on it, but I do feel that I was able to lay a solid groundwork for whoever programs it next year.