2016年2月10日水曜日

キーボードのCaps LockキーとCtrlキーを入れ替える

Raspberry PiはLinux系OSをインストールして用いられることが多いのですが、Linux系OSではキーボードの「Ctrl」キーを多用します(Windowsでも「コピー」と「貼り付け」の機能に「Ctrl」キーを使いますね)。

そのため、Ctrlキーが押しやすい位置に配置されたキーボードが好まれる傾向があります。典型的には「A」キーの左隣にCtrlキーが配置されたものです。

古くはSunワークステーション用のキーボード、最近では
などでは「A」キーの左隣にCtrlキーが配置されています。

一般的には「A」キーの左隣に「Caps Lock」キーが配置されたキーボードが広く流通しています。そのようなキーボードを用いる場合も、この「Caps Lock」キーを「Ctrl」キーと入れ替えて「Ctrl」を「A」の左隣に配置する、という設定が、Linux系OSのユーザーに好まれています。

ここではその設定を紹介します(参考にしたサイト)。なお、Raspbianのバージョンにより方法が異なりますので、順に解説します。

まずは、NOOBS 2.8.2 以降のRaspbian (Stretch) の場合について解説します。なお、この解説はかなり古いNOOBS 1.4.1より以前のRaspbian(Wheezy)についても当てはまります。

これらのバージョンのRaspbianの場合、キーボードの設定ファイルは /etc/default/keyboard です。ターミナルソフトウェアLXTerminalで下記のコマンドを実行し、テキストエディタleafpadで設定ファイル /etc/default/keyboard を開きます。
sudo leafpad /etc/default/keyboard
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
sudo mousepad /etc/default/keyboard
このファイルは10行程度が記されていますが、 この中にXKBOPTIONSを設定する「XKBOPTIONS=」という1行があるはずです。これに以下のように「ctrl:swapcaps」という設定を追記します。
XKBOPTIONS=ctrl:swapcaps
編集が終わったら、保存してleafpadを閉じます。その後Raspberry Piを再起動すると「Caps Lock」と「Ctrl」が入れ替えられ、「A」キーの左隣が「Ctrl」キーとなっているはずです。

なお、XKBOPTIONSに既存の設定があった場合、例えば下記のような設定が既にあった場合は…、
XKBOPTIONS=terminate:ctrl_alt_bksp
「,」で区切ってctrl:swapcapsを追記すればOKです。
XKBOPTIONS=terminate:ctrl_alt_bksp,ctrl:swapcaps

なお、「Caps Lock」キーは不要と言う場合、下記のようにnocapsを指定すると、「Caps Lock」キーと「Ctrl」キーがどちらも「Ctrl」キーとして機能するようになりますので、お好みの設定を用いてください。
XKBOPTIONS=ctrl:nocaps
XKBOPTIONSに設定できる内容は「/usr/share/doc/keyboard-configuration/xorg.lst」というファイルに列挙されていますので、興味のある方は参照してください。

次に、NOOBS 1.5.0~2.8.1 のRaspbian(Jessie/Stretch)でGUIの設定アプリケーションを用いた場合の解説です。これらのバージョンのRaspbianでは、設定ファイルは /home/pi/.config/lxkeymap.cfg でした。このファイルは、GUIのRapsberry Piの設定アプリケーションでキーボードの設定を一回行うと、自動的に生成されています。

ターミナルソフトウェアLXTerminalで下記のコマンドを実行し、テキストエディタleafpadで設定ファイル .config/lxkeymap.cfg を開きましょう。
leafpad .config/lxkeymap.cfg
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
mousepad .config/lxkeymap.cfg
このファイルの中に、「option =」という、optionを設定した行があるはずです。この右辺に「ctrl:swapcaps」を追記ましょう。
option = ctrl:swapcaps
Raspbianのバージョンによっては、右辺に既存の設定が書かれていることがあります。
option = lv3:ralt_switch
その場合、「,」で区切って設定を追加すればOKです。
option = lv3:ralt_switch,ctrl:swapcaps
編集が終わったら、保存してleafpadを閉じます。その後Raspberry Piを再起動すると「Caps Lock」と「Ctrl」が入れ替えられ、「A」キーの左隣が「Ctrl」キーとなっているはずです。

なお、このバージョンのRaspbianにおけるキーボードの設定ファイルは、Raspberry Piの起動時は /home/pi/.config/lxkeymap.cfg であり、Raspberry Piの起動後にキーボードを抜き差しすると /etc/default/keyboard が読まれるようになっていますので注意しましょう。

2015年12月7日月曜日

Raspberry Pi Zero シリーズで本書の演習を実行する方法

はじめに

2015年11月26日、Raspberry Piの新型であるRaspberry Pi Zeroが発表され、その価格が5ドルということでで大きな話題となりました。長らく海外のみでの販売でしたが、2017年2月に日本でも発売されることが報じられました。さらに、2017年2月28日にはWifiとBluetooth機能のついたRaspberry Pi Zero Wが発表されました。

このRaspberry Pi Zero シリーズで本書の演習を実行する方法を、本ページで解説したいと思います。まずはRaspberry Pi Zero シリーズについて整理してみましょう。下記のバージョンがあります。

製品名 海外での価格 特徴 販売店
Raspberry Pi Zero WH 16ドル Pi Zero Wにピンヘッダを取り付けたもの。
カメラ利用可(要専用ケーブル)・Wifi/Bluetoothつき
KSYスイッチサイエンス
Raspberry Pi Zero W 10ドル カメラ利用可(要専用ケーブル)・Wifi/Bluetoothつき KSYスイッチサイエンス
Raspberry Pi Zero v1.3 5ドル カメラ利用可(要専用ケーブル)・Wifi/Bluetoothなし KSYスイッチサイエンス
Raspberry Pi Zero v1.2 5ドル カメラ利用不可・Wifi/Bluetoothなし 現在は入手困難

下図の写真において、左から、v1.2、v1.3、W です。v1.2にのみピンヘッダがついていますが、後述するようにこれは自分で半田づけしたものです。


Raspberry Pi Zero シリーズを使う場合、次に述べるように特有な機器がいくつか必要になるので注意が必要です。

接続方法(Raspberry Pi Zero W、Pi Zero WH、Pi Zero v1.3の場合)

Raspberry Pi Zero W、Pi Zero WHおよびPi Zero v1.3の場合、接続は下図のようになります。以下の3つのものが必須となります。
  • HDMI(メス)-ミニHDMI(オス)変換アダプタ。例えばSANWA SUPPLY AD-HD07M
  • USB OTGケーブル。例えば iBUFFALO BSMPC11C01BK
  • USBハブ(ACアダプターなしのバスパワータイプでOK)。 マウス、キーボードを接続します。Pi Zero WおよびPi Zero WHの場合、Wifiデバイスは基板上に実装されているので、Wifiアダプタは不要です。Pi Zero 1.3の場合、ここにさらに無線LAN USBアダプタを接続します

接続方法(Raspberry Pi Zero v1.2の場合)

Pi Zero v1.2の場合、接続は下図のようになります。以下の3つのものが必須となります。
  • HDMI(メス)-ミニHDMI(オス)変換アダプタ。例えばSANWA SUPPLY AD-HD07M
  • USB OTGケーブル。例えば iBUFFALO BSMPC11C01BK
  • USBハブ(ACアダプターつきのセルフパワータイプ)。マウス、キーボード、無線LAN USBアダプタなどを接続します。ACアダプターのないバスパワータイプを用いると、Wifiが不安定になり途中で接続が切れることがあります

GPIO ポートの利用

Pi Zero WH以外のRaspberry Pi Zero シリーズには、GPIOポートにピンがあらかじめ取りつけられていません(下図)。別途2x20のピンを購入し、自分ではんだ付けする必要があります。
例えば秋月電子通商さんのピンヘッダ 2×20 (40P)などです。


なお、このピンヘッダの半田づけが嫌だという場合、下記のようなテストワイヤをGPIO部の穴に差し込んで使うという方法もあります。ただし、これはあくまでテスト用であり、本書のように何度もGPIOを利用する場合、ピンヘッダを半田付けするのをお勧めします(何度も抜き差しすると接触が悪くなるためです)。
それ以外には、40ピンのピンヘッダをハンマーで打ち込む、という製品もあります。
こちらは私は使用したことがありませんが、商品名で検索すると使用した方の体験記などが見つかるでしょう。

本書の演習の実行について

Raspberry Pi Zeroを用いて本書の演習を行う場合、注意が必要なのは下記となるでしょう。
  • 5.6 カメラのシャッターの演習:カメラモジュールを接続するための専用ケーブルが必要
  • 5.7 MP3ファイルの再生:オーディオジャックがないので、音声はHDMI経由のみでの出力となるでしょう
  • 6.5 音声のボリューム:同様に音声はHDMI経由のみとなるでしょう
  • 10.4 キャタピラ式模型へのカメラの搭載:カメラモジュールを接続するための専用ケーブルが必要
なお下図は、初期バージョンのRaspberry Pi Zero v1.2で、4章のLEDの点滅(Lチカ)を試しているところです。


また、カメラモジュールを使うには、下記のように専用ケーブルが必要です。


ケーブルを取り付ける際、金属が露出した端子面を、どちらも緑色の基板の方を向くようにします。基板上のカバーを引き出し、ケーブルを差し込んだ後でカバーを押し込むことでケーブルが固定されます。

Raspberry Pi Zeroに適した利用方法

接続方法の図を見てわかる通り、どのバージョンにもRaspberry Pi 3などでは必要なかった物品が必要となり、Raspberry Pi Zeroシリーズの低価格性、省スペース性があまりいかされていませんね。そういう意味では、本書のスタイルでRaspberry Piを用いるならば、利用が容易で高性能なRaspberry Pi 3をお勧めします。

Raspberry Pi Zeroを用いるには、上級者向けではありますが「ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する」で解説する方法が適しています。その場合、Wifiデバイスが基板上に実装されているZero Wが適しています。それにより、Raspberry Pi Zeroに接続するのは電源ケーブルのみとできるからです(セットアップ時にはディスプレイ等の接続が必要ですが)。

適した応用例としては、キャタピラ式模型に搭載し模型をコントロールするような用途(10章)があります。それにより、小型化、省電力化が図れる、というわけです。これは、Raspberry Pi Zero シリーズに限らず、下図(右)のRaspberry Pi Model A+にも同じことが言えます。

Raspberry Pi Zero v1.2(左)とRaspberry Pi Model A+ (右)

おわりに

Raspberry Pi Zero シリーズで本書の演習を実行するにはどうしたらよいか、解説しました。使いはじめるまでにはんだづけが必要であったり、新たな物品を購入しなければならないなど、ハードルはやや高いと言えるでしょう。

しかし、Raspberry Pi Zeroのサイズの小ささは、アイディア次第で面白く使えそうです。腕に覚えのある方はチャレンジしても良いかもしれません。