Put Your FPGA to Work: An FPGA-Based Robot Vacuum
Have better control of the efficiency of your robotic vacuum by building and coding it yourself.
A Roomba without any sort of self-mapping feature or appropriate obstacle avoidance is like a toddler or a dog, it can and will get into any and everything... even if you though it was impossible. It does make for some extremely entertaining internet content however. A past coworker of mine even had a group chat going on Snapchat of his 'dumb' Roomba's mishaps (the so-called keep out markers that came with it, meant absolutely nothing to the thing). While the Snapchats unfortunately weren't saved, there is no shortage of equivalent images when one Googles terms similar to "Roomba accidents."
Armed with a 3D printer and an FPGA development board, Lars Mannshardt decided to make his own robotic vacuum where he could control how well it would be able to avoid obstacles.
Based on the TEI0003 Cyclone 10 FPGA board from Trenz Electronic, this little sucker (all pun intended) has ample processing power for it's still developing feature set.
Using two HC-05 ultrasonic sensors for distance measurements operating at approximately the speed of sound with a distance range of 2cm to 400 cm at a maximum deviation of +/-3mm, the robotic vacuum calculates the distance of obstacles and decides how to react based upon algorithms and processing done within the FPGA. The robot keeps track of how far the wheels have turned (and thus how far the robot has moved) by feeding wheel encoder data back to the FPGA. The wheel encoders are comprised of small magnets attached to the wheels at regular intervals with Hall effect sensors connected to the FPGA looking for their magnetic fields.
Most of the physical/mechanical aspects of the vacuum such as the housing were developed in Fusion 360 and 3D-printed. The suction part of the vacuum employ two San Ace B97 9BMC type 97 mm x 33 mm blowers that are only about $30 each and are good for their high airflow and high static pressure. I found these blowers on all of the common sites such as Newark, Mouser, etc. It never ceases to amaze me the cool inventory people find on these catalog sites.
And what would any autonomous robot be without an app these days? After watching a presentation on Physical Web and Bluetooth web applications from the Google Developers YouTube channel, Mannshardt decided the robot needed more than the buttons on its top of the vacuum as a user interface.
Connecting to the robotic vacuum via Bluetooth Low Energy using an HC-08 module, the JavaScript-based web application allows for a user to monitor the battery charge, control the suction (fan) power, reset the robot, or power it down altogether.
This vacuum robot is still a work in progress, and the CAD files have yet to be posted. You can keep an eye on the project here and build one for yourself next time you find yourself wanting a bit more control in the brains of your cleaning devices.