« 面実装はんだ付け講習 | トップページ | うおーるぼっとキット化への道 3話 »

2011年3月31日 (木)

mbed用イーサネット接続キットでメール送信を試す。

いつか誰かやるだろうと思っていましたが、スイッチサイエンスさんがやってくれました。
ちょっとピン配置が扱い辛いパルストランス入りLANコネクタをmbedに簡単に繋げられるmbed用イーサネット接続キットが発売されました!
しかもコネクタに内蔵されているリンクランプも接続出来るように配慮されています。

キットの内容はパルストランスと専用基板、抵抗、コンデンサ、ピンヘッダ。
Dsc00568
ちょっとハンダ付けすれば簡単に組み立てられます。

パルストランス入りLANコネクタをブレッドボードに刺さるように変換する基板は今までもありましたが、配線がちょっと面倒でした。しかもリンクランプも直接は繋がりませんでした。
Dsc00574

このキットの場合はmbedの隣に刺すだけです。
Dsc00576
Dsc00581

mbed+イーサのネタもTwitterとの連携Ustreamとの連携などやってきましたが、今回はメールの送信でこのキットの動作確認をしてみたいと思います。

メールの送信といえばSMTPサーバに接続するSMTPクライアントですが、mbedサイトのCookbookにEtherライブラリを使ったサンプルがあります。(SMTP Client
サンプルをCompilerに組み込んで、サーバのアドレスやメールアカウントのID、パスワード等の定義を変更して、メッセージを書くだけです。
せっかくリンクランプも点灯出来るようになっているので、それも動くようにしました。
mbedに搭載されているイーサチップのリンク信号はLPC1768のP1_25、スピード状態信号はP1_26にそれぞれ接続されているので以下のようにデジタル入力として定義すれば取得出来ます。

DigitalIn lnk(P1_25);
DigitalIn spd(P1_26);

そして、それをキットで接続されているp29とp30にデジタル出力すればいいわけです。私の場合は以下のようにして50ms周期で反映されるようにしました。
(信号とLEDが点灯する出力の意味合いは逆なので反転してます。)

DigitalIn lnk(P1_25);
DigitalIn spd(P1_26);
DigitalOut speed(p29);
DigitalOut link(p30);

Ticker flipper;

void flip() {
    speed = !spd;
    link = !lnk;
}

int main() {
    flipper.attach(&flip, 0.05);
  ・
  ・

キットはLEDのGND側が直接繋がっていないので配線でmbedのGNDと繋ぐ必要があります。
Img_1892

ルータに繋がっているLANケーブルをさせばLEDが点灯します。
Img_1890

無事メールを送ることができました。
Img_1888
サンプルは電源投入後、SMTPサーバと接続して定型文を送信するだけですが、センサーなどと連動させても面白いですね。

ハードはキットを組み立ててブレッドーボードに刺しただけ。
プログラムはほぼサンプルをそのまま使っただけです。
やっぱり楽すぎる・・。
勉強にはなりませんが、面白いモノを思いついたとき、あっという間に試せるmbedはやっぱり私の理想の一品です。

|

« 面実装はんだ付け講習 | トップページ | うおーるぼっとキット化への道 3話 »

mbed」カテゴリの記事

コメント

しろうとで申し訳ありません・・・・
メール試して見ているのですがうまく送れません

少し詳しく教えていただけませんでしょうか?
よろしくお願いします。

投稿: huji | 2011年3月31日 (木) 03時54分

>huji様
私の環境ではサンプルプログラムの以下の行に自分のメールアカウントを設定したのみです。

#define SERVER "smtp.nifty.com" //メールのSMTPサーバのアドレス
#define PORT 25
#define USER "user" //メールのユーザ名
#define PASSWORD "password" //メールのパスワード
#define DOMAIN "nifty.com" //メールのドメイン
#define FROM_ADDRESS "jksoft[あっとまーく]nifty.com" //送信元のメールアドレス
#define TO_ADDRESS "1234@gmail.com" //送信先のメールアドレス

サンプルでは最初にDHCPでIPアドレスを取得するようになっていますが、それは取得できていますか?

mbedをUSBでパソコンに繋げて、シリアルコンソールで見ればデバッグ用のメッセージが見れるのでだいたいどの段階でNGかがわかります。
その方法は、以下を参照してみてください。

http://mbed.org/users/okano/notebook/langja-personal-memo-usb%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E5%85%A5%E5%87%BA%E5%8A%9B/

投稿: じぇーけーそふと | 2011年3月31日 (木) 08時52分

ご丁寧な御回答をありがとうございます。
本日夜やってみたいとおもいます。
さっと見させて頂きましたがSERVER所に
smtpはつけていませんでした。
取り急ぎお礼までに!!!
本当にありがとうございます。

投稿: huji | 2011年3月31日 (木) 19時26分

CookbookにEtherライブラリ(SMTP Client)を使ったサンプルを応用して試しています。
????@docomo.ne.jp には正常に送信できるのですが、
????@softbank.ne.jp には下記のエラーが返信され送信できません。
Remote host said: 554 Invalid Header [BODY]
メール内容のヘッダー書式に問題があるのだと思いますが、対応するには難しいでしょうか?
大変お手数ではありますがご意見いただけると幸いです。
------------------------------
EmailMessage msg;
msg.setFrom(FROM_ADDRESS);
msg.addTo(TO_ADDRESS);
msg.printf("Subject: mbed SMTPClient %s\r\n", ctime(&ctTime));
msg.printf("Test Mail !!!\r\n");
------------------------------

投稿: 松田 | 2015年8月19日 (水) 20時03分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/189587/51259116

この記事へのトラックバック一覧です: mbed用イーサネット接続キットでメール送信を試す。:

« 面実装はんだ付け講習 | トップページ | うおーるぼっとキット化への道 3話 »