2013年に教育用として登場したコンピューターボード「Raspberry Pi(ラズベリーパイ)」。その後バージョンアップを重ね、現在のRaspberry Pi 3 Model B+では無線LANからBluetooth4.2まで備え、様々な場面で利用できるコンピューターになりました。 また、様々な外部機器と連携し、機能を拡張していけることも魅力の一つです。 今回はRaspberry Piをパーソナルコンピューターとして「便利」に使うローテクな方法をいくつかご紹介します。
身近になったコンピュータボード
Raspberry Piがここまで人気が出た理由は、最初から殆ど変わらない仕様(外形やHDMIやUSB、GPIOなどの入出力)と低価格でしょう。考え抜かれた仕様のコンピュータボードなので、CPU部分の純粋な進化をそのままメリットとして享受して、正常進化を繰り返しています。ユーザビリティなどの使い勝手は完全にソフトウエアによるアップデートに任せているので、今後Raspberry Piのハードウエア機能として、パーソナルコンピューターに求められるような指紋認証などの便利機能が実装される事はないでしょう(もちろん拡張ユニットが出る可能性はあります)。
つまり、Raspberry Piはどこまで行ってもコンピューターボードであるが故に、仕様を変えず低価格で量産され、その結果長く愛されているわけです。ですので細かな使い勝手の部分は、自分たちで改良していくしかありませんし、それが出来るのがRaspberry Piの魅力であり強みにもなっています。
面倒じゃないですか? 電源のONやOFF
上記で話題にしたように、Raspberry Piはただのコンピュータボード(巷では、シングルボードコンピュータというジャンルですね)なので、電源ボタンが付いていません。自作パソコンの経験がある人なら分かると思いますが、PC/AT機においてもメインボードと電源装置は別です。というわけで、ただのコンピュータボードであるRaspberry Piが電源のON/OFF回路を載せていない事は当たり前なんですが、これだと電源ONの際にいちいちコネクターの抜き差しをしなくてはいけないので大変面倒です。まずは、この抜き差しを改善するグッズを紹介します。その後次はスイッチ部分を自作する方法を2つ紹介します。最終的には、追加したスイッチで起動とシャットダウンが出来るRaspberry Piが出来上がります!
電源オンのためのスイッチ付きUSBケーブル
まずは、USB電源をON/OFFするグッズです。Raspberry PiのMicroUSBの電源コネクタと電源アダプターの間に入れて電源をON/OFFします。
もうこれは説明不要で、単にケーブルの間にあるプッシュスイッチがコネクタの抜き差しの代わりになってくれます。Raspberry Piをどこかに固定してコネクタが抜き差しし難い時なんかはとても便利ですね。
電子工作で、シャットダウンボタン追加
Raspberry Piの真骨頂はなにかのサーバーにして常時動かすことでしょう。となると、多くはキーボードやディスプレイは外して運用するので、ただ電源を切るためにディスプレイやキーボードを繋げてコマンドやGUIでシャットダウンするのはかなり面倒くさいです。
そんな時ボタン一つでシャットダウンできると便利ですね。Raspberry PiはGPIOが使えるのでちょっとした電子工作でシャットダウンボタンを作る事ができます。
電子回路作成
まずかんたんな電子工作で回路を作ります。Raspberry Pi以外に必要な部品は以下3点です
• ブレッドボード(ハンダ付けをしなくても差し込むだけで部品同士を通電して動かすことができる基板。電子部品を売っているお店や通販で入手できます)
• スイッチ(なんでもいいですが、今回は下記の記事で利用した100円ショップのプッシュスイッチを利用しました)
“Makey Makeyを使ってキーボードをハックしよう”
https://www.pc-koubou.jp/magazine/10220
• ジャンパーワイヤー(オス-メス)
まずは、GPIOのアサインを確認しましょう。
Raspberry Piを起動してターミナル(コマンドライン)から
pi@Raspberry Pi:~ $ gpio readall
で調べればハードウエアのGPIOの状態が分かります。Raspberry Piすべて共通ですが、モードや状態が違う事があるので確かめたほうが安心です。あと、ハードウエアの状態をコマンドラインで知るのが無駄に楽しいです。
今回は、「インプットとして使う(スイッチと繋げて)」「GNDに短絡させる」のでGPIO.25(37ピン:写真の向きで左下から2番目)と0V(39ピン:写真の向きで一番左下)を使います。条件に合えばどこでもいいのですが次の工作で、前半部分のピンを利用するので、後半部分のピンにしました。プログラムの中ではBCMの番号を使うので気をつけてください。
ブレッドボードを介して下図のようにスイッチの導線とGPIOピンをつなぎます。
今回の回路図は下図のようになります。
プログラムの作成
ターミナルで下記を入力してテキストエディタ「nano」を立ち上げ、”shutdown.py”を作成します。
nano shutdown.py
次のコードを入力します。
#!/usr/bin/python # coding:utf-8 import time import RPi.GPIO as GPIO import os GPIO.setmode(GPIO.BCM) #GPIO26pinを入力モードとし、pull up設定とします GPIO.setup(26,GPIO.IN,pull_up_down=GPIO.PUD_UP) while True: GPIO.wait_for_edge(26, GPIO.FALLING) sw_counter = 0 while True: sw_status = GPIO.input(26) #長く(0.01秒×50回ループ)押された時だけシャットダウンするようにする if sw_status == 0: sw_counter = sw_counter + 1 if sw_counter >= 50: print("長押し検知!") os.system("sudo shutdown -h now") break #短く押された時は無視する(誤操作防止) else: print("短押し検知") break time.sleep(0.01) print(sw_counter)
保存して終了します。
ショートカットキーはcontrol + o で保存、control + x で終了です。
続いて下記を入力し、作った「shutdown.py」に実行許可を与えます。
sudo chmod 755 shutdown.py
実行します
./shutdown.py
長押しするとシャットダウンしたかと思います。長押しは500ms判定(0.01sの50回ループ)です。誤動作する場合は長押しの間隔を長めに調整するといいかと思います。
このままでは、立ち上げ毎に実行コマンドを入れる必要があるので、「etc」の下にある「rc.local」を編集して自動的起動するようにしましょう。
下記を入力して「rc.local」の編集画面に入ります。
sudo nano /etc/rc.local
“exit 0” の前に以下のように記述してください
... /home/pi/shutdown.py exit 0
これで上書き保存して再起動すれば、毎回スイッチでシャットダウンできます。
上記のプッシュスイッチを用いたシャットダウンのプログラム作成にあたっては、下記のサイトを参考にさせていただきました。
“クラゲのIoT『RaspberryPiにshutdownボタンを付けよう』”.2016.JellyWare Inc.
http://jellyware.jp/kurage/raspi/shutdown_button.html
追加のモジュールで、起動・シャットダウン!
上記の自作スイッチだとシャットダウンしかできません。起動もできるようにするとなるとまた工夫が必要なんですが、電源管理基板を使えば、ハードウエア部分もソフトウエア部分も手軽に導入できます。ジャンプワイヤーなどもないので、安心して運用することができます。
長押しするとシャットダウン、短く押すと起動します。
今回使用する「OnOff SHIM」には基板とコネクタが入っているので、まず基板とコネクタを下図のようにハンダ付けします。
GPIOに接続します。場所はピンの最初から6段目まで使います。
モジュールをRaspberry Piに付けたら下記のコマンドでインストーラをダウンロードし、ソフトウェアをインストールしてください。
curl https://get.pimoroni.com/onoffshim | bash
何回かメッセージ(下記 [y/N] 部分)が出ますが、下記のように回答すると、インストールまですべて自動で行われます。再起動すると、モジュールが使えるようになっているはずです。
pi@Raspberry Pi:~ $ curl https://get.pimoroni.com/onoffshim | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 38375 100 38375 0 0 12060 0 0:00:03 0:00:03 --:--:-- 12060 This script will install everything needed to use On/Off SHIM Always be careful when running scripts and commands copied from the internet. Ensure they are from a trusted source. If you want to see what this script does before running it, you should run: 'curl https://get.pimoroni.com/onoffshim' Do you wish to continue? [y/N] y Checking environment... Updating apt indexes... ..................... Checking hardware requirements... Checking for packages required for GPIO control... raspi-gpio is already installed Checking for dependencies... Cloning Github repo locally... Cloning into 'clean-shutdown'... remote: Enumerating objects: 18, done. remote: Counting objects: 100% (18/18), done. remote: Compressing objects: 100% (11/11), done. remote: Total 18 (delta 0), reused 11 (delta 0), pack-reused 0 Unpacking objects: 100% (18/18), done. Finalising Install... Installing dependencies... Installing daemon... cleanshutd.service is not a native service, redirecting to systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable cleanshutd Installing GPIO Power Off support... Applying default settings for OnOff SHIM... All done! Some changes made to your system require your computer to reboot to take effect. Would you like to reboot now? [y/N]
自分でどんどん「便利」にしていこう!
今回紹介した方法はどれもローテクな手段なので、電子工作初心者でも可能ですしRaspberry Piのバージョンに関わらず実現できると思います。コストも1000円(税込1,100円)以内です。
別の機会に、Raspberry Piをノートパソコンみたいに「便利」に使う工夫について紹介したいと思います。
電子工作におきましては設定や接続の方法を間違えると機器の発火や破損に繋がる恐れがあります。
十分に設定や接続方法を確認の上で通電を行ってください。
※この記事は「JellyWare Inc.」の許諾をいただき作成しております。
メーカーエンジニアを経て、独立。普段は、ファブスペースを運営したりモバイルアプリやシステムを作ったり、子供向けワークショップをしたりしています。趣味は分解。