For my final project for my physical computing class, my group and I decided to create a reactive desktop robot that will light up an LCD screen with faces, LED lights, and sounds on a piezo buzzer based on the temperature that a sensor reads. For example, if the DHT sensor reads that its a comfortable 70 degrees Fahrenheit, it will print a "(• ◡ •)" and display the temperature while lighting up the green LED and playing the mii channel theme song on the buzzer.
Elevator Pitch
This robot friend is the best desktop pal to have! He reacts to his surroundings. When it’s too cold, he’ll freeze up and his face will turn blue! When it’s too hot, his face will turn red so make sure to cool him down! You know he’s happy when his face is green, make sure to keep him that way. Who knows? You might even hear your robot pal singing you a song.
Team Member Responsibilities/Credits
Hannah Curran - LCD screen, drawings/schematics, circuit assembly
Kaitlyn Hunh - Piezo buzzer, DHT sensor, documentation, circuit assembly
Madi Heath - 3D modeling/printing of enclosure, cardboard mockups, video and photos
Grace Geer - LEDs, painting of enclosure, photos
All diagrams in this document created by Hannah Curran
Individual Portion: Enclosure
When it came to start creating, my main role was to create the 3D printed enclosure that our project would live in. Before doing so, it was important to create a cardboard mockup to ensure that the components could all fit inside as well as the outer components fitting the way they are supposed to on through the holes in the enclosure. I started by collecting measurements for all of the components we would be using and then sketching out the size I thought would fit everything best.
This was helpful to not only visualize for myself but to also get a good understanding of how lenient it would be when we go to install the pieces.
Once everything was assembled, it was time to start inserting the components and ensuring they would stay. It was difficult during this time to be sure of the accuracy of my own measurements as cutting cardboard is not incredibly precise, and 3D printing will be less giving. Luckily, I can sand down parts of the 3D printed enclosure if necessary, so I will try to err on the smaller side and hope for the best.
With the mockups complete and a good idea about how to begin the modeling process, it was time to open up Rhino. It took a bit of a refresher to remember some of the tools that would come in handy. I realized a bit of the way through that it would be best to model the “head,” “body,” and lid separately so they print more easily, and then they can be assembled together afterwards.
After some time, I had all three pieces modeled. The final result in Rhino is below.
I then exported each of the pieces as individual stl files and opened them up in Cura, a software used to print on a Lulzbot 3D printer, which is what the ITLL on campus has. I made sure that there were supports for overhangs such as the opening for the LCD, which will be removed later but will ensure that the model does not cave in on itself during the printing and curing process.
Group Progress
While I was working on the enclosure, we met up to work on assembling the full circuit as well as make sure everything would fit inside in the end. Hannah, Kaitlyn, and Grace all worked on their individual code and circuit parts for the LCD, piezo buzzer, LEDs, and DHT sensor. Below you can see our schematic.
The code for our project can be found below. We all worked together to troubleshoot and test the assembled circuit and Arduino code once each component was completed. This took a lot of trial and error, but we had wonderful help through this process.
In our troubleshooting, we also found that the LCD was not functioning properly when including the serial update to read the temperature. We were'n’t sure why at first, or what they had to do with each other, but we found that if we added these bytes to create the character “faces” to another file, they worked perfectly! Hannah created a GitHub with both files included, and the bytes code can be seen below.
Playtesting
In preparation for playtesting, we made sure that all of our components were functioning well individually, and then as a whole circuit. Since it is difficult to meet up in person, Hannah has the entirety of the circuit while I have the enclosure. A video of our working circuit when the temperature is at a comfortable degree, making the robot happy, can be found below.
Individual Portion: Finishing the Enclosure
After playtesting was finished, we were able to have the model for the enclosure 3D printed on campus by Caleb Wright, who was incredibly helpful in getting this done during Covid restrictions. After picking up the 3D printed body, head and lid, it was time to get to sanding.
When I created the model, I did not account for tolerance in the lid, so it fit incredibly tight. Unfortunately, a few of the hole sizes for the components were not measured perfectly either. This meant I needed to sand down the inside of the lid, as well as the LCD screen hole and the DHT sensor hole. This proved to be quite difficult, and took me what seemed like forever to complete this, even after getting a wood chisel and trying to scrape the inside holes.
Eventually, it was ready to paint. This was passed on to Grace to complete, who managed to create a beautiful recreation of the robot from our initial drawings.
After it was painted, I added a clear coat of spray sealant to keep it looking fresh. I then hot-glued the components to the inside of the enclosure to prepare for the final assembly.
The LEDs proved to be somewhat difficult, as I didn’t want them to end up coming apart while in the robot, so I had to remove the plastic cases on the ends of the jumper wires and connect them to the legs of the LED while the wires were through the hole so that I could pull them back through and then hot glue them to ensure they stay put.
Group Assembly and Final Touches
As we began assembly, we tested all of the components to ensure they were still functional. We realized at this time that the LEDs were not turning on when they should be, and that it was because of removing the plastic caps and trying to connect them with electrical tape. This meant I had to remove them and make the holes bigger to fit the cased jumper wires, and hot glue them in from one side while hot gluing the LEDs in from the other. We tested them now, and they worked!
We were now able to piece everything together and stick it inside the enclosure. It was a tight fit with all of the wires, but the lid stuck perfectly. We tested it around the house, cooling it off with ice cubes and heating it up with a lighter to make sure we could get an instant change.
Everything worked wonders, and the final video and images of the robot in each state can be seen below.
Thank you to Hannah, Kaitlyn, and Grace for being fantastic teammates and helping make such an adorable little robot!
Also, thank you to Sandra, Daniel, and Caleb for helping with troubleshooting, guidance, 3D printing, and general encouragement!