Twitterアプリを動かしてみる--旧ライブラリ版 ("Let's try Twitter" in Japanese -- using old library)

このノートブックページは日本でのmbed普及加速を目的にまとめたものです.[まだ書きかけの状態です]

This notebook page has been written in Japanese only. [This page writing is in progress]

 

このページは,古いCookbookに掲載されていた旧版のHttpClientライブラリを使う例を解説したものです.新しい Cookbook/ライブラリに対応した情報はこちらを御覧下さい.

この日本語ガイド関連ページとして「mbedを始めましょう!("Let's get started" in Japanese)」(http://mbed.org/users/nxpfan/notebook/lets_get_started_jp/)が用意されています.「これからmbedを始める」という方は,上記ページも参考になさってください.

はじめに:

mbedの魅力はいろいろありますが,その一つとして基板ににEthernetの物理層チップが搭載されており,あとはパルストランス入りのRJ-45コネクタを接続するだけでインターネットに接続できる所でしょう.
ではTwitterでメッセージをつぶやくサンプルアプリケーションを動かしてみましょう.

準備:

Twitterを試してみるには,mbedをネットワークに接続しなければなりません.このために「パルストランス入りRJ-45コネクタ」を用意し,所定のピンに接続します.以下の例では秋月電子で入手したPulseJack J0011D21Bを用いて解説します.接続には手元にあった線材とヘッダピン,ブレッドボードを使います.

...この例の他,マルツパーツ館で販売されているYuan Dean Scientific Co.,LTDの46F-1211も同回路入り.ただしピン配置が違うので注意が必要です(参考: http://mbed.org/users/okano/notebook/langja-http-server-with-locally-available-parts/).このコネクタの接続についてはコチラで解説.

PulseJack J0011D21B

Yuan Dean Scientific 46F-1211

 

PulseJack J0011D21Bのデータシートは下のURL参照

http://ww2.pulseeng.com/products/datasheets/J403.pdf

ピンの接続はCookbookのNetworkingページを参考にTD+,TD-,RD+,RD-の4本を接続します.
PulseJack J0011D21Bでは以下のようなピン配置となっています.
(Yuan Dean Scientific 46F-1211でもピン番号と信号名の対応は同じですが,物理的な配置が違っているので注意が必要(詳細はこのページ最後の「参考」部分を参照)ですhttp://www.yds.com.tw/driver/drivers/46-47F%20Series%20PDF%20Catalogue.pdf).

ピン番号 信号名
1 TD+
2 TD-
3 RD+
6 RD-

手元にフラットケーブルのとヘッダピンの切れ端があったので,それを利用してブレッドボード用アダプタを作ります.
写真の例では線の茶色を1番ピン(TD+)に,赤を2番(TD-),橙を3番(RD+),黄を6番(RD-)に接続しました.(写真例のハンダ付けの雑さは見なかったことにしてください)

ヘッダピン側は先ほどの線を順番に接続します.

これでブレッドボードに接続する準備が出来ました.

ブレッドボードは下の写真のような基板です.これにmbedを挿して使います.

抜き差しの際の注意は次のURLに置いてあるビデオをご覧ください.
http://mbed.org/blog/entry/104/

ブレッドボードは下の写真の中に線で示したような接続がされています.

mbedの33番ピンから36番ピンまでがTD+〜RD-に対応したピンとなっているのでここに先ほどのヘッダピンを接続します.茶色の側がTD+,黄色の側がRD-で,mbedのピンの順番通りに並んでいるので,これをそのまま,位置をあわせて挿します.(左上に見える抵抗とジャンパには特に意味はありません.)

上の写真ではコネクタにつながるヘッダピンがブレッドボードから浮いていますが,これは奥まで挿入し,しっかり接続してください.

これでハードウェアの準備は完了です.

ソフトウェア:

Cookbookページをみると,たくさんのサンプルコードが置いてあります.クックブックへはmbedのページ上部のリンクからどうぞ.

[注] 以下のページの内容は2010年6月10日,「古いCookbook」を使った例となってしまいました.下の例を 見るにはCookbookのリンク をクリックした後「old cookbook」のリンクをクリックしてください.

この中から「Twitter」サンプルへのリンクをクリックします.

ここでの解説を読むとTwitterアプリケーションを試してみるには,自分のコンパイラページに1個のライブラリをインポートし,さらにサンプルのソースをコピーしてくる必要があります.

これをマニュアルで行うこともできますが,このページに用意されているリンクを使うほうが便利でしょう.

この「EA_Twitter」はEmbeddedArtists社のベースボードのデモ用に用意されたサンプルですが,内容はここで解説されているものと全く同じです.

[注] マニュアルでインポートしてくる際はこのページ内にある http://mbed.org/projects/cookbook/svn/EMAC/lwip/trunk または http://mbed.org/projects/cookbook/svn/EMAC/lwip/precomp のどちらかをインポートします. 上のURLによるものはライブラリのソースコードをすべてインポートします. 下のものはプリコンパイルされたものをインポートします. 一番下の http://mbed.org/projects/cookbook/svn/EMAC/lwip/examples/HTTPClient は使わないでください.これは古いサンプルコードでコンパイルに失敗してしまいます.

 

[注] ここで紹介しているCookbookは現行のものですが,現在ベータテスト中の新しいCookbookページが存在します(2010年6月 2日現在). 今後,このページの内容はそのままにされ,更新などは新Cookbookページで行われていくようです.

上記ページ内,「http://mbed.org/users/chris/programs/EA_Twitter」 のリンクをクリックすると新しいページが開き,どうするのかを聞いてきます.
「Import program into Compiler」のリンクをクリックすると,コンパイラページ上でダイアログが開き,その中でImportボタンをクリックするとサンプル・プロジェクト一式を自分のコンパイラページに持ってきてくれます.

「インポート」についてはこちらのページ(http://mbed.org/users/kokotaro/notebook/importing-programs-and-libraries-in-to-the-compile/)で詳しい説明がされています.

Twitter クックブック内のリンクをクリック

次に開いたページで「Import program into Compiler」を選択

自分のコンパイラ・ページが開き,インポートを指示

さて「EA_Twitter」というプロジェクトが表示されていると思います.その中のソースコードを見てみましょう.非常に単純なソースとなっています.
しかしこのままでは動きません.Twitterでつぶやくには若干の変更が必要なのでの部分を編集しましょう.

[注] 「Twitter? まだ始めてません...」という方は新規にTwitterアカウントが必要です. いろんなWebページで丁寧な説明がされてます が,こちらのガイドなどがわかりやすいでしょう. http://www.greenspace.info/twitter/

ソースコードの9,10行目の"my-user-name","my-password"の二重引用符内を自分のユーザ名,パスワードに変更します.
さらに11行目にはつぶやく内容を書きます.この行は文字列の最後の二重引用符とセミコロンがありません.自分の「つぶやき」をここに書いた後,これを忘れないように!

たとえば英数文字(ASCIIコード文字)でつぶやくなら,下の例のように書きます.

const char msg[] = "status=Hello world from mbed!";

あるいは日本語でつぶやくなら,少し工夫が必要になります.コンパイラ・ページのエディタでは直接日本語コードが扱えません.ここではURLエンコードを利用した例を示します.URLエンコードはwebサイト(http://www.tagindex.com/tool/url.html など)で可能です.変換時の文字コードには「UTF-8」を選択しておきます.下は文字列:"日本語テスト"を変換したものを設定した例です.

まず文字列を変換して,その結果をコピーペースト.

URLエンコードを行ってくれるサイトで変換

 

const char msg[] = "status=%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%83%86%e3%82%b9%e3%83%88";

今回の実験は,少し長めの日本語を含んだ文字列:"Hello Twitter world from mbed! mbedから日本語ツイート・テストなう!"を使いました.エンコード後はかなり長くなってしまいましたが,上の例と同じように11行目に仕込んでおきます.

 

#include "mbed.h"
#include "HTTPClient.h"

using namespace std;

DigitalOut led(LED1);
HTTPClient http;

const char user[] = "";  //  <-- 引用符内にTwitter ユーザIDを設定
const char pass[] = "";  //  <-- 引用符内にTwitter パスワードを設定
const char msg[] = "status=Hello%20Twitter%20world%20from%20mbed%21%20mbed%e3%81%8b%e3%82%89%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%83%84%e3%82%a4%e3%83%bc%e3%83%88%e3%83%bb%e3%83%86%e3%82%b9%e3%83%88%e3%81%aa%e3%81%86%ef%bc%81";
const char url[]  = "http://twitter.com/statuses/update.xml";

int main(void) {
    http.auth(user, pass);
    http.post(url, msg);
  
    while(1) {
        led = !led;
        wait(0.2);
    }
}

準備ができたらコンパイルして実行してみましょう.コンパイルしてmbedにダウンロード,イーサネット・ケーブルが接続されていることを確認して,リセット・ボタンを押すと実行です.

このコードではDHCPからIPアドレスをもらうようになっているので,完了までに若干時間がかかります.つぶやきの投稿が完了するとLED1が点滅しそれを知らせます.

twitter.comにアクセス.mbedで投稿したつぶやきが確認できれば完了です.

できた!


参考:

このサンプルコードはIPアドレスを得るのにDHCPを使うようにできています.
固定IPアドレスを指定する場合は,以下のように 7行目にある「HTTPClient」の宣言に変更を加えます.

HTTPClient http;  // 変更前: DHCPを使う設定
HTTPClient http(   //  変更を加えた: 固定IPを使った例 
                  "demo",
                  IPv4(192,168,0,33),
                  IPv4(255,255,255,0),
                  IPv4(192,168,0,1),
                  IPv4(8,8,8,8),
                  80
                );

参考:

イーサネットの動作が上手くいかない場合は,Cookbookに掲載されている「Network」のサンプルからHTTP server (Webサーバ)アプリケーションを試してみることもできます.mbedをサーバにして,webブラウザからmbedストレージ内に保存したhtmlやJPEGファイルにアクセスし,動作を確認することができます.


参考:

DHCPで与えられたIPアドレスは「USBシリアル」機能を使って確認することができます.参考日本語ページ


参考:

Yuan Dean Scientific製の46F-1211は,PulseJack製 J0011D21Bとピン配列は同じですがその順番が180度回転した配置になっています(Ethernetケーブルのコネクタの爪の向く方向もちょうど逆になります).

ピン番号 信号名
1 TD+
2 TD-
3 RD+
6 RD-

結線の例を下の写真に示します.各線の色は先に示したPulseJackの例と同じにしてあり,茶色を1番ピン(TD+)に,赤を2番(TD-),橙を3番(RD+),黄を6番(RD-)に接続しています.

mbed側に接続するヘッダピンの接続はコチラを参照してください


0 comments

You need to log in to post a comment