2010/06/04(金)mbedのNTP Clientを試してみた

2010/06/04 01:33 mbednucho
mbedにはRTC(リアルタイムクロック)という現在時刻を刻み続けることのできる部品が乗っています。
VBピンに2.1Vから3.6Vの電池を繋いでおけば、mbedの電源を切っても時間を覚えておくことが可能です。

mbedのベータテスト中の新しいCookbookページの中にそのRTCの時間をネットワークから設定するNTP Clientというライブラリが追加されていました。
今回はこれと前回使ったText LCDライブラリを利用して、ネットワークから同期して時間を合わせる時計を作ってみることにしました。

100604-012951.jpg


今回つくったプログラムはここに置いておきました。
中身はほとんどサンプルファイルのままなのですが、本質的な部分と思われる個所だけ以下に抜き出しておきます。
    Host server(IpAddr(), 123, "ntp.jst.mfeed.ad.jp");
    ntp.setTime(server);//RTCに時間をセットする

    ctTime = time(NULL);//RTCの時間を呼び出す
    ctTime += 32400; //世界標準時刻から日本標準時刻に直すために、32400秒(9時間)進める
    strftime(buf,sizeof(buf), "%A %m/%d/%Y %H:%M:%S\n", localtime(&ctTime));//フォーマットに直して
    printf("\r\nTime is now : %s JST\r\n", buf);//表示

また、新CookBookの中には新しいTextLCDのライブラリも追加されていましたので、今回は新しい方のライブラリを使用しました。
配線とTextLCDオブジェクトを作る際の引数がほんの少しだけ変わっているので注意してください。
(R/WをGNDを接続するようになり、TextLCDオブジェクトにそのピンを指定しないようになっています)


イーサネットが標準でついていると、このような拡張性があるのが嬉しいですね。