
2つの経路によるクムクムへのプログラミング では(A)リモートプログラミング系 (B)ダイレクトプログラミング系 について簡単に説明をしました。
今回はどのようにCPU内部でプログラムが動いているのかを説明します。
A...リモートプログラミング系
上図(A)を見ていただくとわかる通り、クムクムのCPUの内部では、あらかじめ埋め込まれているクムクムのファームウェアー(基板上で動くプログラムをファームウェアーと呼ぶ)が、クムクムの電源を入れたとたんに動き始めます。
このファームウェアーは、いつもBluetoothからのコマンド待ち受けていて、コマンド(動作命令)がPCから送信されると、その動作命令を解析して、クムクムロボットを動作させます。
このため、クムクムのファームウェアーは(A)系統で動いている限り書き換わってしまうことはありません。
B...ダイレクトプログラミング
上図(B)は図の通り、Arduino IDE上で作ったプログラムは、もともとあるQumcumファームウェアーの上に上書きしてしまいます。そして、すっかりもともとのプログラムを消してしまうため(A)のプログラムが動かなくなってしまうのです。
C...ファームアップデート
(B)によって消されたもともとのファームウェアーをもとに戻せるとご説明しました。その方法は、Supportページ の ソフトウエアーダウンロード部分にある ファーム からプログラムをダウンロードし動作させることで元に戻すことができます。
ダウンロードしたプログラムを起動しファームの書き込みを行うだけです。

ファームアップデータ

ファームアップデータは上記のような画面となっています。
ボタンは「ロゴなし版アップデート」「ロゴ版アップデート」と2つありますが、必ずご自分が所有されているロボットのメインボードを確認の上、正しい方のボタンをクリックします。
ボタンを間違えてクリックしても、動作はおかしくなりますがボードを壊してしまうことはありません。その場合もう一度正しい方のプログラムでアップデートすればもとに戻ります。
ロゴあり、ロゴなしとは、基板の左下に、クムクムの顔のロゴが印刷されているかどうかです。販売していますクムクムのすべてはロゴがありますからロゴ版を選択します。(ロゴなし版は開発経過段階で出回ったモニター用のクムクムで、もしどなたかお手元にお持ちでしたらとてもレアなものです)

重要なご注意
Arduinoは、ArduinoIDEで読み書きしている限り、よほどのことがない限りボードが動かなくなるようなことはありません。しかし、たまに、プログラムによってはブートローダーを壊してしまうようなプログラムをかけてしまうことがあります。
特に、メモリーに関するプログラムには要注意です。
もしブートローダを壊してしまった場合、Arduino IDEから今まで見えていたポートすら見えなくなってしまいます。もしかすると、ボードが見つからないというメッセージがWindowsデスクトップ上に表示されるかもしれません。
そうなった場合、ATMELのプログラムを書き込む装置を用意するか、そのほかArduinoの別基板を用意しブートローダを書き込み復旧させる必要があります。
一般個人の皆様でも、ネットで調べたりすれば十分回復可能な作業ですが、最悪は弊社にご依頼いただくしかなくなります。
その場合有料となりますので、くれぐれもご注意の上お取り扱いください。
こぼれ話
ロゴなし版のクムクムのボードは、開発経過において一時的に作った、わずか100台程度のクムクムです。ロゴあり版との違いはLEDの制御方法にあります。ロゴなし版のクムクムのLEDはI2Cバスで接続したPWMコントロールが可能なLSIを使用しました。これによって各色の明暗をコントロールすることでフルカラー制御を可能にしようと試みたのですが...残念なことに、LEDのばらつきによって一定の品質を得ることができず断念しました。
最終的にはロゴ版のクムクムは、I/Oポートからの直接制御となっています。
この違いによりファームウェアーが一部異なっています。
次回バージョンのクムクムでは、マイコン内蔵型フルカラーLEDを搭載し明暗を出せるように設計中です。