final project: final presentation
December 16, 2020
This is a quick summary of my work for the final project! For a more detailed walkthrough of my progress and the steps I completed over the course of my development, start here and click through my final progress pages.
For my final project, I decided to make a dog treat launcher similar to the Furbo. I foresaw this as a very fun and useful project to work on for my dog. My device will be able to load multiple treats and launch a single treat from a button press.
Prior to working on this project, I had very little experience in digital fabrication and had only taken an intro embedded systems class during my freshman year. I took a lot of inspiration from the Furbo project, however, I wasn’t able to see how the internal mechanisms worked so I had to do research on ways to make my device successful.
Prior to working on this project, I had very little experience in digital fabrication and had only taken an intro embedded systems class during my freshman year. I took a lot of inspiration from the Furbo project, however, I wasn’t able to see how the internal mechanisms worked so I had to do research on ways to make my device successful.
design
I tried to design everything for my project myself as
opposed to getting components in the spirit of the class.
But the first step was to sketch out a possible design
for my project (sketch 1, launching sketch, solenoid sketch, and internal mechanism sketch). As you can see, I had to think through possible ways to make my device work. My first couple of sketches would go through what my device would look like and do. For the launching mechanism, I considered using a slingshot with a rack and pinion and the solenoid.
Once I had some of these ideas sorted away it was time to use computer-aided design (CAD) to design my mechanisms. I started off with basic CAD and made sure that it was parametric so that I could adjust some dimensions when needed without having to create re-CAD everything.
I also had to design the internal mechanisms that would control the launching, storing, dropping and loading of the treats.
After some experimentation, I decided to use the solenoid and designed the holder that would house the solenoid so that the launcher would fall back into position.
To store the treats, I made a funnel that would feed the stored treats into the loading disk. The Loading disk would then have an insert the size a treat to hold one treat and s carry it to the dropping tube. This was taken as inspiration of how gumball machine and how it loads.
Lastly I designed the housing that would hold the stepper motor in place.
Towards the end, I printed out the internal mechanisms for a prototype. Once I was happy with all of the mechanisms, I then integrated them all together in my final design and 3D printed the pieces.
Once I had some of these ideas sorted away it was time to use computer-aided design (CAD) to design my mechanisms. I started off with basic CAD and made sure that it was parametric so that I could adjust some dimensions when needed without having to create re-CAD everything.
I also had to design the internal mechanisms that would control the launching, storing, dropping and loading of the treats.
After some experimentation, I decided to use the solenoid and designed the holder that would house the solenoid so that the launcher would fall back into position.
To store the treats, I made a funnel that would feed the stored treats into the loading disk. The Loading disk would then have an insert the size a treat to hold one treat and s carry it to the dropping tube. This was taken as inspiration of how gumball machine and how it loads.
Lastly I designed the housing that would hold the stepper motor in place.
Towards the end, I printed out the internal mechanisms for a prototype. Once I was happy with all of the mechanisms, I then integrated them all together in my final design and 3D printed the pieces.
materials
Most parts were obtained from the eds shop when I was on campus. The only part I had to go out and get myself was the 9V Wall Adapter which I got from Amazon.
mechanism
As I discussed before, there was quite a bit of research and design that needed to be done before I could start creating the different mechanisms in my final device. But the three main mechanisms were the launcher, dropper, and disk.
Launcher
Many of my thoughts regarding the launching mechanism are
here.
I was able to create a couple of solenoids
by hand as seen in the demo videos on the
launching mechanism final page. I was also
able to integrate them into a circuit
board here.
Once I got it working, I put it in my
solenoid holder I printed out and was
able to launch my 3d printed treat (video here)!
I also 3D printed a little case for the two magnets to increase the surface area that would be launching the treats.
I also 3D printed a little case for the two magnets to increase the surface area that would be launching the treats.
Holder
I also had to create the funnel that would store my treats. This was more straightforward as the dimensions just had to be correct.
Here is the 3D printed first version of the funnel.
Disk & Dropper
The disk was the most interesting part of my project. I chose to laser cut acrylic to create the disk that would rotate a treat into the dropping mechanism. The dropper would sit flush with the stepper motor and would be directly above the solenoid housing.
The disk would be press fit onto the stepper motor and the stepper motor would be held up by the stepper housing I designed here.
The disk would be press fit onto the stepper motor and the stepper motor would be held up by the stepper housing I designed here.
electronics
I designed my PCB from scratch using the ESP32CAM. I chose the ESP32CAM since it had a camera I could utilize if I had enough time and it had built in WiFi and Bluetooth which could be helpful for the scope of my project. The ESP32CAM also had just enough pins that I needed.
I took lots of inspiration from the previous designs I created in the past (ie. boards that I made to activate the solenoid). It was important to add the diode for the sections that used the MOSFETS to handle inductive load. Additionally I needed to add a couple of resistors in the right area to provide the right amount of current to the H-bridges (discovered by my instructor Anthony after countless hours of debugging). Lastly, I buffed up the traces that were carrying current from the 9V wall adapter.
Since this board simply built upon many of the other boards I created in the course/my final project development, it was fairly straightforward. Here is my documentation for my electronics design.
One additional step I had to do was strip the wires from the stepper motor and solder jumper wires to these stripped wires. This would allow me to have much more range with the wires. I did the same for the solenoid. Heat wrap worked particularly well in keeping everything together.
I took lots of inspiration from the previous designs I created in the past (ie. boards that I made to activate the solenoid). It was important to add the diode for the sections that used the MOSFETS to handle inductive load. Additionally I needed to add a couple of resistors in the right area to provide the right amount of current to the H-bridges (discovered by my instructor Anthony after countless hours of debugging). Lastly, I buffed up the traces that were carrying current from the 9V wall adapter.
Since this board simply built upon many of the other boards I created in the course/my final project development, it was fairly straightforward. Here is my documentation for my electronics design.
One additional step I had to do was strip the wires from the stepper motor and solder jumper wires to these stripped wires. This would allow me to have much more range with the wires. I did the same for the solenoid. Heat wrap worked particularly well in keeping everything together.
programming
Next was the programming so my device could actually do something. I started off with the template code that was in the Arudino IDE to activate the ESP32CAM, and I was able to display a livestream feed from my ESP32CAM!
I also used the Stepper library to activate my stepper. After playing around with the settings and orientation of wires for the stepper motor, I was able to get it to spin an entire rotation and drop the 3D printed treat down my base.
The solenoid used the same code as the previous board I created (with the exception of the change of pins) so that section was pretty easy.
Finally, you can see I got all of the mechanisms working and activated on a physical button press.
The last section was getting a wireless connection working so that I could activate my device without having to go to the device and press the button on the PCB. I covered lots of different techniques in the wireless connection section here. Bluetooth worked well and read that Bluetooth and Wi-Fi don’t co-exist very well on the ESP32 since they don’t share the same radio system. I didn’t plan on using Bluetooth anyways and was interested in getting a local webserver up and running on the ESP32CAM so that I could create my own little application to launch treats remotely.
I made a web app with HTML, CSS, and JavaScript that would activate my mechanisms on a button press from the website. I also displayed different ASCII art dogs when the button was pressed. I wanted to rotate through different photos of my dog, but I found the ASCII dogs were particularly fun and added to the aesthetic of my simple web app.
I also used the Stepper library to activate my stepper. After playing around with the settings and orientation of wires for the stepper motor, I was able to get it to spin an entire rotation and drop the 3D printed treat down my base.
The solenoid used the same code as the previous board I created (with the exception of the change of pins) so that section was pretty easy.
Finally, you can see I got all of the mechanisms working and activated on a physical button press.
The last section was getting a wireless connection working so that I could activate my device without having to go to the device and press the button on the PCB. I covered lots of different techniques in the wireless connection section here. Bluetooth worked well and read that Bluetooth and Wi-Fi don’t co-exist very well on the ESP32 since they don’t share the same radio system. I didn’t plan on using Bluetooth anyways and was interested in getting a local webserver up and running on the ESP32CAM so that I could create my own little application to launch treats remotely.
I made a web app with HTML, CSS, and JavaScript that would activate my mechanisms on a button press from the website. I also displayed different ASCII art dogs when the button was pressed. I wanted to rotate through different photos of my dog, but I found the ASCII dogs were particularly fun and added to the aesthetic of my simple web app.
integration
Lastly came the integration. This was all done after I lost campus access and I ran into many problems given that I didn’t think through some possible problems all addressed here.
The first problem I ran into was that my treats would sometimes bounce off the side and the back of the housing. I fixed this by adding cardboard that was cut to fit around the dropper tube and solenoid.
Additionally, I wasn’t able to 3D print a clip or something to hold the extra wires from the stepper motor so that the wires weren’t floating around freely. This was important because if the wires interfered with the spinning disk, then it would prevent the disk from making an entire rotation.
Lastly, my PCB was a little too tall and interfered with the funnel from sitting flush on the top of the housing. So Ii had too cut the funnel such that the PCB fit snuggly.
The first problem I ran into was that my treats would sometimes bounce off the side and the back of the housing. I fixed this by adding cardboard that was cut to fit around the dropper tube and solenoid.
Additionally, I wasn’t able to 3D print a clip or something to hold the extra wires from the stepper motor so that the wires weren’t floating around freely. This was important because if the wires interfered with the spinning disk, then it would prevent the disk from making an entire rotation.
Lastly, my PCB was a little too tall and interfered with the funnel from sitting flush on the top of the housing. So Ii had too cut the funnel such that the PCB fit snuggly.
fun
Unfortunately I didn’t have the vinyl cutter at home, however I had some black stickers lying around so I cut some stickers that would make my device look like a dog.
reflection
I learned a tremendous amount after working through this final project. It was a great experience to work end-to-end to finish this project. I had to walk through and consider the design, engineering of mechanism, and production of my project.
I was able to answer many questions I had going into this project but some notable ones were how to only drop one treat at a time, how to launch the treat, how to integrate all of my mechanisms into my PCB, and how to activate all of my mechanisms via a button press from a web app.
I would say my project was a success, as I could launch a treat and store multiple treats at a time. It was pretty reliable and only failed a couple times when testing. When it failed, it was due to the treat not getting caught into the insert. It was a success among my family, as they can simply open the web application and throw treats at my dog from their phone.
Even though many things worked, there were many things that I did not keep in mind when going through the development process for my final project. The first was overlooking the system integration. Although lab time ran out and this was part of the issue, it should have been something I kept in mind and will definitely keep this in mind for my future projects. Additionally, I would like my treat to launch a little further; looking into other ways to launch my treat could help solve this problem for the limited power that the solenoid could provide. Lastly, one thing that failed was my integration of the speaker I hoped to implement. This was a key feature that couldn’t get implemented because the speaker was too quiet (I hypothesize that I was not providing enough current to the speaker). This is unfortunate since I would have liked my speaker to alert my dog when a treat was coming out so she could catch it.
I was able to answer many questions I had going into this project but some notable ones were how to only drop one treat at a time, how to launch the treat, how to integrate all of my mechanisms into my PCB, and how to activate all of my mechanisms via a button press from a web app.
I would say my project was a success, as I could launch a treat and store multiple treats at a time. It was pretty reliable and only failed a couple times when testing. When it failed, it was due to the treat not getting caught into the insert. It was a success among my family, as they can simply open the web application and throw treats at my dog from their phone.
Even though many things worked, there were many things that I did not keep in mind when going through the development process for my final project. The first was overlooking the system integration. Although lab time ran out and this was part of the issue, it should have been something I kept in mind and will definitely keep this in mind for my future projects. Additionally, I would like my treat to launch a little further; looking into other ways to launch my treat could help solve this problem for the limited power that the solenoid could provide. Lastly, one thing that failed was my integration of the speaker I hoped to implement. This was a key feature that couldn’t get implemented because the speaker was too quiet (I hypothesize that I was not providing enough current to the speaker). This is unfortunate since I would have liked my speaker to alert my dog when a treat was coming out so she could catch it.
next steps
I wasn’t able to get the livestream video integrated in my web app even though I was able to get it working for other applications. This was due to the fact that I had trouble hosting a web server and pushing the livestream data at the same time. In the future, I plan on looking for additional ways to get the livestreaming working on my web app if possible. Additionally, I’d like to look into ways to get a screw that is made of more magnetic material so that the treat will launch further. Lastly, I will try to run my web server on a remote server, so that I can launch treats at my dog when I am away from home.
conclusion
Overall, I learned a tremendous amount through this final project experience. I’d like to thank the course staff for all of their help and support over the course of the semester. I know feel like I have the skills to make almost anything!