1 Introduction

フィジカルコンピューティング開発論(PC開発論)と応用演習(PC)はセットになっています。PC開発論で説明したことを、応用演習で実験します(ただし、そうでない回もあります)。この講義資料は、PC開発論と応用演習の両方で使用します。

目次

  • 1.1 イントロダクション
  • 1.2 実習

夏期課題発表会

9/26の第1回応用演習では、夏期課題の発表会を行います。1人3分以内で発表してもらいますので、準備をしておいてください。

1.1 イントロダクション

フィジカルコンピューティングとは

フィジカルコンピューティングとは何か、ということから始めましょう。”Physical Computing“という言葉は,Tom Igoeによって最初に使われたと思われます。New York University で彼が担当する講義のサイト(https://itp.nyu.edu/physcomp/)には以下のような説明があります。

“Physical Computing is an approach to computer-human interaction design that starts by considering how humans express themselves physically. Computer interface design instruction often takes the computer hardware for given ― namely, that there is a keyboard, a screen, speakers, and a mouse or trackpad or touchscreen ― and concentrates on teaching the software necessary to design within those boundaries. In physical computing, we take the human body and its capabilities as the starting point, and attempt to design interfaces, both software and hardware, that can sense and respond to what humans can physically do.”

この講義では,フィジカルコンピューティングを以下のように定義します。

「フィジカルコンピューティングとは,人間と物理世界とのインタラクションがあるようなコンピュータ処理を,人間の身体的特徴にもとづき実現することである。New York大学の教育プログラム(Tom Igoe)の名前が語源。広範な概念を含み,組込みシステム,デジタルアート,教育,思想などに関係する。」

上記の定義にもあるように,フィジカルコンピューティングは、組込みシステムと呼ばれるシステムと関係があります。技術的な側面から見た場合には,組込みシステムそのものであるとも言えます。フィジカルコンピューティングは以下のような要素から構成されると考えます。

  • 組込システムの技術
  • ユーザインターフェイスの技術
  • 芸術・感性

ユーザインターフェイスの技術とは,使いやすいユーザインターフェイスとはどのようなものかを,様々な側面から考察し体系化した技術です。例えばWebで言えば,メニューやボタンの形や色,配置などに関する技術です。芸術・感性が入っているいることに違和感を持つかもしれません。しかし,スマートフォンの開発にはそのデザインが決定的な意味を持ちます。また,フィジカルコンピューティングの守備範囲には、デジタルアートと呼ばれるような分野も含まれます。

ネットワーク情報学部は、工学部ではありません。我々は、組込みシステム技術の基礎となる電子電気や物理学、制御理論といったことを専門とするわけではないのです。よって、これらの基礎的な知識・技術に関してはできる限り簡素に、最低限の事柄のみを扱うことにします。その代わり、我々は、発想する力を最重要事項として扱います。

講義の目的

この講義の目的は、発想する力を養うことです。そしてそれは、勝手な妄想ではなく、確かな技術と手法に基づかなければなりません。その基礎として、幾つかのサブゴールを設定します。

  • マイコンとデバイスを使った簡単な電子回路を理解する。
  • マインドマップを使って、アイディアを他人に説明する。
  • 自由な発想で作品を構想する。
  • C++を使って数百行規模のプログラムを作成する。
  • 他人の作品を評価し、優れている点、改善できる点を議論する。

これらのサブゴールを達成していき、最終的には社会に価値をもたらすシステムやサービスを発想する力を獲得することが最終的な目的です。

組込みシステム

組込みシステム(embedded systems)とは、機器に組み込まれるコンピュータシステムのことです。具体的な例を挙げると、家電製品やスマートフォン、車載機器等になります。コンピュータが組み込まれた機器自体を、組込みシステムと呼ぶこともあります。つまり、家電製品は、組込みシステムです。

組込みシステムの市場は非常に大きく、また成長しています。中でも自動車は、本格的に組込みシステムとなりつつあります。現在、自動車のエンジンは、ほぼ全てコンピュータによって制御されています。これは、排ガスをより少なくし、効率よくエネルギーを取り出すためです。また、プリクラッシュセイフティという考え方に基づき、自動車が衝突しそうな危ない状況に陥った時、運転者に警告をしたり、自動的にブレーキをかけたりすることができるようになりました。これらも全て、コンピュータによる処理です。完全自動運転が実現するのも夢ではないかもしれません。

マイコン

この講義では、ARMという会社が設計したマイコンを使用します。マイコンとは、マイクロコントローラの略で、コンピュータの一形態です。パソコンにおけるCPUのようなものですが、メインメモリやネットワーク機能などが、コンピュータの心臓部と一体になっています。マイコンは、エアコンや電子レンジといった家電製品や、自動車のエンジンやブレーキを制御する車載機器、スマートフォン等に利用されています。用途により、車載用マイコンや家電用マイコンのような区別があり、多種多様です。

ARM社は、自社で製造を行わない、いわゆるファブレス(工場を持たないという意味)のマイコンメーカーです。設計だけを行って、そのライセンスを色々な会社に売っています。ARM社はイギリスの会社ですが、2016年の夏にソフトバンクに買収されたことで話題になりました(これは本当に大変なことですよ!)。マイコンの世界は複雑で、例えば、AppleがiPhoneに搭載しているAシリーズというマイコンを例に説明すると、A12はARMをベースにAppleが拡張をして、それをTSMC(台湾)という会社が製造していると言われています(Appleは詳細を発表しないので)。TSMCはARMとは正反対で、設計はしないけれどもファブレスメーカーの依頼に応じて製造だけを行うメーカーです。

いわゆるパソコンのCPUメーカーは、ほぼインテルだけになりました(一部AMDのCPUも使われています)。一方、マイコンのメーカーは、非常に多くあります。有名なところでは、Qualcomm(アメリカ)、ルネサス(日本、NEC+日立+三菱系統)、Freescale(アメリカ、Motorola系統)、Samsung(韓国)、NXP(オランダ、Phillips Semiconductor系統)、TI(アメリカ)、Atmel(アメリカ)、Infineon(ドイツ、Siemens系統)、STMicroelectronics(フランス+イタリア、Thomson系統)、ブロードコム(アメリカ)などのメーカーがあります。

かつて日本は、半導体の製造で高い世界シェアを持っていました。このような文脈で「半導体」という言葉を使った時には、主にマイコンとメモリ(DRAM及びフラッシュメモリ)を指します。1990年頃には、NECや東芝、日立製作所、富士通、三菱電機などのメーカーが、世界のトップ企業とし存在感を持っていたのです。しかし、現在の半導体市場における日本企業は、ルネサスが車載マイコンで、東芝がフラッシュメモリでそれぞれ大きなシェアを持っているくらいになってしまいました。この東芝のフラッシュメモリも、東芝メモリという会社に分割されて、外資系のファンドに売却されました。

マイコンは、組込みシステムの心臓部なので、どのような機器に組み込まれるかによって、求められる性質が異なります。例えば、炊飯器や低価格の電子レンジのような家電製品の場合には、そんなに大きなメモリや計算能力を求められないので、8bitマイコンや16bitマイコンで十分です。これらのマイコンは、1個50円から100円程度の価格です。1個数百円で売られているUSBメモリにもマイコンは入っていますから、この価格優位性はとても重要なことなのです。一方、スマートフォンの場合には、もう既にパソコン(PC)と同じような性能が求められますから、心臓部には最新の64bitマイコンが使われます。64bitマイコンは、16bitマイコンと比較してはるかに高価です。

使用するツール

この講義では、以下のようなツールを使います。

  • mbed: マイコンボード。マイコンを使いやすくした基盤。micro:bitというマイコンボードを使います。https://os.mbed.com/platforms/Microbit/
  • mbed Compiler: Web上でソースコードを記述すると、サーバでコンパイルして実行コードを作成します。https://os.mbed.com
  • Fritzing: 配線図や回路図を描くためのツールです。http://fritzing.org/home/
  • coggle: マインドマップを描くためのツールです。https://coggle.it/
  • 半田ごて
  • マルチメーター

この講義では、マイコンボードと、実験に必要となる部品がセットになった、「mbedをはじめようキット」を使います。mbedをはじめようキットは、Switch Scienceで販売していますから、第1回応用演習(9/26)までに各自購入しておいてください。注文のためのURLは別途知らせます。

mbed

mbed(正式にはARM mbed)というのは、プラットフォームの仕様につけられた名前です。ここで言うプラットフォームとは、マイコンボードとソフトウェアのライブラリや開発環境などをセットにしたものです。mbedに準拠した製品は、たくさんあります。この講義で使用するmicro:bitというマイコンボードも、そのうちの1つです。

mbedの目的は、組込み機器をできるだけ容易に開発できるようにすることです。様々な用途向けに作られたmbedハードウェアがあるので、開発者はそれらの中から用途に合ったものを選ぶことができ、しかも、どのハードウェアでも同じ開発環境を使うことができます。

micro:bitというマイコンボードは、Nordic社のマイコンnRF51822が搭載されたマイコンボードです。nRF51822というマイコンは、ARM社のARM Cortex-M0というアーキテクチャをもとに作られています。Coretex-M0は、32bitマイコンで比較的広い用途に使われることが想定されています。nRF51822自体は、1個200円から400円程度の価格です。マイコンの価格は、購入数量が多ければ多いほど安くなるので、このように幅があります。マイコンの価格とは、だいたいこの程度です。こんなに安いのに、立派なコンピュータなのです。

mbedプラットフォームで動くプログラムを作成する方法は、いくつかあるのですが、ここでは、mbed Compilerというオンラインの開発環境を使います。Webブラウザ上でソースコードを書いて、サーバでコンパイルし、実行ファイルをダウンロードするという形式で開発します。ライブラリは、mbed OSと呼ばれています。このmbed OSを使うことによって、ハードウェアの違いや細かい設定を隠蔽することができます。

C++

mbedの開発には、C++を使います。C++は、C言語を拡張したものなので、C言語の文法は、ほぼそのまま使えます。C++に関しては、フィジカルコンピューティング開発論で簡単に説明をする予定です。

Mind Map

マインドマップ(Mind Map)は、Tony Buzanによって考案された、発想法とその図示法です。何かについて考えをまとめたい時に使います。考えをまとめたいトピックを選んだら、そのトピックを中心にしてトップダウンに考えを広げていきます。

マインドマップの書き方については、「フィジカルコンピューティング開発論」で説明します。

1.2 実習

今週の実験は、開発に必要となる環境の整備、およびFritzingとcoggleの準備です。この資料中で、レポートとして報告すべき作業には、「実験1.」や「実験2.」のような見出しが振られています。それ以外の部分は、作業を行って確認するだけで良いです。

今週は夏期課題の発表会があるので、実験に割ける時間がそんなに多くありません。そこで、演習時間内に終わらなかったものは来週の月曜日までの宿題とします。

提出期限: 9/30の20:00

レポート

実験を行ったら、必ず実験レポートを作成します。ここでは、この講義における実験レポートの書き方を説明します。レポートの書き方は、講義によって異なりますから注意してください。

一回の演習で、複数の実験を行います。実験レポートは、演習単位で提出してもらいますから、各実験レポートには複数の実験が含まれることとなります。また、実験レポートは、「である調」で書きます。

実験レポート毎に書く事柄は以下の通りです。

  • 第何回の演習か
  • 実験日
  • 実験者の氏名(場合によっては、複数人になります)
  • 実験全体を通じての感想

実験毎に書く事柄は以下の通りです。

  • 実験の概要(実験1などの項番を振る)
    • できるだけ短い文章で、どんな実験なのかを説明します。
  • 実験の方法
    • ここには必ず写真を入れます。電子回路を使った実験の場合には、回路全体の写真を撮ります。
    • プログラムがある場合には、ここに入れます。
  • 予想される結果(必要ない時もあります)
  • 実験を行った時間(実験を開始した時間と終了した時間)
  • 実験結果
    • ここには必ず写真か、PC画面のスクリーンショットを入れます。

一般的な実験レポートでは、実験結果の後に考察が必要となります。しかし、この講義の場合には、指示がなければ考察を入れる必要はありません。

実験レポートは、CoursePowerに提出してもらいます。提出期限は原則、その演習時間の終了時間(18:05)までです。ファイル形式は、必ずPDFにしてください。MS WordやPagesの形式で提出されたものは、再提出となります。

実験レポートは、実験と並行して書いてください。後でまとめて書いてはいけません。写真を撮ったり、値を記録したりしながらレポートを埋めていき、実験が終了したら全体の文章を見直して手直しするという順序で作成します。

Fritzing

以下のWebサイトからFriztingをダウンロードします。この資料では、0.9.3bというバージョンを使っています。

http://fritzing.org/home/

Mac OS X版の場合、実行しようとすると「開発元がわからない」と言われて実行できないと思います。その際には、システム環境設定のセキュリティープライバシーを開いて、一時的に「すべてのアプリケーションを許可」にしてください。この状態でFritzingを起動した後で、セキュリティープライバシーをもとに戻します。

Fritzingを起動すると、以下のような画面になります。

ウィンドウ上部に、「Welcome」や「ブレッドボード」、「回路図」などと書かれたタブがあります。ブレッドボードを選びましょう。

Breadboard

ブレッドボードというのは、半田付けをせずに電子回路を作るための仕掛けです。穴がたくさん空いていますね。この穴に、電子部品の足を差し込んで使います。電子部品の足とは、電子部品から出ている電線で、通常はこれを基盤に半田付けすることによって電子回路を作ります。ブレッドボートは、あらかじめ穴が内部で接続されていて、半田付けをしなくても電子部品同士を接続することができます。

以下の図の、オレンジ色の破線で囲まれた範囲に注目してください。A、B、C、Dの4つの範囲が存在します。

まず、AとDに関して説明します。ここは、横方向に2本づつ(Aに2本、Dに2本) 線があると考えます。図中の赤矢印線の示すように、内部で結線されています。AとDの部分をよく見ると、青い線と赤い線がありますね。青い線の側には、電源のマイナスをつなぎ、赤い線の側には電源のプラスをつなぎます。電源のプラスはVccやVdd、Vssなどと書きます。電源のマイナスをグランド(ground)と呼び、GNDやGと書きます。プラスとグランドと呼ぶのが良いでしょう。このように、AとDは、電源にしか使いません。

次に、BとCですが、これは自由に電子回路を組んでいく場所です。こちらは、赤矢印線が示すように、縦方向に結線されています。BとCは分かれていて、結線されていませんので注意してください。

micro:bitをブレッドボードにつなげるには、特別なコネクタを使います。以下のDragonTail for micro:bitという製品です。

以下の写真を参考に、DragonTailとmicro:bitを組み合わせ、ブレッドボードに差し込んでください。DragonTailの端の方に3V+-という2つのピンがあります。この+が赤い線、-が青い線に挿さるように気をつけてください。

実験1. ブレッドボードに部品を配置する。

Fritzingのウィンドウの右側にあるパーツウィンドウから、いくつか部品を持ってきてブレッドボード上に配置します。

以下の図と同じものを作ってください。部品は右クリックで回転させることができます。あとは色々と試してみれば感覚をつかむことができるでしょう。

これは、LEDを電池で光らせる時の配線図です。

mbed Pattern

Friztingを使うと、あらかじめ用意されたパーツをブレッドボードに配置して回路を設計することができます。パーツウィンドウのCOREというグループにあるパーツが、基本パーツになります。それ以外に、様々な人たちが作成したパーツを取り込んで使用することができるようになっています。

COREの中には、micro:bitやDragonTailのパーツはありませんので、以下のリンクからダウンロードして、MINEというグループに追加しておいてください。

https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20DragonTail%20for%20micro-bit.fzpz

実験2. micro:bitのパーツを使う。

Fritzingで、以下の図と同じものを作ってください。

DragonTailは-90度回転させて、ブレッドボードの穴にピンがしっかり合うところまで移動します。

LEDは反転させます。

抵抗の縞の色、ワイヤの色が図と同じようになるようにしましょう。抵抗の縞の色は、抵抗の値を220Ωにすることで、図と同じようになります。

DragonTailのパーツ

実験2で描いた配線図は、本来は以下のようにしたいところです。

しかし、赤丸で囲まれた部分に問題があります。このDragonTailのパーツはこの部分にバグがあって、ちゃんと下の穴に接続されていません。

これは、回路図を見てみるとよくわかります。上のタブから「回路図」を選んでください。

本来であればLEDとDragonTailのGND、および抵抗とDragonTailの3.3Vが接続されていなければいけないのに、線がありませんね。

実験2で作った配線図の回路図を見てみると以下のようにちゃんと接続されています。

この回路図をもう少し見やすく変形すると以下のようになります。回路図を描くときには、プラスが上、グランドが下という原則があります。

coggle

マインドマップのような図を描くためのツールであるcoggleを試しましょう。以下のURLにwebブラウザでアクセスしてください。

https://coggle.it/

coggleは、googleのアカウントでサインアップするようになっています。大学のgmailアカウントを使ってください。

実験3. coggleを使ってみる。

下記の図を、coggleを使って作ってみましょう。

— by 石井 健太郎、沼 晃介、飯田 周作 専修大学ネットワーク情報学部