The SparkFun Pi Servo HAT allows your Raspberry Pi to control up to 16 servo motors in a straightforward and uncomplicated manner via an I2C connection. Thanks to its I2C capabilities, this PWM HAT saves the Raspberry Pi's GPIO, allowing you to use them for other purposes. Additionally, the Pi Servo HAT adds a serial terminal connection, which will allow you to bring up a Raspberry Pi without having to hook it up to a monitor and keyboard.
Power to the SparkFun Pi Servo HAT is supplied by a microUSB connector that can be used to power the servo motors only, or to power the servo motors as well as the Pi that is connected to the HAT. This USB connector can also be used to hook up the Pi via serial port connection to avoid having to use a monitor and keyboard for setting up the Pi. To supply power only to the servo power rail (and not the Pi's 5V power rail), you just need to remove a small blob of solder on the isolation jumper. Doing this allows you to drive heavier loads coming from multiple or larger servos.
Each of this HAT's 16 servo motor pin headers has been spaced out the correct distance from the others to make it easier to attach your servo motors. They are pinned out in the proper order for most hobby-type servo motor connectors. The Pi Servo Hat is the same size and form factor as a Raspberry Pi Zero and Zero W, but it can also operate with a regular Raspberry Pi.
Note: This HAT does not include headers to connect to a Raspberry Pi, those will need to be purchased separately. We recommend the 2x20 "tall" headers.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels
This skill concerns mechanical and robotics knowledge. You may need to know how mechanical parts interact, how motors work, or how to use motor drivers and controllers.
Skill Level: Competent - You may need an understanding of servo motors and how to drive them. Additionally, you may need some fundamental understanding of motor controllers.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Competent - The toolchain for programming is a bit more complex and will examples may not be explicitly provided for you. You will be required to have a fundamental knowledge of programming and be required to provide your own code. You may need to modify existing libraries or code to work with your specific hardware. Sensor and hardware interfaces will be SPI or I2C.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Based on 1 ratings:
3 of 3 found this helpful:
I bought this board to control an x-y servo stack to move a raspberry pi camera around (pan-tilt) by remote control. So far what I have seen is a mixed bag. I have been able to control individual servos from the PI (these are small 9 gm servos) but not with the precision or finesse I was expecting. When two servos are connected I get quite a bit of random movement that seems to be related to electrical noise on the power bus. I have powered the unit both from the sparkfun board's micro USB connector as well as the one on the Raspberry Pi Zero W. In both cases I get lots of random movement and in the former case I also have periodic crashing of the Pi. I'm thinking that the only way to get this board working right is to separate the 5 volt power between it and the Pi and probably greatly increase the amount of filtering on the supply to prevent high frequency noise from influencing the servos. When the above issues are combined with the very poor build quality of the pan-tilt assembly that was sold with it, I find a lot of room for buyers remorse. The mechanical connections between the servos and the plastic housings included are so poor that I doubt the pan-tilt mount can be made to function for more than a brief "test bench" demonstration without breaking or stripping out the screws used to attach servo arms to the plastic housings. In fact, the lower (pan) element cannot be interfaced to the servo with the arms provided as they don't match either the instructions or the molding of the plastic housing. This means that in order to even test the device I had to do significant hacking of the hardware of the kit. Not classy at all. Perhaps at some point I'll be able to make use of it but the amount of work to be done just to get the kit to function has sent me down the path of multiple fixed position cameras for now.
Does anyone know if the Adafruit Python PCA9685 Library will work with this?
I don't see why not. They're both based on the same chip and they operate from the same principle.
Awesome, thanks for the quick reply!
Can we change the address and use more than one to drive more servos?
I am interested in the same. After looking at the schematic, and board, I think the address pins are all left floating. I purchased a couple with the same intent and plan on soldering a wire wrap wire to the address pins so I can test this out. I wish the design would include a spot for a SMD DIP Switch or Jumper Block on the back, where there looks to be plenty of room, to assign the address more easily!
I'm driving 4 large servos from the sparkfun servo hat off a pi3b+. I've removed the solder on the hat. I have powered the Pi and the hat with separate 5v 2.1A usb power supplies. A green light appears on the hat, I'm using python and get the error on the line (bus.write_byte_data(addr, 0, 0x20)). Error: IOError [errono 121] Remote I/O error. Any ideas? I've treid with only pins 1-8 connected from the pi to the hat (jumper leads) and only the sda/scl connected. I get the same error both times. Can someone do a tutorial on removing the solder and which wires need to be connected to the pi at a minimum via jumper leads?
I am attempting to use this with servos that are standard size (though they are high torque..), and it seems like the current draw is still too much for this board when I've removed the blob of solder to have all power going to the servos. I have no problem using multiple micro servos.
Is there a way to supply additional power to the board to deal with this?
How many servos are you attempting to drive? Can you pipe in power directly via one of the unused servo power pins? That'd be my solution.
If I were using a servo larger than the ones that came with the kit, or more than the two that came with the kit, I'd look at an additional power supply.
While the hookup guide mentions that you need to add a 2x20 female header before you can pop this on your Pi, the description does not. Considering every other HAT on the site either includes one or has it pre-installed, this requirement should probably be mentioned to prevent unpleasant unboxing surprises :)
Good thought. We are currently updating all aspects of our product pages and we'll soon have a fix for this. Until then I'll add a note. Thanks for the heads up!