A small-size, low-cost, Wall-E robot. Remote controlled from a HTML5 interface, through WiFi websockets.
There are things money can't buy, but, for everything else, there is banggood...
sheet - 13.70 kB - 06/11/2019 at 14:08
I have added a ESP32-CAM module on the front panel... see that little black hole on his torso? now Wall-E can stream video to any web browser over the local network!
The camera mount point is a bit too high though, or viewing angle too narrow, for obstacle avoidance. See in the picture above, only top half of the right hand is visible in the camera feed. I'll have to try with a fish-eye lens.
I could not yet get the .95" color OLED screen to work on the ESP32. Maybe pin assignments are conflicting with the camera module. I'll try again later with a simpler I2C, black and white model.
I also hope that all those modules (especially servos) don't draw too much current on the poor 18650 battery module.
Anyway this camera module opens up a lot of new opportunities... First I shall integrate the video feedback in the remote control webpage. Then I think I should learn learn how to use ROS to perform monocular SLAM.
Additionally, I think a minor redesign of the head might allow to hide another ESP32-CAM module inside the head, and have another video stream directly from the eye (that is, with the head pan/tilt movements).
After a couple hours with the laser cutter at fablab (many thanks Digiteo!), I have cut a new set of parts for Wall-E's body.
As before, the head is made of plywood slices, glued together. I added a set of holes, so that wood sticks (toothpicks) help keep the slices aligned.
The 'eyes' part is screwed onto the 'back head' part, so that both parts can be disassembled.
laser cut body parts
to be or not to be?
Now that I have 3D-modelled the electronics modules stack, it seems it can fit in the back half of the body, behind the motors. Not represented here is a mess of wires connecting the interface modules with motors, servos, power supply. Anyway there's still some room left in the front half. Maybe I can add a 0.95" oled display for instance (the greyish cutout in the torso), and speaker with wav/mp3 module?
Additionnally, I'm not fully satisfied with the accuracy of my hand-sawn plywood parts, so I intend to rebuild the whole body out of laser cut plywood or MDF. If I use yellow tainted MDF instead of plywood, I could probably have burn additional aesthetic details on the surface.
I have no experience in laser cutting & drawing though. Can anyone give me some advice on how to design and assemble a beautiful body?
The hardware modules stack fits nicely inside WALL-E's belly. There is not much space left...
If I want to later add a camera, sonar, or loudspeaker, I'll need to move things a bit or spare some place...
Here's a short video demonstrating head & arms movements, piloted from the browser on laptop.
For the remote controller, I didn't want to build a physical remote or use infrared remote (doesn't allow analog control). Instead, I wanted to used a smartphone.
It is quite common to describe a software architecture as a stack.
Now in the hardware electronics domain, with the generous use of stackable daugherboards or shields, I would describe Wall-E's brain as a hardware stack!
At the bottom, a 18650 Li-Ion battery module (the module provides charge control and 5V / 3V output regulation) ; Middle-layer : a Wemos ESP8266 microcontroller (32bit core, WiFi interface, 4MB flash), Wemos motor shield (controls track motors through a dual H-bridge, over I²C), and on top, a servo controller IC (PCA9685 circuit, controlled over I²C, sends 16 PWM signals, therefore control the position of up to 16 RC servos). I have 2 degrees of freedom for head pan & tilt, 3 for each arm (shoulder elevation, shoulder extension, and fingers open/close). That leaves me with 8 unused PWM channels... any idea where I could fit another servo? =o)
Two plexiglas boards are necessary to adapt the mounting holes between modules.
It may look tidy without cabling; but much less so when the power supply and I²C buses run between all layers...
The head is assembled from several layers of 11mm plywood, routed on my homebrew CNC.
My CNC is not very accurate, but after a bit of sanding and a few layers of paint it should look ok.
The shoulder is a piece of 2mm aluminium board, cut and bent to shape.
The arm is a 25mm square aluminium extrusion ; a square hole is cut, to fit a MG90S servo.