My take on a SpotMicro with an optimized design for supportfree 3D-printing and integration of an ESP32-DevKitC. This is still a Work-in-Progress!
You can find the 3D-printing parts on Thingiverse as well: https://www.thingiverse.com/thing:4559827/files
- Join the Discord-Channel for this remix: https://discord.gg/s8F6xHGk9Y (#spotmicro-esp32)
Join the Slack-Channel for this remix - discuss any topics regarding this design: spotmicroai.slack.com (#spotmicro-esp32)Due to no active subscription there is no possibility to browse through older posts. This is why a lot of people moved to the discord channel.
This Project currently lacks the whole programming/software part. Luckily Maarten Weyn already made the inverse kinematics work and wrote also an Smartphone App for simple Control of this Robot via BLE. There is no walking gait implementation though. I still advice to take a look into his Repository as well, as this currently my preferred codebase: https://github.com/maartenweyn/SpotMicro_ESP32
The Discord user Blacksheep created a impressive fork of this project, that utilizes a custom designed PCB for component placement and a FSI6 remote control in order to operate the robot. The codebase implements the inverse kinematics and even walking gait for it. Since its packed as an arduino project, its simpler to get started with it then with the ESP-IDF. You can find the repo here: https://github.com/Blacksheep909/SpotMicroESP32-Nitro-Fork/tree/master
The SpotMicro-Leika project sources different SpotMicro projects and combines them into a feature-rich build. It offers an FreeRTOS implementation, is under active development and has the inverse kinematics and two gaits implemented. You should definetly check it out: https://github.com/runeharlyk/SpotMicroESP32-Leika
Also there's a walking gait implementation and voice-commanding by Guna R. from the slacks #spotmicro-esp32 channel, whis is build upon Maartens software (see Repo above). You definitly have to take a look there as well - but it seems the repos sourcecode is incomplete and missing the app: https://github.com/cholan2100/ceasar
Look also at the GitLab pages for the general SpomicroAI community, where you can find different models and resources: https://gitlab.com/custom_robots/spotmicroai
I want to thank Deok-yeon Kim (KDY0523) for his beautyful and well thought out design of the SpotMicro, without whom my derivate would not have been possible. You can find his original Design here on Thingiverse: https://www.thingiverse.com/thing:3445283
Him sharing the files with an open licence, made it possible to let it grow a community around it. This is why i want to reference to them as well - the SpotMicroAI Community: https://spotmicroai.readthedocs.io/en/latest/
This is a work-in-progress, with rather loose milestones.
For 2020 there are two goals:
to redesign the original parts, so that they could be printed without any support(done)to make a circuitry for all sensors and parts, that possibly would fit and be considered necessary(done)
~For 2021 there are two main goals and one optional goal:
- to write my own firmware with the ESP-IDF, that integrates/utilizes all sensors and modules except the ESP-CAM which needs its own firmware (in progress)
- to write a smartphone App in Flutter, that connects to the firmware and reads from/writes to the robot (in progress)
- to implement the inverse kinematics (optional goal)~
This repository is currently just my hobby and as such, it will have its own pace. This being said, i am still happy about any questions, collaborations, suggestions, ideas, forks and what else comes to your mind. I want you to participate, because i think there are a lot of things, that you could dig into.
The following Section will describe in detail the different parts needed for your own SpotMicroESP32 build, with at least some rough estimate of the price.
To build your own SpotMicroESP32 you will need to print a lot parts. For an overview of the 3D printed parts needed, please visit the 3D-printed Partlist. It might be necessary to remix some of the templates to suit your needs, when chosing other electronic components than those listet here.
The SpotMicroESP32 ist still a Work-in-Progress and as such the BOM might change as well - check the "deprecated" section for changes. There are still some parts missing and some others are not tested yet - those status will be marked as such. I will give a rough price estimate, which may or may not work for you and might be out of date at some point.
part or module | number | short description | status | estimated price |
---|---|---|---|---|
ESP32-DevKitC | 1x | the core MCU for the build with WIFI + BLE capabilities. | tested | 7€ |
ESP32-CAM | 1x | Tested with the ESP32-Module with OV2640 Camera (version 2). There are also cameras with a version 1 OV2640, where the sensor is in landscape orientation and not in portrait. Also the flexcable seems to be some millimeters shorter than the one from Version 2. You can distinguish them by the imprint on the flexcable, stating TY-OV2640-V2.0. Both OV2640 Cameras should work in theory, as the part is designed to fit both models. Definetly dont go with the one with an fisheye-lens or other variations - the field of view would be hindered and most likely the lens would not fit through the hole anyway. | tested | 10€ |
FT232RL USB-TTL-Adapter | 1x | USB-to-Serial Adapter for ESP32-CAM flashing | tested | 2€ |
(MG996R Servo) | 12x | The bare minimum... but with flaws like jittering and much play... 10Kg servos with metal gears and ball bearings. With these the robot is capable to stand up/change his pose but they are most likely too weak for smooth and reliable walking. (Update 2020-11-19: It can be affirmed, that walking is possible not great, but also not horrible) Go with these only if you can accept these limitations and if more expensive servos would mean not to try this project in the first place. | tested | 5€ each |
better go with DS3218MG Servo | up to 12x | 20Kg servos with metal gears and ball bearings. Much less play and in my tests no jittering, but also very strong. With these your robot should be able to walk significantly better. Maybe only 4 of these are enough, when used in the lower legs - the most stressed parts. Maybe you would need also 4 additional ones for the upper legs - but maybe MG996R are enough here. The shoulders should be comfortable with MG996R, as these dont do much heavy work. | partially tested | 15€-20€ each |
FSH6S Servohorn | 12x | servohorn used for this build (should be already shipped with your servos) otherwie use model from 3D parts | tested | n.n. |
Rubber Dampeners for your Servos | 48x | servo rubber dampeners, so you could use M3 screws (should be already shipped with your servos) | tested | n.n. |
Servocable Extension | 4x | extending the servocables of the lower legs about 10cm to 15cm | tested | 10€ |
625ZZ Ball Bearing | 8x | miniature ball bearing without a flange | tested | 1€ each |
WS2812b 12 LED Ring (50mm outer diameter) | 1x | Neopixel-Clone-Ring with an outer diameter of 50mm used to signal status/mood | tested | 6€ |
0.96" OLED I2C Display | 1x | small OLED screen with SSD1306 IC for status informations | tested | 4€ |
HC-SR04 Ultrasonic Sensor | 2x | ultrasonic sensor module for distance measuring | tested | 3€ each |
GY-521 Gyroscope and Accelerometer | 1x | a module to measure accelaration and spatial orientation, which can be extented with magnetometers | tested | 3€ |
PCA9685 16Channel 12Bit PWM Board | 1x | PWM driver board used for your servos and LEDs, which can power your parts from an external source | tested | 5€ |
HW-482 / KY-019 5V 10A Relais | 1x | relais module to cut the power to your servos completely | tested | 3€ |
19mm Push Button with LED | 1x | illuminated latching pushbutton | tested | 10€ |
Micro-USB to DIP Adapter | 2x | USB-Ports used for extending the USB-Ports of the ESP32 DevKitC and ESP32-CAM (TTL-Adapter) | tested | 2€ |
XL4016 DC-DC 9A Stepdown Converter | 1x | big step-down converter to lower your LiPo 2S voltage to 6,5V (minimum for MG996R) | tested | 8€ |
or SZBK07 DC-DC 20A Stepdown Converter | 1x | even bigger step-down converter to lower your LiPo 2S voltage to 6,5V (minimum for DS3218) | tested | 12€ |
LM2596 DC-DC or similar Stepdown Module | 1x | small step-down converter to lower your LiPo 2S voltage 5V for ESP32's VIN and Modules | tested | 2€ each |
ACS712 30A current sensor module | 1x | current sensor module capable of max. 30A for e.g. emergency shutdown | tested | 2€ |
25V voltage sensor module | 1x | simple voltage divider module for up to 25V used as a voltage sensor to determin battery charge | tested | 2€ |
5200mAh - 6200mAh LiPo 30C+ 2S Tamiya/XH | 1x | beefy LiPo as your main power source (this is actually your individual choice) | tested | 40€ |
The Camera-Unit in the head will be replaced by an ESP32-CAM, because its reasonably cheap (~10€) and opens up a lot of new possibilities like object-recognition, because of additional processing-power.
part or module | number | short description | status | estimated price |
---|---|---|---|---|
OV7670 VGA-Camera Module w/o FIFO | 1x | VGA-Camera without framebuffer IC, used with lower resolution due to memory restrictions (replaced by ESP32-CAM) | tested | 3€ |
5mm ~3V LEDs (White) | 6x | LEDs used as your camera-lights (replaced by ESP32-CAM internal flashlight) | tested | 1€ |
5mm ~3V RGB-LEDs | 2x | RGB-LEDs used as an underglow, might signal status or mood (replaced by Neopixel-Generica) | tested | 1€ |
1,77" TFT with ST7735 w/o SD | 1x | small TFT screen with ST7735 IC for status informations (replaced by 1.8" TFT with SD-Card) | tested | 7€ |
optional WS2812B Pixelboard | 4x | Neopixel-Clones (SMD LED's on small round PCB) used as an underglow, might signal status or mood (removed, as the result is underwealming | tested | 1€ |
1,8" TFT with ST7735 with SD | 1x | small TFT screen with ST7735 IC for status informations (replaced by 0.96" OLED I2C Display) | tested | 7€ |
part or module | number | short description | status | estimated price |
---|---|---|---|---|
M2x8 cylinderhead screws + M2 nuts | 84x each | screws + nuts to mount your servohorns (you could glue the servohorns in place instead and save yourself 72x M2x8 screws and nuts, but i have not tested it), also used to mount the 1,77" TFT and the pins for the ball bearings | tested | 8€ |
M3x8 cylinderhead screws + M3 nuts | 80x each | screws + nuts for the whole assembly (i hope i have not forgotten some, better buy in bulk as these are usefull for other projects as well) | tested | 8€ |
M3x20 cylinderhead screws + M3 nuts | 64x each | screws + nuts to mount your servos and assemble the upper legs | tested | 12€ |
lots of cables and connectors and stuff | it's up to you which cables or wires and connectors you want to use, or if you would like to solder everything into place, and if you use heat shrinks, fabric hoses | up to you | 20€ | |
PLA + TPU (?) | you will need about 1Kg of PLA + some grams of TPU (eg. my Black/White design: 500g for the covers + upper legs, 500g for the chassis + lower legs + shoulder joints, some small grams for the grey sensorplate in the head) + some grams of TPU for the foottips | tested | 30€+ |