Final Project Blog Post by Tiana Lui

Facebook Car Chase – Tiana Lui – Professor Rudi

Conception and Design

At the beginning, we wanted our users to interact with our project by chasing a car, thus we planned to build an electric car that would communicate to our arduino via bluetooth. On the car, we also installed a rotating servo motor with an ultrasonic sensor placed on top, so that the servo motor would rotate the ultrasonic sensor so that the car could avoid obstacles 180 degrees around it. However, due to limitations and difficulty with setting up bluetooth, we altered our design to have our car drag the user’s laptop if they opened facebook, making the ultrasonic sensor and servo motor unnecessary. Here, we learned that sometimes it is necessary to innovate and find a way around obstacles. The limitations of this project forced us to think creatively and problem solve. For the physical design of the car, our main concern was to cover the wiring of the car, so we laser cut and decorated a wooden box. Laser cutting was a fast and appealing way to shape our car, and would be forgiving if we had to make any alterations (which we ended up needing to make due to the irregular wires and bumps of the car). We decided not to 3D print because we weren’t completely sure of the dimensions of our car.

Fabrication and Production

The most significant steps in our production process were building the car, building the chrome extension, coding in p5, coding in arduino, connecting arduino and p5 together, bluetooth failing to work, and post user testing debugging. 

As there were no instructions to build the car, Kathy followed a video tutorial online to build the car, testing the car’s functions one by one to make sure everything was built correctly. Then, referencing code online, she built a function to control the wheels of the car.  This step was crucial because the car was part of the fundamental idea of our project.

The other fundamental step was the chrome extension. By referencing code online, figuring things out, and asking Leon Eckert for help, I was able to create a chrome extension that set a 10 second timer whenever someone opened a social media site, ie. Facebook, and redirect the user to a p5 page that I coded to display gifs reminding users to get back to work.

The third crucial step, by far the hardest step, was serial communication between p5 and Arduino. While the concept was taught in class, this particular step was so challenging because I had no experience serially communicating specifically from p5 to Arduino, so I was lost as to how to solve coding errors when they appeared. With the help of my CS friend, I was able to pinpoint the problem being me not setting up the server properly, and after that problem was fixed, I was able to serially communicate between Arduino and p5. 

Bluetooth, normally a very simple step, failed to work despite coding as written in tutorials online. However, this failure pushed us to alter our project. Instead of making the car run on the ground, we made it so that our car would drag the user’s laptop. This proved to be an even better idea than our original idea as it would actually pry the laptop away from the user, actually forcing the user to take a quick break. 

Our car failed to work during user testing, which I thought was very strange, because it had worked in the morning with the exact same code. After user testing, we made sure to take note of the suggestions that could be given given our situation, and set to work trying to fix our car. The failure of the car taught me how to fix coding errors: isolating different sections and testing them out one by one. In order to fix complex coding with no idea where the error is, it is necessary to test each section/part of the code to verify each function is correct. During those few days, I spent my time debugging, function by function, to see what was wrong with my code. Perchance, I happened to pick up the car and the car started moving. It was then that I realized that it was the hardware that was the problem and not my code that was the problem. After that realization, I made sure all the hardware was in place and implemented the suggestions given during user testing (making sure to take a demo video, removing the alert when users were redirected to my p5 page, securing the cord to our laptop, and placing wheels below our laptop to prevent friction from disconnecting our car from our laptop).

Conclusions

The goal of our project was to remind users how long they were using social media and to make users take a quick break from their laptops. Our project aligned with our definition of interaction in that the laptop would receive information from us (what website we accessed and if it was social media how long we accessed it), process that information, and then output information back to the user (redirect to another webpage). Then the user would be forced to chase a physical car (another form of physical interaction in which the user sees the car dragging its laptop, interprets this threat to their computer, and takes action by proceeding to chase after their computer). Since our project was more of a daily use product and not most suitable for presentation, our audience did not necessarily know to open facebook on the computer. However, after they opened facebook, their reaction followed our expectation of them being surprised and trying to stop the computer from running away. If we had more time, we would try implementing more functions. For example, in my chrome extension, instead of triggering a 10 second timer every time a user opened facebook, I would come up with a timer that could pause itself if the user switched tabs to a non-social media website. For the car, perhaps we could make the car sensitive to the edges of the table, so that the car wouldn’t accidentally fall off the table.

This project really tested and pushed our boundaries. We encountered obstacles that essentially would prevent the operation of our project. During those times, I sometimes wondered if our project was even doable and whether we should switch to a different project. However, by being persistent, asking for help, and thinking outside of the box, we were able to solve the problems and accomplish more than we ever had. Being able to solve those problems was very rewarding. Just as this project has enabled us to reflect and grow, we hope that our project will also make others think and reflect on how they are spending their time.

Leave a Reply