第13

13 設計・実装

今日は、開発プロセスのうちの4から6を行います。

13.1 ブロック図

ブロック図は、電子回路に限らず、システムの概要を設計する際に使うことができる図です。記法は単純で、システムの要素を四角(box)で記述し、要素間の関係を矢印(arrow)で記述します。ブロック図は、”box and arrow diagram”とも呼ばれています。

上記の例では、矢印の向きが情報や電流の流れを表しています。カラーセンサから得られた情報に基づいてDCモータの回転を制御する、というようなイメージです。

ブロック図を書く理由は、ハイレベルなコミュニケーションのためのツールとして使うためです。商品企画などをしている時には、回路図では情報が詳細過ぎて、情報を提示する側にとっても、それを読む側にとっても効率が良くありません。そのために、回路図よりも大雑把なくくりで表現できるブロック図を使うわけです。

四角で何を表すかについては、色々なやり方があります。例えば、LEDを4つ使って0から15までの数を示す装置を作る場合、LED一つひとつを四角として表現することもできますし、LEDが4つ集まったものに「LED表示装置」などの名前をつけて1つの四角で表現することもできるでしょう。何れにしても、複雑すぎないように抽象度を設定し、図にメモ書きを加える等の工夫をして、わかりやすい図を作りましょう。

13.2 回路図

実際に回路を組んでシステムを作り始める前に、回路図を書きます。というのが本来の工程です。しかし、今年は諸事情により回路図に時間をかけている時間がありません。回路図は各自でメモ程度に作成して、回路を組む際の事前準備としてください。

13.3 要素テスト

実現可能性分析では、主にネット上の情報をもとにデバイスが使用可能かどうかの検討を行いました。しかし、実際に使えるかどうかは、実際のデバイスでテストしてみなければいけません。

主要なデバイスごとに、テスト用の回路とプログラムを記述して、自分が思っている通りに動作するかどうかの実験を行ってください。部品リストに掲載されている部品は全て実験します。実験は、必ずデバイス単体で行ってください。組み合わせると、また別の問題が生じることがあります。

13.4 ライブラリ

Raspberry PiのGPIOを使うためにはライブラリが必要です。色々なライブラリが公開されていますが、以下の3つが有名です。

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には以下のような機能があります。

gpiozeroには1つ大切な機能がありません。それがI2Cです。I2Cで通信を行うデバイスを使う場合には、smbus2というライブラリを使います。作品にI2Cのデバイスを使用する場合には、少し追加の説明をしますので、相談してください。

13.5 実習

今週から、実習は、開発論で作成を始めた「作品ポートフォリオ」を充実していく形で行います。

今週は、検討したシステムブロック図を作品ポートフォリオに追加してください。また、使用するライブラリが固まってきた人は、そのような説明を追加してもOKです。