Projects
TV Ambient Lighting System
This project was one I had been thinking about doing for a while. I was able create an ambient lighting system that “splashes” light behind the TV, based on the colors of the pixels on the edges of the TV screen. There are similar products that offer this functionality on the market, the most notable being the Philips Hue Sync Box with Gradient Lightstrip. However, these products were either quite expensive (the Philips Hue system was nearly $600!) or not nearly robust enough (many used a small camera to scan your TV screen, rather than use the pixel data flowing through the HDMI).
What inspired me to do this project was the fact that I was interested in purchasing a commercial product to add ambient lighting to my TV, but the price point was just too high for me to justify spending. However, I really wanted to add these lighting effects to my setup, as it would really step up my immersion into movies, tv shows, and video games. I did a little bit of research and discovered that the open-source project Hyperion offered a robust, Philips Hue equivalent, solution that I could create myself with a Raspberry Pi, Arduino, a few odd and ends, and a little bit of metaphorical elbow grease. I was able to build this project for a little over $100.
In my case, I accomplished this project using a Raspberry Pi 3B+, a 3rd party Arduino Uno, and the Hyperion project running on the Pi. Realistically, I could have used a Raspberry Pi Zero W and a Arduino Nano if I was looking to purchase less expensive boards, but I had the higher spec boards already on-hand. The Hyperion docs and shrocky2’s github repo were the only two references I needed to complete this project.
I definitely spent hours debugging several issues, first with my Pi running Hyperbian (Hyperion OS for Raspberry Pi) not being able to connect to my Wi-Fi. I solved this as I had a suspicion that the unicode for the space character was not being translated correctly, so I changed my Wi-Fi name and, lo and behold, the Pi could finally connect. The second and third major issues I faced were around the power supply for the LEDs. The first issue I had with the power supply was that it simply was not enough power for the number of LEDs I had going around the edge of my 55″ TV. The second issue I had, after getting a stronger power supply, was that the LEDs would light upon booting up the system (Pi, Arduino, HDMI Capture), but would not actually splash the pixel colors around the edges of the screen. This was due to a bad common ground between the power supply, LEDs, and Arduino. I was able to diagnose both of these pesky issues through the advice offered in the Hyperion community forums based on people that encountered similar issues.
Even though I spent a fair amount of time and money on this project, doing it myself proved to be worth it from both a financial and learning perspective. It is amazing that open-source software for a niche problem like this exists. With the IoT field continuing to grow like crazy, I can’t wait to see what new products come out, and how communities create open-source alternatives that empower individuals to create similar products on their own.
Wi-Fi Enabled Coffee Maker
This project was one I worked on over the summer as I had a little bit more free time. Again, I don’t get too creative with the project names and you can probably guess what this one does. This project enabled me to turn a simple drip coffee maker on and off from an app or web browser on my phone. I was inspired to create this project because I am truly fascinated by the use of embedded electronics to create IoT products that make life easier. For example, with this project I was able to wake up and brew coffee from my bed, all with the touch of a single button! It really is amazing what can be done with technology these days.
As far as hardware goes, I used a Particle Photon (microcontroller similar to Arduino), a 5V power relay, 5V power supply module, and a few wires. The Photon is really nice as it came with the WiFi module built in. Additionally, it comes with access to a web IDE and mobile application where you can directly control the pins on the board or run functions you wrote yourself. The really great thing is you get access to these features and the board all for a mere $20. You really can’t beat that price (maybe you can, it’s hard for me to keep up with new tech constantly coming out). This project really did not require much code at all. All I had to do was initialize the pin that was connected to the power relay and write a toggle function. Go ahead and take a look at it in my GitHub if interested, just press the icon to the left.
This same circuit could be applied to practically any electrical device. There are many products currently on the market, like WeMo switches, Philips Hue lights, and smart power outlets, that operate in the same manner as this project. I am excited to see how Smart Home technology evolves in the coming years.
Artificial Intelligence Project Matcher App
During my final semester at Michigan State University, I had the pleasure of working with a team of peers to create a mobile employee-to-project and project-to-employee matching application for Dow Chemical. The matches for employees and projects would be based on the employee’s experience and the project’s needs. This application operates in a manner similar to dating apps like Tinder, where employees can view projects recommended by our recommendation algorithm and swipe right or left, depending on if they were interested in the project or not. Similarly, project owners have the ability to view recommended employees for their project and swipe based on interest. Once both parties swiped right on each other, their contact information would be shared and they can take the next steps to get to work on the project.
This application was built with a React Native front end and a Node.js back end. A MySQL database was used to store and access user information. I was primarily responsible for back-end development, including setting up and connecting the MySQL database to the application, populating the database with test account data, setting up the Node.js/Express.js server to interact with our database, and writing functions to connect the front end and back end.
I am very proud of this project for several reasons. First, I learned how quickly I can pick up new technologies, as I had no experience with React Native or Node.js and minimal JavaScript experience prior to starting this project. Additionally, I learned a great deal about leadership and communication, and how they play a key role in guiding a team through the software development life cycle. Overall, I worked extremely hard on this project and I am very proud of what I was able to accomplish. To learn more about this project, click here to visit my team’s page on the Michigan State University CSE Capstone website.
Smart Phone Weather Dock
This is one of the first Raspberry Pi projects I worked on. It is a Smart Phone charging dock with a bit of a twist. It has an embedded 3.5″ touch screen that displays the local weather data. This was accomplished by writing a Python script that utilizes the OpenWeatherMaps API to obtain weather data based on a set location. Then, I had this program run on my Raspberry Pi 3B+ (overkill, I know) which was directly connected to the touch screen and would display the updated weather information every 30 seconds.
While the code that actually went into the Python script was quick and easy to write, I spent many hours trying to get my program to interact with the OpenWeatherMaps API. After taking a closer look at the API documentation, I noticed that it requires Python 3 to be used, while I only had Python 2 installed on my Pi at the time. After a quick sudo apt install python3, everything was up and running!