Arduino Pro Mini shields!
I’m proud to introduce my latest Arduino-related project. For the past year, I’ve been using the Arduino Pro Mini from Sparkfun extensively, and I’ve come to love it for its small size and awesome XBee connectivity. Since I’m frequently using relays, I’ve been making lots of relay boards, and every time I needed to add or remov a relay to a project, it’s been kind of a pain in the ass, so I devised a smart solution.
First of all, I need to make a small introduction. Using the Stackable Headers from Sparkfun, I made it possible to add and stack shields to an Arduino Pro Mini, just like you would on a normal Arduino Uno. Here is a picture of an Arduino Pro Mini with the stackable headers:
Arduino Pro Mini with stackable headers
Using these headers, we can add shields/boards both on the top and below the Arduino Pro Mini board. It’s also much easier to program the Arduino Pro Mini using an FTDI Basic Breakout board, and you can easily add an XBee module on the Arduino with an XBee Explorer Regulated board if you want to (I do. all the time). Here’s another pic:
Arduino Pro Mini with XBee module
And now on to the good part. First of all, I made a relay shield because as I said, I use relays a lot! The shield includes all the circuitry needed to control a relay from one of the Arduino’s digital output pins. All the necessary headers to make it stackable are there, as well as the necessary components, relay and 2 screw terminals. I wanted to be able to select which digital I/O pin the relay would be connected to, so I’ve added a header to make it easy to connect the relay control (SEL) pin to any of the Arduino digital 2-9 pins using nothing more than a cable. I’ve also added a 0.1″ standard 2-pin Molex connector (you can also use a standard 0.1″ header if you want to make it more breadboard-friendly) to make it easy to power the Arduino with a regulated 5V power supply.
Relay Board. Notice the header on the left. It’s easy to set which pin controls the relay, by simply using a cable to short the SEL pin to the digital pin of your choice.
The 2 most common stuff someone will need to use an Arduino Pro Mini for are I/O and reading sensor values from the Analog In pins. So I made a digital I/O shield with space for 4 digital I/O slots, using the same header to select which Arduino pin you want to connect to each slot. In addition to the 2-pin connector for power, I’ve added 2 more 3-pin connectors (since there was unused space) so you can power it with 7-12V in the RAW pin.
I’ve brought out the GND rail as well, to be used both for Output (i.e. controlling a LED) as well as an input. For buttons and switches, you should use the internal pull-up resistor in the microprocessor and the GND rail to detect a button press (if the pin state is LOW, it’s pressed, if HIGH, it’s not pressed). That way you don’t even need any external resistors for your buttons. You can either use screw terminals, or the standard 0.1″ header to connect your I/O, and I’ve also added a 0.1″ 2-pin molex connector for each of the four I/Os. Of course, if you need more I/Os, all you need to do is stack another shield ;)
Digital I/O Shield. Notice the selection header and the 2-pin connector for each I/O.
In regards to Analog Input, the usual way to use them is to connect a sensor in series to a resistor in order to make a voltage divider (image taken from ladyada’s excellent tutorial on how to use photoresistors). So I made a board that you can use to make up to 4 voltage dividers. There are slots for each resistor, so that you can use any resistor value you want, and there is one connector for each of the sensors. There’s also a header for breadboard-friendly connectivity. Of course, the usual power connectors are still there :)
Analog Input Shield. Notice the resistor slots, and the 2-pin header for each sensor.
Of course, if you know me, you know I love open source stuff, so here are all the EAGLE files for all 3 of the boards.
I hope I’ve wet your appetite. If you’re hungry for more, here’s a video of me explaining each circuit, and showing how to stack them and connect them to the Arduino Pro Mini.
If you just want to take a look at some action, here’s a quick demo of the system in action with 2 relay shields and an I/O shield. You can get the code for the demo here.