「組み込みシステム」は身の回りに多いのですが、自ら作ろうと思うと少し敷居が高い感じがします。それは情報が少ないことがあるかもしれません。組み込みシステムはとても自由度が高く自分の実現したいことが身近になります。
◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に:
自分の作りたいものが作れる
もちろん、技術力によりますがハードウエアからソフトウエアまで自分で何を作るか決めて、自分で作ることができますので、ソフトウエアだけのときよりも幅広く作りたいものを作ることができます。
ハードウエアも電子回路以外に、モーターやそこに取り付けるカムやロッドなどの機構も作ることができます。最近は 3Dプリンタがありますのでその対象は大幅に広がっています。
通信機能を搭載すれば、PCや他のシステムとも通信することができます。クラウドと通信してクラウドの高度な機能と連携することができます。もちろん、スマートフォンとの連携は身近で自由度が広がる方法です。
電子回路との関係性を考えることが楽しい
組み込みシステムで使うコンピュータは MCU( Micro Controller Unit )と呼ぶことが多いです。CPU( Central Processing Unit / 中央処理装置 )との違いは、ひとつの ICの中に、メモリやタイマなど機能が追加されていることです。また、スイッチやセンサ、電磁石(ソレノイド)やモータなどを制御するための機能も一緒に入っています。ひとつの ICの中に必要な機能がほぼ全部含まれているところが CPUと異なります。
ハードウエアから設計するときは、使用する MCUも自分で選択します。必要な機能を事前に明確にしておきます。これを仕様を作成すると言います。仕様を作成した後にその仕様に見合う MCUを選択します。ハードウエアを設計せずに購入するときは、ボードの機能を調べてその使用に見合うボードを選択します。
MCUの機能をどの様に使うかを考えます。機能を電子回路や周辺機器の接続に割り当てるという感じです。機能や電気的な特性、MCUのどのピン(端子)を使用すると仕様を満たすのか、最適なのかを考えます。この段階ではソフトウエアも考慮する必要があります。ハードウエアの最適な割付けは、効率的なソフトウエアをしたり、バグ(問題)を減らすことにつながるからです。
ハードウエアとソフトウエアの関係はここで決まります。
同じ機能を実現する場合にハードウエアで行うこともできますし、ソフトウエアで行うこともできる場合があります。どちらが良いのかは自分で決めることができます。例えばパルスの幅を測定する場合、MCUにインプットキャプチャ機能があればその機能を設定することにより自動的にパルス幅を測定することができます。ポート(端子)の状態と内蔵タイマーを使用してプログラムでパルス幅を測定することもできます。どちらの方法で測定するかは設計者次第です。
組み込みシステムは限られたリソースの中で、仕様を満足するハードウエアとソフトウエアの組合せを見いだしていくことが必要です。できるだけ少ないリソースを使い切る組合せができるとうれしくなります。これも組み込みシステムを設計する楽しさのひとつだと思います。
スマートフォンとの通信も簡単
スマートフォンは生活に必要不可欠なものになりました。ソーシャルメディア(SNS)やホームページの閲覧はもちろんのこと、決済手段や 本人認証のための ID端末としても活用の幅が広がっています。各種の機器を設定したり、操作したりする操作端末としても使用することが増えました。
組み込みシステムは独自の UI( User Interface )を持たせることもありますが、最近はスマートフォンを UIとして使用することも多くなりました。スマートフォンとの通信は BLE( Bluetooth Low Energy )、Wi-Fi などで行います。BLEは、Web Bluetooth APIを使用することによりスマートフォンと接続できます。Qumcum Lab. はスマートフォンをリモコンとして使用しています。
スマートフォンはクラウドとも接続できます。組み込みシステムからクラウドまで連携できることを意味しています。この組合せにより組み込みシステムは他のシステムと合わせて大きなしくみの構成要素とすることもできます。スマートフォンの代わりにゲートウェイを使用することにより、日常的に接続できる構成とすることもできます。
クラウドの活用で広い世界とつながる
クラウドと通信することによりクラウドの幅広いリソースを利用することができます。
難しさと不安を乗り越える
組み込みシステムは可能性と楽しさを提供してくれますが難しそうです。
プログラミングは得意でも電子の世界は苦手という方も多いと思います。また、その逆に電子回路の設計や試作は慣れているけれども、作った電子回路とクラウドと連携するソフトウエアはどの様に構成したら良いのだろうかと思う方もいらっしゃると思います。
組み込みシステムが難しく見えるのは、自分の専門とする領域(技術)と異なる領域の知識が必要となる場合があるからです。少なくともハードウエアとソフトウエア両方を知っていることが必要なのかなと思います。最初のうちは知らないところを「ブラックボックス」として扱えば大丈夫です。
多く見かける例は、Arduino のや Raspberry Pi ボードを使用する方法です。これらのボードを使えば、PCを開発ツールとしてプログラミングすることで電子回路の細かい内容を知らなくても、センサからデータを受け取ったり、モーターを制御することができます。
少し進んで自分で電子回路を作る場合でも、すでにできあがっているモジュールという部品を組み合わせればかなり広範囲の機能を自由に扱えるようになります。その先は、そのモジュールの一部を自分で設計した電子回路に置き換えていくこともできます。最終的にはすべてオリジナルの回路にすることもできるでしょう。
ソフトウエアも同じでライブラリというソフトウエア上の部品(プログラム)があります。これをブラックボックスとして使用することにより、細かい動作が分からなくても欲しい機能を追加することができます。クラウドも APIを使用することにより多くの機能を組み合わせて使用することができます。(クラウドは機能をブラックボックスとして使うことが前提の場合が多いです。)
ブラックボックスは嫌だ!
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- SN74LVC1G3157 SPDT アナログスイッチ Datasheet