I think this robot would be a lot better with some faster motors. I bought 2 3v 16rpm geared motors on Amazon about a year ago, and finally got around to using them. I bought 16rpm because I thought that would give more torque... maybe it does but these motors are super tiny!
One upside to having such a slow robot is it's not going to crash into anything and break something in your house or break itself. I do believe they sell the same exact motor dimension in different RPM ranges up to 300 RPM. I think for this robot 50-150 RPM would be ideal.
Originally I was going to use tracks for the robot. I still think that would be the best, especially with only 2 motors. But I was having trouble with 3d printing tracks. I did get a set to print out, but they were too big and the motors didn't have enough torque to turn them.
I wanted either tracks or 4 wheel drive on this robot. So I decided to 3d print a drive gear that goes in between each wheel gears, so each side the wheels turn at the same rate. This actually worked quite well.
The robot has the following components:
- Arduino Pro Micro: The main brain that reads all sensors and controls the motors.
- ESP32-CAM: For the ability to drive the robot remotely. Mostly stays in deep sleep when not being used.
- x2, 3v 16RPM tiny geared motors: For driving the wheels. See my info about these motors above.
- HC-SR04 Ultrasonic Distance Sensor: The only sensor (aside from the camera) on the front. Used for Obstacle avoidance.
- IR Infrared Obstacle Avoidance Sensor: Placed on the back for detecting distance when backing up. This module only has a range of about 2-3 inches, so it is not very useful for navigation. I also discovered it draws about 40 mA as long as it is connected to VCC. That is about 3x more than the Arduino and all the other sensors combined (not including motors or ESP32). I ended up switching it with a transistor. That way it can only be powered when backing up.
- PIR Motion detection sensor: If the cat walks in the room the robot wakes up!
- Light-Dependent Resistor: For measuring the area's relative luminosity.
- 30 mA 5v Monocrystalline solar panel: For keeping the battery topped off and sensing light strength.
- TP4056 LiPo charger: For charging the robot via USB
- Slide Switch for powering off robot
- 10 Pin header for programming Arduino and ESP32.
- 5v Boost convertor module. This runs everything. The HC-SR04 is required to be powered by 5v. The motors work better on 5v, and the ESP32 and Arduino each have 3.3v LDO on them, so 5v is an acceptable power level for their input.
- 1100 mA 1s Lipo Battery: drains in a few hours if using ESP32. Otherwise lasts a long time.
I am probably forgetting something at the moment, but I will add it later if I remember. I wanted to add a temp/humidity sensor, but as you will see from pictures I will upload, the entire inside of this robot is a tight rat's nest of wires. There may be room to add one more sensor, but I've done enough soldering over the past week haha.