2020年6月20日土曜日

プロキシ(Proxy)環境下での本書の演習の実行

はじめに

職場や学校などでは、ネットワークに接続するためにプロキシ(Proxy)サーバーと呼ばれるものを介する場合が多いと思います。そのような環境下では、本書でネットワーク接続を必要とする演習をそのままでは実行できません。

下記の設定を行えば、全ての演習を実行できるようになりますが、上級者向けの内容ですので、職場や学校のネットワーク管理者など、ネットワークに詳しい方と一緒に作業することをお勧めします。

aptコマンド

ソフトウェアのインストールの際などに実行するaptコマンドを用いるための方法です。

まず、ターミナルソフトウェアLXTerminalを起動し、以下のように管理者権限のテキストエディタmousepadで設定ファイル/etc/apt/apt.confを作成します。
$ sudo mousepad /etc/apt/apt.conf
なお、古い OS ではテキストエディタとしてmousepadではなくleafpadを用います。
$ sudo leafpad /etc/apt/apt.conf
このファイルに下記の内容を記述します。「プロキシサーバー名」や「ポート番号」は環境によって異なりますので、ネットワーク管理者にお尋ねください。
Acquire::http::proxy "http://プロキシサーバー名:ポート番号/";
Acquire::https::proxy "https://プロキシサーバー名:ポート番号/";
Acquire::ftp::proxy "ftp://プロキシサーバー名:ポート番号/";
Acquire::socks::proxy "socks://プロキシサーバー名:ポート番号/";
記述が終わったら、ファイルを保存してからleafpadを閉じてかまいません。

以上で、「sudo apt install (パッケージ名)」、「sudo apt update」などのコマンドが実行できるようになります。

wgetコマンドやブラウザなど

次に、ファイルのダウンロードなどで用いるwgetコマンドや、ブラウザを利用するための方法です。

ターミナルソフトウェアLXTerminalを起動し、以下のように管理者権限のテキストエディタmousepadで設定ファイル/etc/environmentを編集用に開きます。
$ sudo mousepad /etc/environment
なお、古い OS ではテキストエディタとしてmousepadではなくleafpadを用います。
$ sudo leafpad /etc/environment
多くの場合 /etc/environment は何も書かれていない空のファイルですので、そのまま以下の3行を記入してください。「プロキシサーバー名」や「ポート番号」は環境によって異なりますので、ネットワーク管理者にお尋ねください。もし何かが書かれていた場合も、その内容を壊さないように注意しながら、ファイルの末尾に以下の内容を記します。
http_proxy=http://プロキシサーバー名:ポート番号/
https_proxy=http://プロキシサーバー名:ポート番号/
ftp_proxy=http://プロキシサーバー名:ポート番号/
以上の設定を記述したらファイルを保存してテキストエディタを閉じます。この設定を読み込むためにRaspberry Piを再起動してください。再起動後、ブラウザでインターネット上のウェブサイトを閲覧できるようになっているはずです。

時刻合わせ

プロキシ環境下ではRaspberry Piの時刻合わせが機能しない場合が多いと思います。そのような場合、もし職場や学校内に時刻合わせサーバーが存在すれば、下記の方法で時刻を合わせることができます。

ターミナルソフトウェアLXTerminalを起動し、以下のように管理者権限のテキストエディタmousepadで設定ファイル/etc/systemd/timesyncd.confを開きます。
$ sudo mousepad /etc/systemd/timesyncd.conf
なお、古い OS ではテキストエディタとしてmousepadではなくleafpadを用います。
$ sudo leafpad /etc/systemd/timesyncd.conf
ファイル内で下記のような箇所を見つけます。
(略)
[Time]
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3
.debian.pool.ntp.org
このうち、NTPに関する行の先頭の「#」を削除し、「=」の右辺にお使いの時刻合わせサーバーを記述します。 時刻合わせサーバが存在するかどうかはネットワーク管理者にお尋ねください。
記述後、Raspberry Piを再起動すれば時刻が合うようになります。

プロキシ(Proxy)環境下での本書9章と10章の実行

さて、以上で本書の内容をプロキシ環境下で学べるようになりましたが、9章と10章を学ぶ際にはもう一点、注意すべきことがあります。

これらの章では、PCやスマートフォンのブラウザを通して、同一ネットワーク内のRaspberry Piにアクセスし、回路を制御します。この際の模式図が下図です。このPCやスマートフォンでは、通常のインターネットへのアクセスの際にプロキシサーバを経由しなければなりませんが、同一ネットワーク内のRaspberry Piへアクセスする場合は、プロキシサーバーを経由せず直接アクセスせねばなりません。

そのために、Raspberry PiのIPアドレス(ここでは192.168.1.3とします)を「プロキシの例外サイト」としてあらかじめ登録しておく必要があります。


Windowsの場合の例外サイトの設定法を示したのが下図です。「インターネットオプション」から「LANの設定」を辿るとプロキシサーバーを設定できます。さらに「詳細設定」ボタンをクリックすることで、例外サイトを設定できます。図では192.168.1.3が登録されていることがわかるでしょう。


この「例外サイト」の設定はmacOSにも存在します。「システム環境設定」→「ネットワーク」
→「詳細」→「プロキシ」です。

しかし、iOS(iPhoneやiPad)の場合、この例外サイトの設定は存在しないため、iOSでプロキシの設定自体を無効にする(すなわち、上の図でインターネットへのアクセスができない状態にする)しかありません(pacファイルと呼ばれるものをサーバーに設置してこの問題を回避する方法もありますが、ここでは割愛します)。

androidの場合、Wifiの設定に例外サイトの設定があるのですが、この設定が存在しない場合(あるいは機能しない場合)は、やはりプロキシの設定を無効にしてRaspberry Piにアクセスせざるを得ないことがあります。

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」の順に選択しましょう。

2020年6月11日木曜日

旧版との違いについて

はじめに

「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」は旧版である「 カラー図解 最新 Raspberry Piで学ぶ電子工作」の改訂版です。

旧版とどのような違いがあるのか、本ページでまとめます。

旧版との違い


全体に関して

全体的には最新のハードウェアと OS に対応したことが大きな変更点です。
  • Raspberry Pi 4 対応
  • 最新の OS (2020年5月リリースのRaspberry Pi OS) への対応

2章:インストール法

旧版では、OS のインストールに NOOBS というパッケージを用いた方法を解説しましたが、新版では 2020年2月に新たに公開された Raspberry Pi Imager というソフトウェアによるインストール法を解説しています。

NOOBS ではインストール作業が Raspberry Pi 上で行われたのですが、Raspberry Pi Imager では、皆さんが普段お使いの Windows か macOS でインストールが行われます。そのため、インストールの難易度が少し下がることが期待されます。

4章:用いる開発環境

旧版では IDLE という開発環境を紹介しましたが、新版では Thonny という開発環境を用いるよう変更しています。それに伴い、推奨する Python のバージョンは Python2 から Python3 となりました。ただし、旧版からどちらのバージョンの Python でも動作するように記述されていました。

5章:タクトスイッチで用いる GPIO

旧版では、タクトスイッチで用いる GPIO が以下のように章ごとに異なっていました。
  • 5章:GPIO 24
  • 10章 : GPIO 17
新版ではこれを以下のように統一しました。サンプルプログラムもそれに伴って変更されていますので、旧版用のプログラムを新版用に用いることのないようにしてください。
  • 5章、10章:GPIO 27
また、タクトスイッチをカメラシャッターにすサンプルプログラム 05-04-sw-camera.py では、よりカメラに似た挙動となるよう、実行中にプレビュー画面を表示するようにしました。
さらに、タクトスイッチで音声ファイルを再生するサンプルプログラム 05-05-sw-mp3.py では、音声再生用プログラムとして mpg321 から mplayer に変更しました。これによりプチプチいっていたノイズが消えます。

7章:小型LCD

I2C 接続する小型 LCD を「Raspberry Pi キャラクタ液晶ディスプレイモジュール完成品」に変更しました。

8章:DCモーター用のモータードライバ

旧版で用いたモータードライバ TA7291P は入手困難になりましたので、代替品として「DRV8835使用ステッピング&DCモータドライバモジュール」を用いるように回路を変更しました。このモータードライバを「電池ボックス 単3×3本 リード線・スイッチ付」により乾電池3本で用います。

8章:ハードウェアPWM信号を出力する方法

旧版ではサーボモーターを制御するためのハードウェアPWM信号の出力に WiringPi-Python を用いましたが、新版では pigpio というライブラリを用いるよう変更しました。

旧版用のパーツセットを購入してしまった場合

本書の旧版用のパーツセットを購入してしまった場合、モータードライバ TA7291P が同梱されています。手元にこのモータードライバしかない場合、以下に示す回路の配線図を代替として用いてください。

図8-11 を TA7291P で実現する方法


図9-12 を TA7291P で実現する方法


図10-4 を TA7291P で実現する方法


図10-6 を TA7291P で実現する方法


図10-13(応用PDF内) を TA7291P で実現する方法


2020年6月9日火曜日

ディスプレイがRaspberry Pi 4と相性が悪い場合の対処法

Raspberry Pi 4には、相性の悪いディスプレイがあるという問題があるようです。そのようなディスプレイでは、OSをインストールしたmicroSDカードを挿入してRaspberry Piに電源を入れてもディスプレイに映像が映りません。

本ページではその場合の対処法を記します。

Raspberry Pi 用に OS をインストールした microSD カードを PC に接続します。そして、エクスプローラーの「PC」の項目を見ると、下記のように「boot」というディスクが存在していることがわかります。ここをダブルクリックすると、中に「config.txt」というテキストファイルがあるので、メモ帳などのテキストエディタで開きます。通常は config.txt をダブルクリックするとメモ帳で開くはずです。


すると、下図のようなファイルが開かれますので、6行目の「#hdmi_safe=1」という行の先頭の「#」を削除し、上書き保存してメモ帳を閉じてください。

なお、古い Windows を用いている方は、このファイルが正しく開けません(正しく改行されて見えない)。その場合「サクラエディタ (V2 (Unicode版))」のように改行を正しく処理できるテキストエディタをインストールし、そのサクラエディタで config.txt を開くようにしてください。


さて、「#」を削除して保存したら microSD カードを Windows から取り外し、再び Raspberry Pi 4 に接続して電源を投入してみましょう。

今度はディスプレイに映像が映ったでしょうか。
ただし、映った場合も画面の解像度は低い状態かもしません。それが嫌な場合、別のディスプレイを用意するしかなさそうです。

新しい情報が入ったら追記します。

OSイメージを用いてRaspberry Pi OSをインストールする

0. はじめに

本書では、Raspberry PiのOSである Raspberry Pi OS を、Raspberry Pi Imagerというソフトウェアを用いてインストールしました。このソフトウェアは、OSをmicroSDカードに書き込む時にOSのダウンロードも同時に行ってくれます。

職場や学校などでは、この方法でのOSのインストールに失敗することがあるようです。ネットワーク環境により、OSのダウンロードに失敗するためのようです。

そこで、職場や学校などでもOSのインストールが可能な方法を紹介します。Raspberry Pi Imagerを用いて、あらかじめダウンロード済のOSイメージをmicroSDカードに書き込むという方法です。

1. 拡張子の表示

イメージファイルによってOSをインストールする際、Windows において「ファイルの拡張子」を表示する設定にしておくのをお勧めします。 ファイルの拡張子とは、 ファイル名「2022-01-28-raspios-bullseye-armhf-full.zip」における「.zip」部や ファイル名「2022-04-04-raspios-bullseye-armhf-full.img.xz」における「.img.xz」部のことを指します。

Windows のデフォルトの設定では、この拡張子が表示されない設定になっており、そのままだと解説において混乱を招くと考えられるからです。

Windows 10 の場合、エクスプローラーを起動し、下図のように「表示」タブ内の「ファイル名拡張子」にチェックを入れることで、拡張子が表示されるようになります。
Windows 11 の場合、エクスプローラーを起動し、下図のように「表示」→「表示」とたどって、「ファイル名拡張子」にチェックを入れましょう。
以上の準備ができたら先に進みます。

2. 必要なものの準備

それでは、「Raspberry Pi OS のイメージで OS を インストールする」方法を解説します。まず、皆さんが普段お使いの PC で Raspberry Pi OS のイメージをダウンロードします。
にアクセスしましょう。

下図のようなページが現れますので、「Raspberry Pi OS with desktop and recommended software」の「Download」ボタンをクリックします。

すると、(執筆時点では)2022-04-04-raspios-bullseye-armhf-full.img.xz という名前の圧縮ファイルがダウンロードされます。
古いOSイメージを試したい場合、JAISTの下記のリンクをたどると良いでしょう。
あるいは、OSのバージョンを指定してダウンロードしたい場合、下記のリンクをたどると良いでしょう。 古い OS のファイルをダウンロードした場合、例えば「2022-01-28-raspios-bullseye-armhf-full.zip」というファイル名となっていることがあります。
まとめると、ダウンロードしたファイルは、OSのバージョンによって「ファイル名.img.xz」または「ファイル名.zip」のどちらかの名称であるということです。

本ページのタイトルに「イメージファイルを使って」とありますが、ダウンロードしたファイルはこの「イメージファイル」を「圧縮」したファイルです。圧縮の手法が、拡張子に表示されている「xz」や「zip」であるというわけです。

ですから、ここからの流れは通常ならば「圧縮ファイルを『展開』してイメージファイルを取り出す」→「イメージファイルを microSD カードに書き込む」 となります。しかし、本ページでは「展開」という作業は行わす、圧縮されたファイルのまま作業を続けます。 その理由は以下の二つです。
  • microSD カードに書き込むためのツール Raspberry Pi Imagerは、圧縮されたイメージファイルのままでmicroSDカードへの書き込みができる
  • xz で圧縮されたファイルは、Windows のデフォルト環境では展開できない
以下で、圧縮されたイメージファイルをそのまま microSD カードに書き込む方法を解説します。なお、便宜上「圧縮されたイメージファイル」のことを「イメージファイル」と呼ぶことがありますので、混乱しないようご注意ください。

3. Raspberry Pi Imager による OS イメージの microSD カードへの書き込み

ここでは、Raspberry Pi用OSのインストールソフトウェアであるRaspberry Pi Imager を用いてイメージファイルを microSD カードに書き込む方法を紹介します。
インストール済のRaspberry Pi Imagerを起動するには、検索窓で「ras」などと記入して現れるRaspberry Pi Imagerをクリックします。
さて、起動したRaspberry Pi Imagerで「OS (Operating System)」の部分の「OS を選ぶ (CHOOSE OS)」ボタンをクリックしましょう。現れた画面で下図のように「カスタムイメージを使う (Use custom)」を選択します。
すると、イメージファイルの選択画面になりますので、先ほどダウンロードしたファイルを指定します。下図は、ファイル「2022-04-04-raspios-bullseye-armhf-full.img.xz」を指定している様子です。なお、下図でファイル名が「.img.xz」の部分まで表示されているのは、本ページ冒頭で拡張子を表示する設定をしたためです。
次に、Raspberry Pi Imagerで、「ストレージ (SD Card)」の部分の「ストレージを選ぶ (CHOOSE SD CARD)」ボタンをクリックしましょう。microSDカードが接続済であれば下図のようにカードが現れますので、クリックして選択しましょう。

なお、外付けハードディスクなどをPCに接続しているとこの選択肢が複数現れます。microSDカードを表す適切な方を選択しないと皆さんの大切なデータが壊されてしまいますので注意して選択しましょう。
あとはRaspberry Pi Imagerで「書き込む (WRITE)」ボタンをクリックしましょう。「本当に続けますか?」という警告に「はい」を選択すると、 下図のように書き込み (Writing)が始まります。確認 (Verifying)までが終わると、書き込みが終了します。
下図の画面が出たらmicroSDカードを取り外し、その後Raspberry Pi Imagerを終了しましょう。取り外した microSD カードを Raspberry Pi にセットして起動することになります。