今日は、開発プロセスのうちの4から6を行います。6に関しては今後数週間にわたって実施します。
- 企画(マップ作成)
- 部品リスト作成
- 実現可能性分析
- ブロック図作成
- 回路図作成
- 実装
- テスト
目次
- 10.1 ブロック図
- 10.2 回路図
- 10.3 要素テスト
- 10.4 ライブラリ
- 10.5 実習
10.1 ブロック図
ブロック図は、電子回路に限らず、システムの概要を設計する際に使うことができる図です。記法は単純で、システムの要素を四角(box)で記述し、要素間の関係を矢印(arrow)で記述します。ブロック図は、”box and arrow diagram”とも呼ばれています。

上記の例では、矢印の向きが情報や電流の流れを表しています。カラーセンサから得られた情報に基づいてDCモータの回転を制御する、というようなイメージです。
ブロック図を書く理由は、ハイレベルなコミュニケーションのためのツールとして使うためです。商品企画などをしている時には、回路図では情報が詳細過ぎて、情報を提示する側にとっても、それを読む側にとっても効率が良くありません。そのために、回路図よりも大雑把なくくりで表現できるブロック図を使うわけです。
四角で何を表すかについては、色々なやり方があります。例えば、LEDを4つ使って0から15までの数を示す装置を作る場合、LED一つひとつを四角として表現することもできますし、LEDが4つ集まったものに「LED表示装置」などの名前をつけて1つの四角で表現することもできるでしょう。何れにしても、複雑すぎないように抽象度を設定し、図にメモ書きを加える等の工夫をして、わかりやすい図を作りましょう。
10.2 回路図
実際に回路を組んでシステムを作り始める前に、回路図を書きます。というのが本来の工程です。しかし、今年は諸事情により回路図に時間をかけている時間がありません。回路図は各自でメモ程度に作成して、回路を組む際の事前準備としてください。
10.3 要素テスト
実現可能性分析では、主にネット上の情報をもとにデバイスが使用可能かどうかの検討を行いました。しかし、実際に使えるかどうかは、実際のデバイスでテストしてみなければいけません。
主要なデバイスごとに、テスト用の回路とプログラムを記述して、自分が思っている通りに動作するかどうかの実験を行ってください。部品リストに掲載されている部品は全て実験します。実験は、必ずデバイス単体で行ってください。組み合わせると、また別の問題が生じることがあります。
10.4 ライブラリ
Raspberry PiのGPIOを使うためにはライブラリが必要です。色々なライブラリが公開されていますが、以下の3つが有名です。
- gpiozero
- RPi.GPIO
- RPIO
gpiozeroは授業で使っているライブラリで、まずこれを使うことが第一選択となります。gpiozeroを使っているコードは、以下のようにライブラリをインポートしているはずです。
from gpiozero import PWMLED
PWMLED
のところは、使っているデバイスによって違います。
RPi.GPIOを使っている場合は、以下のようになります。RPi.GPIOは古いライブラリでお勧めしません。
import RPi.GPIO as GPIO
RPIOを使っている場合は、以下のようになります。RPIOはRPi.GPIOの後継のような位置付けのライブラリです。
from RPIO import PWM
gpiozeroで何ができるかは、必ずリファランスマニュアルを見てください。
https://gpiozero.readthedocs.io/en/stable/
gpiozeroには以下のような機能があります。
- LEDやPWMLED、RGBLEDなどのLED制御
- PWM制御
- TonalBuzzer (圧電スピーカーで音を出す)
- Button
- Motor、AngularServo (DCモータやサーボモータ)
gpiozeroには1つ大切な機能がありません。それがI2Cです。I2Cで通信を行うデバイスを使う場合には、smbus2というライブラリを使います。Tipsに加速度センサの使い方があり、その中でsmbus2を使っていますので、そちらの説明を読んでください。
10.5 実習
報告1. ブロック図
システム全体のブロック図を作成して提出してください。
報告2. 回路図(単体)と要素テスト
各自の部品リストに掲載されている部品ごとに要素テスト(動作の実験)を行ってください。実験は、実験レポートの書き方にしたがって書きます(実験時間や期待される結果、実験方法、実験結果などです)。また、単体で動作させるときの回路図もつけてください。
— by 飯田 周作、沼 晃介、石井 健太郎 専修大学ネットワーク情報学部