So yeah, the board doesn't boot (or maybe boots into some weird mode) when there is a servo connected to the TX pin when it's switched on. The servo basically acts as a pulldown resistors here, connecting the pin to the ground through some load, so I assume this is some undocumented feature of the ESP8266 chip. If you know what it actually is, please let me know!
Knowing that, there is a way around this. You see, the small sub-micro servos that I am using are actually digital servos, and they have quite good sensitivity for the signal. Basically anything strong enough to trigger an interrupt on voltage change edge will work. That means that we can add a pull-up resistor small enough to keep that pin high while the board boots, but large enough for the board to be able to still pull the pin down low enough for the servo to register. After some short experimentation with different values, I settled with 4.7kΩ resistor:
Of course there is no time to redesign and order a new PCB, so I just soldered an additional SMD resistor directly to the pin, and used a short piece of wire to connect the other end to power. It doesn't look very bad, and it makes the thing work properly.
Here's a video of the board driving eight servos at once:
Of course that's not all yet. I still need to connect all the servos mechanically to make the robot's legs, and to adapt Katka's gait code for the smaller dimensions. Hopefully I will be able to do that soon.
Discussions
Become a member
In order to follow projects & hackers or give likes
Already a member?you need to create an account.
The datasheet states that the TX pin and the GPIO2 both act as 'UART Tx during flash progamming' - and GPIO2 is important for the starting behavior. So maybe that could be the reason?
Are you sure? yes | no
So, they are connected internally during boot, you mean?
Are you sure? yes | no
That's my uneducated guess, yes :)
Are you sure? yes | no
Hmm, if that's true, I should now be able to add another servo on pin 2...
Are you sure? yes | no