4月 222010
@1VQ9の助力を得てmbedがethernetにつながった。1VQ9はパルストランスも通さず、分解したLANケーブルをmbedに直接差し込んで動かしてたけど、俺はmbed Ethernet Testingに従ってパルストランス入りのEthernet jackを使った。
ethernetにつないだところ
mbedとethernet jackは
- mbed p1 = Ethernet RD+
- p2 = RD-
- p7 = TD-
- p8 = TD+
配線はこっちの方が見やすいかも
裏のピン配置がブレッドボードに刺せるピッチ幅ではなかったので、秋月で100円で売ってる両面ガラススルーホール基盤の切れ端とピンヘッダを駆使してピン配置を変更した。
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"twitter APIにbasic認証を通ってhttp-postし、成功するとLED点滅のループに入る。
#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は同じtweetを連続で受け取らないようになっているので、このプログラムだと一度tweetした後はmsgを別の文字列に変えないと再確認できない。後ろに乱数とか時刻とかをつける必要がある。