GW短期集中連載!マイクロはちゅねで楽しいネット工作の世界へ

第6回マイクロはちゅね、つながって世界へ羽ばたく

マイクロはちゅねを増やしたり、パソコンにつないだり

前回までで、マイクロはちゅねはセンサで外の様子を感知して動くようになりました。最終回の今回は、さらに推し進めて、他のマイコンやパソコンとつなぐ方法を紹介します。この段階まで発展すると、1匹だけで寂しくネギを振っていた頃と異なり、ネット上で公開する工作としても楽しいものになってきます。

図1は、マイクロはちゅねを101匹に増やして動かしてみた様子です(動画はこちら⁠。全部が同じ動きをするだけではなく、個別に違った動きもできるようになっています。数が増えると圧倒的な迫力が出てくるため、ずっと見ていても飽きませんし、部屋に置いておいてもすごい存在感です。この作例では専用のマイコン基板を起こしているのですが、パターン設計用CADに無料のものがありますし、比較的安価にできますのでP板.comOLIMEXのサイトを参照⁠⁠、作成は一般に想像されるほど難しくはありません。

図1 マイクロはちゅねを増やすと面白さが格段にアップする。必然的に、複数のマイコンが通信しながら動く形になる。複数のマイコンを使うというのは、趣味の工作ではまだ珍しいが、業務などでは普通
図1 マイクロはちゅねを増やすと面白さが格段にアップする

また、パソコンに繋がれば、そのままネットにも繋がります。外出先から自宅のパソコンにリモート・アクセスして101匹にネギを振らせ、侵入者を撃退するようなシステムも近い将来普及することでしょう(笑⁠⁠。

このような工作をしようとすれば、マイクロはちゅねを制御するマイコンを、他のマイコンやパソコンとつないで通信させることが必要になってきます。この通信が今回の技術テーマです。複数のマイコンが同時に動くシステムは、趣味の工作ではまだかなり珍しいですが、業務では普通に存在します。

パソコンとの接続はUARTやUSB、デバイスとの接続はSPIやI2Cがポピュラー

通信をさせるには、電気的にどのようなインターフェースで接続するかと、データをどのようなフォーマットと順序で送るか(上位プロトコル⁠⁠、の2つを検討する必要があります。幸いなことに最近のマイコンでは、前者は専用ハードで面倒をみてくれます。

そのようなインターフェースとしてよく使われる物の一つが、UART(いわゆるRS-232C)です。パソコンではすっかりレガシーなインターフェースですが、ハードもソフトも簡単なのでマイコンでは依然良く使われています。また、図2に示したとおり、UART-USBの相互変換基板無線モジュールなどもあります。このように多くの部品を経由するのは難しそうに思えますが、大まかには、信号線を繋いだだけで通信できるようにそれぞれ簡単化されています(とはいえ、問題が起きるときは起きるので、複雑な経路をいきなり組んで動かそうとするのは止めた方がよいでしょう⁠⁠。

図2 マイコンをパソコンとつなぐのは、そう難しくない。多くのマイコンはUART(RS-232C)というI/F回路を内蔵しているので、UART-USB変換基板を介してパソコンと通信できる。最近のマイコンではUSB I/Fを持つものもある。写真のように無線モジュールを使えば、ラジコンのようにPCからマイコンを操作することも可能
図2 マイコンをパソコンとつなぐのは、そう難しくない

また、各種センサやアクチュエータ、SDメモリカードといった部品をマイコンとつなぐときには、SPII2Cと呼ばれるシリアル通信規格がよく使われています。とくにセンサについては、前回触れたようなアナログ信号出力のもの以外に、SPIやI2Cのディジタル・インターフェースのものも増える傾向にあります。

通信処理のマイコン・プログラミング

以上のような通信専用ハードは、最近のマイコンであれば複数個が搭載されるようになってきています図3左⁠。低機能なマイコンだと通信ハードがなくて苦労するので図3右⁠、よほど費用を切り詰めたいとき以外は高機能なマイコンを選ぶ方がよいでしょう。実際、筆者のマイクロはちゅねでは、採用したマイコンPIC12F675間でシリアル通信をするために、本来ならハードがやってくれる電気信号ON/OFF操作や時間調整を全部プログラミングで行っており、C言語なのに半ばアセンブラのようなコードになってしまっています。

図3 マイコンを選定する基準の一つが、どのような種類の通信ハードが何個搭載されているか、である。図左はポピュラーで高機能なPIC24F64GAで、色々な通信ハードが内蔵されている。図右は筆者のマイクロはちゅねに搭載のPIC12F675で、非常に安いが通信ハードが一切ないので、電気信号のON/OFFなど全部プログラミングしなければならず大変
図3 マイコンを選定する基準の一つが、どのような種類の通信ハードが何個搭載されているか、である

通信専用ハードが使えるなら、通信プログラミングはだいぶ楽になります図4⁠。ハードが準備完了かを確かめてから、データを送る場合はそれをレジスタ(ハード内部の専用変数)に書き込み、データを受信する場合はレジスタを読む、というのが基本です。ここで、送信ないし受信が可能になったことを割り込みで知るようにプログラミングするのが、常套手段です。たとえば外からデータを受け取ろうとした場合、もしwhileループで待つことにすると、そこで他の処理が全部ストップしてしまうからです。とくに、会話の相手が一つではなく複数ある場合や、話しながら聞くといった場合には、処理全体が止まってしまわないよう、かなりの注意が必要です。

図4 マイコンでの通信プログラミングの土台となるのは、1バイトの送受信を行うこと。専用ハードを持つマイコンなら、それほど面倒ではない。これができたら上位プロトコルの設計とプログラミングをするが、通信誤りへの対応やデッドロック回避などが課題になる。メインの処理が止まってしまわないよう、通信では割り込みを使うのが常套手段
図4 マイコンでの通信プログラミングの土台となるのは、1バイトの送受信を行うこと

1バイト・データの送受信ができたら、その上にパケット転送などの上位プロトコルを組むことになりますが、その作り方はやりたい事によって様々です。たとえばネギ振りであれば、パソコンなどから「どれだけの速度で何度ネギを振れ」といった命令を受け取り、はちゅねから「了解」という返事(アクノリッジ)をするようにします。人間の会話と同じです。

また、パソコン側のプログラミングについても、上位プロトコルの部分はまったく同じです。ただし、USBやRS-232Cへのアクセスは、マイコンのように直接ハードのレジスタを読み書きしたりするのではなく、デバイスドライバ経由になります。個々のデバイスやOS、コンパイラによる差異がとても大きいので、あまり一般的なことが言えません。デバイス名・OS名・コンパイラ名などをキーワードに、ネット上で検索してみてください。

安定した通信のために、電気的な部分も意識しておくとよい

最後に、通信をするうえで頭に置いた方がよい事をもう一つ紹介します。それは、通信したい物どうしをただ配線で結んでも駄目、ということです。配線の中を伝わっていく実際の電気信号は、単純な0、1の変化をするのではなく鈍りや歪がありますし図5⁠、配線が複数本あれば干渉(クロストーク)したりもします。

図5 配線をつなげばデータをやりとりできるように思えるが、実際の電気信号は単純な0、1ではなくて波形の鈍りや歪があるし、反射や干渉などもある。長い配線を引き延ばしたり、1本の信号に多数の負荷を繋いだりするのは禁物。これは高速データ伝送ほどシビア
図5 配線をつなげばデータをやりとりできるように思えるが、実際の電気信号は単純な0、1ではなくて波形の鈍りや歪があるし、反射や干渉などもある

安定した通信をしようとするなら、数m~10mもの配線を延々と引き回したり、1本の配線に100個の負荷をぶらさげたりするのは禁物です。データ転送速度を高速にしようとすればするほど、このような点はシビアになります。わりと無造作に配線しても動くのは数十kbps~数百kbpsくらいまでで、それ以上は信号波形の管理が必要になってきます。


以上、6回にわたっておつきあいいただきまして、ありがとうございました。限られた紙面ゆえ細部を割愛せざるを得なかった面も多くありますが、本稿中のキーワードから情報を検索できるかと思います。マイクロはちゅねが楽しい工作への入門となれば、筆者望外の喜びです。

おすすめ記事

記事・ニュース一覧