The IDEAS (Integrated Design, Engineering & Applied Science) minor at Wesleyan is a minor about... integrated design, engineering, and applied science. I officially declared the minor fall semester senior year, and my coursework has been comprised of:
A brief list of my IDEAS projects as well as a short description, for easier navigation:
Morse Bot is my final team project from IDEA175 — Intro to Electrical Engineering that I made along with Miranda Derossi. Morse Bot is a little robot coded in Arduino that lets you tweet by inputting morse code via an arcade button and a send button, while also displaying the morse code on an integrated LCD screen, and providing additional sound and light feedback with an LED and buzzer. The robot sends an HTTP request with the morse code to a backend server I wrote and deployed that converts it to English and communciates with the Twitter developer API to post the tweet!
We started with the idea of doing... something in morse code, and after some talking we decided that we wanted to be able to connect to the internet, and soon after we decided that it would be fun to have people Tweet via morse code... a feature nobody has ever asked for but we decided to create anyway! Once we had decided on that, we had to actually figure out how to do it. We used an ESP32 board because it had a built in wifi module that we could use to send HTTP requests.
Originally, we wanted to be able to connect 2 ESPs together, and have them communicate—you press a button on one and it outputs a light on another. We first tried to use an HC-05 external bluetooth module, and we were able to find plenty of documentation online about connecting a phone to an HC-05, but nothing about connecting two together. Our group made the decision here to simply give up on this approach, as it appeared it was a dead end not worth sinking more time into. Instead, we pivoted to using the ESP wireless capabilities, and a feature called ESPNOW. This was able to connect the 2 ESPs together, but we weren't able to get them to connect to the internet as well. I decided that getting 2 ESPs together was outside the essential scope of our project, and that it was better to focus on the core capability of getting the bot to tweet, so we decided to abandon the 2 ESP concept, which turned out to be the right idea. By abandoning the out-of-scope idea of connecting a second bot we were able to easily connect our main ESP to the internet!
Once we had wireless capabilities, we actually had to figure out the specifics of interacting with The Internet. We ran into some issues with the ESP board and the process for using the Twitter API because there weren't ESP libraries that supported the proper OAuth flows needed for Twitter. So, to get around this issue, I built a Python Flask server that I hosted on Google Firebase. Instead of sending requests right to Twitter, our ESP sent requests to my Python server, which converted from Morse to English, authenticated our Twitter account, and sent an HTTP request to Twitter! This was fun and easy for me because I have had a lot of experience building Python web apps, and a LOT of experience with Firebase, so it was cool to put that knowledge to use!
Once we were able to interact with the Twitter API, we were able to successfully tweet! We made multiple tweets to @MorseBot1 on Twitter! The sensitivity and the timing on how to determine when a new word is formed is a little wonky, hence the weird spacing, but overall the bot works! It also outputs beeps and lights as the user presses buttons! Below you can see some final tweets, as well as some that messed up along the way.
For IDEA170—Mechanical Engineering, I had to build something that would hop (jump) on its own, after a wait time of 8 seconds, and would also follow an additional personal design goal. My design goal was to have my hopper jump... very high. Unfortunately, I couldn't make that part work and my final hopper only hopped slightly off the table, but it did hop indeed! For my final version, I created a hopper that used an expanding ear plug with a pointed stick attatched as a timer that popped a balloon (trigger) and stretched out rubber tubing attatched to a leg as the force needed to hop. After LOTS of iterations, I was able to get it to work, and it makes a small jump off the table!
My original plan for the hopper was to use a rotational friction timer but have it be connected to the force that was causing the overall hop. I spent a huge amount of time working with that idea and tinkering with the friction timer. The way that the friction timer works is that I have an aluminium rod inside of a piece of rubber tubing, and by squeezing the rubber tubing on the rod it creates a lot of friction and makes it hard for the rod to turn. Then, I glued a piece of MDF (wood-esque material) to the rod, with a little arm sticking out. Then, I connected the rubber tubing to the arm by zip tying them together. That way, I could have the rubber tubing pull on the MDF arm, which would turn very slowly because of the friction on the rod, and once the arm was pointed down enough the zip tie would slide off, releasing the rubber tubing.
However, I quickly ran into the problem of not having enough friction to ensure that the arm would move slowly enough. To fix this, I tried two methods of squeezing. The first method I tried was to 3D print a piece that the rubber tubing + rod would fit into, and which could be squeezed by tighening screws slotted through the top holes. However, this didn't work as well as the plastic wasn't malleable enough and would frequently break instead of bending. It also took several hours to 3D print, so I instead went with a different method and just squished the tubing between two pieces of wood that I screwed together to tighten.
In addition to working on the friction timer, I began to build out the system for my hopping. I had always been planning on having my hop be done by a leg (big rod of wood) which slams into the ground, propelling the entire hopper upward. I attatched my big wooden leg to the rubber tubing with some more MDF squeezing technology, and connected the rubber tubing to the hopper with, you guessed it, more MDF squeezing! At this point, I had a prototype of all of the parts in my current design for the hopper.
Unfortunately, after weeks of tinkering and adjusting, I discovered that it was simply not feasible to generate enough friction to counteract the immense force that the rubber tubing was exerting on the friction timer. I decided to do a big redesign and change the timer mechanism of my project completely. I realized I had to decouple the timer/trigger from the force of the hopper. I kept the hopping mechanism the same, with a leg that slammed into the ground attatched to rubber tubing, but I changed the timer/trigger completely. Instead of a friction timer/trigger, I had the rubber tubing attatched to two arms that held it in place, and the arms were prevented from moving out of place and releasing the leg by a balloon that was placed in between them. Then, as a trigger I whittled down a wooden dowel into a little spike and glued it to an ear plug. By compressing the ear plug and placing it above the balloon, it would gradually decompress and push the spike far enough into the balloon to pop it, releasing the leg and causing the entire contraption to hop!