@1VQ9の助力を得てmbedがethernetにつながった。1VQ9はパルストランスも通さず、分解したLANケーブルをmbedに直接差し込んで動かしてたけど、俺はmbed Ethernet Testingに従ってパルストランス入りのEthernet jackを使った。



ethernetにつないだところ
mbed + ethernet
mbedとethernet jackは
  • mbed p1 = Ethernet RD+
  • p2 = RD-
  • p7 = TD-
  • p8 = TD+
という風に接続した。こっちでは別のつなぎ方をしているが、この配置だと動かなかったのでjack毎に違うのかもしれない。よくわからない。


配線はこっちの方が見やすいかも
mbed + ethernet


裏のピン配置がブレッドボードに刺せるピッチ幅ではなかったので、秋月で100円で売ってる両面ガラススルーホール基盤の切れ端とピンヘッダを駆使してピン配置を変更した。
ethernet jack for breadboard
ethernet jack for breadboard


mbedにはHTTPClientというDNSやDHCPやHTTPを適当に解決してくれるモジュールがある。
ほぼmbed EMAC/HTTPClientのまま動いた。
HTTPClientを使うために、
http://mbed.org/projects/cookbook/svn/EMAC/lwip/trunk
をprojectにimportする必要があった。mbedのエディタのGUIからimportできた。

tweet_test | mbed
#include "mbed.h"
#include "HTTPClient.h"
using namespace std;

DigitalOut led(LED1);

HTTPClient http; // use DHCP

/* // use static IP
HTTPClient http("mbed", // hostname.
                IPv4(192,168,1,39), // IPv4 address
                IPv4(255,255,255,0), // netmask
                IPv4(192,168,1,1), // default gateway
                IPv4(192,168,1,1)); // dns server
/**/

const char msg[] = "status=mbed test";

int main(void) {
    http.auth("username", "password");
    http.post("http://twitter.com/statuses/update.xml", msg);
  
    while(1) {
        led = !led;
        wait(0.2);
    }
}
twitter APIにbasic認証を通ってhttp-postし、成功するとLED点滅のループに入る。

twitter APIは同じtweetを連続で受け取らないようになっているので、このプログラムだと一度tweetした後はmsgを別の文字列に変えないと再確認できない。後ろに乱数とか時刻とかをつける必要がある。