2020年6月12日金曜日

Raspberry Pi Zero W 系で本書の演習を行う方法

はじめに

本書の演習で Raspberry Pi Zeroシリーズを用いる方法はサポートページで解説すると述べました。本ページにでその解説を行います。

Raspberry Pi Zero W 系の機種では、GPIO ポートにピンヘッダが取り付けられた Raspberry Pi Zero WH が最も簡単です。ピンヘッダが取り付けられていないと、本書で用いるオス-メスタイプのジャンパーワイヤを用いることができません。ピンヘッダが取り付けられていない機種に対しては、ピンヘッダを自分で取り付ける必要があり、ハードルがかなり上がります。

また、Raspberry Pi Zero W 系の機種は、搭載メモリ量が 512MB と少ないためデスクトップでブラウザを使うのにも支障が出るレベルです。ですので、Raspberry Pi Zero W 系の機種は「デスクトップなど不要」と思えるような上級者向けのものだとお考え下さい。

周辺機器の接続方法

Raspberry Pi Zero WHと周辺機器との接続は下図のようになります。


図からわかるように、以下のものが必要となります。
  • HDMI(メス)-ミニHDMI(オス)変換アダプタ。例えばSANWA SUPPLY AD-HD07M
  • USB OTGケーブル。例えば iBUFFALO BSMPC11C01BK
  • USBハブ(ACアダプターなしのバスパワータイプでOK)。 2つ以上のUSB機器(例えばマウスとキーボード)を接続する場合には必要です。
Raspberry Pi Zero WH をセット販売で購入した場合、「HDMI(メス)-ミニHDMI(オス)変換アダプタ」や「USB OTGケーブル」はセットに含まれる場合もあるようですので、ご確認ください。

なお、ピンヘッダが取り付けられていない Pi Zero シリーズで電子工作の演習を行いたい場合、以下の方法がありますが自己責任でお願いします。
  1. まず、下記のようなテストワイヤをGPIO部の穴に差し込んで使うという方法がまずあります。ただし、これはあくまでテスト用であり、本書のように何度もGPIOを利用する場合、何度も抜き差しすることで接触が悪くなることが考えられるためお勧めできません。
  2. それ以外には、下記のように 40 ピンのピンヘッダをハンマーで打ち込む GPIO Hammer Header という製品もありますが、日本のサイトではほぼ売り切れのようです。amazon.co.jp では買えるようですが、装着に必要な治具 (Jig) が付属しない可能性があり、お勧めしにくいです。 海外通販を利用できる方なら、公式から Jig つきのもの Pimoroni: GPIO Hammer Header (Solderless) – Male + Female + Installation Jig を購入するのが確実でしょう。 治具 (Jig) の利用法はこちらで見られます。

  3. 最後に、ピンヘッダ 2×20 (40P)を半田付けする方法です。半田付けが得意な方以外にはお勧めできません。 個人的な感想ですが、一般的なセンサモジュールなどよりも半田ごてで熱すべき時間が長く、かなり難易度が高いと思いました。

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

Raspberry Pi Zero W 系の機種を用いて本書の演習を行う場合、注意が必要なのは下記となるでしょう。
  • 5.6 カメラのシャッターの演習:カメラモジュールを接続するための専用ケーブルが必要
  • 5.7 MP3ファイルの再生:オーディオジャックがないので、音声はHDMI経由のみでの出力となるでしょう
  • 6.5 音声のボリューム:同様に音声はHDMI経由のみとなるでしょう
  • 10.4 キャタピラ式模型へのカメラの搭載:カメラモジュールを接続するための専用ケーブルが必要
なお、カメラモジュールの専用ケーブルとは、例えば「Raspberry Pi Zero用カメラケーブル」です。 Raspberry Pi Zero WH をセット販売で購入した場合は付属する場合があるようですので確認してください。 専用ケーブルでRaspberry Pi Zero WH にカメラモジュールを取りつけた様子が下図です。


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


デスクトップやブラウザの利用に関する注意

本書で学習する場合、「デスクトップでブラウザで補足ページを開きコマンドなどをコピーしてターミナルに貼り付ける」というスタイルで学習するのが最も容易です。

しかし、Raspberry Pi Zero W 系の機種の計算能力では、ブラウザがまともに動作しないことが多いと思います。ページ表示の待ち時間が長く、十分な時間待ったとしてもページが表示されるとは限らない、というのが主な症状です。

さらに、そもそもグラフィックをもったデスクトップを利用することも、OS が新しくなるとともに厳しくなっています。例えば、OS の更新 (sudo apt dist-upgrade) に何時間もかかり、その間なにもできない、ということが起こりえます。

これらの問題は、 Pi Zero 系のメモリが少ないことが原因と思われます。

そのため、Raspberry Pi Zero W 系の機種を用いる場合、ブラウザの利用をあきらめ、 「ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(2)~SSH編 (本書旧版の補足ページ)」の解説に従い、 Windows (など) から、Raspberry Pi へターミナルソフトウェアでログインして利用する、という方法を用いるのが現実的です。 この方法を用いると、電子回路の制御には Raspberry Pi Zero W 系の機種を用い、補足ページの閲覧は Windows を用い、コマンドの貼り付けはターミナルソフトウェア経由で行う、ということが可能になります。

とはいえ、この方法は Linux に慣れている人向けの方法です。ですから、Raspberry Pi Zero W 系の機種は初心者向けとは言い難いところがあります。

なお、以上のように「ターミナルソフトウェアでログインして利用」の方法が確立したら、デスクトップの起動をやめてしまうのも、メモリ消費量の削減になり効果的です。そうすることで、OS の更新が現実的な時間で終了するようになる、という経験があります。そのためには「設定」→「Raspberry Piの設定」で「ブート」項目を「デスクトップ」から「CLI」に変更して再起動すればよいのです。そうすることで、デスクトップが開かず、コマンドラインインターフェースのみのOSが起動するでしょう。

なお、その設定を元に戻したければ、
sudo raspi-config
で raspi-config を起動し、「1. System Options」→「S5 Boot / Auto Login」→「B4 Desktop Autologin」の順に選択しましょう。

2 件のコメント:

  1. 05-01-sw.pyをRUNすると、Errorがでます。python2.7.13de動かす事は出来ないのでしょうか?
    また、ブレッドボードには短いボードと長いボード2種類あるみたいで、また、短いボードには
    上の(+)?を表す赤線がセンターで切れてたり、そこにラインをブリッジしてるのがあったりしますが、
    どれも本の通りの配線で導通してるのでしょうか。素人でもわかりやすく教えてください

    返信削除
    返信
    1. まず、用いている OS と、エラー内容をお知らせください。

      05-01-sw.pyは Python 2 でも動作します。

      ただし、現在の Raspberry Pi OS ではPython2 のバージョンは 2.17.16 です。
      「python2.7.13」と書かれていることから、どのような OS で
      動作させているのかが気になります。

      また、「Errorがでます。」というのも気になります。

      05-01-sw.pyを実行した場合、典型的なトラブルは
      「スイッチを押してもLEDが点灯しない」
      というものです。この場合、ジャンパーワイヤを接続するGPIOを
      正しい位置に変更することで改善することがほとんどです。

      しかし、05-01-sw.pyを実行することで「エラーが出る」
      ことはあまりありません。

      あるとすれば、05-01-sw.py が用いているライブラリ
      RPi.GPIO
      が存在しない場合が考えられます。

      このライブラリは本書の通りRaspberry Pi OS のフル版をインストールすれば
      インストールされています。
      しかし、Raspberry Pi OS 以外のOSを用いている場合は
      インストールされていない場合があるでしょう。

      最後に、ブレッドボードの件ですが、

      > 上の(+)?を表す赤線がセンターで切れてたり、

      という場合は、切れている箇所で導通していないでしょう。
      それを導通させるために「ラインでブリッジ」されてうるのだと思います。

      削除