2015年4月19日日曜日

mbed LPC1114FN28 お試し

 今日のガラクタは スイッチサイエンスさんのmbed LPC1114FN28 です。入手したのはキットの方でコネクタ類は自分で♫ハンダ付け♪しています。


 合わせて、mbed LPC824も入手しました。


 いつもRaspberry Piと組み合わせてアナログ入力やPWM出力を拡張するためにArduino Microを使用するのが自分の常套手段なんですが、最近のArduinoの分裂問題なんかもあり、Arduinoの先行きが不安なので。(まあ、オープンなハードなので相当品を含めてハードを入手できなくなることはないと思いますが、どちらかというと開発環境やライブラリが分裂して使い物にならなくなって、ユーザが離れていくのが怖い気がします。)なので、代替の手段を模索しておこうかなというのが今回の目的です。

 で、今回、候補として調査対象にしたのが、mbed LPC1114FN28です。スイッチさんのこのモジュールでは、USB接続でマスストレージにプログラムを書き込めたり、シリアル通信したり、あとCMSIS-DAPデバッグもできる機能を外部チップ(LPC11U35)でできるようにしてありますが、基本的にはほとんどのLPC1114FN28のピンがそのまま右から左に出ている感じです。ただし、素のLPC1114FN28は600mil幅ですが、スイッチさんのモジュールは400milと幅が変わっています。ここはできれば、同じ幅のままピンを出しておいて欲しかったところです。そうすれば、モジュールの状態で開発・デバッグして、Fix後は素のICをそのまま挿して電源供給だけしてやれば済むわけですから。んー、なんで、幅変えちゃうかな?まあ、そもそも600milってでかすぎじゃね?機能の割りに?チップ自体が400milで十分な気がします。そんなわけで、mbed LPC1114FN28の基板上のICソケットに手持ちのゼロプレッシャーソケットを装着して、ゼロプレッシャーソケットにLPC114FN28のチップ自体を挿しています。スイッチさんで発注した際についでにmbed LPC824も頼みました。

 mbedは以前にちょっとだけ試したんですが、Arduinoの方が慣れていたので、その後、あまり手を付けていませんでした。今回は、もう少し突っ込んで、CMSIS-DAPでのローカルデバッグ等も試してみます。
 mbed のプロダクトページから ファームウェアの最新(beta)版をダウンロードして、LPC11U35側のファームウェアを更新して、mbedクラウドコンパイラで新規プロジェクト作成時に生成されるLチカプロジェクトをエクスポートして、ローカルの開発環境に取り込み、デバッグを試しました。当初、LPCXpresso形式でエクスポートして、LPCXpressoに取り込もうとしたんですがエラーが出て取り込めません。ネットで調べたところ、エクスポート機能に不具合があるようです。仕方ないのでMDKのプロジェクトとしてエクスポートして、MDK-ARMでデバッグを試しました。MDK-ARM Liteという無料版はLPCXpressoの無料版に比べてコンパイルできる容量が32KBまでと大幅に制限がきついんですが、LPC1114の場合はFlashが32kBしかないので、全く問題はありません。(他のmbedを使いたいときには容量制限が問題になるかもしれません。)
 実際にMDK-ARMでCMSIS-DAP(パソコンとUSBケーブルでの接続のみ)でステップ実行して、変数ウォッチなども出来ました。Arduinoにはこういったデバッグ環境がないので、これは便利です。
 PSDセンサをアナログ入力で読むのとI2Cコンパスの動作を確認しました。もう少し、具体的に使ってみないとわかりませんが、Arduino Microの代わりとして十分行けそうです。

 また、今回、mbed LPC1114FN28とは別にゼロプレッシャーソケットを秋月電子さんに注文したんですが、部品一個だけでは送料がもったいないので、IchigoJam というLPC1114でBASICが使えるモジュールのキットも合わせて購入しました。


 Raspberry Pi 同様に子どもたちにコンピュータやプログラミングに広く触れてもらいたいという開発者の意図ですが、Raspberry Pi 同様にまず飛びついてくるのは、我々世代のおっさんではないかと思います・・・。
 おそらくは、Tiny Basicをベースにしているのではないかと思いますが、LPC1124のADやI2Cの機能も利用できるように拡張された専用のBASICでセンサやI2Cモジュールが使えます。写真はストリナのI2C LCDとコンパス、EEPROMをI2CにPSDをADにつないでいます。この内、コンパスはまだ、動かせていませんが、他は動作を確認できました。I2CコマンドのR/Wビットの扱いの仕様でちょっとわからない部分もあるんですが、なかなか楽しいおもちゃです。