2010年8月11日水曜日

☆ボードオレンジ「活用事例1:センサ1つでこんなに楽しいmbedワールド!」

http://mbed.org/users/shintamainjp/notebook/starboard_example1_ja/に記事を記載しました。


簡単に言うとmbedを使って温度センサの値を読み取りTwitterにポストし、それをGoogleChartでグラフ化できる活用事例です。例えば以下のようなグラフを自動的に作成することができます。


手元に☆ボードが届いてからはこういった実験が手間無く非常に素早くできるようになりました。
mbed NXP LPC1768を購入する際には一緒に購入すると良いかもしれません。


今回のケースでは温度センサを二つブレッドボードに搭載しての実験でした。
お手軽な割に綺麗なグラフが出力されて嬉しかったりします。


プロトタイピングツールは意外に放置してしまう傾向にあるのですが、今回は色々活用できています。
他のソリューションと違ってmbedコミュニティの力が関係しているのかもしれません。

2010年8月10日火曜日

mbedのSDFileSystem(とFATFileSystem)を使おうとした時に"Expected an identifier (E40)" in file "/YourProgramName/lib/FATFileSystem/integer.h"と怒られたら

mbedには世界中の様々な人達が作った便利なライブラリが集結しています。
ですから簡単に色々な事が試せるのです。

が、「世界中の様々な人達が作っている」がために問題が露呈することもあります。
今回遭遇した問題もその類。

SDFileSystemを使おうとコーディングしてコンパイルに通すと
"Expected an identifier (E40)" in file "/YourProgramName/lib/FATFileSystem/integer.h" (Line: 27, Col: 15)
と怒られてしまいました。

「他に困っている人はいないかな?」とmbedのフォーラムを調べてみると、やっぱりいます。
Forum ≫ mbed ≫ Expected an identifier (E40)
しかも、投稿者は有力な回答が得られないままになっている様子です。
(追記:これは勘違いでした。先ほど文面を再確認したところ「And thank you, it now compiles, I moved up the include for the SDFileSystem in front of everything else.」と自己解決した事が書かれていました。但し、なぜこれで解決できたのかは記されていません。興味のある人は下記解説もご覧下さい。)

mbedのFATFileSystemはChaNさんの実装したPetit FAT File System Moduleを起点にしているようです。
integer.hがhttp://mbed.org/projects/libraries/svn/FATFileSystem/trunk/integer.hにあります。

integer.hの27行目は
typedef enum { FALSE = 0, TRUE } BOOL;
となっています。

ごく稀にライブラリでこの手の実装を見かけますが、これはあまり良い実装とは言えません。
なぜなら、他の誰かが同じような定義を異なる手段で提供している可能性もあるからです。
これは通常、良くてコンパイルエラー、悪くて設計と異なる挙動を生みます。

私の場合、他に幾つかのライブラリを組み合わせていました。
怪しそうなライブラリのソースコードをダウンロードして調べます。


そうするとありました。
EthernetNetIfを使っているのですが、LPC1768/lwip/arch/cc.hに定義があります。
#ifndef TRUE
#define TRUE 1
#endif

#ifndef FALSE
#define FALSE 0
#endif
cc.hが先にプリプロセッサに通ってしまうと、integer.hの方は
typedef enum { 0 = 0, 1 } BOOL; 
となってしまいます。当然これではコンパイル不能です。

ライブラリは私の設計実装ではないので仕方ありません。
インクルード順序を変更してみます。
#include "EthernetNetIf.h"
#include "SDFileSystem.h"
を
#include "SDFileSystem.h"
#include "EthernetNetIf.h"
に変更しました。
今回の場合、これによってコンパイルエラーを回避できます。



Davidさんの場合、SDFileSystem.hをなぜか2回(11行目でも)インクルードしています。
最初の記述ではこの位置でインクルードしていたのでしょう。
彼の自己レスにもあるように、最初の方にインクルードを移動することでコンパイルが通ります。
#include "mbed.h"
#include "SDFileSystem.h"
#include "HTTPServer.h"
#include "HTTPRPC.h"
#include "HTTPFS.h"
#include "HTTPStaticPage.h"
といった感じですね。

ライブラリの実装は他の人も参加することを前提に設計しなくてはと改めて考えさせられる出来事でした。

2010年8月7日土曜日

LPCXpresso LPC1768

先日LPCXpresso LPC1343を購入した記事を書きました。

実はその日にある方とお会いした時に「LPCXpresso LPC1768をXXXXで購入できるのはいつぐらいですかね~。」とお話ししたところ・・・。


なんと・・・1つ分けて頂きました。
この瞬間鳥肌立ちました。嬉しくて。

「あぁあー!ありがとうございま~す!!」 です。

こちらの基板はLPC1343と異なりEther PHYが付いています。
ですから、基板にパルストランスの入ったRJ-45コネクタさえ付ければネットワークが利用可能というわけです。


しかもこのサイズで、LPC-Linkが付いてデバッグもできてしまう。
これはもうちょっと嬉しすぎます。


しばらくはこれらを使いながらLPC1343とLPC1768を合わせて研究していきたいところです。


すっかり32ビットプロセッサのファンです。
「もう8ビットには戻れない。」なんていうキャッチフレーズを聞いたことがありますが、まさにそういう気持ちです。
あ、そういうこと言うのは使いこなしてから・・・です。

☆ボードと一緒にmbedを始めよう (Start mbed with star board orange)

@logic_starさんの設計したmbedのベースボードのハンダ付けステップバイステップを記載しました。

2010年8月4日水曜日

LPCXpresso LPC1343

LPCXpresso LPC1343を購入しました。
一部で話題になっている?外装はこんな感じです。
このままポストに入っていても何の違和感もないですね。


「中身の基板は大丈夫なのかな?」と思ってしまいますが、ここはうまくできています。
部品面の特に目立つ突起物「USBコネクタ」、「ピンヘッダ」、「発振器」の部分が発砲ウレタンの切り欠いた部分にはまるようになっています。
基板の裏側には部品は一切載っていませんので、表側「発泡ウレタン」、裏側「ツルツルの基板」で大丈夫!という具合になっています。
この点を気にされていた方は安心して購入して下さい。


私が購入した基板のシルクには「LPCXpresso LPC1343 REV A」とあります。


NXP Semiconductorsのサイトでも説明されている通り、デバッガの部分とターゲットの部分を最終的に切り離して使うことができるようになっています。
同梱されていたシートでもこれがわかるように「LPC-LINK (LPC3154)」と「Target: LPC1343」とはっきり記載があります。
余談ですが、このシートにはクーポンコードというものが記載されています。
えーと、何に使うのかよくわかりません。


開発環境は http://lpcxpresso.code-red-tech.com/LPCXpresso/ からダウンロードできます。

インストール後に「Help -> Product activation -> Create Serial number and activate...」を選択してアクティベーションを行います。
アクティベーションを行うことでデバッグ可能なコードサイズが8KBから128KBに拡張されます。
ローカル環境から生成されたシリアル番号に加えて必要事項を記入して送ると、それらの情報を元にアクティベーションコードが生成され、登録したメールアドレスにアクティベーションコードが送られてくる形になっています。アクティベーションはもちろん無償です。


EclipseベースのリッチなARM開発環境が瞬時に構築できてしまうのが魅力です。

2010年8月3日火曜日

mbedベースボード(☆board Orange)の関連文書作成予定

@logic_starさんが企画設計したmbedベースボードがいよいよ提供に近づいてきました。
このボードの通称は☆board Orangeです。


本日基板を頂きましたので御紹介しましょう。


この基板は
  • microSDカードコネクタ
  • 16x2キャラクタLCD
  • USBホスト側コネクタ
  • LAN(RJ-45)コネクタ
が搭載可能なように設計されています。
要するにmbed NXP LPC1768と☆board Orangeさえあれば、考えうる沢山のアプリケーションをすぐに実現できるように設計されています。

私の方では以下の文書を作成予定です。
  1. ☆ボード「ハンダ付けステップバイステップ」
  2. ☆ボード「センサ1つでこんなに楽しい!活用事例1」
「組み立てステップバイステップ」は初めてmbedを導入される方を対象に確認しながら作業できるようにするためのものです。
「センサ1つでこんなに楽しい!活用事例1」はmbedを初めて使う人でも、使い倒している人でも楽しめるような内容を企画中ですのでお楽しみに。

ちなみにこの基板はきばん本舗さんから販売される予定です。
現状では提供方法は検討中とのこと。
幾つかの提供方法から選択して購入できそうですので、用途に合わせて購入できそうです。

Altera DE0 Board到着

先日発注していたAltera DE0 Boardが到着しました。


早速開封といきたいところですが、mbedベースボード(名称は☆ボードに決まりました。)関連作業をしたいので暫くお預けです。