マイコンのデバッグ方法とhuman interfaceに関する雑感
昔からマイコンのデバッグ方法といえば、マイコンとPCをcom port(RS-232C接続)を介して通信コマンドを構築してデバッグする方法である。
PC側のアプリケーションは、PC-98時代であればn88Basicでコマンド通信のソフトウエアを開発していたであろうし、
Windows OSの時代ではVB6(Visual Basic)やVB.netでPCアプリケーションとしてコマンド通信のソフトウエアを開発していたであろう。
しかし、この通信コマンドによるデバッグの手段ではPCのOSの種類やバージョンが変わるごとに作り直しが必要だし、そのサポートも大変だ。
まして、通信コマンド・インターフェースがデバッグのみならず、顧客に販売したPCアプリであれば、そのアフターケアのサポートの労力も重荷となるし、開発費を回収できるほど売れる保証もないし、自分の営業力次第となる。
マイコンのデバッグだけを考えるなら、スイッチやLED、7セグLEDの組合せだけで十分に対応できる場合もあるし、マイコンのエミュレーターを購入すれば、強力なデバッグ環境が利用できるし、この話は完結する。
しかし、顧客に販売したhuman interfaceであるPCアプリ(アプリの背後では通信コマンド・インターフェースが動作)であれば、それをエミュレーターで代用する事はできず、されとて売れるかどうか分からないモノ(マイコン製品)にアフターケア・サポートの重荷をなんとか軽減したいのが心情といえるであろう。
それをcom portからUSBに変更した所で状況は同じである。
そこでLAN port(Ethernet)について考えてみた。
マイコンにLAN portを構築する簡易な方法としてはLAN Controller ICを利用することである。LAN ControllerにはTCP/IPが実装されており、Ethernet接続が構築できる。マイコンとLAN Controllerとの間はSPI/I2C/UARTといった通信インターフェースになる。
TCP/IPの場合、PC側のアプリのソフトウエアはbinary codeの処理が主となる。
もし、http層までマイコン側に実装できれば、WEB Server(http Server)が構築されるので、PC側のアプリにはブラウザが利用できることになる。
このブラウザ利用が強力な解決策(Solution)となる。なぜなら、human interfaceとしてPCやスマホのOSのバージョンや種類ごとにサポートする必要がなく、アプリ開発の労力がとても軽減されるからである。
しかし、マイコン側にhttp層を実装しようとすると、html文法(文字列処理)でプログラミングすることになり、過去に開発資産がなければ、非常に面倒な余分な労力が必要となる。
そこで自分の(組込み)マイコンとは別にLinux OSが実装されたマイコン・ボード(ラズパイやBeagleBone-Blackなど)を用意すると、マイコン側に容易にWEB Server(http Server)が構築できる。自分の組込みマイコンとLinux搭載マイコンの間はSPI/I2C/UARTといった通信インターフェースを介する。
Linuxが搭載されていればNode.jsが利用できるので、Node.jsであればWEB Serverは容易に構築できる。ブラウザを利用できれば、そこにはボタンやスイッチ、入力カラムやグラフといった各種Visualデザインが用意されているので、VB.netさながらのhuman interfaceが簡単に入手に出来る。
さらにLinix搭載マイコンにはUSB接続カメラやネットワークカメラ(Ethernet Camera)を利用できるので、システムとしては強力な機能を付け加える事が可能である。しかし、ブラウザを介したWEB アプリではstreaming処理には処理速度の問題があるので、処理を速くしたければ、WEB アプリのソフトウエア開発にはPythonではなく、高速な処理速度に特化されたV8 Javascript Engineを利用する必要がある。
じゃー、Linux搭載マイコン・ボードを利用すれば、組込みマイコンのhuman interface構築に関する問題点は完全に解決するか?
実はそうではない。Linux搭載マイコン・ボード利用にも問題点はある。それは、消費電力が増える事。消費電力が組込みマイコンのみを実装・利用した場合に比べて、Linux搭載マイコン・ボード利用した場合では消費電力が増えるのである。そもそもLAN Controller IC 自体の消費電力も大きい。
組込みマイコンの製品仕様(用途・機能)によるが、消費電力を抑えたければ、スイッチやLEDのレベルでhuman interfaceを制限すべきであり、組込みマイコンの製品が自立動作であれば、それは問題となることは少ないであろう。
以上、長々と雑感を述べたが、私の様にロボット開発を主と考えている輩には、human interface開発には余分な労力と資金をかけたくないというのが本音であり、まして営業力もないので、金を掛けた所でどこまで売れるのか?回収できるか?という不安もつきまとうので、ましてソフトウエア・ハウスに外注する気分にもなれず、ましてここまでデフレ不況で誰も何も買わず消費しなくなっている時代に、それ(余分な労力と資金をかけること)は危険な行動特性となっているのが不都合な実状である。
よろしければサポートお願いします! いただいたサポートは制御ソフトウエア、自動制御の開発実験の 活動費に使わせていただきます!