Subtitle: this is all just for me, really. Also I’m writing this on a plane on limited sleep so I apologize if it’s a little unclear at points.
Question 1: (Sorry I know this wasn’t supposed to be a full write up but I ended up explaining a lot of it anyway).
My final project was, in a few words: Rings Made Out Of Multiple Materials That I Can Make Myself With Some Level of Customization.
These are the final products that are the rings!
And, because the entire project ended up a little more resin-centric than expected, the rings + some other fun side things I made with leftover resin (I’m not the best at approximating volumes.)
The process to get to the end was pretty winding. I didn’t start out with the clearest idea of what I wanted to do, beyond the most basic idea. I picked up and abandoned multiple methods of making rings once I learned what they did- and what they were and weren’t well suited for. (Such as the CNC mill). I wound up settling on resin, partly because I’d gotten stumped on the other methods and also because I really liked the idea of suspending whatever I wanted in rings.
Now, in order to make something in resin, you need to have a negative- aka, a mold you can pour into, that will harden into the shape that you want. With resin, either the mold has to be able to flex, or you have to be willing to completely destroy the mold every time you use it. I ended up settling on a rubber pour-over mold, which was pretty fun even if the mixture was getting kind of old and congealed.
(I also made an effort with a wood mold towards the end, but I should’ve used way softer wood for the centres, because I wound up not being able to pop the centers out.)
To get the rubber mold negative, I needed a positive. So I laser cut some wood rings to serve as the positive, and in the process, realized they looked pretty nice on their own. That’s actually where the majority of the rings came from, given that the short timeframe I’d given myself and the 24 hr curing time needed for resin didn’t play super nicely with each other. I’m actually really proud of the wood rings, because they were simple in execution and came down a lot to what I thought looked nice or didn’t look nice, which isn’t something I get to do a lot these days.
The resin rings were fun to make too! I’m really proud of how I ended up managing to incorporate metal; by taking little bits and shavings and using those as the suspended pieces in the ring. It looks pretty cool, and I also like how resourceful it makes me feel. There was more than one resin ring made, but they come out cloudy when you first pop them out of the mold, and I only successfully polished one, which is the one in the majority of the photos.
Not everything was smooth going. The rubber mold mixture was a little difficult to work with given the not-really-liquid state of it, so the molds didn’t come out entirely smooth. I think given a few more tries, I could’ve figured something out to make the edges a bit cleaner. The biggest issue with the resin was the 24 hr curing time; it’s on me, some, for setting myself up with not too much time, but I think I’m also just a little impatient, and 48 hours per each round of rings (combined rubber mold curing + resin curing + about 4-5 hours in lab each time I was working on the rings) is just a little too much. It’s even more if you do things correctly and suspend layer by layer so the suspended material doesn’t sink to the bottom over the curing time. I am just…. Too impatient.
Question 2: I actually fell through on a majority of my initial plans for the new skills. I do plan on coming back to learn to use the lathe at a different point, and I might do the same for the CNC if I have any ideas that might make good use of it. I did brush back up on my Universal laser cutter skills, but not the epilogue. After everything, however, I did learn a lot about resin casting, and some about pourover rubber molds. I’m pretty happy with the depth vs breadth tradeoff here, and can definitely see myself working with resin on personal projects. …Assuming no strict timeline, that is.
In terms of my other goal- I think I achieved it? For this project moreso than others I was driven a lot more by something that I wanted, that I physically wanted to have and fiddle with. As a result, I think I was a lot more content with the result, even if it went off the rails a bit from what I expected, because I still wanted whatever random thing I was going for. Concessions made because of time or unexpected limitations felt less like concessions and more like… an alternate route. I still want to try again on the resin, but I am also genuinely happy with what I have/learned/got out of the experience, more so than I think I was with previous projects.
Question 3: Two big things: Iteration iteration iteration, and the knowledge that it doesn’t hae to come out perfectly on its first iteration, or even whole. Part of the issue is, of course, giving myself the time to iterate, but also to counter my tendency to do The Entire Project At Once Right Now because sometimes I get overexcited and try to actualize everything I’m imagining at once instead of, like, learning to do things in steps. (See: sewable LED, even the resin rings to a small extent). I think that tendency has also stopped me from doing personal projects in the past, because specifically for personal/art projects, I don’t like starting unless I think I can do it well. But, among everything else, this class has hammered it in that sometimes you just need to start, and be willing to let the first prototype be less than ideal. Maybe this is just leftover habits from too much procrastination; either way, the class has been a very, very valuable reminder of why Iteration!!! Is so important.
Question 4: I have a lot more small skills that I really value, now. For stuff like learning how to use certain tools and machines, I always really want to learn, but am very bad at asking people for help. I then try to learn things on my own, but self driven teaching can be hard, especially when its not something that Needs To Be Done. This class was an excellent way for me to get over that first hurdle of just learning how to use the thing, so I can then use those skills however I want.
I’ve always had a particular love for hands on stuff. Most of it was in the 3d realm, with stuff like sculptures or figures/animals made out of pipe cleaners or twists ties or whatever I had on hand. I also have a particular fondness for power tools. I love making things with my hands- that was nothing new, but I think it’s a pasttime I kind of had to put to the wayside in recent years. This class was a good reminder of why I love this kind of stuff so much and also a very compelling incentive to keep it up afterwards. I think I always scounted myself as alittle of a maker, but now I remember that I can still continue to be one, as extremely cheesey as that sounds.
Like, all joking and assignments aside- I really, genuinely loved this class a lot, and the way it was taught. It was an excellent experience and I regret almost none of it.*
*the almost is there to account for the 10 hours spent on copper tape. Curse you, copper tape. I love you, love me back.
Final Project writeup
Our last assignment! This project is supposed to be reflective of what we learned about the design process this semester. We had tasks such as: story boarding, paper prototyping, iterative assessment, and more! The only catch for this assignment was that we had to use a medium/tool that we have never used before. In the past we have always been given or had the option to use tools that we have learned in class, so this was all new. At the beginning, we were given a sheet of possible tools to choose from. Upon scanning the sheet for the first time, I saw “raspberry pi” on the list and immediately snapped into wanting to make a video game console. I have seen this done in the past, so I knew it was possible. I just had literally no idea of how to approach making it.
For the storyboard, it was simple. I wanted to make a portable device that could play games, play them well, and be able to have more than one players playing.
Picture 1: Initial Storyboard
Little did I know, this idea was ambitious to the point of being impossible. To start off, the games I wanted to play (gamecube) proved to be fundamentally impossible for the pi to run. Many forum posters say it is due to the pi not having a 64-bit architecture like the gamecube does. This is false because I ended up running N64, “64” for 64-bit architecture, games pretty well. In short, the pi just does not have enough power to run the games making it literally impossible to make a custom game cube out of a raspberry pi. To rectifiy this I went back a generation of game consoles to the Nintendo 64. Emulation for this console would prove sketchy but doable! To continue, I wrote “4 Players!!” completely ignorant to knowing what a “player” actually is. A player is something that is giving input that the console needs to read and execute. This is much more taxing on the cpu than a simple AI that doesn’t have inputs but only executions. So, this project was whittled down to a portable N64 game console that could support up to two players and run at 60 frames.
One of the first steps I had to take was purchasing a raspberry pi. I took about 30 minutes for me to make a decision between the Raspberry pi 2 B and the pi 3 and went with the 2B in the end. The Pi 3 did offer more processing power for 10 bucks more but many said I could emulate the same with a 2b. I took “the same” as the 2b has enough power to run the game flawlessly. I’m glad this was wrong. If the games ran flawlessly I wouldn’t have much to do. Instead, I learned a bunch about computers along the way.
The other sect of research I had to do was how to interface with the pi. I quickly found that there was an OS designed to emulate games on the pi called “retropie.” To interface with the pi, I need to load an operating system (OS) onto a micro-SD card and boot the pi from there. Getting the OS loaded was easy. Put the micro-SD into a SD adapter -> Put the SD adapter into my computer’s SD slot -> Unzip a folder containing the OS called “retropie” -> Reinsert the micro-SD back into the pi and boot. Research did not take as much time as I thought it would take so I started to worry about if what I was doing was enough. Luckily the pi I bought was nowhere near perfect.
The Meat and Potatoes
The meat and potatoes of this project was the optimization of this tiny computer. Many hours were spent within menus tweaking aspects of the pi that would either allot me more power or optimize a process.
Picture 2: My desk during this whole project!
This amalgamation of cables would be my own little raspberry pi lab for the next week and a half. Two monitors, a laptop, 2 keyboard, 2 mice, 2 usb N64 controllers, my pi, and my desktop. Laptop was for loading software/games to the raspberry pi. Desktop was for debugging research. One monitor to interface with the pi. A keyboard to navigate the pi’s command prompts. Finally, the controllers to test game play. This picture was not necessary, but it was amusing to me!
Picture 3: The raspberry pi 2 model B
This is the Pi I used for this project. In the middle of the board you can see a big green block of metal and a smaller grey block of metal to the right of the green block. These are heat sinks. Heat sinks act as a form of cooling without the fan. Heat is taken from the processor (green) and the Graphics Processing Unit(GPU, grey) and sent upward thorough the little fins. These fins proved crucial as they reduced the temperature of the pi running N64 games from 70 degrees C (highly dangerous) to around 58 degrees C (not highly dangerous). Outside to that modification, the rest of the board is run-of-the-mill. 32GB micro-SD (middle left), micro-USB power supply (bottom left) HDMI (bottom), Ethernet port (bottom right) and 4 USB 2.0 ports (top right).
Pictures 4&5: Raspberry Pi configuration screen (left) Advanced configurations screen (right)
I am going to do a quick run down of each of these screens’ options and how I used them to benefit me or why I didn’t use them.
Raspi config, left
- Expand File system: This formats the SD to the raspberry Pi, already done on my computer
- Change Password: Security measure, no password was used doubt someone will hack my pi
- Boot options: Could choose to boot to this screen or the OS, I did OS
- Wait for network at boot: Have to be connected to the internet to use the Pi, this was disabled.
- Internationalization Options: Everything was in English so I did not touch this.
- Enable Camera: You can connect a camera via ribbon cable to the the pi, cameras are not needed for video games.
- Add to Rastrack: Online pi data tracking
- Overclock: I had to enable overclocking on my pi. Bumped the processing power from 900Mhz to 1000Mhz. A 7-10 frame difference in testing.
- Advanced options: see right
- About Raspi-config: A READ ME file about what each of these menu options does.
Advanced options, right
- Expand File system: I do not know why they had this twice
- Over scan: Naturally games have these ugly black bars around the screen. Before messing with this, about half the screen was black bars. Over scan eliminates these bars making the game easier to see
- Memory split: Oddly enough, I did not have to touch this option. I had the games running at 60 fps without touching it.
- Audio: One can either play audio through the 3.5 mm jack on the board or through the HDMI. By default, it was through the jack so I changed it to HDMI.
- Resolution: For some reason, the resolution was really high out of the box. Old games do not need high res do I bumped it down to 640×480. Doing this would put less stress on the GPU and processor because there is less on screen imaging to process. Also, there is a hertz associated with a resolution. This number of hertz is a hard cap at the amount of frames a game can be outputted to the monitor. There were options for 50hz resolutions but this would hard cap our game play at 50 frames, not ideal. 60 hertz for our desired 60 frame gameplay
- GL Driver: For experimental versions of pi. Did not use.
Picture 6&7: Game Emulator Menu (left) picture taken of the emulation (right)
Each game on the pi is given its own emulation menu from which to control aspects of that games emulation. Every game is a tad different so they must be emulated different.
- Default Emulator: Always picks the most powerful one which is the worst one.
- Select Emulator: Can choose from 7 emulators. The one I picked, “gles2n64”, prioritizes game play over graphics leading to smoother game play but bad in-game menus and the lack of eyes from smash bros characters (right).
- Remove emulator: Removes the emulator. I do not understand this option’s purpose.
- Default video mode: I did this back in the raspi-config menu. CEA-1 is the 640×480 resolution.
- Remove video mode: Removes the video mode. I do not understand this option’s purpose.
- Select frame buffer: Having a frame buffer makes it so that input is separated by frames. Once can press four buttons at once and have them all be read or, with a frame buffer, can have the first button pushed be read while the others are not read. They are not read because the frame buffer counter is not up. This can make games seem more fluid. Games already have their own frame buffers so I did not use this option.
- Launch: launch the game and play it.
- Exit: save the settings and do not play the game.
The final thing I did was turn off something called retroarch.h settings. Retroarch was a controller setup program that made it so that one could have a specific set of controls per each game. Turning this off allotting me more cores towards emulation.
- Overclocking to increase processor power
- Changing resolution to decrease computing stress and give the ability for 60 frames per second
- Fixing over scan to conform the game to the screen.
- Audio to HDMI
- Finding the right emulator to show the game
- Disabling undesired programs (retroarch.h)
- Adding heat sinks to my CPU and GPU to decease temperature.
All lead up to a game console that:
- Can be played for hours without over heating
- Supports two players easily
- Can fit in your pocket
- Can conform to any TV
- Can hold 32 GB worth of N64 games (biggest game I saw was 50mb, so 640 games!)
- And most importantly, run at 60 frames per second.
I could go on about how important to me it was that I managed 60 frames. It just produces the best game play bar-none.
The last bit I had to do was make a box! For this box I laser cut a press fit box. I could have 3D printed a case but a pressfit box took less time and looked better.
Picture 8: The pressfit case.
I used an online generator to produce a .svg file of a pressfit box. All I had to do was add holes for the ports. Picture 8 was a little bit too small so I had to reprint, the concept was there tho. The reason I cut holes in the top of the box was to allow for the heat to rise. Don’t want our console to overheat after all the work we had done to it.
Picture 9: Console presentation
The presentation went better than expected! I did not run into any issues testing at home pre-presentation but that doesn’t mean bugs will not creep up! This presentation ran for 90 min and the console maintained quality throughout. I had a couple people that stayed and played for awhile. I defiantly got more praise for it than I thought so needless to say I was proud of myself!
At the start of this project, when I had to establish learning goals. I said that my tech learning goal was to be able to use raspberry pi as a prototyping device in the future. As for what I would be prototyping, I do not know, but I have the know how of manipulating the pi to get a desired state. Somthing I just thought of being to prototype, as I’m writing this, would be a smart speaker. There is a ribbon cable spot for a screen so one does not have to use HDMI. Then there is the 3.5mm jack for audio. The micro-SD for storage and USB for a Bluetooth adapter as well as speakers them selves. One could use all these aspects to run Spotify on a tiny LCD and play music over Bluetooth (wifi if you have the pi 3).
It is baby’s first computer is what it is, low barrier to entry. A good place to start if one would like to tinker with computational architecture. Which leads me to my educational learning goal. I really wanted to learn how a computer works. I’ve built my own desktop before but that was all plug and play. I’ve never had to manipulate anything on the back end. Going in, I thought I would be just turning down the resolution and overclocking. What I ended up doing was min-maxing cores of the processor. Working in command prompts was also new to me so navigating those was troubling. It was almost like a text adventure but instead of giving command you are writing codes to change directories and call certain programs. Next time I will have to work with computers on a more intricate level I will think back to this project to see if what I did could help.
For my final project, I created a board game: Radical Robots! The main idea behind the board game was to create a game that caused players to need to make a lot of decisions and estimations of the odds to succeed. For this game I needed a large board, a number of tokens, trackers, and finally the meat of the game which consisted of almost 200 cards, with around 60 unique ones. A large portion of my time was spent developing the cards, but in terms of the physical product, here are some in progress shots:
Here were the first prototype cards I made
And a play test being setup between me and a few friends
And here are the final iterations of the cards as they are being cut out
Printing out the board proved easier than I’d thought, and it came out perfectly on the first time
Here is the final project all together during presentations
I’d say the most difficult part of the process was, ironically, the parts I’d initially thought would be the easiest, which were the printing of the cards and cutting out the tokens. For the cards, I wanted to originally use a sturdier material than plain copy paper, so I initially tried to find card stock, but we didn’t have any white card stock. I tried to print on black card stock just out of curiosity, but that didn’t work. I also tried photo paper, but that only prints on one side, and thus doesn’t work for cards. Finally, I resigned to using copy paper, with some example mock ups with a piece of card stock sandwiched between two pieces of copy paper. Additionally I had some similar issues using the laser cutter with two sided acrylic, and ended up switching to wood in the interest of time. Overall I’m pretty proud of my work, especially with the design of the art on the board and the back of the cards, and also the fact that, despite the sheer volume of rules and complexity of the game, it’s pretty playable.
For this project, my two main learning goals were one: “to learn how to use the poster printer to make a game board, and also how to use/design smaller objects with the laser printer since I’ve only done larger pieces so far.” and two: “to learn about game design and playability from the perspective of a creator instead of a player.”
For my first learning goal, I learned both the goals with ease. The poster printer was far easier to use than I had anticipated, as it turns out it basically functions like a normal printer, just on a larger scale. The smaller objects in and of themselves turned out fine with the laser printer. What the actual issue turned out to be was the material I used, as mentioned previously. Most notably, the settings for the double sided acrylic on the universal cutter are incorrect for 1/8″ material, and it would have required a lot of tinkering to get it right. For printing, ironically enough I learned more about printing cards on normal printers than I did for the poster printer. Most notably I learned how utterly time consuming prepping card pages for printing is, since both back and front pages must be aligned, and to get the right card ratios for balancing, it required almost 50 unique pages to be printed out, some multiple times, others only once or twice. I learned a lot about working with Inkscape as well, since I had to make all of the borders and back art for the cards, and then also all of the design for the poster. One major effect I learned was color correction of external images by overlaying a box over the image and turning down the opacity, allowing me to change the color and visibility of the picture to my liking. As I said previously, I’m especially proud of how these designs came out.
For my second learning goal, I’d say I learned quite a bit, but not as much as I’d hoped. I was only able to play test the game once before presentations, so I wasn’t able to iterate as much as I would’ve liked from a design stand point. However, what I did learn was quite interesting. In my first draft, I was so focused on the complexity of the rules and how interesting the mechanics could be, that I didn’t think about how those mechanics impacted time. The first play test we did took just over two hours, so it was quickly decided that changes needed to be implemented to reduce the amount of time it took to play. In particular, the issue of how quickly players progressed from the start was important, since it seemed to take a while for the game to ramp up. In addition, adjusting the requirements for what you need to fight bosses was also important to change. However, I did receive positive feed back about the core mechanics, so I believe the main thing to do in the future is simply to continue play testing and iterating on that. Overall the process opened my eyes to how easy it is to become overly absorbed in certain aspects of a project, and helped me appreciate just how much work goes into producing a well balanced and fun board game. Despite not being perfect, I do think the game has a solid core, and I’m proud of what I’ve accomplished with it so far. I don’t know if I’ll be able to, but in the future I would like continue working on this game and refining it, maybe even turn it into a proper product if I become confident enough in it.
Looking back through my write-ups, I’d say the most significant thing I’ve learned is how to fail. In most classes failure is cut and dry, and as soon as you fail that’s it, you have no chance to try again. In this class it’s been actively encouraged to fail, and then try again so that you can learn from your mistakes. In most courses failure simply results in a feeling of dread and anxiety for your grades. Here it spurs you to improve because you actually have the chance to improve, and I think this has greatly improved how much I’ve learned from this course because of it. Most importantly what this means is that I feel I can more confidently fail and move on from said failure in the future, which will be a very important skill not just in work, but in life too.
This class has definitely spurred me to think about myself differently. Because of this class, I’ve relearned how to enjoy making. Prior to this class, most experience I’ve had with making were in my major, in sterile, grade driven experiences. All my previous experiences in making have been dull and life sucking, but over the course of these assignments I’ve learned that I still have the spark and drive for creativity. It’s been quite a liberating experience for me. On some projects I was not able to do as much as I’d wished, or didn’t fully implement what I’d want, but it wasn’t failure on a points or grade based level, it was failure on a personal level because I was invested in the projects themselves for their own sake, not for the sake of some grade that is supposed to somehow tell an employer my capabilities.
I look forward to continuing to work as a maker in the future, whether in my work, or simply as a hobby. To be a maker is simple, after all: use your creativity to produce something. Previously I had thought of it in a more bland way, thinking making was just creating a product, but now I think the spark of creativity and the drive of passion are essential to being a maker as well. And I think I’ve gained these thanks over the course of the semester, in no small part thanks to this class.
I feel more confident in myself as a creative thinker, and more passionately about my work as a maker, and for that reason I’m incredibly glad I’ve taken this course.
For the final project, I decided to use an arduino and the HC-SR04 ultrasonic sensor. Although the sensor was quite basic, I have not used it before, so I decided to use it for the final project. Another reason I used the ultrasonic sensor is because I wanted to create a sonar system with the arduino, as the sonar does use ultrasonic sounds and sensors. I also decided to create the very familiar sonar visuals we see in movies and tv shows. As I am not really well versed in making visualizations, I thought this would be a nice challenge for me.
Process and Finished Product
My first learning goal was to learn how to use the HC-SR04 ultrasonic sensor. Although it is included in the basic arduino kit in class, I have never thought of using it, and had never felt the need to use it. Using the sensor proved to be fairly straightforward, but synchronising the ultrasonic sensor to the servo movement was a bit challenging. Due to the nature of how the HC-SR04 sensor worked, the time it took to take a measurement varied based on how far the object was from the sensor. Eventually, I discovered a library called NewPing, which allowed me set the maximum distance to scan for, and maintain the same scanning time for each scan.
My second learning goal was to challenge myself to create visualizations for data. I have never been a very artistic person, and creating any kind of visuals, whether it be drawings, or UI design, was very difficult for me. However, as I had something to base my design on, I thought that creating the sonar visualization would not be too bad. Furthermore, when creating the visualization, I worked up from tools that I was familiar with. Once I had a rough design and sketch based on what I could find on the internet, I first started with creating a svg file for the acrylic print. As I did not have to worry about colors, I could just focus on the layout of the visualization, and I think it really helped me to get a solid layout that I could utilize in the graphical visualization. Then I moved onto creating the actual screen visualization. My initial attempts with d3.js did not work out, as getting the data proved to be a problem. So, I quickly switched over to Processing. Although I did not know any Processing, I was able to get a basic grasp fairly quickly, and create the visuals. As I already had a layout for the visualization, all I had to do was copy over the design, make color changes, then add dynamic visualization elements, that would interact with the data from the Arduino.
As a whole, I am quite satisfied with the project. I was able to achieve my main goals, which were to learn how to use the HC-SR04 ultrasonic sensor, and to create a sonar visualization that would show what the sensor was reading. I was also able to create a physical representation of the sonar visualization, so that any object that was placed on the physical representation could show up in the Processing visualization. Although my final project does not really have a practical use, I am really happy about the way it turned out, especially the visualization.
Looking back at this class, I realize that I’ve become to embrace failure and learn from it. I’ve been the model student in most of my classes all the way up to highschool, and even at the University of Illinois, I have never really struggled with academia. That being the case, failure wasn’t really something that I experienced often, or even at all. Throughout this class, however, I was exposed to numerous failures, which was not something that I was used to. For example, during the 3D printing section, I had to reprint, and improve my 3D model, either because the print did not work out well, or because the print did not fit the raspberry pi that I had. Even in the end, I had to file the finished casing, so that it would fit my raspberry pi. Another example is the locomoting pom pom bots. In this assignment, I had to do a complete redesign of the bot, as what I thought would work, ended up not working at all. Even with the new design, I still had to make improvements so that it would actually work.
One thing that I was surprised about was how much I enjoyed sewing. I have never used a sewing machine until this class, and honestly, I was not too excited for sewing. However, I ended up really enjoying sewing, and the assignment on sewing took the most time out of all assignments, simply because I enjoyed it. Sadly, the finished project wasn’t perfect, but I was still proud of myself for being able to learn a completely new skill, and being able to apply it in a functional product.
This class showed me that with the right tools, and within a reasonable range, I could make anything I wanted. I also learned a lot of tools and software skills to aid me, and that I could usually find them at makerspaces. Furthermore, I learned that when I don’t know how to use a certain tool, people at the makerspaces were very willing to help out. I also think the hands-on learning fits the class very well, as we all had to use what we learned in the class, to make our projects.
I had no idea what a maker was, but this class gave me a good definition on what being a maker is like. I don’t think I’d be able to give a concise definition of the word “maker”, but throughout this class, I have experienced to a full extent, what being a maker is all about. Being a maker is doing a lot of hands-on work, creating prototypes and projects that I can think of. Although something might not work out, makers try and try again until it turns out better. Even when you achieve what you set out to be, you then soon think of ways to improve your project. Most importantly, you get to have fun while doing it.
My project was a remote for Spotify that uses a Raspberry Pi! Here’s a video and some pictures:
- The most difficult parts of this project were getting my app to properly authenticate with Spotify’s API (their process is a little weird) and also creating a full program that combined objects from different libraries (this was my first time doing it in python). I’m most proud of getting through that last challenge, it took a lot of trial and error, and I gained a lot in terms of skill that I’d wanted to have claim to for a long time.
- My main learning goal was to iterate on my project once I became satisfied with it. I did embrace this mentality and made a sustained attempt to iterate on it once I had a working product. I tried to improve my Raspberry Pi project by automating the script triggers. I wanted to do this so that my project presentation would go more smoothly. I tried two routes: the first was to trigger the script to start when the Raspberry Pi boots. This caused dependency issues with the library ‘spotipy,’ and I really did not want to try to fix that and end up in over my head with a mass of hotfixes that could endanger the program and even the OS as a whole. I then tried to time the script triggers with crontab. I sank all my remaining time into this, and eventually had to give up, as the crontab logs were very unhelpful as to why the program wasn’t running. So, in a way, I ended up meeting my goal, but didn’t really have anything working to show for it. I’ll continue trying to get it to work, and to iterate on it in different ways. I’ll probably try to fill out the design and execution of the remote idea with my electronics at home. This is because this project was something I really care about and it would serve me well (and maybe others) to come up with a well-polished, finished product to show for this.
- I think one thing that is key to my learning is that I need ample time to make mistakes and learn over and on top of them. If I don’t end up giving myself enough resources to make mistakes, things often spiral into a mess of doubt and anxiety and sometimes things turn out right, but either way, cramming stuff in both in terms of time and by way of learning the tool on the object that I’ll be turning in as the end result. Neither of those work well for me. This feeds into how important repetition is for me, since some of my best work is in projects where I made lots of mistakes and iterated lots (sewing project, final project, stickers, etc). I also realized that I’m a lot more active and involved in a project when I believe that I’m going to end up using that experience sometime later. This makes me a bit sad, as it kind of seals my fate as a pragmatist. For example, I was instantly super involved in the sewing project because I knew it was a super useful skill and something I’d want to get artsy with later. But with the pom-pom bots, it’s pretty obvious that I didn’t get super involved as a result of not believing in it as a ‘useful’ experience. Granted, oftentimes I’m good at convincing myself either way of that, but for that project, I was probably just out of steam.
- I certainly feel like I’ve developed my confidence, as a maker, quite a bit. It was naturally difficult to get more relaxed while working in the makerspace, but the people there and this class gave me every opportunity to do so! It was a great experience and I look forward to spending more time on all manner of projects in the makerlab! This course has convinced me that I’ll have a happy longevity in making, due to the opportunities in community, learning, and tools resources that makerspaces offer. At this point in the year, my understanding of what all those things mean has also developed quite a lot. I’ve learned about the culture and societal dynamics surrounding makerspaces at large. Tangentially, it’s convinced me that I should go back to volunteering with the Urbana Bike Project. To call myself a maker is to recognize my incapability of doing nothing most of the time and having to act on my creative ideas. In comparison with my thoughts on the Seymour Papert quote at the beginning of the year to now, I’m in essentially the same standing. I have a good bit more experience on the personally meaningful aspect of it, that at times, that part is just as essential to the hands-on aspect. The hands-on aspect made this class much more significant, to the extent that the class wouldn’t work without being as hands-on as it is. The knowledge and experience gained is vital. To this day, I haven’t forgotten how to use a 3D printer, soldering/electronics tools, CNC lathe, Drill press, band-saw, dremel, arduino, shop-bot, and Autodesk Inventor, all because they were extremely hands-on and involved processes (all of which I learned at least 2 years ago, experiences that I am very lucky to have had). I expect the skills that I learned in this class to stick with me for the same reasons. I’m probably primarily a kinesthetic learner, so thank you for designing this class with people like me in mind!
Subtitle: why do you make your own life so hard, shaoyie
Okay, so, full disclosure I think this is late? I forgot this was due Sunday midnight, between some other deadlines I had running. I’m writing this now because I realize I should have something up; ideally, the finished product will be up only an hour or two after I initially post this. Now that I’ve figured things out, mostly.
(which is.. still not ideal since its like 4 am but ITS ALRIGHT.)
ANYWAY. This is the current product:
For reference, it says: “I believe in a universe that doesn’t care and people who do.” around a line drawing of a whale.
So the process:
The project I was redoing was my vinyl sticker, redone on an embroidered patch.
So for reference, this quote is from a conversation in a video game, during which the characters are looking at constellations. The one the conversation is centered around is this whale, in the bottom right, so I wanted to capitalize on that. Thinner lines aren’t as good for vinyl stickers, so I wanted to try to make it into a patch instead.
That in mind, this was the new vector design I ended up with.
(I’m really quite proud of this one).
First step was embroidery. That by itself was a process. I wanted to make the dark cloud embroidered as well; not just a shape cut out of fabric, so it took a pretty long time. There also wasn’t thick enough fabric in the color I wanted, so I ended up learning how to use stabilizer. The entire embroidery took about 1 1/2 hours to 2 hours? I remember this because I stayed about 30 minutes past closing time because I was waiting for the embroidery to finish.
It went… alright, but the text didn’t come out too clean. I think part of that may have been the font choice (did you know that text doesn’t really translate very well into the embroidery program we use? i know now. You basically have to redo any text you might have on your vector design, which was… fun…….), and also that the repeated punching of the background + text may have made the lines a little more squiggly. The initial product was definitely pretty hard to read.
I spent some time cleaning it up with little scissors + a lint roller, but I don’t seem to have a specific picture of the-after for that.
Other than the text, and the stars coming out more like tiny tiny dots, I was pretty happy with it overall.
Anyway, step two, LED’s.
Initially, I was going to try to put the LED’s on the points of the whale where the stars in the original image had been. Upon finishing the patch itself, I realized it was… not the best idea. The patch was too thick to have it poke through, and setting it up to let the LED’s poke through probably would have messed up some structural integrity.
So, NEW PLAN: place them around in a sort of framing manner. I was going to use conductive thread + sewable LED’s for this part, which I was pretty excited about. I had 5 LED’s and more or less had the idea of how I wanted to place them.
So I then embarked on a Series Of Bad Decisions.
Bad decision 1: I decided I wanted to sew them all into place first, and just light them all up at the same time. I think at the time, I was 1- trying to make sure I didn’t forget how I wanted to place them and 2- optimize my time in the lab so I wouldn’t have to take home the roll of conductive thread (because I would then be in danger of losing it). That said, it was a pretty terrible decision. Some knowledge of circuits in my mind and vaguely remembering “the positives and negative lines cant touch!” I sewed all the negative threads first.
Ended up with this.
Which is, as you can tell, a mess. I, staring at it, went, “shoot, I can’t really sew the positive lines without them crisscrossing each other.” and instead of, say, taking them out and trying to do each LED 1 by 1, went. “I will force them not to touch”, and sewed on a layer of cloth, to act as a buffer between the negative and positive lines. like, this piece of cloth went over the battery pack, and had holes cut out for where I wanted the needle to go through the holes of the pack. It was, very, very suspicious looking.
[Apparently I don’t have a picture of the back after I did all that. That’s okay. It was a mess. This is a good explanation of my line of thinking]
(It speaks to how sketchy it was that I don’t know whether the actual end result was more or less ugly than that diagram).
And then! After all that! It didn’t work.
(This is actually also a photo of the before-positive. I can promise you it didn’t work though).
Anyway, at this point in time, I had left the fab lab, cut a length of the conductive thread (“just in case”), and been sewing in the positive threads at random moments. Once I realized it wasn’t working, i put it away for a while for future-me to debug.
Over the course of a couple days, in hopes I would not have to rethread everything, I ruled out possible explanations such as:
1- not-working battery (this was actually the case but it didn’t work with a working battery either).
2- the thread didn’t work + needed more contact to work. (it was actually the other way around. I’d assumed it would need several loops of contact to have enough surface area. But even one thread was enough).
3- the LED’s weren’t working. (I couldn’t actually test this one without rethreading everything anyway).
4- I was trying to power too many LED’s. (Per me asking Emilie, a standard coin cell battery could power at least like 6.)
5- repeatedly taking out the battery and putting it back in might make it work possibly maybe. (tested this many times).
After all that, I sighed, and took it apart. (and confirmed that yes, the LED’s worked.)
(this took surprisingly long on its own).
At this point- about 5 PM on Sunday, I also realized I had misplaced my spare conductive thread. So, I was left with a tangle of already-used conductive thread, mostly in short chunks because taking it apart had been difficult, even after I’d realized I would need it, and tried to cut it as sparingly as possible, a pretty limited set of hours, and a good reminder of why one should test things in small increments instead of trying to do everything at once. iteration, shaoyie.
anyway, once I realized you 1- don’t need that much thread to make circuits, and 2- i didn’t have to tie down the battery back with conductive thread, I wasn’t too worried, although already-used conductive thread isn’t very cooperative with being used again.
I did, however, manage to mess up AGAIN, and sew down an LED the wrong way.
You might see the little tiny plus and minus on there. I did too. Unfortunately I did not heed them when I was sewing it into place. “why not, shaoyie?” don’t worry, I don’t know either.
Anyway, so that leaves us with the finished product! I will improve upon it in the future, possibly, but for now, this is just about it.
The whale says hello!
The theme of this project was iteration. Iteration is when you take a current version of something and modify it and make it better. There is not one sure fire way to iterate on a project to make it better so the sky is the limit on this project. The only catch was. that we had to use at least two techniques in conjunction, with each other, when making the iteration.
For this assignment I decided to iterate on my arduino concept project. In that assignment I simply made an arudino print text to a LCD screen. The text that was printed was dependent on which button was push, left button, or right button.
Pictures 1 & 2: Picture 1 shows actively reading input. Picture 2 shows (printed on the LCD screen) what could happen if you pressed one of the buttons.
How I planned to make an iteration was in three ways: physicality, better back end, and finally content. Before the iteration, the product was a skeleton that barley did anything. It was a ton of fun to breath life into this project!
What I mean by “physicality” is, changing what the project looks like. To change the project physically I considered what I wanted to make over. Being me, I wanted to make a game. What is the most iconic physical manifestation of a video game then? An arcade cabinet. An arcade cabinet is the name of the console that 70’s arcade games were put into. Classics like: Mrs. Pacman, Galaga, and Street Fighter can be found inside arcade cabinets.
Picture 3 & 4: Dimension planning & reference photo.
Here we have my plan on paper and my inspiration. Once I saw this adorable little thing on the right I got to work jotting down dimensions. I modified the drawing a bit because I thought it would be easier without it. the dimensions on the left are relative to the arduino parts that I was using. Funny enough, the base of the cabinet ended up being a square (the picture is wrong). the length of the LCD is 3.25 in and the width of the arduino is 3.25. Besides the neat presentation, the case also allows for handheld game play. The player can play the game in the palm of their hands instead of being anchored to the table.
Pictures 5, 6 & 7: Arcade Shell (left) Dissection (center) Mess up (right).
On the left we have the assembled shell. ideally what it would look like when completed. This shell was created by putting together two halves (center) with some wood glue. The back half of the shell turned out to not work with my design. The wires for the LCD prevented the back half from being put on. The red marking on the right picture was a marking telling me where I needed to cut. I ended up remaking the entire back half with a big window for the wires.
Picture 8 & 9: Completed Front & Completed Back.
The front of the cabinet looked amazing. On the left side of the picture we can see the little window where the wires get to peak through. The six cords coming through the middle are for the two buttons I will use for input. In the back we have some awesome wiring that I very proud of despite it being simple. The LCD and arduino are held together in place my rubber cement. I used rubber cement because it is what works best for gluing plastic to wood. I have a full back panel that I did not put on, for ease of access reasons, that makes the back look even more clean while giving me access to the power supply. This was the most intensive change done to the original project.
Better Back End
A better back end simply means that the coding was improved. What I did differently was, instead of just simply printing text to the screen using a void loop function, I implemented switch case functions with global variables. Switch case is basically a better if statement. Switch case functions get to bounce around depending on the situation, very manipulable through the use of global variables. Once a situation occurs I can change the global variables so that the program can jump to the right situation instead of just going down the list.
Content is the game side of the project. Within the switch cases, I spun a simple dungeon crawler game. What the player picks, or doesn’t pick, will affect them as they travel through the dungeon. Also, a mechanic in the game will be the buttons changing purpose. In the original project, I made the buttons only print yes or no. Now, the buttons will change purpose per the situation. Before a battle, two lines of text will display what the buttons do. For example, I have text saying “left is defend, right is attack” before a battle. This text tells the user that the buttons now serve a different purpose. Overall, I will use this mechanic to force the player into situations where they have to ponder the consequences of their future actions. The mechanic gave the game its name, “True Dichotomy.” Because, there are literally only two options thus the true dichotomy.
In the link provided one can see the project in motion. The switch case allowed the “really, no” text to come out. Since the variable counting the number of times left was pressed was one, instead of presenting nothing it jump to the next option.
Overall, this project was a ton of fun! This is one of the few times where an end project actually turns out how you wanted it to turn out! One aspect of this project I would change was in the planning phase. instead of doing: construction -> coding -> turn in. I should have done: coding -> construction -> turn in. I felt that I needed to construct the physical object before I coded the game, but that was wrong. I just needed the skeleton to code the game, and debug it. This left the end product feeling rushed. Other projects got in the way last week, so I really only was able to go to the FabLab today (extra time really helped!) thus I was only able to code the game for a couple hours. Coding the game before all this would have saved me a ton of time and stress! One final change I could make to this product is a portable battery. While one isn’t too anchored when playing the game, the 1.5 foot USB B-type cable doesn’t allow the user to stray to far from a computer. have an external power supply would really increase the portability of this product. Again, this project was super fun, and now have some thing to put on my future office desk!
Here is my blog post for this week: Iteration
For my iteration project, I decided to improve on my sticker project. When I left off with it, it was pretty rough around the edges, and since it was my first attempt, my sticker suffered from having trouble correctly visualizing what the end product would be. In order to fix my original, I did a lot more image editing. I essentially created a reverse of the image. The end result was pretty good, the only faults to it being problems that I could antiticapate:
The several layers were difficult to apply correctly, and the red portion doesn’t pop out as much as I would have wanted it to, due to how I set the layers on top of each other. Not bad, overall. For the next sticker, I went back to inkscape and tried to come up with something really fun. I experimented with three designs. I ended up going with the makerspace logo, since the other designs ended up being far too complicated to get a clean layering, and also used different colors from what I was already using (I wanted to use up the scraps from what was left from my first sticker).
Here, the most difficult part was applying the parts of the sticker right. As you can see in the picture above, I used my second layer that I applied to serve as a guide for the next two layers.
The end result was super clean as a result!
For my final project, I’d like to try my hand at creating a board game inspired by board games I’ve played such as evolution and munchkins!
To build this, I’ll use at least the laser cutter and the poster printer, but may end up using the 3-D printer as well. The main idea I have behind the game is for the players to have a lot of choice and be modular in play style, with multiple equally valid strategies to complete the game. This will help extend my learning by encouraging me to create from a unique design perspective in my experience, driven by how fun and playable something is rather than a technical or functionality perspective. Finally, I will need the support on the design and testing of the game, which I can through online research and my friends/peers, help in creating laminated cards, which I can get from dot, and a board for the game using the poster printer, which I can get from James/Duncan.
The first main learning goal of my final project is to learn how to use the poster printer to make a game board, and also how to use/design smaller objects with the laser printer since I’ve only done larger pieces so far. My second learning goal is to also learn about game design and playability from the perspective of a creator instead of a player.
For this design, I wanted to make a robot that dragged itself across the floor with an arm. I decided I wanted to give it an alien look, and wanted to give it a look inspired by the face huggers from the aliens movies. I think just using popsicle sticks, glue, and rubber bands will be all I need to construct the robot. Below are the bare-bones of my pompom bot I built in class, and later used in the construction of my first prototype.
Most of my different prototypes were in the different iterations of movement style, as actually getting the robot to move was much harder than I had anticipated. In my initial design I tried to make the robot move with its arm in one big sweeping motion, having the shoulder joint lower first, then having the elbow joint turn 90 degrees rapidly. This caused the bot to fall over a lot, so changes to the weight of my robot and the speeds/angles of the motors would be necessary.
For my next iteration I decided to give the bot a broader body, and to try having it push with the arm at the rear, rather than pull from the front. I also shaped the popsicle stick on the front part of the arm to be somewhat more pointed, to allow for better grip. This ended up being able to move, but not very well, and went to one side for some reason.
For my final design, I really wanted to get the forward dragging motion correct, so I used a body similar to my second design, and tried to apply that to a design with forward movement. I tuned the angles to move between 45 and 135 degrees, and that seemed to work well.
Here are some pics from the building process, I decided to use a green color and a bunch of eyes to give it a cartoony, but alien look. I also had to keep the profile lower to the ground to get it moving.
My initial tests for this design didn’t go great:
So I decided to try added some more friction to the arm with a rubber band:
And it works pretty well! The bot itself has a much larger body than my initial design, and the additional friction at the tip and changes to the angles the arm functioned at really seemed to help. I was surprised with how much difficulty I had with a lot of this design. I had figured it would be a piece of cake, but there were a lot more nuances to it than I had anticipated. In the futures I would want to try running multiple arms to further imitate my original inspiration and give it a creepier look, and maybe try for actual walking rather than dragging as a form of locomotion.
Overall I was pretty satisfied with my final design, and had a lot of fun making it to boot. Many of the issues were in minor details of the build, but just as in the first arduino lab, it was a familiar kind of process, so it wasn’t frustrating to debug these issues. Learning to use the servos was a lot of fun, and will actually be useful for me in other classes as I need to work with servo motors in my senior design class.
An additional note, I took a number of videos, but the website wouldn’t allow me to upload them to the page, so I only had the shortest videos I made available.