PowerBlock: A(nother) Power Switch for the Raspberry Pi

The PowerBlock is an add-on board for the Raspberry Pi (version 1, 2, and 3) models A+ and B+. It provides a microcontroller-based power-switch functionality.
IMG_2675_Snapseed1024

This article describes the PowerBlock itself, as well as how to connect a power switch and how to install the driver.

Functionalities

The PowerBlock provides a power switch functionality. Why might this be of interest for you? The Raspberry Pi comes without a power switch. As soon as you plug the micro USB cable into the RPi, it turns on. If you want to shutdown the Raspberry Pi, you need to call a shutdown command to to bring the system into a state in which you can safely remove the USB cable again. If you just pull out the micro USB cable your file system might become corrupted and you might possibly loose data.

Here, the PowerBlock comes into play. It is stacked onto the GPIO header of the Raspberry Pi and provides a micro USB connector itself, a connector for a toggle switch to control the power supply of the Raspberry Pi, and a connector for an LED to indicate whether the Raspberry Pi is off, booting, running, or shutting down. The power supply is controlled by a tiny microcontroller on the PowerBlock PCB that monitors the button state as well as the state of the Raspberry Pi and switches a MOSFET accordingly. This means that there is no need anymore to plug and unplug the USB cable from the Raspberry if you want to completely and safely turn it off.

Dimensions and Interfaces

Dimensions

The dimensions of the PowerBlock PCB are chosen such that it exactly matches the two mounting holes on the opposite of the USB sockets of the Raspberry Pi models A+ and B+. The PowerBlock PCB comes with the same round corners as the Raspberry itself and give it a neat look. Regarding the GPIO usage the PowerBlock is attached to the first 2×6 pins of the Raspberry Pi GPIO header.

Hardware Interfaces

Here are a top and bottom view of the PowerBlock PCB:

The hardware interfaces of the PowerBlock are described in the following:

  • 2×6 pin female header as connector to the Raspberry Pi
    The PowerBlock PCB is attached to the Raspberry with a 2×6 pin female header. This header makes use of pins 1 to 12 of the J8 header. This header is used for connecting the voltage and ground pins as well as the I2C pins between the RPi and the PowerBlock. The PCB is kept as small as possible so that you can easily access all other pins that are not used by the PowerBlock.

  • Micro USB Connector for the power supply
    The PowerBlock has the same USB Micro connector as the Raspberry Pi. That means you can simply use your existing USB Micro cable for powering the RPi.

  • Pin Outs for 5V Supply Voltage and Ground
    If you do not want to use the USB connector, GND and the 5V supply voltage can also be accessed via two pins so that you could use batteries or whatever you like to power the RPi.

  • Optional DC Barrel Jack Adapter
    The PowerBlock is also prepared for connecting a DC barrel jack adapter. The hole dimensions for the barrel jack adapter are chosen such that most of DC barrel jack adapters should fit. Here is a picture that shows the PowerBlock with the optional DC barrel jack:
    IMG_2672_Snapseed1024

  • Pin Out for a Toggle Switch
    To control the power state of the Raspberry Pi the PowerBlock provides an interface for attaching a toggle switch. The on-board microcontroller monitors the state of that switch as well as the one of the Raspberry.

  • Pin Out for Status LED
    The current power state of the Raspberry Pi can be indicated with a 5V status LED that can be attached to the two pins that are provided by the PowerBlock. These states can be “off”, “booting”, “on”, and “shutdown”. The different state are indicated with easy-to-distinguish static and pulsing patterns.

  • Optional USB A Connector as power out
    If you want to provide a switched 5V voltage to another device, you can solder a USB A connector to the PowerBlock – it is prepared for that as well. Here is a picture that shows the PowerBlock with both the optional DC barrel jack as well as the USB A connector:
    IMG_2673_Snapseed1024

  • In-Service Programmer (ISP) pin-out for ATtiny
    The Power Switch logic is realized with the help of an Atmel ATtiny85 microcontroller. If you want to you have the possibility to access the microcontroller with the ISP header. In this way you could reprogram the microcontroller with whatever functionality you like.

Assembly of the PowerBlock

Assembly of the PowerBlock? Not needed – it comes fully assembled. You only need to connect a power switch and, optionally, an LED. This is described in more detail in the following.

Attaching a Power Switch

To turn the Raspberry Pi on and off with the PowerBlock you need to attach a toggle switch to the two button pins on the PowerBlock. Technically speaking, the microcontroller on the PowerBlock looks, if the two pins of the switch are connected or not. If they are connected, a GPIO pin of the microcontroller on the PowerBlock is pulled to GND and interpreted accordingly.

  • It is important that you use a toggle switch and not a momentary button with the PowerBlock. Otherwise the Raspberry Pi will be turned off again right after booting.
  • If you do not want to use the power switch functionality you can disable this in the configuration file /etc/PowerBlockconfig.cfg by setting “powerswitch”: false.
  • The power switch circuitry of the PowerBlock leads to a tiny voltage drop and we made the experience that a good quality power supply and a good quality USB cable are mandatory for a working setup. If unsure, we can recommend the official Raspberry Pi Power Supply.

Attaching a Status LED

The PowerBlock has pin outs for an optional status LED that indicates the power state of the Raspberry Pi. You can directly attach an LED to the pins that are marked with “LED”. You need to pay attention to the polarity of the LED: The LED pins are marked with “+” and “-” for that.

The LED will blink in four different patterns that depend on the power state of the Raspberry Pi:

  1. Off: The LED is simply off.
  2. Booting: The LED slowly fades in and out.
  3. On: The LED constantly stays on.
  4. Shutting down: The LED fades in and out twice as fast as during boot up.

Software Setup and Configuration

The power switch functionality of the PowerBlock is controlled with the GPIO pins 17 and 18 of the Raspberry Pi:

  • Pin 17 can be used to indicate the power state of the Raspberry Pi. This pin is read by the PowerBlock”s microcontroller to control the on-board power switch.
  • Pin 18 can be read by the Raspberry Pi to get status of the button that is attached to the PowerBlock.

The PowerBlockService is an open-source driver for the PowerBlock. It provides a service for interacting with the power button signals as well as for mapping attached game controllers to corresponding game pad devices on the Raspberry Pi. The installation only takes a few steps and is done from command line. In the following, this is described in more detail.

Command-Line Installation

The command-line installation consists of these steps:

  1. Installing required packages
  2. Fetching the latest version of the PowerBlock driver and service from the public repository.
  3. Compiling the driver binary.
  4. Installing the driver binary.
  5. Installing the service.

To be able to successfully build the driver you need to have certain APT packages installed:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y git cmake g++-4.9 doxygen

The following commmands for the command line do the above steps:

git clone git://github.com/petrockblog/PowerBlock.git
cd PowerBlock
mkdir build && cd build
cmake ..
make
sudo make install
sudo make installservice

You might need to reboot your Raspberry in order to have all needed services running.

The above installation procedure is also shown in this video. Please note that, other than in the video, you need to install g++-4.9 as described above:

Video Demonstration

The following video shows the PowerBlock in action:

Cases

What if you want to put your Raspberry Pi together with the PowerBlock into a case? If the RPi together with the PowerBlock fit into your case depends on the lind of power jack and the case you use. Overall, the PowertBlock adds about 6 mm in height to the Raspberry Pi 2 Model B. If you are interested, a user has published his design files for a 3D printable case that fits a PowerBlock at Thingiverse.

Conclusion

The PowerBlock is an extension board for the Raspberry Pi (TM). The key feature of the PowerBlock is a power switch functionality to safely turn on and off the power to the Raspberry Pi with a toggle switch. A connector for a status LED that indicates the power status of the Raspberry Pi can optionally be connected to the PowerBlock.

If you are interested in getting the PowerBlock, you can find it in our shop.

Check Also

ControlBlock Update

Update for the ControlBlock Driver

The driver of the ControlBlock got updated! What does this mean for you? More functionalities! …

  • jdmdingo

    Like to the store is broken

    • Storenvy, the host of our shop, seem to have server issues right now: http://status.storenvy.com. Maybe another DDoS attack?
      Sorry for any inconveniences!

      • jdmdingo

        Thanks, just ordered one

  • Dean Gale

    Hi I have the powerblock installed and working but what I am trying to do without success is get the Rasoberry Pi to autimatically run a script so that I do not need to have a mouse or keyboard attached.

    Please can anyone help ?

  • sestrada

    Hi, I am interested in getting the powerblock as I will be installing it into a cabinet with the pi. I’m not too familiar with with electrical components but I’m trying to find out how the LED wires and the toggle switch wires are connected to the pins? It looks like most pictures online show some sort of black connectors which I can find on multiple sites but what size are those pins so that i can find the right size connector? I’m not referring to the GPIO pins but instead to the pins that the LED and toggle switch connect to. I’m trying to gather and purchase all the pieces at once so I don’t have it in front of me to measure. Thanks for making the power situation easier!

  • Devon Dunnington

    I was able to power it on with a push on push off button. I didn’t have to change any of your script or programs at all.

  • Steven Mercurio

    Are the drivers compatable with Fedora 25? I have one SD card loaded with every NOOBs OS to try them out and learn them and another I am loading with Fedora 25.

  • Yusunoha

    here’s a bit of a dumb question, but since I’m new to all of this, I don’t really know the answer myself. I bought this board for my Raspberry, and I’ve bought these female pins (https://www.aliexpress.com/item/10PCS-2-54mm-40-Pin-Stright-Female-Single-Row-Pin-Header-Strip-PCB-Connector/32597304567.html?spm=2114.13010608.0.0.TmYjXn) but I don’t know which wires I should be using to connect the pins to these rocker switches (http://www.dx.com/p/on-off-pressing-button-power-control-switches-black-white-5-pcs-270035#.WICHx31SHDM)

    because there are so many different kinds of wires I have no idea which ones I should be using.

  • Software I’d like to run requires GPIO 4. Can I pass through pin 4 and GND on the PowerBlock?

    • Yes you can use GPIO 4 with the PowerBlock. The PowerBlock driver does not use that pin.

  • Lodmot

    Hey there.

    I got a PowerBlock for my project where I’m installing the Raspberry Pi in an old Sega Genesis Model 2 shell. I plugged the power supply (made for use with Raspberry Pi 3) into the micro USB port on the PowerBlock itself, and I am using the original toggle power button from the Sega Genesis motherboard. I’m pretty sure the power button and the LED is properly connected, but when I press the power button, absolutely nothing happens. So do I need to configure the software first before this device will physically work, or should I already have been able to turn it on even without the software installed?

    Thanks!

    • Lodmot

      Nevermind, I figured it out! Turns out I had the switch connected wrong (the power switch in the Sega Genesis model 2 has 5 pinouts, I apparently was using the wrong combination). Works really awesome! Thanks! 😀

      • Hans Olo

        I have a PI, also have an Ouya with a 1 terabyte all games, not bad, Run Kodi on both too.
        Which Reminds me of when I was a test patient for Viagra but Left because everyone was pretty Hard-On me.
        Seems I can’t keep a job, I worked at a sperm bank but was let go due to Carpal Tunnel 🙁

      • Lodmot

        Lol! xDD But yeah, you should see this console I’m putting together. It’s still a work in progress, but it’s pretty sweet! ^^

      • Hans Olo

        Keep me posted I like making my own retro consoles, got thousands on mine.

      • Lodmot

        Will do! ^^ Here’s a video of what I have so far in action: https://www.youtube.com/watch?v=9wTxhPr2Z88

      • Hans Olo

        Thats super cool man!

      • Lodmot

        Thanks! 😀

      • Έλληνας

        1 terabyte of games on Ouya? XD Is that like 100 Angry Birds clones + a few Farmville clones or what? Is this the entire Android Play Market on an SD card or something? And is any of that actually enjoyable to play?

  • Jason Pereira

    Hi there,
    I wanted to add an extra switch to the powerblock so that I could invoke an umount script to un mount the usb drive where my roms are stored. Can I use pins 11/12? it seems from the pi3 GPIO header pins 11/12 are GPIO17 & GPIO18, so by reading those pins I should be able to detect a button press(connect to ground). Are my assumptions correct?

    Thanks

    • Jason Pereira

      Is there anyone on this forum?

    • The GPIO header pins 11 and 12 are used as by the PowerBlock as signal lines to and from the RPi. You can use, e.g., any other pin >12.

      • Jason Pereira

        Thanks 🙂

  • Pingback: Raspberry Piでゲームコンソールを自作 その4 | 読書とプログラミングを中心とした覚書ブログ()

  • Rémi

    Hello,
    Can you tell me which pins are really used by the powerblock ? I would like to know if some of them are free to use them with an other software.
    I also see a “5V + – IN” inscription on the board, may I use this for the power supply instead of the micro usb port ?
    Thank you !

%d bloggers like this:
Skip to toolbar