Dasduino ESP32 controlling 12 SG90 servo motors

Customer:

I’m building a robot with 12 SG90 servo motors and need to connect them to a Dasduino ESP32. Can these motors be connected to an I2C multiplexer TCA9548A on the I2C bus of the microcontroller, or is there another way? How do I wire them and how do I program them? In addition to the servo motors, I also have 2 DC motors, a buzzer, an RGB LED, an ultrasonic sensor, and more. Is there an Android or iPhone application where I can assign control buttons to motors, lights, alarms, etc., so that a single button (command) can trigger multiple motors with different parameters?

Original message (Croatian)

Poštovani, molim pomoć, radimo robota koji ima 12 servo motora SG90 i trebam ih priključiti na Dasduino ESP32. Mogu li se ti motori priključiti na I2C multiplekser TCA9548A i na i2c sabirnicu mikrokontrolera ili na neki drugi način? Kako ih spojiti i kako ih programirati. Uz servo motore idu još i 2 DC motora, buzer, RGB led, UZVsenzor,… Da li postoji koja aplikacija za androidi ili iphone kojoj se mogu upravljačke tipke pridruživati motorima, svjetlima, alarmu,… za pojedinu tipku (komandu) treba pokrenuti više motora s različitim parametrima.

Originally submitted via email support on 20 November 2023. Migrated to the forum for community visibility.

Soldered Support:

Servo motors are controlled via PWM signals rather than I2C (which is very similar to calling analogWrite() on an analog pin). On the Dasduino Connect PLUS, almost all GPIO pins can do this, but with 12 servo motors you will quickly run out of available pins.

Here are the pins I recommend for servo motors:

The I2C bus remains available, which you can then use to control other components. If you already have those components ready, you will likely need some kind of GPIO expander to get more digital pins. Here’s an example of such an expander: MCP23017 I2C IO ekspander - 16 digitalnih pinova za Arduino – Soldered Electronics

As for an application for programming, I’m not certain about that. It would need to be some kind of semi-ready system like what Microsoft has with MakeCode and Micro:bit: https://soldered.com/hr/proizvod/bbc-micro-bit-plocica-v2/ - they have a well-developed interface for graphical programming of those devices: https://makecode.microbit.org/ but our Dasduino microcontrollers don’t support that.

For all the specific things to control, you will need to write Arduino code for all these components.

Original message (Croatian)

ti motori se upravljaju ne preko I2C-a već preko PWM signala (što je jako slično kao kad na analognom pinu pozoveš analogWrite), na Dasduino Connect PLUS-u to mogu raditi skoro svi GPIO pinovi, ali već sa 12 servo motora bi brzo mogao ostati bez slobodnih pinova.

Evo pinova koje preporučujem za Servo motore:

I2C sabirnica tu ostaje slobodna, preko koje se onda mogu kontrolirati ostale komponente koje si naveo. Ako imaš te komponente već spremne, onda će ti vjerojatno trebati neka vrsta GPIO expandera kako bi dobio više digitalnih pinova. Evo primjera takvog ekspandera: MCP23017 I2C IO ekspander - 16 digitalnih pinova za Arduino – Soldered Electronics

Za aplikaciju za programiranje nisam siguran, to bi bio neki polu-gotov sistem kao što Microsoft ima sa MakeCode-om i Micro:bit-om; https://soldered.com/hr/proizvod/bbc-micro-bit-plocica-v2/ , imaju dobro razrađeno sučelje za grafičko programiranje tih uređaja: https://makecode.microbit.org/ ali naši Dasduino mikroupravljači to ne podržavaju.

Za sve specifične stvari za upravljanje biti će potrebno napisati baš Arduino kod za sve te komponente.

Attachment omitted in migration: image.png