2010-06-20

[Japanino] Arduino から get リクエスト

Magic Mouseを買ってご機嫌な所に、
Arduino Ethernet Shield が届いたので、少し実験。

Japanino + Arduino Ethernet Shield
Japanino + Arduino Ethernet Shield posted by (C)matty

TwitterにPOSTまでやりたかったけど、OAuthとか大変そうだったので、別路線へ変更。

Aruduino からサーバ(自分のパソコンね)に文字列を送って、
サーバがそれをファイルに書き出すという簡単なプログラムです。

参考記事:arduinoでEthernet Shieldパターン(送信編)


Arduinoのスケッチ。(EthernetのClientサンプルスケッチを改造)

#include <Ethernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x0D, 0xXX }; // ArduinoEthernetShieldのMacアドレス(基盤の裏にシールが貼ってあるからそれを入力しよう)
byte ip[] = { 192, 168, 10, 10 }; // Arduinoに割り当てたIPアドレス
byte server[] = { 192, 168, 10, 33 }; // Server(自分が使っているパソコン)

Client client(server, 80);

void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);

delay(1000);

Serial.println("connecting...");

if (client.connect()) {
Serial.println("connected");
client.println("GET /~shiki/getTest.php?q=arduino HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}

void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}

if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}


PHPのサンプル

// arduinoからhttp getによる値を受け取るサンプル

<?php
// q= で指定された値を取得する
$strGetQ = date('c ');
$strGetQ .= $_GET['q'];
$strGetQ .= "\n";

// データを保存するテキストファイルの相対パス
$strDataFilePath = 'test/getTest.txt';

// テキストファイルに保存
$fp = fopen($strDataFilePath, "a");
fwrite($fp, $strGetQ);
fclose($fp);
?>



スケッチをJapaninoで実行して、パソコンに保存されたテキストファイルを見るとこんな感じ。Arduino(今回使ったのはJapaninoだった、まあいいか兄弟だし)の叫びが記録されています。リセットボタンを押すたびに、1行追加されます。

保存されたテキストファイル
保存されたテキストファイル posted by (C)matty

ラジコンとは方向がずれてきてしまった感じがするなぁ。
こんどはやっぱり、モータを動かしたいなぁ。



2 件のコメント:

からあげ さんのコメント...

おお、やっていますな。
通信とはやるじゃないですか。

matty さんのコメント...

WebアプリからArduinoを操作するというのもいいかも。

とりあえず、いろいろできることを試してます。