Introduction

Today we will take a look at the Arduino Pro Mini, a small yet powerful member of the Arduino family.

Although the Pro Mini is a small device it is quite powerful, as it uses the same processor chip as the Arduino Uno. In fact in some ways it is even more versatile, and it’s small form factor and low cost makes it ideal for use in permanent projects.

However programming the Pro Mini is done a bit differently than an Uno, mainly because the Pro Mini has no USB port.

Of course, there is a way around this, so follow along and see how the Pro Mini can be useful for your next Arduino design. And, as a bonus, we will build a battery-powered controller for a small robot arm.

The Arduino Pro Mini

The Arduino Pro Mini was originally developed by SparkFun. Although no longer available from the official Arduino store it is an open-source design and is now manufactured by several different companies. You will have no problem finding one at a very low price.

Using the Arduino Pro Mini

As its name would imply the Pro Mini is a very tiny device, it’s not much bigger than the DIP version of the ATMega328 chip. The Pro Mini uses a surface-mount ATMega328, giving it the full power of the Arduino Uno in a much smaller package.

In fact, in many ways, the Pro Mini is even more versatile than the Uno.

Arduino Pro Mini Pinout

One way in which it is more capable than the Uno is that most Pro Mini designs have two additional analog input ports, which can also double as extra digital I/O pins.  This is due to the surface-mount version of the processor having more leads than the DIP version that the Uno is based upon.

Arduino Pro Mini Pinout

Another way that the Pro Mini outshines its bigger brother is that it is available in both a 5-volt and 3.3-volt model.  This opens up the possibility of creating battery powered projects, or directly interfacing with 3.3-volt logic devices.

The 3.3-volt Pro Mini runs at a slower clock speed, 8 MHz. For most applications, this will not be an issue.

But for all its extra versatility the Pro Mini has one feature lacking – it has no USB port.

While this may seem like a major drawback it isn’t really, in many Arduino projects the USB port is only used for programming and debugging.  Once that is done with the USB port just sits there, taking up both space and consuming some current.

To program and debug a Pro Mini you will use an external device, called an FTDI Adapter.

Using the FTDI Adapter

FTDI is an abbreviation for semiconductor manufacturer Future Technology Devices International.  In addition to interface chips, the company also manufactures a wide range of video adapter and other integrated circuits.

The adapters we are interested in are produced by several manufacturers and are used to interface USB or serial ports to microcontrollers.  They are easily obtained on eBay or Amazon, as well as most well-stocked electronics stores.

FTDI adapters come in several shapes and sizes, all of them will have a USB (usually Mini USB) port and a 6-pin connector to attach to the Pro Mini.

FTDI Voltage Select

The FTDI adapter not only provides a USB port to allow you to communicate with the Pro Mini, it also supplies power.

FTDI Adapters Voltage Select

Because the Pro Mini is available in both 3.3-volt and 5-volt models it is critical that you give it the correct supply voltage. The FTDI adapter will have a method of selecting the correct supply voltage, this is usually in the form of a jumper, a switch or a trace on the circuit board that needs to be cut or jumpered.

Make sure you get the voltage setting correct, applying 5-volts to a 3.3-volt Pro Mini can damage or destroy it!

Connecting the FTDI to the Pro Mini

Your FTDI adapter will have a connector, usually a 6-pin male header, to attach to the Pro Mini. In most cases you can just directly attach it, however one important thing to note is that this connector (and the connector on the hPro Mini) is not always mounted the same side up.

Arduino Pro Minis and FTDI Adapters

In the above image, I show a couple of Arduino Pro Minis and two FTDI adapters. The connector on the blue Pro Mini (the 5-volt one) is reversed from the connector on the red Pro Mini (the 3.3-volt one).

The two FTDI adapters also wired backward from each other!

The connections on the FTDI adapter for the Pro Mini are as follows:

  • DTR – Data Terminal Ready, a control signal sent to the Pro Mini from the FTDI adapter to let it know that it is ready to send data.
  • TX – Transmit, the signal sent out from the FTDI adapter.
  • RX – Receive, the line that receives data from the Pro Mini.
  • VCC – The Power supply voltage, either 3.3 or 5 volts DC.
  • CTS – Clear To Send, a control signal sent back from the Pro Mini to let the FTDI adapter know it can send data.

To connect the FTDI adapter to the Pro Mini you need to match the signals up as follows:

FTDI to Pro Mini Hookup

Note that the Transmit and Receive lines are crossed between the two devices, which makes perfect sense if you think about it.

You will also note that the CTS input to the FTDI adapter is grounded, or held at a digital LOW. This essentially tells the adapter that it is always clear to send data. The Pro Mini will have an extra pin that is grounded for this purpose.

Use the diagram above and check the labels on the connectors for both your FTDI adapter and Pro Mini and you should have no problem connecting the two devices to each other.

Programming the Pro Mini

After you connect your FTDI adapter and Pro Mini together it’s time to program it.

Most FTDI adapters use a mini USB (not micro USB) connector, so you will need to ensure that you have the correct type of cable. The mini USB cables are not as popular as they used to be but they are still used for many cameras and microphones.

Connect the other end of the cable to your computer. If your computer is a Linux or Mac then you are ready to go.

For some Windows users you may need to install drivers to get your FTDI adapter recognized by your computer.

Arduino IDE Settings

Programming the Pro Mini is no different than programming an Arduino Uno, however, you do need to setup your Arduino IDE for the correct type of board and processor first.

Here is how you do it:

  1. Open your Arduino IDE.
  2. Select the Tools menu item from the top menu.
  3. Go down to the Board menu item in the Tools menu. A sub-menu will open, listing a large number of Arduino compatible boards.
  4. Select Arduino Pro or Pro Mini from the sub-menu. The Tools menu will close after you make your selection.
  5. Open the Tools menu again. You should now see an additional menu item called Processor.
  6. Select Processor. A sub-menu will open, listing different Pro Mini configurations.
  7. Select the correct processor (usually ATMega328P) and voltage/clock frequency to match your Arduino Pro Mini.
  8. Make sure you have also selected the correct Port, the one attached to your FTDI adapter.

Your Arduino IDE is now ready to use with the Arduino Pro Mini.

You may now use your sketch with the Pro Mini. All of the example sketches, such as Blink, should work without modification.

Robot Arm Controller

As an example of using the 3.3-volt Pro Mini, I have created a very simple robot arm controller, meant to be used with the MeArm robotic arm.

If you are not familiar with the MeArm you can read about constructing it. You can also use this controller with any arm that has four servo motors, or expand upon it.

The real purpose of this hookup and sketch is to show you how to use a 3.3-volt Arduino Pro Mini. I’ll be the first to admit that the controller is very basic, one day soon I’ll show you a much more capable controller.

Controller Hookup

The hookup for the robot arm controller is shown below:

Robot Arm Controller Hookup

The interesting things about this hookup is how the reference voltage for the analog inputs is established.

The potentiometers are hooked up to provide a variable voltage to four of the analog inputs. On a 3.3-volt Pro Mini this voltage should vary between ground and 3.3-volts.  A higher voltage would overflow the analog to digital converter in the Pro Mini and could also possibly damage it.

Our power supply, however, is 6-volts. This can be provided by either a bench supply or batteries. A 6-volt supply is ideal for the servo motors, but it is too high to use for the analog reference voltage.

The Arduino Pro Mini is powered using the 6-volt supply connected to its RAW voltage input. This employs the built-in linear voltage regulator on the Pro Mini to derive the 3.3-volts it requires.

When the RAW voltage input is used the VCC pin on the Pro Mini now becomes an output, instead of being a voltage input. The output is 3.3-volts from the internal regulator.

This is the voltage used as a reference for the analog to digital converters.

Controller Sketch

Once you have everything hooked up you’ll need to upload the following sketch to make it all work.

 

The sketch is very basic.  It uses the Arduino Servo Library, which is included in the Arduino IDE.

Four servo objects are declared, one for each of the servo motors. They are named base, left, right and claw to represent the function of each motor in the MeArm.

Some integers are also defined to represent the analog input pins that the potentiometers are connected to.  Integers are also defined to represent the value obtained from each potentiometer, this will be the value used to position the servo motors.

In the Setup the servo objects are attached to the pins used to control the servo motors.

The Loop is very simple. The potentiometer values are read and are converted using the Arduino Map Function to values between 0 and 180, which is what the servo objects need to position the motors.  

The value is then written to each servo. Then, after a short delay, it is all done again.

Pro Mini Arm Controller on Breadboard

Load the sketch to your Pro Mini before you plug it into the circuit. Then disconnect the FTDI adapter and plug in the Pro Mini to the breadboard.

Connect a suitable power supply and start controlling your MeArm. If you find it “chatters” or moves erratically try increasing the value of the electrolytic capacitor.

With any luck you’ll be able to control the arm better than I could (I’m a terrible robot arm driver it would appear)!

Conclusion

The Arduino Pro Mini lives up to that old adage that “good things come in small packages”.   It is a fully capable microcontroller that can make use of all of your existing Arduino Uno sketches.  Its availability in both 3.3-volt and 5-volt configurations will allow you to design small battery-powered projects that you could not use the Uno for.  And it is very inexpensive as well.

So give the Pro Mini a try for your next design.

 

Resources

Code from this article – The Pro Mini arm controller sketch, in a ZIP file.

 

 

Programming the Arduino Pro Mini
Summary
Programming the Arduino Pro Mini
Article Name
Programming the Arduino Pro Mini
Description
Learn about the Arduino Pro Mini, a small Arduino board with big capabilities. You will see how to use an external FTDI adapter to program the Pro Mini. We will also build a battery-powered robot arm controller.
Author
Publisher Name
DroneBot Workshop
Publisher Logo
Tagged on:     

4
Leave a Reply

newest oldest most voted
Michael Bourdet

Hey Bill,
How about adding a trim pot to control responsiveness. Have it read the pot and use that to set the delay for all sliders. That way you remove the jerkiness (and responsiveness) out of the circuit.

Or:
Use four trim pots (The older versions of the board only had 6 analog pins but many clones, including the SparkFun & AdaFruit versions have 8) one for each potentiometer/servo.

Love your content.
Mike

Michael Bourdet

Bill,
Let me rethink the 4 pots idea (open mouth insert foot), I am having a tough time writing the code without having each delay adding to the next. Well, it’s a challenge. I will let you know if I figure that one out.
Mike

DaveH

Hi Bill,
This is a great topic and thanks for doing all the hard work.

But there is no pin on the Pro Mini labelled DTR.
You also did not mention what the Blk and Grn pins are used for.
I think that on the Pro Mni the pin BLK is ground (GND) and the pin GRN is connected to DTR.
Dave