『ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作 作る、動かす、しくみがわかる! (ブルーバックス)』2020/6/18
金丸 隆志 (著)

「Raspberry Pi」は、LEDやADコンバータ、センサ、サーボモーターなどの電子パーツを直接つないで制御できる超小型コンピュータです。この本は、さまざまな演習を通して「どのような回路を組めば目的が達成できるか」を、その原理も含めて基礎から丁寧に解説してくれます(なお、「Raspberry Pi 4」だけでなく、「3」、「Zero WH」など、40ピンのGPIOポートを持つ機種に対応しているそうです)。内容は次の通りです。
1章 Raspberry Piとは何か
2章 Raspberry Pi用のOSのインストール
3章 電子工作の予備知識およびRaspberry PiによるLEDの点灯
4章 プログラミングによるLEDの点滅
5章 タクトスイッチによる入力
6章 AD変換によるアナログ値の利用
7章 I2Cデバイスの利用
8章 PWMの利用
9章 WebIOPiを用いたPCやスマートフォンとの連携
10章 WebIOPiを用いたキャタピラ式模型の操作
付録A ネットワークへの接続
付録B プログラムが記述されたサンプルファイルの利用方法
付録C Thonnyを用いない開発方法
   *
「1章 Raspberry Piとは何か」には、次のようなことが書いてありました。
「Raspberry Pi(ラズベリーパイ)は、500円から7000円前後で購入できる名刺サイズの超小型コンピュータです。一見皆さんが普段使うパソコンとは異なるように見えるかもしれませんが、キーボードやマウス、ディスプレイを接続すると普通のコンピュータと同じように扱えます。」
 このRaspberry Piはプログラミング学習と電子工作に適していて、同じようなものにマイコンを搭載したシステムのArduinoがありますが、Raspberry Piの方がより汎用性があるようです。例えば、Arduinoを搭載した車の模型をAndroidやiPhoneで操作する場合は、一般的に、それぞれのOS用のプログラムを書く必要があるのですが……
「一方、Raspberry Piを搭載した車の模型の場合、1つのプログラムで、AndroidやiPhoneから操作できます。AndroidやiPhoneだけでなく、iPadやWindows、macOSなどからも操作できるので、複数のOSでコントロールできるシステムの作成が容易です。
 これはRaspberry Piの機能というよりは、Raspberry Pi上で動作させる「ウェブサーバー」によるところが大きいと言えます。」
 ……だそうです。Raspberry Piはウェブ技術を利用できるので、複数OSで動作するプログラムを書くことが容易なのだとか。
 そして「3章 電子工作の予備知識およびRaspberry PiによるLEDの点灯」では、Raspberry PiでLEDを点灯させるだけの、ごく単純な電子工作を事例に、「Raspberry Piの基盤表面を見ると、40本のピンが立っている箇所があります。このピンの集合を「GPIOポート」と言います。」などの電子工作の予備知識(基礎知識)を学ぶことができました。
 ここでは次のような注意点も知ることができます。
・ブレッドボードに回路を構成する際の注意
「(前略)Raspberry Piとブレッドボードをオス-メスタイプのジャンパーワイヤーで接続するとき、ブレッドボード側のオスピンから先にさすことをおすすめします。なぜかというと、Raspberry Piの3.3VピンとGNDピンを接触させると、Raspberry Piが壊れてしまう可能性があるからです。」
 ……そしてブレッドボードから接続を外す際にも、この2つの端子部が接触しないように、「ブレッドボード側ではなくRaspberry Pi側のメスピンから抜く」といいそうです。
 この章では、なぜ抵抗の大きさとして330オームを選んだのかについての解説があり、「我々の回路で求めたいのは、「抵抗とLEDの直列配列をつないだとき、LEDに0.010Aの電流が流れる抵抗の値」」だとして、「電流制限抵抗の値」を「電流の値」からオームの法則を使って計算しています。……こういう電子工作の基本まで、きちんと解説してもらえるので、とても勉強(復習)になりました。
 さらに「5章 タクトスイッチによる入力」では、もう少しだけ複雑になった回路を事例に、タクトスイッチの状態とLEDの点灯状態を連動させるためのプログラムの記述の説明などがありました。このプログラムでは、Whileループの中にsleepがあるのですが、その必要性について、次のように説明されています。
「(前略)ここでの「sleep(0.01)」は「CPUに0.01秒間whileループを停止させ、他の処理を可能にする」という働きがあります。この「sleep(0.01)」がないとCPUはこのwhileループの処理に計算能力の大半を費やしてしまい、他の処理(たとえばThonny上でのプログラムの記述など)の実行が遅くなるなどの影響が出てしまいます。そのため、定期的に短いsleepを実行する必要があるのです。」
 ……なるほど。……という感じで、Raspberry Piや電子工作、プログラムについて基本的なことから、少し細かいコツのようなものまで丁寧に説明してくれるのです。
そして「8章 PWMの利用」では、PWMの使い分けについて……
「まとめると、Raspberry Piでは精度の低いソフトウェアPWM信号は複数個出力でき、制度の高いハードウェアPWM信号は2つしか生成できません。それでは、これらをどう使い分ければよいか考えてみましょう。(中略)
 以上から本書では、LEDやDCモーターのように「PWM信号を疑似的なアナログ信号として用いる」場合は精度の低いPWM信号、「サーボモーターの角度制御にもしいる」場合は精度の高いハードウェアPWM信号、のように使い分けることにします。」
 ……のように教えてもらえました。
さらに「9章 WebIOPiを用いたPCやスマートフォンとの連携」では……
「このデューティ比を各GPIOに送信してセットしたいのですが、これはネットワークを介して行われるため、あまり頻繁に値を送信すると、処理が追いつかなくなってしまいます。そこで、以前送信した値をrate25Prev、rate24Prevという変数に格納しておき、値の差の絶対値(Math.abs)が一定値(th=0.1)を超えたときのみ、値を送信することにしています。」
 ……などのように、ネットワークを介した処理のコツまで解説してくれます。
「Raspberry Pi」について、その原理も含めて基礎から丁寧に解説してくれる本でした。ブルーバックスなので大きさも手ごろで、手近な参考書として活用できると思います。興味のある方は、ぜひ読んでみてください。お勧めです☆
   *    *    *
 なお社会や科学、IT関連の本は変化のスピードが速いので、購入する場合は、対象の本が最新版であることを確認してください。
<Amazon商品リンク>