1x Arduino controlling 32 x 3V-5V 71mA Mini Vibration Motors over bluetooth

Hi, I'm working on a project in which I need to be able to control 32 small vibration motors (https://www.amazon.co.uk/sourcing-map-Vibration-Button-Type-Brushless/dp/B07ZMYX4B4/ref=sr_1_1?dchild=1&keywords=3V-5V+71mA&qid=1621280304&sr=8-1) over bluetooth.

Things to note:

  • Don't need to control rotation direction, they only need to vibrate.
  • Need to be able to control strength of the vibration.
  • Need to be individually controlled but 1 - 16 will need to fire at a time.

So I already have the Arduino UNO and Bluetooth set up and working.
I have created a small test with 4 LEDs that I can send an int that ranges from 0-3 that will turn the corisponding LEDs on or off.
I have also started expanding this original test app to suit the scope of the project.

So what I need to figure out is specifically what hardware ill need and how to wire it up. I'd like this whole set up to be quite small. The motors them selfs are only about 8mm x 3.4mm.

I've been doing some reading and found that people are using drivers and so on but they are quite big and if I'm going to need 40 of them in order to run 40 tiny motors then it's no goood... I also don't need to control rotation direction.

So I'm thinking maybe I can use 2 x Adafruit 16-Channel 12-bit PWMs to control the motors? Or is this a bad idea seeing as there might be 16 spinning at once?
If this is a bad Idea then what would be my next best option?

I'm also abit confused about the circuit it's self, writing little tools is more my kind of thing.
I know there can be a problem when the motors stop they can feedback and damage the board.
I have found the following diagram which basically shows me how to get a single motor running with an Arduino.

Am I right in thinking I just need repeat this 32 times and hook them up to the 16 channel PWMs?
Is it a problem the PWM only outputs 6v and I might need upwards of 16x 5v?
Maybe theres another device that does the same thing but can output more?

It's possible I'm going about this the wrong way so tell me if I am and point me in the right direction :slight_smile:


You mention a ‘driver’..l that’s what you have there, the transistor is bing used as a current amplifier to drive the needs of the motor.

The basic idea is correct, except that you’ll need to find a better source for the motor +voltage. The Arduino might power one small motor if you’re lucky. 32 motors (worst case), will need 32x71mA available - 2.5A approximately.

I personally would replace the 2N2222 with a 2N7000 MOSFET, to get cleaner switching.

I suggest you build up maybe 2-4 of these units, to test and fine tune up your control with the PWM modules… then once you’re happy, build the remainder and keep going.

Haha sorry my mistake with the driver thing, terminology :stuck_out_tongue:

Thanks for the feedback. Im going to look more in to these 16 channel PWMs.
I'll probably have more questions....

You are almost there. I cannot read the frizzy thing but the top part the diode, motor, and cap need to go to +5, the Arduino a Power Supply it is NOT, use an external power supply. Using the 2N2222 as a driver is OK it should work reliably. Your motor is rated to 5V max, you will lose about 0.7 volts across your transistor, giving you a little extra headroom. If you go the 2N7000 route be careful not all brands are fully enhanced at 5V. but should work OK with your load. With the MOSFET you will get the full 5V. maybe a bit less depending on how well it is enhanced.