Day5. IoTのバリエーションの源泉『マイコン』のキホン

ひとりでIoTまるっとチュートリアル Advent Calendar 2018
5日目の記事です。

無限に広がるバリエーションの源泉、マイコン。IoTの制御・通信にはなくてはならないものです。今日はすこし高い視点から、

・そもそもマイコンとはなにか
・様々なマイコンに用意されている基本的な入出力通信プロトコル

について書いていきます!

(様々なマイコンたち)

マイコンとはなにか

☑ ざっくりいうと 
めちゃめちゃ小さいコンピュータ(雑)。必要最小限の汎用性や性能に抑え、省コスト、省スペースなどに力を入れている。
組み込みシステムなどに使われる。
※参考 : のぞいてみよう、マイコンの中

☑ 組込みシステムとは
機器の中に組み込んで、所定の動作をするシステム。炊飯器とかはわかりやすい。ボタンをポチポチ押すとお米が炊ける。予め組み込まれたマイコンがいろいろな入出力を制御しているのである。これらを設計するヒトを「組み込みエンジニア」と呼ぶ。

☑ どんなことができるか
アイディア次第で用途は∞。
近年では組込みシステムに機械学習・データ連携を加えたAI化だったり、
WiFiモジュールなどのIoT化により他デバイス連携などもできる。(IoT化による開発者側のメリットは、遠隔アップデートが行えるというのもある。

☑ どんな言語で書くの?
様々な制御をさせるために、ハードウェアの知識と、ある程度プログラムを触れなければならない。基本的にはC言語などの低級言語で書く。最近モノによってはpython/micropythonなど、スクリプト言語でもかけるようになってきていたりする。
例えばArduinoも、CをベースにしたArduino言語。RaspberryPiは、pythonでもOK

マイコンとセンサや出力をつなぐプロトコル

IoTツールを作るためには、ここがかなり重要です。

センサからの入力やダイオードへの出力を電子回路でつなぎ、それを元に処理をプログラミングで記述し、システムを作っていきます。

Day3.のセンサの選び方でも書いたとおりマイコンとセンサをつなぐプロトコルが各センサごとに決められていて、きちんと把握していないと正常に動作しない。両側で仕様書(ピンアサイン)を見て、把握する必要があります。

一般に、GPIOというのは汎用入出力ピンなので、自由に使えます。
SDIやTXD、MISOなどは、特定のシリアル通信が可能なピンです。先程のマイコンのピン配置で、それぞれの用途別に囲ってみると、こんな具合です。

上図でも分かる通り、プロトコルは、主要なもので大きく3種類あります。プロトコルは、通信の約束事で、双方で同じプロトコルにしないと、入出力がうまくいきません。

これらの違いについて、わかりやすく表にまとめてみました!それぞれ少しずつ性質が異なっているので、必要な要件や用途、仕様に応じて選択してください!

また、ピンにはPWMと書かれている箇所があります。例えば、LEDライトの明るさを変えたいとき、抵抗の絞りだと、抵抗値に反比例して出力がされるので、非線形に出力が変化してしまう。PWMは、機械的に出力のパルスを制御するので、線形性を担保しながら出力調整ができます。

※ 参考 : LEDのPWM制御・輝度制御

IoTという文脈で人気のマイコン

ブームもあり、様々なマイコンが発表されています。少し特徴を列挙。

それぞれ、ちょっとずつ味付けがされていて、個性が出るので、やりたいことに合わせて選ぶのがいいと思います。このなかでもArduino/Rasberry Pi/M5stackは今後の記事に書いていきます。

面白いのは、マイコンなのに最近は遠隔でデプロイしたり、サーバーサイドで処理を実行出来たりするというところですね。WiFiにつながるマイコンがデフォルトになってきたからこそのバリエーション!

まとめ

いかがでしたか?このくらいのことがわかっていれば、あとはDay4. の電子回路知識を組み合わせて、入出力の制御をマイコンでできるようになると思います。

ここから数日間は、IoTという文脈で人気の市販されているマイコンを使いながら、基本的な制御(Lチカなど)をしていく予定です。明日はArduino!

ではではっ

前の日 : ゼロから作りながら学ぶ電子回路
次の日 :  ArduinoではじめてのLチカをしよう!

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

8

imaimai

ゼロから作るIoT

【技術者向け】ハードウェアから無線技術、クラウドアーキテクチャからデータ分析手法まで、IoTに関する知識を総ざらいし、実践すればIoTサービスが使えるように書いています!
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。