より新しい情報
Raspberry Pi 5 が海外で発表され、それに対応した OS Bookworm がリリースされるに伴い、本ページの内容は古くなっています。下記の新しいページをご覧ください。 以下は、それ以前の古い情報を残しておいたものです。はじめに
サンプルプログラムと回路配線図について
サンプルプログラム、回路配線図、応用PDFは下記のリンクからダウンロードしてください。 回路配線図の PDF と応用PDF は Raspberry Pi 上のブラウザでも見られますが、ブラウザ上の「↓」(ダウンロード)ボタンでダウンロードし、ファイルマネージャーで 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.29: OSインストール法の最新版について
OSであるRaspbianのインストールから設定の流れは、書籍執筆時から大きく変更を受けております。最新のインストールおよび設定方法は、 「Raspberry Piではじめる機械学習 補足情報」内にある「Raspberry PiへのOSのインストール方法」をご覧ください。本書2章と同等の内容をアップデートされた状態で見ることができます。
本書はRaspberry Pi 4のような最新のRaspberry Piでの動作もサポートしています。
p.41:NOOBSのバージョンについて
本書の出版以降、以下のように新しいバージョンのNOOBSがリリースされています。2016/9/23 | NOOBS 1.9.3 | Jessie |
2016/10/5 | NOOBS 2.0.0 | |
2016/11/29 | NOOBS 2.1.0 | |
2017/2/27 | NOOBS 2.2.0 | |
2017/3/3 | NOOBS 2.3.0 | |
2017/4/10 | NOOBS 2.4.0 | |
2017/6/23 | NOOBS 2.4.1 | |
2017/7/5 | NOOBS 2.4.2 | |
2017/8/17 | NOOBS 2.4.3 | Stretch |
2017/9/8 | NOOBS 2.4.4 | |
2017/11/29 | NOOBS 2.4.5 | |
2018/3/14 | NOOBS 2.6.0 | |
2018/3/14 | NOOBS 2.7.0 | |
2018/4/18 | NOOBS 2.8.0 | |
2018/4/24 | NOOBS 2.8.1 | |
2018/6/27 | NOOBS 2.8.2 | |
2018/10/11 | NOOBS 2.9.0 | |
2018/11/15 | NOOBS 3.0.0 | |
2019/4/8 | NOOBS 3.0.1 | |
2019/6/24 | NOOBS 3.1.1 | Buster |
2019/7/10 | NOOBS 3.2.0 | |
2019/9/30 | NOOBS 3.2.1 | |
2020/2/7 | NOOBS 3.3.0 | |
2020/2/14 | NOOBS 3.3.1 | |
2020/5/27 | Raspberry Pi OS 2020-05-27 | |
2020/8/20 | Raspberry Pi OS 2020-08-20 | |
2020/12/2 | Raspberry Pi OS 2020-12-02 | |
2021/1/11 | Raspberry Pi OS 2021-01-11 | |
2021/3/4 | Raspberry Pi OS 2021-03-04 | |
2021/5/7 | Raspberry Pi OS 2021-05-07 | |
2021/10/30 | Raspberry Pi OS 2021-10-30 | Bullseye |
2022/1/28 | Raspberry Pi OS 2022-01-28 | |
2022/4/4 | Raspberry Pi OS 2022-04-04 | |
2022/9/6 | Raspberry Pi OS 2022-09-06 | |
2022/9/22 | Raspberry Pi OS 2022-09-22 | |
2023/2/21 | Raspberry Pi OS 2023-02-21 | |
2023/5/3 | Raspberry Pi OS 2023-05-3 | |
2023/10/10 | Raspberry Pi OS 2023-10-10 | Bookworm |
2023/12/5 | Raspberry Pi OS 2023-12-5 |
OSのベースバージョンはJessie→Stretch→Buster→Bullseye→Bookwormと移り変わっています。
全てのバージョンで動作確認しています。以前のバージョンを使いたい方は下記のJAISTのミラーサイトで適切な日付をたどると見つけられます。
- 2020年5月以降のRaspberry Pi OS フルインストール版のイメージ
- 2018年11月~2020年2月の Raspbian フルインストール版のイメージ
- それ以前のRaspbian のイメージ
- NOOBSの場合
p.48: セットアップウィザードの起動
現在のRaspbianでは、初回起動時に設定用のセットアップウィザードが起動するようになっております。その操作法は、「Raspberry Piではじめる機械学習 補足情報」内にある「Raspberry PiへのOSのインストール方法」に記されておりますのでそちらをご覧ください。本書2章と同等の内容をアップデートされた状態で見ることができます。
p.48:パッケージやfirmwareを更新したRaspbianについて
「sudo apt upgrade」により、インストールされたアプリケーションのパッケージを更新したり、「sudo rpi-update」によりfirmwareを更新したRaspbianはサポートの対象外とします。その理由は下記の通りですのでご了承ください。- パッケージやfirmwareは日々変化しており、タイミングによってはバグを含んだパッケージがインストールされることもあること(実際、その問題によりトラブルの原因発見に時間がかかったことがあります)
- 同じ理由で、読者の方の環境と筆者の環境を一致させることが難しいこと
p.51, コマンドプロンプトの表記
p.51ではコマンドプロンプトの表記として以下を紹介しました。pi@raspbberrypi:~ $ここに見える「pi」はユーザー名を表しており、ユーザー名「pi」は2022年4月以前の古いOSで用いられていたデフォルトのユーザー名です。最新のOSを用いている方ならば、「pi」の部分に自分で決めたユーザー名が表示されているでしょう。
4章
p.85:開発環境IDLEの代替としてThonny Python IDEを用いる方法
2019年11月現在、本書で解説した開発環境IDLEはデフォルトでRaspbianに含まれていません。IDLE を別途インストールして利用する方法もあるのですが、より簡単にPythonプログラムを実行する方法として、デフォルトでインストール済の「Thonny Python IDE」を用いる方法をここで紹介します。Thonny Python IDEはpython3用のプログラムを実行するための環境です。本書のプログラムはPython3での実行をサポートしていますので問題なく実行できます。 Python 3用ツールのインストール法は本ページで解説されておりますので注意して本ページをお読みください。
さて、メニューの下図に示されている「Thonny Python IDE」をマウスでクリックするとThonny Python IDEが起動します。
次図のように、「LOAD」がファイルの読み込み、「RUN」がプログラム実行、「STOP」がプログラム停止であることを理解すれば問題なく利用できるでしょう。
ただし、「STOP」ボタンでプログラムを停止すると、GPIOの終了処理が正しく機能しないようです。「Shell」と書かれた領域の上でキーボードの「Ctrl-C」によりプログラムを終了するのが良いでしょう。なお、Thonnyには「時々Ctrl-cが効かなくなる」という不具合があるようなので、そういうときのみ「STOP」ボタンでプログラムを停止すると良いでしょう。
なお、本書では8.6章でサーボモータを用いる場合に管理者権限が必要となります。その場合、管理者権限のThonnyでプログラムを読み込んで実行する必要があります。 その方法は、LXTerminalを開いてから下記のコマンドを実行してください。
sudo thonny &管理者権限のThonnyが現れるので、8.6章のファイルを読み込んで実行してください。
p.85:Python2とPython3について
さて、上で紹介した Thonny Python IDEを用いるということは、Python バージョン 3 を用いることを意味します。本書で利用を推奨していた Python バージョン 2 は 2020年1月1日にサポートが切れましたので、これを機会に本ページでは Python 3 による実行方法のみを解説することにします。本書のプログラムは Python 3 でも動作するよう更新済ですし、Python 3用のツールのインストール法も、全て本ページで解説していますので大きな問題はありません。なお、コマンドによりプログラムを実行する場合は、Python 2とPython 3および対応コマンドが下記のように異なります。以下ではPython3 用のコマンドを用いることになりますので参考にしてください。
項目 | Python2用コマンド | Python3用コマンド |
プログラム実行コマンド | python または python2 | python3 |
IDLE実行コマンド | idle-python2.7 | idle-python3.7 |
Thonny実行コマンド | なし | thonny |
Python用プログラムインストールコマンド(本書では用いない) | pipまたはpip2 | pip3 |
プログラム実行時に自分がPython2 と Python3 のどちらで実行しているかを意識するとPythonプログラムにより早く慣れることができるでしょう。
p.85:NOOBS 2.8.2 (Raspbian 2018-06-27) 以降でのIDLEの通常起動について
NOOBS 2.8.2 (Raspbian 2018-06-27) から、デスクトップのメニューから開発環境IDLEの項目が削除されています。そのため、その代替としてThonny Python IDEを用いる方法を上で解説しました。通常はこのThonny Python IDEを用いてください。ここでは、それでも敢えてIDLEを用いたいという方のためにその方法を解説します。
ターミナル LXTerminal を起動し、下記の2つのコマンドを順に実行してください。Python 3 用のIDLEがインストールされます。
sudo apt update sudo apt install idle-python3.7Python 3用のIDLEの実行は、やはりターミナルから下記のコマンドにより行います。
idle-python3.7 &を実行します。
5章
p.123, Bookworm (Raspberry Pi OS 2023-10-10 以降) および Bullseye (Raspberry Pi OS 2021-10-30 以降) でのカメラの利用について
Raspberry Pi OS 2023-10-10 からはじまったバージョン Bookworm およびRaspberry Pi OS 2021-10-30 からはじまったバージョン Bullseye では
カメラモジュールの利用方法に大きな変更が加えられ、libcamera というライブラリを用いるようになりました。 これは、本書でカメラを用いるプログラムがそのままでは動かなくなる、ということを意味します。
ただし、Bullseye では「Legacy Camera」という、これまでと互換性のあるカメラの利用方法が可能になっています。この Lecgacy Camera を用いれば本書でカメラを用いるプログラムはそのまま動作しますが、 残念ながら Bookworm では Legacy Camera モードは削除されてしまいました。
以上を踏まえて現状をカメラの利用方法について整理すると、以下のようになります。将来を見据えれば、最新のOSで「本書の演習を picamera2 (libcamera) で実行する方法」を用いるのがよいと思います。
32-bit / 64-bit 版 Bookworm および Bullseye | 「本書の演習を picamera2 (libcamera) で実行する方法」で配布しているサンプルファイルを利用する。なお、2023年1月に発売された Camera Module v.3 はこの手法でしか使えません。 |
32-bit 版 Bullseye | Legacy Cameraモードを有効にした上で、本書付属のサンプルファイルを用いる。これが一番簡単。 |
64-bit 版 Bullseye | Legacy Cameraモードを有効にした上で、「本書の演習をウェブカメラで実行する方法」で配布しているサンプルファイルを利用する |
さて、上記の方法のうち、Bullseye で Legacy Camera モードを有効にする方法を用いる場合は、以下の方法で「Legacy Camera」のサポートを有効にする必要があります(デフォルトは無効です)。
ターミナルを開いて以下の手順に従うことで、raspi-config により Legacy Camera を有効にします。
- 「 sudo raspi-config 」を実行することで raspi-config を起動
- キーボードの「↓」キーを2回押し、「Interface Options」を選択してから「Enter」キーを押す
- 「I1 Legacy Camera Enable/Disable」があらかじめ選択されているので、「Enter」キーを押す
- 「Would you like to enable legacy camera support?」と聞かれるので「←」を一回押すことで「はい」を選択し、「Enter」キーを押す
- 「非推奨 (deprecated) であり将来サポートされない」という趣旨のことを言われるが、「了解」が選択された状態で「Enter」キーを押す
- raspi-configを起動した状態の画面に戻るので、「TAB」キーを二回クリックし、「Finish」を選択した状態で「Enter」キーを押す
- 再起動を促されるので、「はい」が選択された状態で「Enter」キーを押す
p.128, 音声の出力先を変更する方法
音声を HDMI ケーブル経由ではなく、Raspberry Pi の基板上のイヤフォンジャックから聞きたい場合、デフォルトでは音が鳴らないことが多いでしょう。 イヤフォンジャックから鳴らすための方法は、OSのバージョンにより異なります。<2020-12-02版およびそれ以降の Raspberry Pi OS をご利用の場合>
2020-12-02版およびそれ以降の Raspberry Pi OS をご利用で、なおかつイヤフォンジャックから音が鳴らない場合、raspi-configというコマンドで音声の出力先をイヤフォンジャックに切り替えます。恐らく今後はこの方法が主流となるでしょう。以下の手順に従ってください。
ターミナルで下記のコマンドを実行してください。
sudo raspi-configすると、下図のような設定画面が開きます。 上の画面上で、キーボードの「Enter」キーを押すことで、以下の「1 Systems Option」の設定画面に入ります。 上の画面上でキーボードの「↓」キーを一回押すことで、下図のように「S2 Audio」にフォーカスを合わせ、「Enter」キーを押すことで「S2 Audio」の設定画面に変わります。 下図が「S2 Audio」の設定画面です。 上の画面上でキーボードの「↓」キーを一回押すことで、下図のように「1 Headphones」にフォーカスを合わせ、「Enter」キーを押すことでヘッドフォン(つまりイヤフォンジャック)を出力先にします。 すると下図のように「sudo raspi-config」実行直後の画面に戻ります。 上の画面上で「TAB」キーを二回押すことで、下図のように「Finish」にフォーカスが合います。そこで「Enter」キーを押すことで、「sudo raspi-config」による設定が終了します。 以上で、下記コマンドで
mpg321 test.mp3イヤフォンジャックから音声が出るようになります。
<2020-5-27版および2020-8-20版の Raspberry Pi OS をご利用の場合>
次は、2020-5-27版および2020-8-20版の Raspberry Pi OS をご利用の場合で、なおかつイヤフォンジャックから音が鳴らない場合です。 音声を再生するコマンドを以下に変えるとイヤフォンジャックから音が鳴ります。 「--a hw:1,0 」が「イヤフォンジャックからの再生」を意味します。「-a hw:0,0 」なら「HDMIからの再生」です。mpg321 -a hw:1,0 test.mp3
<2020年2月までの Raspbian をご利用の場合>
2020年2月までの Raspbian をご利用の場合、ターミナルで一度以下のコマンドを実行すると、以後「mpg321 test.mp3」コマンドでイヤフォンジャックから音が鳴るようになります。amixer cset numid=3 1なお、末尾の「1」がイヤフォンジャックからの音声出力を意味し、「0」なら自動認識、「2」ならHDMIからの音声出力を意味します。
p.128, 05-05-sw-mp3.pyをイヤフォンジャックからの音声出力で実行する
プログラム 05-05-sw-mp3.py をイヤフォンジャックからの音声出力で実行したい場合の補足です。 やはり、OSのバージョンにより方法が異なります。<2020-12-02版およびそれ以降の Raspberry Pi OS、または2020年2月までの Raspbian をご利用の場合>
2020-12-02版およびそれ以降の Raspberry Pi OS、または2020年2月までの Raspbian をご利用の場合、上で行った「イヤフォンジャックから音を鳴らす設定」を行っていれば、 デフォルトのままの 05-05-sw-mp3.py で音を鳴らすことができます。「デフォルトのままの 05-05-sw-mp3.py 」とは、12行目が以下の状態になっているものです。args = ['mpg321', 'test.mp3']
<2020-5-27版および2020-8-20版の Raspberry Pi OS をご利用の場合>
2020-5-27版および2020-8-20版の Raspberry Pi OS をご利用の場合、プログラム 05-05-sw-mp3.py に対して以下を実行してください。まず、Thonny でプログラムを開くと、12行目に以下の行が見つかります。
args = ['mpg321', 'test.mp3']この行を以下のように変更して保存してください。
args = ['mpg321', '-a', 'hw:1,0', 'test.mp3']以上により、2020-5-27版および2020-8-20版の Raspberry Pi OS で 05-05-sw-mp3.py をイヤフォンジャックからの音声出力で実行できるようになります。
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ならば本書のようにブレッドボートで利用可能です。その様子を示したのが下図(右)です。なお、基板の「LED」ピンを3.3Vに接続すると、図のようにLCDのバックライトが点灯した状態になります。お好みで利用してください。ピンソケットでGPIOに直接差したLCDならば、GPIO 4をHIGHにすることでバックライトが点灯します。なお、バックライトを利用するには、LCDを基板に半田付けする際に2か所の四角いピンも半田付けする必要がありますのでご注意ください。なお、LCDの完成品を購入した場合はこのバックライト機能はありません。
また、本書で紹介した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の行数
8章
p.199:モータードライバ TA7291Pについて
モータードライバのTA7291Pはすでに生産が終了しており、今後入手が困難になることが予想されます。 代替品として、下記を選びました。TA7291Pを入手できないときはお試しください。- DRV8835使用ステッピング&DCモータドライバモジュール : 一つのモジュール内に二つのモータードライバーが含まれますので、購入は一つで構いません
- 電池ボックス 単3×3本 リード線・スイッチ付 : 上記モータードライバは、3本の乾電池でお使いください。
このモータードライバを用いて図8-11と同等の回路を組むには下図のようにします(クリックすると拡大されます)。上で述べたように、電池ボックスは電池三本用のものをお使いください。
p.209:WiringPi-Pythonのインストールコマンド
書籍に記したように、WiringPi-Pythonをインストールするためのコマンドをコピーできる形で掲載します。なお、一度WiringPi-Pythonのインストールなどに失敗している方は、以前のインストール用ファイルを削除してからの方が安全です。そのためには、ターミナルを起動して下記のコマンドを実行します。
sudo rm -rf WiringPi-Pythonそして、WiringPi-Pythonのインストール用コマンドを順に実行していきます。 下記のコマンドをブラウザで1行ずつコピーし、ターミナルソフトウェアLXTerminalへ貼り付けて1つ1つ実行するとトラブルが少ないでしょう。コピーはブラウザ上でキーボードで「Ctrl+c」、貼り付けはLXTerminalのメニューから「編集」→「貼り付け」(またはCtrl+Shift+v)です。なお、行頭の「(1)」などの数字はコピーする必要はありませんのでご注意ください。
また、長いコマンドのため横方向にスクロールさせないとコマンド全体をコピーできないものがあることにも注意してください。
(2020.10.23: python3用のみをインストールするようコマンドを変更しました)
(1) sudo apt update (2) sudo apt install python3-dev python3-setuptools swig (3) git clone --recursive https://github.com/neuralpi/WiringPi-Python.git (4) cd WiringPi-Python/WiringPi (5) sudo ./build (6) cd .. (7) swig -python wiringpi.i (8) sudo python3 setup.py install
p.212:WiringPi-Pythonを用いたプログラムの実行について
現在のRaspbianでは、多くの電子工作プログラムの実行には管理者権限が不要になりました。しかし、WiringPi-Pythonを用いる08-04-servo.pyの実行には今でも管理者権限が必要です。
正確には、精度の高いPWM(ハードウェアPWM)を用いるプログラムの実行には管理者権限が必要です。
用いている実行方法により下記のどれかのコマンドの実行が必要となります。
管理者権限のIDLEで実行 sudo idle-python3.7 &
管理者権限のThonnyで実行 sudo thonny &
管理者権限のPython3コマンドで実行 sudo python3 08-04-servo.py
9章
p.223:WebIOPiのダウンロードとインストール
書籍では、WebIOPiのダウンロードをブラウザから行いましたが、以下で紹介する方法では、ダウンロード・展開・インストールを全てコマンドから行います。ターミナルを起動し、以下のコマンドを一つずつ順に実行してください。WebIOPiのダウンロード・展開・インストールが行われます。ブラウザからコマンドを一つずつコピーし、ターミナルへ貼り付けて実行するのが確実でしょう。
コピーはブラウザ上でキーボードで「Ctrl+c」、貼り付けはLXTerminalのメニューから「編集」→「貼り付け」(またはCtrl+Shift+v)です。なお、行頭の「(1)」などの数字はコピーする必要はありませんのでご注意ください。
(0) wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz (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 するのでした(現在はこの質問は出ません)。
その後、下記のコマンド(p.226のコマンド)を実行し、起動用ファイルを適切な位置に配置します。これでWebIOPiのインストールは完了です。
(1) wget https://raw.githubusercontent.com/neuralassembly/raspi2/master/webiopi.service (2) sudo mv webiopi.service /etc/systemd/system/なお、上記の手順でWebIOPiをインストールしてもp.234の図9-5において「IN/OUT等が現れるはずのボタンに文字が現れず灰色のまま」という場合、 まずはWebIOPiの再インストールを試してみましょう。そのためには、ターミナルを起動して下記の2つのコマンドを一つずつ実行し、過去のインストールファイルを一旦削除します。
$ sudo rm -f WebIOPi-0.7.1.tar.gz $ sudo rm -rf WebIOPi-0.7.1その後、もう一度上記のコマンドでWebIOPiをインストールします。 それでも症状が改善されない場合、原因はわかりませんが、OSであるRaspbianが壊れているという可能性もないとは言えません。余力があればOSを再インストールしてみることも検討してみると良いでしょう(私自身、OSの再インストールが必要だったことはないのですが、読者の方にはそれで改善したという方が複数名いらっしゃるようです)。
p.226:WebIOPiについての各種コマンド
WebIOPiの起動/停止、自動起動/自動起動の停止、などのコマンドを列挙します。コピーするなどしてご活用ください。WebIOPiの起動コマンド
sudo service webiopi start
WebIOPiの停止コマンド
sudo service webiopi stop
WebIOPiが動作確認しているか確認するコマンド
ps ax |grep webiopiWebIOPiの自動起動
sudo systemctl enable webiopi
WebIOPiの自動起動の停止
sudo systemctl disable webiopi
p.236:WebIOPi用サンプルファイルの/usr/share/webiopi/htdocsディレクトリへのコピー
236ページでは、本書のサンプルファイルを/usr/share/webiopi/htdocsディレクトリへコピーするという作業を行います。 この作業は重要であり、これに失敗すると、以後の演習が期待通りに動作しません。そこで、コピーして利用できるよう、 そのコマンドをここに再掲します。 ターミナルソフトウェアLXTerminalを起動して、下記の2コマンドを一つずつ順に実行してください。sudo chown -R $USER /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なお、この行を記述した後に WebIOPi が起動しなくなった場合、行の記述し間違い以外には、
- サンプルファイルを /usr/share/webiopi/htdocs ディレクトリにコピーしていない
p.259:モータードライバ TA7291Pについて
上の「p.199:モータードライバ TA7291Pについて」で述べたように、モータードライバ TA7291Pの入手が難しいときは下記の代替品をお使いください。- DRV8835使用ステッピング&DCモータドライバモジュール : 一つのモジュール内に二つのモータードライバーが含まれますので、購入は一つで構いません
- 電池ボックス 単3×3本 リード線・スイッチ付 : 上記モータードライバは、3本の乾電池でお使いください。
10章
p.278:モータードライバ TA7291Pについて
上の「p.199:モータードライバ TA7291Pについて」で述べたように、モータードライバ TA7291Pの入手が難しいときは下記の代替品をお使いください。- DRV8835使用ステッピング&DCモータドライバモジュール : 一つのモジュール内に二つのモータードライバーが含まれますので、購入は一つで構いません
- 電池ボックス 単3×3本 リード線・スイッチ付 : 上記モータードライバは、3本の乾電池でお使いください。
さらに、このモータードライバを用いて図10-6と同等の回路を組むには下図のようにします(クリックすると拡大されます)。こちらも電池ボックスは電池三本用のものをお使いください。
p.285:/etc/rc.localに追加する1行
LCDにIPアドレスを表示するプログラムの自動起動のために/etc/rc.localに追加する行は下記の通りです。必要に応じてコピーしてご活用ください。書籍から「sudo」コマンドを省略しました。python3 /home/pi/07-02-LCD.py $_IP &なお、2022年4月にリリースされた OS よりデフォルトユーザー pi は廃止されています。そのため、上のコマンドの pi の部分は、皆さんが作成したユーザー名で置き換変える必要があります。すなわち、「kanamaru」というユーザーを作成したのなら、「python3 /home/kanamaru/07-02-LCD.py $_IP &」となる、ということです。
また、サンプルファイルをbluebacksディレクトリに保存した場合は下記になるのでしたね。
python3 /home/pi/bluebacks/07-02-LCD.py $_IP &上と同様に、「pi」は自分のユーザー名に置き換えてください。
p.288:/etc/rc.localに追加する1行
シャットダウンプログラムの自動起動のために/etc/rc.localに追加する行は下記の通りです。必要に応じてコピーしてご活用ください。書籍から「sudo」コマンドを省略しました。python3 /home/pi/10-01-sw-poweroff.py &なお、2022年4月にリリースされた OS よりデフォルトユーザー pi は廃止されています。そのため、上のコマンドの pi の部分は、皆さんが作成したユーザー名で置き換変える必要があります。すなわち、「kanamaru」というユーザーを作成したのなら、「python3 /home/kanamaru/10-01-sw-poweroff.py &」となる、ということです。
また、サンプルファイルをbluebacksディレクトリに保存した場合は下記になるのでしたね。
python3 /home/pi/bluebacks/10-01-sw-poweroff.py &上と同様に、「pi」は自分のユーザー名に置き換えてください。
p.288:キャタピラ式模型のメンテナンス
キャタピラ式模型を長く使っていると、だんだん動作が安定しなくなってくることがあります。例えば「右のキャタピラは正常動作するが、左はなかなか動かない」などです。もちろん、「ジャンパーワイヤーが抜けていないか」など、回路の配線をまずはチェックすべきです。 しかし回路の配線に問題がなかった場合、どこに注意してメンテナンスすべきかを以下に記します。上から順にチェックしていきましょう。
- 電池の残量不足ではないかチェック:基本ではありますが、まずはここからチェックしましょう。
- ジャンパワイヤのチェック:ジャンパワイヤの抜き差しをする際、持ち手ではなくケーブルを引っ張ることを繰り返すと中で断線することがあります。断線が疑われるジャンパワイヤは捨ててしまった方がよいでしょう。
- ギアボックスで空回りしているシャフトがないかチェック:ギアボックスの作成の際、イモネジを六角レンチで締めてシャフトを固定している部分があります。そこが緩んで空回りしていないかチェックしましょう。
- モーターの軸が空回りしていないかチェック:モーターの軸にはピニオンギアが取り付けられています。ピニオンギアが劣化してゆるくなり、モーターの軸が空回りすることがあります。これはモーターをギアボックスから取り外してみないとわかりません。ピニオンギアがゆるくなっていた場合、「AO-7005 8Tピニオンセット白(10個)」などを購入して交換しましょう。
- ブレッドボードのチェック:ブレッドボードを長くつかっていると、なんらかの理由でブレッドボード内部の抵抗が大きくなりモーターがあまり回転しなくなることがあります。筆者は複数回そのような経験をしています。安価なもので良いのでテスターを購入すると内部の抵抗の大きさをチェックできます。内部の抵抗が大きく計測されたブレッドボードは消耗品と考えて捨ててしまった方がよいでしょう。
- モータードライバーのチェック:回路には左右のキャタピラ用のモータードライバーが二つあります。これをブレッドボート上で交換して、左右のキャタピラの動きの軽快さが入れ替わるかどうか試してみましょう。動きの軽快さが入れ替わるならば、モータードライバのどちらかに問題がある可能性がありますので、新品と交換してみるのも手です。
- モーターのチェック:上で二つのモータードライバーを交換しても左右のキャタピラの動きの軽快さが入れ替わらなかった場合、モーターに問題がある可能性があります。新品の「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つ実行していけばトラブルが減るでしょう。ただし、Bookworm や Bullseye で libcamera 対応の mjpg-streamer をインストールする場合はここで紹介したコマンドではなく、「本書の演習を picamera2 (libcamera) で実行する方法」で紹介するコマンドを実行する必要がありますのでページを移動してください。
さて、ここで紹介するコマンドは、libcamera を用いない場合、すなわち、Bullseye で Legacy Camera モードでカメラを利用する場合です。コピーはブラウザ上でキーボードで「Ctrl+c」、貼り付けはLXTerminalのメニューから「編集」→「貼り付け」(またはCtrl+Shift+v)です。なお、行頭の「(1)」などの数字はコピーする必要はありませんのでご注意ください。
(1) sudo apt update (2) sudo apt install libjpeg-dev cmake (3) git clone https://github.com/neuralassembly/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なお、古い OS を用いている方は、(2) のコマンドを
(2) sudo apt install libjpeg8-dev cmakeに変更する必要がある場合があります。
また、 Bullseye で Legacy Camera モードを用いている方は、本ページの 「p.123, Bookworm (Raspberry Pi OS 2023-10-10 以降) および Bullseye (Raspberry Pi OS 2021-10-30 以降) でのカメラの利用について」の項目を参考に、Legacy Camera モードを有効にする必要がありますのでその点もご注意ください。 さらに、64-bit版 Bullseye を用いている方は、実行時に「本書の演習をウェブカメラで実行する方法」で配布しているサンプルファイル内の 10-02-stream-webcam.sh を用いる必要があります。
また、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なお、2022年4月にリリースされた OS よりデフォルトユーザー pi は廃止されています。そのため、上のコマンドの pi の部分は、皆さんが作成したユーザー名で置き換変える必要があります。すなわち、「kanamaru」というユーザーを作成したのなら、「sh /home/kanamaru/10-02-stream.sh」となる、ということです。
サンプルファイルをbluebacksディレクトリに保存した場合は下記になるのでしたね。
sh /home/pi/bluebacks/10-02-stream.sh上と同様に、「pi」は自分のユーザー名に置き換えてください。
p.292:mjpg-streamerの映像が表示されない場合のチェック項目
mjpg-streamerによる映像が表示されるためには、下記の条件が満たされている必要があります。(1) カメラが正しく接続されていること
(2) カメラが有効に設定されていること
(3) mjpg-streamerが正しくインストールされていること
(4) mjpg-streamerが起動されていること
(5) 適切なPCやスマートフォンなどのブラウザからmjpg-streamerにアクセスしていること
(6) ブラウザから適切なアドレスにアクセスされていること
それぞれが正しく実行されているか確認するためのチェック項目は下記のようになります。
(1') 金属が露出した端子面がmicroSDカード側を向いて接続されており、
コネクタが適切に押し込まれていることを確認してください。
(2') デスクトップのメニューから「設定」→「Raspberry Piの設定」→「インターフェイス」
→「カメラ」が「有効」になっていることを確認してください。
(3') 補足ページ「p.290:mjpg-streamerのインストールコマンド」に掲載したのコマンドを
正しく(コピーするなどして)実行したことを確認してください。
/opt/mjpg-streamer/mjpg_streamer というファイルが存在すれば問題ないでしょう。
一つ目の「mjpg-streamer」はディレクトリ名、二つ目の「mjpg-streamer」は
ファイル名です。
二つ目の「mjpg-streamer」が存在しなければインストールに失敗しています。
(4') mjpg-streamerの起動法は下記の2通りあります。
(a) ターミナルで「sh 10-02-stream.sh」を実行する
(b) /etc/rc.local に記述して自動起動する
まずは(a)の手動での起動が成功するか確認しましょう。
mjpg-streamerは起動済みだと思ったら、
ターミナルで「ps ax | grep mjpg」と実行してそれを確認してみましょう。
下記のように表示されれば起動に成功しています。細かな数字は人によって異なります。
2393 pts/0 Sl 0:00 /opt/mjpg-streamer/mjpg_streamer -i input_raspicam.so
-fps 15 -q 50 -x 640 -y 480 -o output_http.so -p 9000 -w /opt/mjpg-streamer/www
2545 pts/0 S+ 0:00 grep --color=auto mjpg
一方、下記のような表示しかなければ起動に失敗しています。
ここまでの内容を見直す必要があります。
2545 pts/0 S+ 0:00 grep --color=auto mjpg
(5')「適切なPCやスマートフォンなど」とは、本書図9-1に記されているように、
Raspberry Piと同じネットワークに属しているPCやスマートフォンのことです。
スマートフォンの場合は本書図9-1のようにWifiで
Raspberry Piと同じネットワークに続している必要があります。
自信がなければRaspberry PiのChromiumブラウザからアクセスするのが確実ですので、
まずはRaspberry Piからのアクセスに成功することを目指しましょう。
(6') 図10-8のテスト用画面を確認するためにブラウザに記すアドレスは
http://xxx.xxx.xxx.xxx:9000/ です。
もちろん、「xxx.xxx.xxx.xxx」の部分はRaspberry Piに割り当てられているIPアドレスで
読み替える必要があります。
付録B
p.305 圧縮されたサンプルファイルの展開に関する注意
NOOBS 3.1.1 (Raspbian 2019-06-20) 以降、圧縮ファイルを展開するためのソフトウェアのデフォルトの設定が変化しましたので利用の際は注意が必要です。下図(左)のように、展開先のデフォルトが「/tmp」とされ、また、展開時に自動的にフォルダが作られるようになっています。
これを、下図(右)のように
- 展開先に「 /home/pi 」または「 /home/pi/bluebacks 」と記入。ただし、2022年4月にリリースされた OS よりデフォルトユーザー pi は廃止されていますので、この記述の pi の部分は、皆さんが作成したユーザー名で置き換変える必要があります。すなわち、「kanamaru」というユーザーを作成したのなら、「 /home/kanamaru 」や「 /home/kanamaru/bluebacks 」ということです。
- 「Ensure a containing directory」のチェックを外す
p.308:コマンドでのプログラムの実行について
p.308にて、本書のプログラムをターミナルでコマンドで実行する方法が記されています。 本ページは、すべてのプログラムを python3 で実行するよう方針を変更しましたので、プログラムの実行例はpython3 04-01-led.pyとなります。管理者権限を表す sudo も不要になっていますのでご注意ください。
付録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
PDF9, 06-03-volume.py で音声のボリュームを変更する
プログラム 06-03-volume.py で音声のボリュームを変更する場合、音声出力先や、用いているOSのバージョンにより方法が異なりますので以下の指示に従ってください。<2022年 9 月以降の Raspberry Pi OS をご利用の場合>
2022年 9 月以降の Raspberry Pi OS をご利用の場合、音声出力先がHDMI、イヤフォンジャックのどちらの場合も、ファイル 06-03-volume.py の変更が必要となります。まず、イヤフォンジャックから音声を出力したい場合、本ページ「p.128, 音声の出力先を変更する方法」の方法に基づき、音声の出力先をイヤフォンジャックに変更して下さい。HDMI経由で音声出力したい場合はデフォルトのままで構いません。
すると、音声の出力先がどちらであっても、以下のデフォルトのコマンドで音声が鳴ります。
mpg321 test.mp3また、音声の出力先がどちらであっても、06-03-volume.py に対して変更が必要になります。Thonny でプログラムを開くと 57行目に以下の行が見つかります。
args = ['amixer','-q','cset','numid=1',vol]これを以下のように変更して保存して下さい。「numid=1」の部分を「numid=3」に変更しています。
args = ['amixer','-q','cset','numid=3',vol]以上で、06-03-volume.py によりボリュームを変更可能になります。
<2020-12-02版から 2022年春までの Raspberry Pi OS をご利用の場合>
2020-12-02版から 2022年春までの Raspberry Pi OS をご利用の場合、音声出力先がHDMI、イヤフォンジャックのどちらの場合も、ファイル 06-03-volume.py の変更が必要となります。まず、イヤフォンジャックから音声を出力したい場合、本ページ「p.128, 音声の出力先を変更する方法」の方法に基づき、音声の出力先をイヤフォンジャックに変更して下さい。HDMI経由で音声出力したい場合はデフォルトのままで構いません。
すると、音声の出力先がどちらであっても、以下のデフォルトのコマンドで音声が鳴ります。
mpg321 test.mp3また、音声の出力先がどちらであっても、06-03-volume.py に対して変更が必要になります。Thonny でプログラムを開くと 57行目に以下の行が見つかります。
args = ['amixer','-q','cset','numid=1',vol]これを以下のように変更して保存して下さい。
args = ['amixer','-q','-D','pulse','set','Master',vol]以上で、06-03-volume.py によりボリュームを変更可能になります。
<2020-5-27版および2020-8-20版の Raspberry Pi OS をご利用の場合>
2020-5-27版および2020-8-20版の Raspberry Pi OS で音声出力先をイヤフォンジャックにしたい場合、音声再生用のコマンドは下記になります。mpg321 -a hw:1,0 test.mp3そして、06-03-volume.py に対しては、変更が必要となるのでした。Thonny でプログラムを開くと、57行目に以下の行が見つかります。
args = ['amixer','-q','cset','numid=1',vol]この行を以下のように変更してファイルを保存してください。
args = ['amixer','-q','-c1','cset','numid=1',vol]以上で、06-03-volume.py によりボリュームを変更可能になります。
PDF11:spidevを用いてAD変換を行うプログラムについて
追加PDFでは、spidevとADコンバータMCP3208を用いてAD変換を行うプログラム06-04-spidev.pyを紹介しました。kernel 4.9.43以降 (NOOBS 2.4.5 (Raspbian 2017-11-29) 以降) の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のインストールコマンド」に記載されていますのでご参照ください。PDF31: カメラつきキャタピラ式模型の回路について
キャタピラ式模型を動作させるとき、回路を取り付けたサーボモータが不安定に変動する場合、サーボモーターへの電源(サーボモーターの赤色ケーブルへの接続)を電池の+極からとるのではなく、 Raspberry Piの 5V 端子(3.3V 端子の隣)から取るのも手です。モーター類をRaspberry Piに直接接続するのはあまりよくありませんが、サーボモーター1個動かす程度ならばRaspberry Piは不安定にならないだろう、という期待に基づいています。
もしそうすることで Raspberry Pi の動作が不安定になるのならば、やはりサーボモーターへの電源は電池からとるように戻すべきです。
PDF32: WebIOPiからWiringPi-Pythonを呼び出すプログラムの自動起動について
「bb/07」や「bb/08」のように、WebIOPiからWiringPi-Pythonを呼び出すプログラムを自動起動する場合、 PDF32に記したように、Raspbianの起動方法をGUIからCLIにしないと正常動作しない(サーボモーターが動かない)ことがあります。もし、この「CLI起動によるWebIOPiの自動起動」でもサーボモーターが正常動作しない場合、以下を試してください。 まず、以下のコマンドを実行し、WebIOPiの自動起動を無効にします。
sudo systemctl disable webiopi
次に、以下のコマンドで、/etc/rc.localファイルを管理者権限で編集できる状態にします。
sudo leafpad /etc/rc.localなお、NOOBS 3.2.1 (Raspbian 2019-09-26) 以降ではテキストエディタとしてleafpadではなくmousepadを用います。
sudo mousepad /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起動のままでもサーボモーターが正常動作しました。