2019年12月31日火曜日

「カラー図解 最新 Raspberry Piで学ぶ電子工作」補足情報トップ

はじめに

本ページは、金丸隆志著「カラー図解 最新 Raspberry Piで学ぶ電子工作」(講談社ブルーバックス)の補足情報をまとめるためのページです。

まず、書籍のサンプルファイル、回路配線図(PDF)、応用演習(PDF)が必要な方は、下記の公式サポートページからダウンロードしてください。

パーツセット

書籍59ページにて紹介した秋月電子通商さまによるパーツセットはこちらです。
なお、小型液晶 (LCD)は含まれておりませんのでご注意下さい。
書籍の9章までの演習 (ただし、LCDを用いる7.3および7.4と、オプション扱いでカメラモジュールを用いる5.6は除く) を行えます。

なお、上記以外にamazonなどで本書の名前を冠したパーツセットが取り扱われておりますが、どれも著者や出版社および秋月電子通商様が関わった商品ではありませんので、ご注意ください。

補足情報一覧

以下では、Raspberry PiのOSの更新に伴う内容の変更や、正誤情報などを記していきます。
さらに、Raspberry Piをより便利に使うための情報が下記になります。

旧版の記事へのリンク

本書の旧版「Raspberry Piで学ぶ電子工作」のサポートページには、新版の読者の方にも役立つ記事がいくつかあります。それらへのリンクを貼ります。
現在でも動作するようメンテナンスは継続しています。

感想など


2019年12月30日月曜日

本書の補足情報

ここでは、本書の補足情報や、OSのバージョンアップに伴う変更点などを記していきます。

はじめに

回路配線図について

本書では、公式サイトより回路の配線図のPDFをダウンロードできます。 その回路配線図をWindowsやOS X上のAdobe Readerで閲覧する際、「編集」→「環境設定」を選択し、下図のように「細い線を拡張」のチェックを外すと、より綺麗な配線図を見ることができます。


チェックを外す前後の配線図の状態を示したのが下図です。「細い線を拡張」のチェックを外した方が図がきれいに表示されているのがわかるでしょう。

なお、この設定はPDFの印刷の際には影響しないはずです。

回路配線図をRaspberry Pi上で見る場合

回路配線図をRaspberry Pi上で見る場合、古いRaspbianではChromiumブラウザ上で日本語が表示されないことが多いと思います。その場合、一旦PDFファイルをRaspberry Pi上にダウンロードし、デスクトップメニューの「アクセサリ」→「PDF Viewer」から開くようにしてください。 PDFファイルをRaspberry Pi上にダウンロードする方法は、「一旦Chromiumブラウザで開いてから画面上のダウンロードボタンを押す」か「リンク上で右クリックして『名前を付けてリンク先を保存』を選択」のどちらかです。
新しいRaspbianではChromiumブラウザ上でPDFを見ても日本語が表示されます。

2章

p.31:Raspberry PiのバージョンおよびRaspberry Pi Zeroシリーズについて

下記のように、現在までに様々なバージョンのRaspberry Piが発売されています。

Model B系 Raspberry Pi 3 Model B+ (Pi 3 B+) (秋月電子通商/ スイッチサイエンス)
Raspberry Pi 3 Model B (Pi 3 B) (秋月電子通商/ スイッチサイエンス)
Raspberry Pi 2 Model B (Pi 2 B) (秋月電子通商/ スイッチサイエンス)
Raspberry Pi Model B+ (Pi 1 B+) (スイッチサイエンス)
Zero系 Raspberry Pi Zero W (Pi Zero W) 無線機能あり。
(スイッチサイエンス)
Raspberry Pi Zero WH (Pi Zero WH) Zero Wにピンヘッダを半田づけしたもの。
(秋月電子通商/ スイッチサイエンス)
Raspberry Pi Zero (Pi Zero) 旧バージョンもあるがカメラが使えるのはV1.3のみ。
(スイッチサイエンス)
Model A系 Raspberry Pi 3 Model A+ (Pi 3 A+) Pi 3 B+から有線LAN、USBポート数を減らし、
メモリを1GBから512MBに減らしたもの。
Raspberry Pi Model A+ (Pi 1 A+) Pi 1 B+から有線LAN、USBポート数を減らし、
メモリを512MBから256MBに減らしたもの。
(秋月電子通商/ スイッチサイエンス)

書籍でも記したように、性能が高いバージョンの方が学習が快適に進むでしょう。上の表では「Model B系」の上部のもの、すなわちPi 3 B+、Pi 3 Bなどが該当します。

「Model A系」と呼ばれる、「Model B系」をコンパクトにしたシリーズもありますが、これらはUSBポート数やメモリ容量が少ないため、初めてRaspberry Piを使うという方にはお勧めしません。メモリが少ないと、ブラウザによるインターネットの閲覧など、通常のPCとしての用途で動作が遅くなることがあるのです。

一方、安さやコンパクトさという点で、Raspberry Pi Zeroシリーズに注目している方も多いでしょう。性能という点では、Pi Zeroシリーズは Model B系のPi 3 Bなどにくらべてかなり劣りますので、本書のようにGUIを使ったデスクトップで学ぶのには必ずしも適していません。

とはいえ、Pi Zeroシリーズでも本書の演習を行うことはできます。その方法は以下のページに記されていますので参考にしてください。
なお上記ページは本書の旧版用のページへのリンクなのですが、新版である本書にも当てはまる内容が記されています。

p.33:microSDカードのサイズについて

書籍では「8GB以上のmicroSDカード」と記しましたが、OSであるRaspbianのバージョンが上がるに従い、必要なmicroSDカードの容量も増えておりますので16GB~32GBのものを推奨します。なお、64GB以上のサイズのmicroSDカードは、exFATという形式でフォーマットされており、Raspberry Piが起動しませんので、16GB~32GBのmicroSDカードを用意するのが良いでしょう。

p.41:NOOBSのバージョンについて

本書の出版以降、以下のように新しいバージョンのNOOBSがリリースされています。

2016/9/23NOOBS 1.9.3Jessie
2016/10/5NOOBS 2.0.0
2016/11/29NOOBS 2.1.0
2017/2/27NOOBS 2.2.0
2017/3/3NOOBS 2.3.0
2017/4/10NOOBS 2.4.0
2017/6/23NOOBS 2.4.1
2017/7/5NOOBS 2.4.2
2017/8/17NOOBS 2.4.3Stretch
2017/9/8NOOBS 2.4.4
2017/11/29NOOBS 2.4.5
2018/3/14NOOBS 2.6.0
2018/3/14NOOBS 2.7.0
2018/4/18NOOBS 2.8.0
2018/4/24NOOBS 2.8.1
2018/6/27NOOBS 2.8.2
2018/10/11NOOBS 2.9.0
2018/11/15NOOBS 3.0.0
2019/4/8NOOBS 3.0.1
2019/6/24NOOBS 3.1.1Buster
2019/7/10NOOBS 3.2.0

OSのベースバージョンはJessie→Stretch→Busterと移り変わっています。

全てのバージョンで動作確認していますが、Buster系列はまだリリースされて日が浅いのでトラブルがあるかもしれません。古いバージョンを用いたい場合は JAISTのミラーサイトから日付を頼りに探すのがよいでしょう。

p.41:パッケージやfirmwareを更新したRaspbianについて

「sudo apt upgrade」により、インストールされたアプリケーションのパッケージを更新したり、「sudo rpi-update」によりfirmwareを更新したRaspbianはサポートの対象外とします。その理由は下記の通りですのでご了承ください。
  • パッケージやfirmwareは日々変化しており、タイミングによってはバグを含んだパッケージがインストールされることもあること(実際、その問題によりトラブルの原因発見に時間がかかったことがあります)
  • 同じ理由で、読者の方の環境と筆者の環境を一致させることが難しいこと

p.46:NOOBS でのOSの選択について

2017年4月にリリースられたNOOBS 2.4.0以降では、インストール時のOSの選択肢として下図のように「LibreELEC_RPi2」と「Raspbian with PIXEL」の2種類が現れるようになりました。下図のように「Raspbian with PIXEL」にチェックを入れて作業を進めてください。なお、RaspbianとLibreELECの表示の順番はNOOBSのバージョンにより異なることがありますのでご注意ください。



p.44:SDメモリーカードフォーマッターについて

SDメモリーカードフォーマッターを用いたSDカードのフォーマットに関する注意です。 書籍執筆時は、バージョン4でしたが、現在、バージョン5に上がっています。

古いSDメモリーカードフォーマッター4を用いてRaspberry Piで一度用いたSDカードをフォーマットする場合、 最近のNOOBS (Raspbian)では 「一度目のフォーマットに失敗し、二度目のフォーマットで成功する」ようになっていました。
細かく言えば、「一度目でパーティション(ドライブのようなもの)が統合され、二度目でフォーマットに成功する」 状態です。
二度目のフォーマットで成功するため大きな問題はありませんが、 SDメモリーカードフォーマッターをバージョン5にアップグレードすると、一度でフォーマットに成功するようになりましたので、 気になる方はお試しください。

p.48: セットアップウィザードの起動 (NOOBS 2.8.2以降)

NOOBS 2.8.2以降では、Raspbianの初回の起動時、下図のようなセットアップウィザードが起動します。ここではこのアプリケーションに従って設定を行う方法を記していきます。もし、NOOBS 2.8.2より以前のRaspbianをお使いの場合、書籍で解説したように設定アプリケーションで設定を行ってください。

セットアップウィザードに従って設定を進めるには、まず「Next」ボタンをクリックします。

次に、「Set Country」と書かれた、国を設定する画面が現れますので、「Country」を「Japan」に設定しましょう。選択肢はアルファベット順に並んでいます。

すると、「Langage」が「Japanese」に、「Timezone」が「Tokyo」に自動的に変わるはずです。

以上のようにセットした後、「Next」をクリックします。


ここで、デフォルトのパスワードの変更が求められます。
デフォルトで、ユーザー名は「pi」、パスワードは「raspberry」とセットされています。
これを好みのパスワードに変更することができます。

変更する場合、下記の2つのエリアに変更したパスワードを2回入力します(この時点でキーボードは日本語キーボードとして設定されています)。
もし、デフォルトのパスワードから変更しない場合、2つのエリアは空白のままで構いません。

「Next」をクリックします。


次に、NOOBS 3.0.1 以降ではスクリーンの範囲を広げるかどうかの設定を行います。もし、Raspbianのデスクトップ領域がディスプレイ全体の領域より狭い場合、ここで「This screen shows a black border around the desktop」にチェックを入れると、再起動後に画面が広がる可能性があります。

なお、この設定は後からでも行えます。詳細は「p.48:デスクトップが液晶パネルより狭く表示される場合について」をご覧ください。「Next」で次に進みます。


ここで、Wifiの設定が行えます。これは後でも行えますので、「Skip」をクリックしてスキップしても構いません。
もし設定を行いたければ、「Next」をクリックします。


上の画面で「Next」をクリックした場合は、下図でWifiのパスワードの入力が求められます。入力したら「Next」をクリックします。


Wifiの設定が「Skip」かパスワードの入力かで完了すると、アップデートの確認をするかどうか問われます。ここは「Skip」をクリックしてスキップします。


以上でセットアップウィザードは終了です。「Reboot」ボタンをクリックすると再起動が始まります。


以上でほとんどの設定が終わりました。 なお、以上のセットアップウィザードは初回の起動時に用いるものですから、これ以後は書籍で解説した設定アプリケーションを用いてください。

p.48:NOOBS 1.9.3以降のデスクトップについて

NOOBS 1.9.3以降に含まれるRaspbianでは、下記のように、デスクトップやアイコンのデザインが一新されました。また、ブラウザがGoogle ChromeのベースとなったChromiumブラウザに変更されています。しかし、デザイン以外の変更はあまり大きくありませんので、書籍の指示のまま変更の必要がない部分がほとんどです。

もし最新のNOOBSを用いて違和感を感じる部分があったら、下記に補足や注意点がないか、チェックしてみてください。



p.48:デスクトップが液晶パネルより狭く表示される場合について

デスクトップが開いたとき、下図(A)左のように、液晶パネルより狭い範囲にデスクトップが表示されることがあります。


そのような場合、設定アプリケーションの「システム」→「オーバースキャン」を「無効」にしてRaspberry Piを再起動すると、上図(A)右のように画面がいっぱいに使われることが多いでしょう。ただし、上図(B)のように、液晶テレビの場合にこの設定を行うと、液晶パネルからはみ出してデスクトップが表示されてしまうことがあります。これが気になる方は、「オーバースキャン」を「有効」に戻して再起動した方がよいでしょう。



p.50:設定アプリケーションを用いたキーボードの設定について

ここでは、設定アプリケーションを用いたキーボードの設定について整理します。まず、書籍の図2-16の設定アプリケーションで 「Localisation(ローカライゼーション)」タブの「Set Keyboard」ボタンをクリックします。

ここから先のキーボードの設定項目の外観は、NOOBS (Raspbian)のバージョンにより異なります。
まずは2018年6月にリリースされたNOOBS 2.8.2での設定方法を記します。
現れたウインドウで、「Model」を「Generic 105-key (Intl) PC」に、「Layout」を「Japanese」に、「Variant」を「Japanese(OADG 109A)」にセットし、OKボタンを押してください。

バージョン2.8.2以前の NOOBS (Raspbian)の場合、現れたウインドウで、「Country」を「Japan(日本)」に、「Variant」を「Japanese(OADG 109A)(日本語(OADG 109A))」にセットし、OKしてください。

以上で日本語109キーボードに設定されます。

p.50:無線LANの国設定変更

Raspberry Pi 3 Model B+ では、「無線LANの国設定」を日本に合わせないと無線LANが有効になりません。その設定は、新設定アプリケーションにより下記の手順で行います。
  • 「Localisation(ローカライゼーション)」タブの「Set WiFi Country(無線LANの国設定)」ボタンをクリック
  • 現れたウインドウで、「Country(国)」を「JP Japan」にセット

p.51:日本語フォントのインストールについて

NOOBS 1.4.2~1.9.2およびNOOBS 2.4.3にはデフォルトで日本語フォントが含まれておらず、「2.4.7 日本語フォントのインストール」節のようにネットワークから日本語フォントをインストールする必要があります。

ただし、NOOBS 1.9.3~NOOBS 2.4.2およびNOOBS 2.4.4~には日本語フォントは含まれておりますので、2.4.7節を飛ばして2.4.8に進んで頂いても文字化けは起こりません。

p.53:シャットダウン時のLEDの状態について

Raspberry Pi 3をシャットダウンした後のLEDの状態について、本書では「ACTの点滅後、緑色に点灯した状態になります」と記しました。

NOOBS 1.9.3およびNOOBS 2.0.0以降では、Raspberry Pi 3のシャットダウン後にACTは消灯状態になりますのでご注意ください。なお、これはRaspberry Pi 2などと同じ挙動です。

3章

p.59:秋月電子通商のパーツセットについて

なお、小型液晶 (LCD)は含まれておりませんのでご注意下さい。
書籍の9章までの演習 (ただし、LCDを用いる7.3および7.4と、オプション扱いでカメラモジュールを用いる5.6は除く) を行えます。

なお、上記以外にamazonなどで本書の名前を冠したパーツセットが取り扱われておりますが、どれも著者や出版社および秋月電子通商様が関わった商品ではありませんので、ご注意ください。

4章

p.85:NOOBS 2.8.2~NOOBS 3.0.1におけるIDLEの通常起動について

NOOBS 2.8.2~NOOBS 3.0.1では、デスクトップのメニューから「Python 2 (IDLE)」の項目が削除されました(下図)。そのため、IDLEを起動するためにはいくつかの準備が必要となりました。その準備について解説します。

なお、NOOBS 3.1.1以降ではまた別の方法が必要なので、このまま画面をスクロールして「p.85:NOOBS 3.1.1以降におけるIDLEの起動方法について」をご覧ください。

さらに、IDLEではなくThonny Python IDEという新しい開発環境を用いてプログラムを実行する方法もあります。そちらに興味のある方はこのまま画面をスクロールして「p.85:Thonny Python IDEでの本書の演習の実行について」をご覧ください。


まず、LXTerminal (ターミナル)上のコマンドによりPython 2用のIDLEを起動する方法を解説します。ターミナルを起動し、下記のコマンドを実行してみてください。
idle &
Python 2用のIDLEが起動するでしょう。

次に、メニュー上に「Python 2 (IDLE)」の項目を復活させる方法を解説します。まず、ターミナルで下記のコマンドを実行し、管理者権限のテキストエディタleafpadでメニュー用設定ファイルを開きます。
sudo leafpad /usr/share/raspi-ui-overrides/applications/idle.desktop
このファイルの末尾に
NoDisplay=true
と書かれた行が存在しますので、これを
NoDisplay=false
と編集してください。そして、テキストエディタleafpadでファイルを上書き保存した後、Raspberry Piを再起動してください。メニューに「Python 2 (IDLE)」の項目が復活しているでしょう。

なお、メニューにある「Python 3 (IDLE)」はPython 3用ですが、Python 3系を用いるのであれば、メニューにあるThonny Python IDEを用いた方が良いかもしれません。その場合、ページをスクロールして「p.85:Thonny Python IDEでの本書の演習の実行について」をお読みください。

p.85:NOOBS 3.1.1以降でのIDLEの起動方法について

ここでは、NOOBS 3.1.1以降でIDLEを用いる方法について解説します。ネットワークに接続してIDLEをインストールする必要があります。この時点でまだRaspberry Piをネットワークに接続していない方は、Thonny Python IDEを用いる方法もあります。そちらを希望される場合はこのままページをスクロールして「p.85:Thonny Python IDEでの本書の演習の実行について」をご覧ください。

さて、IDLEをインストールするには、LXTerminal (ターミナル)上を起動し、下記の2つのコマンドを一つずつ順番に実行してください。コマンドをこのページから一つずつコピーしてターミナル上に貼り付けて実行するのが安全です。
sudo apt update
sudo apt install idle-python2.7
このインストールにより、LXTerminalで
idle &
とコマンドを実行することでIDLEを実行できます。

現時点では、メニューにIDLEを表示する方法はなさそうです。

なお、Python 3系のIDLEを用いたければパッケージ idle-python3.7 をインストールすれば良いのですが、Python 3系を用いるのであれば、メニューにあるThonny Python IDEを用いた方が良いかもしれません。次項をそのままお読みください。

p.85:Thonny Python IDEでの本書の演習の実行について

上の項目で記したように、RaspbianでIDLEを用いてPythonプログラムを実行するのは面倒な手続きが必要になってきました。
ここでは、より簡単にPythonプログラムを実行する方法として、デフォルトでインストール済の「Thonny Python IDE」を用いる方法を紹介します。

Thonny Python IDEはpython3用のプログラムを実行するための環境なのですが、本書のプログラムはPython3での実行をサポートしていますので問題なく実行できます。
なお、Python2 と Python3の違いを知りたい場合は次項の「p.85:Python2とPython3について」も合わせてお読みください。

さて、メニューの下図に示されている「Thonny Python IDE」をマウスでクリックするとThonny Python IDEが起動します。


次図のように、「LOAD」がファイルの読み込み、「RUN」がプログラム実行、「STOP」がプログラム停止であることを理解すれば問題なく利用できるでしょう。


なお、本書では8.6章でサーボモータを用いる場合に管理者権限が必要となります。その場合、管理者権限のThonnyでプログラムを読み込んで実行する必要があります。 その方法は、LXTerminalを開いてから下記のコマンドを実行してください。
sudo thonny &
管理者権限のThonnyが現れるので、8.6章のファイルを読み込んで実行してください。

p.85:Python2とPython3について

ここからは、Python 2とPython 3の違いについて解説を加えますので、興味のある方はお読みください。

まず、本書で用いるプログラミング言語はPythonですが、Pythonにはバージョン2 (Python 2) とバージョン 3 (Python 3)が存在します。

Python 3の方が新しいのですが、両者には互換性が保たれていないところがあり、Python 2からPython 3への移行はなかなか進んでいません。そのため、多くのシステムではPython 2とPython 3を共存させています。

実際、Raspberry Pi上で動作するRaspbianでは、2012年のリリース以来下記のようにPython 2とPython 3および対応コマンドが共存しています。

項目Python2用コマンドPython3用コマンド
プログラム実行コマンドpython または python2python3
IDLE実行コマンドidleidle3
Thonny実行コマンドなしthonny
Python用プログラムインストールコマンド(本書では用いない)pipまたはpip2pip3

本書のプログラムは、Python2 と Python3 のどちらで実行しても問題が起こらないよう記述していますので、上記の違いを意識せず演習を進められます。
とはいえ、プログラム実行時に自分がPython2 と Python3 のどちらで実行しているかを意識するとPythonプログラムにより早く慣れることができるでしょう。

p.88:NOOBS 1.9.3におけるIDLEのデフォルトフォントについて

NOOBS 1.9.3に含まれるRaspbianでIDLEを起動し、プログラム04-02-led.pyを開くと下図(左)のようになります。

このバージョンでは、デフォルトのフォントとしてプロポーショナルフォント(文字により太さが異なるフォント)が用いられてしまっています。そのため、下図(左)の注釈に示したように、本来4個または8個ある空白文字(スペース)の個数が非常に少なく見えてしまっています(本書p.88の図4-9と比べてください)。

Pythonでは空白文字の個数による字下げの区別は重要ですので、空白文字の個数が一目でわかるフォントを用いるべきです。

そのために、IDLEのメニューにある「Options」→「Configure IDLE」を選択し、「DejaVu Sans Mono」や「Droid Sans Mono」のように、名前に「Mono」が含まれるフォントを選んでください。下図(右)のように等幅フォントが選択され、空白の個数がよくわかるようになります。


6章

p.141:半固定抵抗の回転の向きについて

本書では、半固定抵抗として秋月電子通商の「半固定ボリューム 10kΩ」を用いて解説をしています(パーツセットに含まれるものです)。

半固定抵抗は、製品の種類によって、AD変換により得られた値が大きくなる回転の向きが異なることがあります。

そのような場合、下図のように、3.3VとGNDへの接続を逆にすると良いでしょう。

7章

7章全般:本書のプログラムで利用できるLCDについて

2017年4月に、秋月電子通商さんよりRaspberry Piで利用可能なLCDのモジュールキットが販売開始され、さらに2017年6月にはその完成版が販売開始されましたのでここで紹介します。なお、キットの方は狭いピッチ(ピン間隔)の半田付けが必要になりますので、半田付けにある程度慣れている方向けとなります。商品へのリンクは下記になります。
組み立てキットに含まれるパーツを図示したのが下図(左)となっています。ピンソケットが2種含まれていますので、お好みの方を半田付けします。 完成品にはLCDを立てて使うためのピンソケットがあらかじめ取り付けられているようです。

なお、本書のようにブレッドボードで利用するためには、組み立てキットに下図(中)のようにピンヘッダを別途購入して半田付けすることをお勧めします。ピンヘッダとは、例えば下記のようなものです。丁度のサイズのものを購入するよりは、長いものを購入してニッパでカットするのが一般的です。

ピン配置は本書のものとは異なり、上図(右)のようになっています。

利用例は下図のようになっています。下図(左)がピンソケットを用いた場合で、Raspberry PiのGPIO(3.3V/SDA/SCL/GPIO4/GNDと続くピン)に直接させるようになっています。完成品ではLCDを立てて使うようなピンソケットとなっています。ただし、これではGPIOのピンの一部が利用できなくなってしまいますので、「オス-メス ジャンパワイヤ」を介してGPIOに接続するのがお勧めです。

また、本書で紹介したLCDとは異なり、文字の表示サイズが8文字×2行となっていることも見て取れるでしょう。 本書のプログラムを8x2の液晶で用いるためには、少しだけ変更が必要です。LCDを用いるプログラムには下記のようにLCDのコントラストや文字数を設定している行があります。これらは16x2の液晶であることを示しています。
contrast = 36 # 0から63のコントラスト。30から40程度を推奨
chars_per_line = 16 # LCDの横方向の文字数
display_lines = 2   # LCDの行数
これを下記のように横方向の文字数を8に変更して保存すれば完了です。お好みで、コントラストの大きさを変更するのも良いでしょう。
contrast = 36 # 0から63のコントラスト。30から40程度を推奨
chars_per_line = 8 # LCDの横方向の文字数
display_lines = 2   # LCDの行数


ピンヘッダを用いて作成したLCDならば本書のようにブレッドボートで利用可能です。その様子を示したのが下図(右)です。なお、基板の「LED」ピンを3.3Vに接続すると、図のようにLCDのバックライトが点灯した状態になります。お好みで利用してください。ピンソケットでGPIOに直接差したLCDならば、GPIO 4をHIGHにすることでバックライトが点灯します。なお、バックライトを利用するには、LCDを基板に半田付けする際に2か所の四角いピンも半田付けする必要がありますのでご注意ください。

8章

p.209:WiringPi-Pythonのインストールコマンド

書籍に記したように、WiringPi-Pythonをインストールするためのコマンドをコピーできる形で掲載します。

なお、一度WiringPi-Pythonのインストールなどに失敗している方は、以前のインストール用ファイルを削除してからの方が安全です。そのためには、ターミナルを起動して下記のコマンドを実行します。
rm -rf WiringPi-Python
そして、WiringPi-Pythonのインストール用コマンドを順に実行していきます。 下記のコマンドをブラウザで1行ずつコピーし、ターミナルソフトウェアLXTerminalへ貼り付けて1つ1つ実行するとトラブルが少ないでしょう。コピーはブラウザ上でキーボードで「Ctrl+c」、貼り付けはLXTerminalのメニューから「編集」→「貼り付け」(またはCtrl+Shift+v)です。なお、行頭の「(1)」などの数字はコピーする必要はありませんのでご注意ください。

また、長いコマンドのため横方向にスクロールさせないとコマンド全体をコピーできないものがあることにも注意してください。
(2019.4.9: python2用とpython3用の両方をインストールするようコマンドを追加しました)
(1) sudo apt update
(2) sudo apt install python-dev python-setuptools python3-dev python3-setuptools swig
(3) git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
(4) cd WiringPi-Python/WiringPi
(5) wget https://raw.githubusercontent.com/neuralassembly/raspi/master/wp-pi4.patch
(6) patch -p2 -i wp-pi4.patch
(7) sudo ./build
(8) cd ..
(9) swig -python wiringpi.i
(10) sudo python setup.py install
(11) sudo python3 setup.py install

p.212:WiringPi-Pythonを用いたプログラムの実行について

最近のNOOBSに含まれるRaspbianでは、多くの電子工作プログラムの実行には管理者権限が不要になりました。
しかし、WiringPi-Pythonを用いる08-04-servo.pyの実行には今でも管理者権限が必要です。
正確には、精度の高いPWM(ハードウェアPWM)を用いるプログラムの実行には管理者権限が必要です。

用いている実行方法により下記のどれかのコマンドの実行が必要となります。
管理者権限のIDLEで実行
sudo idle &
管理者権限のThonnyで実行
sudo thonny &
管理者権限のPython2コマンドで実行
sudo python 08-04-servo.py
管理者権限のPython3コマンドで実行
sudo python3 08-04-servo.py

9章

p.223:WebIOPiのダウンロードについて

WebIOPiのダウンロードサイトでは、Cayenneというソフトウェアのダウンロードが可能になっていますが、書籍に記した通りWebIOPi 0.7.1をダウンロードし、インストールを行ってください。

p.224:WebIOPiのインストールコマンド

WebIOPiをインストールするためのコマンドはやや長く、写し間違えると正しくインストールが行なわれません。 下記にコピーできる形で再掲しますので、ブラウザで表示して1行ずつコピーし、ターミナルソフトウェアLXTerminalへ貼り付けて1つ1つ実行していけばトラブルが減るでしょう。コピーはブラウザ上でキーボードで「Ctrl+c」、貼り付けはLXTerminalのメニューから「編集」→「貼り付け」(またはCtrl+Shift+v)です。なお、行頭の「(1)」などの数字はコピーする必要はありませんのでご注意ください。なお、(1)のコマンドの実行する前に、p.223の指示に従ってWebIOPi-0.7.1.tar.gzをダウンロードし、ユーザーpiのホームに移動しておく必要がありますのでご注意ください。
(1) tar zxf WebIOPi-0.7.1.tar.gz
(2) cd WebIOPi-0.7.1/
(3) wget https://raw.githubusercontent.com/neuralassembly/raspi2/master/webiopi-pi2bplus.patch
(4) patch -p1 -i webiopi-pi2bplus.patch
(5) sudo ./setup.sh
(5)の処理が終わると最後に「Do you want to access WebIOPi over Internet ? [y/n]」という質問をされますので、キーボードで「n」を入力したあとEnterするのでした。 その後、OSとしてJessieおよびStretchをお使いの方は下記のコマンド(p.226のコマンド)を実行し、起動用ファイルを適切な位置に配置します。これでWebIOPiのインストールは完了です。
(1) wget https://raw.githubusercontent.com/neuralassembly/raspi/master/webiopi.service
(2) sudo mv webiopi.service /etc/systemd/system/
なお、上記の手順でWebIOPiをインストールしてもp.234の図9-5において「IN/OUT等が現れるはずのボタンに文字が現れず灰色のまま」という場合、 まずはWebIOPiの再インストールを試してみましょう。そのためには、ターミナルを起動して下記のコマンドで過去のインストールファイルを一旦削除します。
sudo rm -rf WebIOPi-0.7.1
その後、もう一度上記のコマンドでWebIOPiをインストールします。 それでも症状が改善されない場合、原因はわかりませんが、OSであるRaspbianが壊れているという可能性もないとは言えません。余力があればOSを再インストールしてみることも検討してみると良いでしょう(私自身、OSの再インストールが必要だったことはないのですが、読者の方にはそれで改善したという方が複数名いらっしゃるようです)。

p.236:WebIOPi用サンプルファイルの/usr/share/webiopi/htdocsディレクトリへのコピー

236ページでは、本書のサンプルファイルを/usr/share/webiopi/htdocsディレクトリへコピーするという作業を行います。 この作業は重要であり、これに失敗すると、以後の演習が期待通りに動作しません。そこで、コピーして利用できるよう、 そのコマンドをここに再掲します。 ターミナルソフトウェアLXTerminalを起動して、下記の2コマンドを一つずつ順に実行してください。
sudo chown -R pi /usr/share/webiopi/htdocs
cp -r 09-samples/bb /usr/share/webiopi/htdocs
なお、本書のサンプルファイルをbluebacksディレクトリに展開した方は、上記2コマンド実行の前に「cd bluebacks」コマンドを実行して bluebacksディレクトリに入り、その後2コマンドを実行するようにしてください。

p.240:/etc/webiopi/config の myscript行

9.3以降の演習は設定ファイル /etc/webiopi/config の[SCRIPT]セクションに、Pythonスクリプトの場所を示す行を記す必要があります。 記述に間違いがあるとWebIOPiが起動しませんので、コピーできるように正しい記述を以下に記しておきます。
myscript = /usr/share/webiopi/htdocs/bb/01/script.py

10章

p.285:/etc/rc.localに追加する1行

LCDにIPアドレスを表示するプログラムの自動起動のために/etc/rc.localに追加する行は下記の通りです。必要に応じてコピーしてご活用ください。
sudo python /home/pi/07-02-LCD.py $_IP &
サンプルファイルをbluebacksディレクトリに保存した場合は下記になるのでしたね。
sudo python /home/pi/bluebacks/07-02-LCD.py $_IP &

p.288:/etc/rc.localに追加する1行

シャットダウンプログラムの自動起動のために/etc/rc.localに追加する行は下記の通りです。必要に応じてコピーしてご活用ください。
sudo python /home/pi/10-01-sw-poweroff.py &
サンプルファイルをbluebacksディレクトリに保存した場合は下記になるのでしたね。
sudo python /home/pi/bluebacks/10-01-sw-poweroff.py &

p.288:キャタピラ式模型のメンテナンス

キャタピラ式模型を長く使っていると、だんだん動作が安定しなくなってくることがあります。例えば「右のキャタピラは正常動作するが、左はなかなか動かない」などです。

もちろん、「ジャンパーワイヤーが抜けていないか」など、回路の配線をまずはチェックすべきです。 しかし回路の配線に問題がなかった場合、どこに注意してメンテナンスすべきかを以下に記します。上から順にチェックしていきましょう。
  1. 電池の残量不足ではないかチェック:基本ではありますが、まずはここからチェックしましょう。
  2. ギアボックスで空回りしているシャフトがないかチェック:ギアボックスの作成の際、イモネジを六角レンチで締めてシャフトを固定している部分があります。そこが緩んで空回りしていないかチェックしましょう。
  3. モーターの軸が空回りしていないかチェック:モーターの軸にはピニオンギアが取り付けられています。ピニオンギアが劣化してゆるくなり、モーターの軸が空回りすることがあります。これはモーターをギアボックスから取り外してみないとわかりません。ピニオンギアがゆるくなっていた場合、「AO-7005 8Tピニオンセット白(10個)」などを購入して交換しましょう。
  4. モータードライバーのチェック:回路には左右のキャタピラ用のモータードライバーが二つあります。これをブレッドボート上で交換して、左右のキャタピラの動きの軽快さが入れ替わるかどうか試してみましょう。動きの軽快さが入れ替わるならば、モータードライバのどちらかに問題がある可能性がありますので、新品の「モータードライバー TA7291P (2個入)」を購入して交換してみるのも手です。
  5. モーターのチェック:上で二つのモータードライバーを交換しても左右のキャタピラの動きの軽快さが入れ替わらなかった場合、モーターに問題がある可能性があります。新品の「AO-1001 FA-130タイプノーマルモーター」を購入して交換してみるのも手です。

p.288:キャタピラ式模型に搭載したままRaspberry Piを用いる

キャタピラ式模型の演習中、トラブルなどでファイルを変更したくなることはあるものです。 そのような場合、Raspberry Piにもう一度ディスプレイ、キーボード、マウスを接続して変更することになりますが、やや面倒な操作になりますよね。

また、キャタピラ式模型の演習が終わった後、キャタピラ式模型に搭載したままRaspberry Piを使いたいという方もいるでしょう。

そこで、キャタピラ式模型に搭載したままRaspberry Piを使用する方法を2種類紹介したページを作成しましたので、リンクを貼ります。
ややハードルが高いかもしれませんが、どちらも身につける価値はある方法です。

p.290:mjpg-streamerのインストールコマンド

mjpg-streamerをインストールするためのコマンドやや長く、写し間違えると正しくインストールが行なわれません。 下記にコピーできる形で再掲しますので、ブラウザで表示して1行ずつコピーし、ターミナルソフトウェアLXTerminalへ貼り付けて1つ1つ実行していけばトラブルが減るでしょう。コピーはブラウザ上でキーボードで「Ctrl+c」、貼り付けはLXTerminalのメニューから「編集」→「貼り付け」(またはCtrl+Shift+v)です。なお、行頭の「(1)」などの数字はコピーする必要はありませんのでご注意ください。
(1) sudo apt update
(2) sudo apt install libjpeg8-dev cmake
(3) git clone https://github.com/jacksonliam/mjpg-streamer.git
(4) cd mjpg-streamer/mjpg-streamer-experimental
(5) make
(6) cd
(7) sudo mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer
なお、mjpg-streamerのインストールに一度失敗し、その後何度試行錯誤してもうまくいかない、という方は、上記の7つのコマンドの実行前に、下記の2コマンドにより過去にインストールしたmjpg-streamerを一度削除した方が安全かもしれません。ターミナルLXTerminalを起動した直後の状態で順に実行してください。
(1) sudo rm -rf /opt/mjpg-streamer
(2) rm -rf mjpg-streamer
また、mjpg-streamerの自動起動のために/etc/rc.localに追加する行は下記の通りです。必要に応じてコピーしてご活用ください。
sudo sh /home/pi/10-02-stream.sh
サンプルファイルをbluebacksディレクトリに保存した場合は下記になるのでしたね。
sudo sh /home/pi/bluebacks/10-02-stream.sh

p.292:mjpg-streamerの映像が表示されない場合のチェック項目

mjpg-streamerによる映像が表示されない場合、下記をチェックしましょう。
  1. カメラの接続は正しいか(金属が露出した端子面がmicroSDカード側)(→5.6で解説)
  2. メニューから「設定」→「Raspberry Piの設定」→「インターフェイス」→「カメラ」が「有効」になっているか(→5.6で解説)
  3. mjpg-streamerのインストールが適切か(→本ページの「p.290:mjpg-streamerのインストールコマンド」)
  4. mjpg-steamerの起動命令が適切か(→本ページの「p.290:mjpg-streamerのインストールコマンド」の末尾)
それ以外には「IPアドレスは正しいか」、「アドレスの末尾には『/』(スラッシュ)をつけているか」もチェックしてください。これらは、WebIOPiを用いた他の演習と同じですね。

付録B

p.305 圧縮されたサンプルファイルの展開に関する注意

2019年6月にリリースされたNOOBS 3.1.1に含まれるRaspbianでは、圧縮ファイルを展開するためのソフトウェアのデフォルトの設定が変化しましたので利用の際は注意が必要です。
下図(左)のように、展開先のデフォルトが「/tmp」とされ、また、展開時に自動的にフォルダが作られるようになっています。
これを、下図(右)のように
  • 展開先に「 /home/pi 」または「 /home/pi/bluebacks 」と記入
  • 「Ensure a containing directory」のチェックを外す
の2点を行ってから「展開」ボタンを押すようにしましょう。展開先に記す文字は、このページからコピー (Ctrl-c) して貼り付ける (Ctrl-v) と安心です。



付録E

p.312:Windows + Bonjourによるraspberrypi.localへの接続について

付録に記したように、WindowsにiTunesをインストールすると、Bonjourというソフトウェアがインストールされ、その働きにより、「raspberrypi.local」という名称でのRaspberry Piへのアクセスが可能になるのでした。しかし、Windows 10 に対して2018年4月にリリースされたApril 2018 Updateを適用すると、この方法でのアクセスが一時的にできなくなるようです。

WindowsからiTunesとBonjourを一旦削除してからiTunesをインストールしなおすとまた使えるようになるようですのでこの問題に直面した方はお試しください。

応用PDF

PDF11:spidevを用いてAD変換を行うプログラムについて

追加PDFでは、spidevとADコンバータMCP3208を用いてAD変換を行うプログラム06-04-spidev.pyを紹介しました。
kernel 4.9.43以降 (NOOBS 2.4.5 以降) のRaspberry Piでは、執筆時の06-04-spidev.pyはそのままでは動作しません。具体的には、kernelの変更により、プログラム内で「spi.max_speed_hz = 1000000」のように最大周波数の設定が必要になったのです。

2019/6/25にアップロードしたサンプルファイル (raspi1-sample.zip) にはこの問題に対応したバージョンが含まれていますので、エラーが出るという方は公式サイトよりraspi1-sample.zipをダウンロードしなおしてください。

PDF17:LDCの文字コード表

本書で紹介した2つのLCDでは、PDF17図7-8の文字コード表の一番左の列(0x06~0x0f)の文字は表示されないようです。ご了承ください。

PDF20:Python3用WiringPi-Pythonのインストールコマンド

Python3用WiringPi-Pythonのインストールコマンドは、Python2用と共通としてこのページ上部にある「p.209:WiringPi-Pythonのインストールコマンド」に記載されていますのでご参照ください。

PDF28:最新のRaspbian Stretchでの動作について

Raspbian Stretchをお使いの方で、2017年8月から10月の間にWebIOPiをインストールした方は、10.5章のプログラムにおいて矢印の画像が表示されないという問題が発覚しました。 この問題を解決するには、まずターミナルを起動して下記のコマンドで過去のインストールファイルを一旦削除します。
sudo rm -rf WebIOPi-0.7.1
その後、本ページの「p.224:WebIOPiのインストールコマンド」に基づいてもう一度WebIOPiをインストールしてください。 設定ファイル /etc/webiopi/config や /usr/share/webiopi/htdocs 以下にあるサンプルファイルはそのままで構いません。
また、WebIOPiが起動済であれば一度停止して再び起動する必要があることにもご注意ください。お手数をおかけしますがよろしくお願いします。

PDF32: WebIOPiからWiringPi-Pythonを呼び出すプログラムの自動起動について

「bb/07」や「bb/08」のように、WebIOPiからWiringPi-Pythonを呼び出すプログラムを自動起動する場合、 PDF32に記したように、Raspbianの起動方法をGUIからCLIにしないと正常動作しない(サーボモーターが動かない)ことがあります。

もし、この「CLI起動によるWebIOPiの自動起動」でもサーボモーターが正常動作しない場合、以下を試してください。 まず、以下のコマンドを実行し、WebIOPiの自動起動を無効にします。
sudo systemctrl disable webiopi
次に、以下のコマンドで、/etc/rc.localファイルを管理者権限で編集できる状態にします。
sudo leafpad /etc/rc.local
そして、「exit 0」の上の行に、以下の2行を追記して保存し、再起動してください。
sleep 10
sudo service webiopi start
以上で、/etc/rc.localからWebIOPiが起動され、サーボモーターが正常動作することを期待しています。 なお、「sleep 10」は「10秒待機する」の意味です。 安全のために「10秒」と大きな数値を選びましたが、 私の環境では「sleep 3」(3秒待機)程度でも正常動作しました。 さらに、この方法ではCLI起動ではなくGUI起動のままでもサーボモーターが正常動作しました。

2019年12月29日日曜日

読者の方々の声

本ページでは、読者の方々のレビューや利用例などをご紹介したいと思います。

レビュー


記事やブログなどでのご紹介



以下、twitterでの反応をまとめます。