Strider Camera Robot
This Instructables show how to use ESP32-CAM and 3D printed parts build a Strider Camera Robot.
Supplies
ESP32-CAM-MB:
https://www.aliexpress.com/wholesale?SearchText=es...
LiFePO4 14500 Battery with charger:
https://www.aliexpress.com/wholesale?SearchText=li...
N20 3V 200RPM Motor:
https://www.aliexpress.com/wholesale?SearchText=n2...
DRV8833 2 Channel DC Motor Driver Module Board:
https://www.aliexpress.com/wholesale?SearchText=dr...
2 pieces of 8 pins pin header female:
https://www.aliexpress.com/wholesale?SearchText=pi...
8 pieces of 6702ZZ bearing:
https://www.aliexpress.com/wholesale?SearchText=67...
100 pieces of 6mm long M2 Flat Head Screw:
https://www.aliexpress.com/wholesale?SearchText=m2...
2 pieces of 155mm long 2mm diameter rod:
6 pieces of 15mm long 2mm diameter rod:
What Is Strider?
Strider is a mechanical walker developed by Wade Vagle. Strider is evolved from many design iterations, so it walks (runs) very well.
When I post the insructables Lego Trotbot at 2018, Wade Vagle suggest me try Strider. Finally I have time to build this :P
You can find many valuable information about mechanical walker design at diywalkers.com.
Ref.:
Strandbeest Vs Strider
How Strider walks well? let's compare with a Strandbeest I assembly few years before.
Strandbeest only can walk on a very flat surface, it even cannot walk through a mat; In contrast, a smaller size Strider can walk through same mat very well.
This reminded me someone taught me when I am little: you should lift the toes to avoid tripping.
Battery
This walker design have two 14500 (AA size) battery slots.
Here are the voltage requirement:
- ESP32-CAM requires 3.3 V power, the on board voltage regulator (AMS1117) accept maximum 15 V.
- N20 motors can powered from 3 - 12 V, higher voltage can runs faster.
- DRV8833 motor driver accept 2.7 - 10.8 V.
14500 Battery evaluation:
- NiMH battery, 2 x 1.0 - 1.25 V = 2 - 2.5 V, not enough power
- Li-Ion battery, 2 x 2.5 - 4.35 V = 5 - 8.7 V, it can fulfill the power requirements
- LiFePO4 battery, 2 x 2.0–3.65 = 4.0 - 7.3 V, it can fulfill the power requirements and have a better battery safety
So you can use two 14500 Li-Ion or LiFePO4 batteries. LiFePO4 battery is preferred. If you select Li-Ion battery, remember select the battery have built-in protection board or insert a protection circuit in the middle.
Ref.:
https://en.wikipedia.org/wiki/Nickel–metal_hydride_battery
https://en.wikipedia.org/wiki/Lithium-ion_battery
https://en.wikipedia.org/wiki/Lithium_iron_phosphate_battery
Motor
This Strider use 2 tiny N20 gear motors. This gear motor has many gear ratio available. I have tested 3 ratio from 3V 100RPM, 200 RPM to 500RPM. 3V 500RPM can run very fast, but camera robot requires a steady walk for a better camera live view, so I recommend 3V 200 RPM.
Note:
The operation voltage and rotation speed is in linear ratio, 3V 100RPM means 6V 200RPM.
Thin Wall Ball Bearing
Strider or other walkers require pass rotation movement from motor to few pairs of legs. However, the rotation cannot direct drive by a straight axis, so I use some thin wall ball bearing build a stable crankshaft to pass the rotation movement.
8 pieces of 6702ZZ bearing required, the inner diameter is 15mm, outer diameter is 21mm and the width is 4mm.
Screws
Screws is very important for connect everything together, leg joints, body parts, battery holders and electronics components.
For simplicity, all connections designed use same screw size. It is 6mm long M2 flat head screws, this robot requires 72 pieces for assembly. More spares is always welcome, I think 100 pieces is a reasonable quantity.
2mm Diameter Rod
It is not easy direct order a 155mm long 2mm diameter rod, but you can cut it yourself. E.g. order two 200mm long rod can cut into two 155mm and six 15mm long rod.
3D Printed Parts
Download and 3D print all the parts at thingiverse: https://www.thingiverse.com/thing:4917588
Note:
The file name tail with "_x2" means print 2 copies ... "_x12" means print 12 copies.
Hole Patching
3D printed parts may not print prefect round holes, a 2.1 mm drill bit can help patch the holes to a better shape.
Core Assembly
Use 4 screws combine core1, core2a and core2b together.
Install Motors
Please note 2 motors aligned in 90 degree to avoid the motor terminals contacted unexpectedly.
Motor Axis & Body Assembly
- Push thin wall ball bearing into body2
- Push the axis3 into the thin wall ball bearing
- Repeat step 1-2 once to make 2 copies
Install Motor Axis
Align the D shape motor axis to axis3 and push it in.
Install Cover
Use 8 screws fix cover1 and cover2 to the core body.
Install 155mm Rods
Pass pair of the 155mm long 2mm diameter rods through the body hole.
Legs Assembly
- Use 1 screw connect leg2, leg3 and leg1 together
- Use 1 screw connect leg3 and leg4 together
- Repeat step 1-2 once to make second leg
- Mirror second leg to the right
- Use 2 screws connect two leg2 and leg4 together
- Repeat step 1-5 to make 6 pair of legs
Install Legs
- Install 15mm rod into the axis3
- Let both leg1 holes pass through the 155mm rods
- Let both leg2 middle holes pass through the 15mm rod
Axis & Body Assembly
- Push thin wall ball bearing into body2
- Push the axis2 into the thin wall ball bearing
- Repeat step 1-2 3 times to make 4 copies
Install Axis Body
- Let the body2 holes pass through the 155mm rods
- Align the axis hole and pass through the 15mm rod
- Use 2 screws fix the axis body
Repeat Leg Installation
Each side have 3 pairs of legs; each pair of legs shift crankshaft in 60 degrees.
Edge Axis & Body Assembly
- Push thin wall ball bearing into body1
- Push the axis1 into the thin wall ball bearing
- Repeat step 1-2 once to make 2 copies
Install Body Edge
- Align axis1 hole and pass through the 15mm rod
- Use 2 screws fix the body edge
Connect Battery Holder
Connect Battery Holder in series with Wires. It is highly recommended use red and blue wire to indicate battery positive and negative pole.
Arrange Battery Wires
Arrange battery holder red and blue wires and pass through Core2b hole.
Fix Battery Holder
Use 8 screws fix 2 battery holders to the core2a and core2b.
Software Preparation
Arduino IDE
Download and install Arduino IDE if you are not yet do it:
https://www.arduino.cc/en/main/software
ESP32 Support
Follow the Installation Instructions to add ESP32 support if you are not yet do it:
https://github.com/espressif/arduino-esp32
Arduino ESP32 filesystem uploader
Follow the installation steps to install Arduino ESP32 filesystem uploader if you are not yet do it:
https://github.com/lorol/arduino-esp32fs-plugin
FSBrowserPlus
Download FSBrowserPlus: (press "Clone or Download" -> "Download ZIP")
https://github.com/moononournation/FSBrowserPlus
Import libraries in Arduino IDE. (Arduino IDE "Sketch" Menu -> "Include Library" -> "Add .ZIP Library" -> select downloaded ZIP file)
ESP Async Web Server Library
Download latest ESPAsyncWebServer libraries: (press "Clone or Download" -> "Download ZIP")
https://github.com/arjenhiemstra/ESPAsyncWebServer
Import libraries in Arduino IDE. (Arduino IDE "Sketch" Menu -> "Include Library" -> "Add .ZIP Library" -> select downloaded ZIP file)
Configuration
Camera Type
In "FSBrowserPlus.ino", uncomment your camera model at around line 28 and comment out all others. E.g. CAMERA_MODEL_ESP32_CAM_ROBOT for this Strider Camera Robot.
// Select camera model// #define CAMERA_MODEL_WROVER_KIT // Has PSRAM// #define CAMERA_MODEL_ESP_EYE // Has PSRAM// #define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM// #define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM// #define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM// #define CAMERA_MODEL_ESP32_CAM // Has PSRAM#define CAMERA_MODEL_ESP32_CAM_ROBOT // Has PSRAM// #define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM// #define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM// #define CAMERA_MODEL_JSZWY_CYIS#include "cameraAPI.h"
Motor Pins
CAMERA_MODEL_ESP32_CAM_ROBOT also defined motor pins in "camera_pins.h":
#define MOTOR#define MotorL_A_Pin 13#define MotorL_B_Pin 12#define MotorR_A_Pin 2#define MotorR_B_Pin 14
LED Light Pin
The LED is direct controlled by web GPIO API. Currently it is GPIO 4, you can alter the LED pin at around line 616 of "camerarobot.htm":
const query = `${baseHost}/gpio?pin=4&val=${value}`;
Compile & Upload
- Connect the ESP32-CAM to USB Serial Dock
- Open Arduino IDE
- Open FSBrowserPlus.ino
- Edit the ssid and password to your own WiFi AP credential
- Select Board to "ESP32 Dev Module" in "Tools" menu
- Select Partition Scheme to "Default 4MB with fat (1.2MB APP/1.5MB FATFS)" in "Tools" menu
- Press Arduino IDE "Upload" button
- Select "ESP32 Sketch Data Upload" in "Tools" menu
- Select FS Type to "FatFS" and press "OK" button
Prepare PCB
- Cut a PCB to 10 x 10 holes
- Drill 4 holes at C3, H3, C8 and H8 (fit for core1 hole positions)
Soldering Work
ESP32-CAM not built-in USB serial chip, it is better use pin headers to help detach and reprogram easier.
Here are the connection summary:
Battery -> Switch -> ESP32-CAM -> DRV8833 -> Motor+ve pole -> Pin 1 Pin 2 -> 5V -> Vcc-ve pole -> GND -> GND GPIO 12 -> IN1 GPIO 13 -> IN2 GPIO 14 -> IN3 GPIO 2 -> IN4 OUT1 -> LEFT +ve OUT2 -> LEFT -ve OUT3 -> RIGHT -ve OUT4 -> RIGHT +ve short J2
Fix PCB
Use 4 screws fix PCB on core1.
Arrange & Connect Wires
Connect battery and motors pins to PCB.
Install ESP32-CAM
- Plug the ESP32-CAM to pin header
- Stick a heatsink on SD card reader
- Stick the camera module on the heatsink
Install Battery
Remind the battery pole is correct before install or it will burnt the chips. Thats why I highly recommended use red and blue wires in battery holders.
Connect & Play
FSBrowserPlus is running in AP+STA dual mode.
If you have inputted your WiFi AP and password, you can direct browse to http://fsbrowserplus.local access the FSBrowserPlus, but it is limited to the WiFi AP coverage area.
If you have bring the camera robot outside and out of WiFi AP coverage area, simply search WiFi AP called "fsbrowserplus" and input predefined password in the code to connect. Once it is connected, a Captive Portal web page will pop up.
Then select the Camera Robot shortcut.
Enjoy!
Wade Vagle comments in Youtube this is tiniest Strider. But it is still too wide in size for remote control, now it is very easy block by the obstacle outside the camera view.
I will try to fix it in next iteration. Follow my Twitter (陳亮手痕定律) for the latest news:
Optional External Antenna
Some vendor can provide ESP32-CAM in different antenna options. External antenna can improve the camera video streaming performance.