My circuits class was tasked with creating electronic versions of classic board games. My group chose Connect 4, and aimed to not only recreate but improve upon the original gameplay.
Our first step was designing a circuit capable of displaying instructions, taking user input, and controlling a matrix of LEDs representing the game board. Using Altium, we created a PCB acting as a shield for an Arduino Uno. The PCB connected an LCD screen for instructions, a potentiometer knob and button for user input, along with the LED matrix for displaying the game's progress. The LEDs were arranged in the traditional Connect 4 setup and wired in parallel. We ran a common data line sequentially through all 42, allowing us to individually control each LED.
Next, we 3d-printed a frame for the LEDs to attach to and laser cut acrylic pieces to construct a housing for the circuitry. We wanted the design to represent the unique electronic aspect of our game, and so made the LED frame open enough to see the wiring from the front. We also chose to make the housing transparent so the Arduino, PCB and wiring could be better showcased.
The gameplay starts with the players choosing their colors via the knob and button, then player one is allowed to place his first move. After every move, the Arduino checks for horizontal, vertical, diagonal ascending and diagonal descending wins before switching control to the other player. The game ends with a special animation when a player wins, and then resets, or just resets if the board gets filled up without someone winning.
I contributed to designing the Altium circuit, manufacturing the PCB, soldering, and Arduino coding. This project significantly expanded my knowledge of electronics design and circuit fabrication, enhancing my problem-solving skills with custom circuits and microcontrollers.
Electronic Connect 4 Console
Completed wiring from back of console
Spatial visualization is an important engineering skill that has been shown to improve student retention and engineering success. The problem is that there is no system in place at CU Boulder for students who struggle with this skill. My group and I created this project seeking to fix that problem by creating a comprehensive and engaging spatial visualization learning solution. The system is comprised of three main pieces: an app, modular blocks, and a bluetooth connected baseplate. A user is prompted with spatial visualization problems to solve on the app, which they can then build using the modular blocks on the baseplate. The baseplate receives information on which problem the user is solving from the app, and can then determine if the correct number of blocks are on each space of the baseplate. It then notifies the user if the problem is correct, via a green light. The baseplate is able to interpret how many blocks are on each space due to the fact that in each modular block is an embedded resistor. As blocks are built on top of the baseplate and each other, the resistors add in parallel and the circuit can measure the voltage through each stack of blocks, thereby knowing exactly what the user has built, and if it matches the answer to the problem shown on the app. The blocks contain embedded magnets, and bumps and divots that correspond with the magnets' polarities, such that they snap together intuitively and satisfyingly.
I was responsible for the app and bluetooth integration parts of the system. I coded the app using the Swift and SwiftUI frameworks, and learned how to send data from the app to the baseplate's Arduino using Apple's CoreBluetooth framework and an HM10 Bluetooth module connected to the Arduino. Later on during development, I was also responsible for keeping the baseplate's Arduino code up to date with the most recent iterations of the system in its entirety. For more information on my part in the project, see section five of the cumulative project report below, "Personal Contribution."
Some of the modular blocks on the baseplate
Early iteration of the circuit on a breadboard
I was motivated to make this project because I keep a Goodreads list of the books I want to read and wasn't sure which one to read next. I wanted to get some sort of overall rating metric to pick which book on my list was the "best" according to other Goodreads users, but there was only "average rating," "number of ratings," and "number of pages" available through the Goodreads site. I wanted to combine these statistics so that books with more ratings would be weighted higher than those with less ratings, and books with less pages would be rated higher than those with more pages. These three numbers would create the basis for my total score number, calculated by multiplying the average rating by the number of ratings and dividing the number of pages.
I had heard that Python could be used to scrape data from websites, so I decided to install Python and learn a little about the Beautiful Soup library to make a script that would read my Goodreads To-Read list, and return a CSV file with the total score of each book calculated. In order to express the books' relative strengths, the total score for each book became a percentage of the highest total score from the entire list. The script works with the URL to any Goodreads list inputted as the source for Beautiful Soup.
Main score calculation code segment
Main score calculation code segment
In my group’s project focused on innovative sleep system products, we aimed to redefine the sleep experience. The project comprised a vibrating weighted blanket and a sunrise alarm eye mask, both designed to enhance overall well-being.
For the weighted blanket, we implemented a unique oscillating vibration pattern for a soothing effect. The blanket contained ~6000 wooden beads in order to increase blanket weight and decrease user anxiety. The sunrise alarm eye mask was made using an existing eye mask as the base, with flexible LED filaments added into the eye cups. The mask’s circuit board was attached discreetly on the side of the headband with a simple button system for control. The LEDs replicated natural light patterns with gradually increasing intensity, promoting a gentle wake-up routine.
Our approach involved extensive user interviews and scientific research, integrating validated findings into the product designs. We prioritized user feedback, resulting in our product idea shifting from what we thought users wanted to something they actually needed.
Throughout the semester, I primarily directed my efforts toward project management—setting goals for deliverables, distributing work, and integrating various development efforts to address our users’ problems. Additionally, I played a role in circuit design and product manufacturing. The iterative development process involved adapting to user preferences and ensuring the final products exceeded expectations.
These sleep system products not only address the physiological aspects of sleep but also prioritize user comfort and engagement. The project has significantly expanded my knowledge in merging technology with wellness solutions, reinforcing my ability to contribute to innovative and user-centric designs.
After we presented our products at the 2023 CU Boulder Integrated Design Engineering Expo, we received the Tensentric Rockstar Design Award for life-science innovation and user experience prioritization. This served as excellent validation that our product effectively addressed a genuine need and would be beneficial for consumers.
Nyx Sunrise Alarm Eye Mask
Nyx Weighted Vibrating Blanket Swatch (smaller scale prototype)
We use cookies to analyze website traffic and optimize your website experience. By accepting our use of cookies, your data will be aggregated with all other user data.