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

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



2010-06-02

むくり。ブックマークレット

evernote を iphone で使おうと思うと、bookmarklet というのを使うことになった。

bookmarklet って何だと思ってちょっと調べてみた。
ブックマークレット(Wikipedia)

JavaScriptのプログラムをブックマークに入れておくと、ブックマークを開くときにそのプログラムを実行できるようです。
1行でプログラムを書かないといけなかったり、文字数の制限があったり、そもそも、こんなとこにJavaScript書くなんて、と思ったけどまあ、いろいろ便利にできるみたい。

ということで、簡単なのを一つ作ってみました。

参考:Bookmarkletの作り方(wiki on catch.jp)

■むくり。ブックマークレット
むくり。
(クリックするとtwitterで"むくり。"と入力した状態のページが開く。投稿まではされないので、ご安心を。あと、一度 twitter にログインしておく必要があると思います)

ブックマークに以下のコードを追加すれば使えます。
javascript:(window.open("http://twitter.com/home?status=むくり。"))




本当は、iPhoneのホームスクリーンのボタンとして置きたかったのだけど、ブックマークレットだけだと無理っぽい。ブックマークレットを記述したページをブックマークして、そのブックマークをホームに置けば良いらしいけど、2回押さないといけないので、それほど便利じゃないなぁ。

なんか同じような口癖のある人は応用してみるといいかも。