記事一覧

Arduinoで無線LAN

2013.03.31

着々と環境ロガー的なモノを作ろうと画策している今日この頃ですが。。。
データの保存先としてよく紹介されているのはSDカードやEEPROMですが、ピンの制約やデータの取り出しの不便さ等考えると、外部のWebサーバ等にデータを投げておいて、後はサーバ側で処理させるという手があるかな、と考えています。
で、Aurduino+Wifiで情報を漁っていたらArduino / The Cheapest WiFi Projectというのを見つけました。
一時期少し流行った「Fon」という無線ルータをハックしてDD-WRTというファームウエアに書き換えると比較的自由に使えるようになるので、Arduinoとシリアル接続してサーバにデータを飛ばそうというものです。
Arduinoにはイーサーネットシールドというのもありますが、結構な値段がします。Foneraなら使わなくなったのが家にも一台転がってるので、こいつを使うことにしました。
ファイル 41-1.jpg
改造やファーム導入の手順は、FON まとめ wiki に詳しく書かれているので、ほぼその通りに実行。ただし、Foneraとパソコンの接続にはArduinoを仲介してTeratermで操作します。arduino @ ウィキ参照。
DD-WRTが動くようになったら「イーサネットコンバータ化」というのをやります。これはFoneraを家の無線ルータのクライアントとして動作させて外部のインターネットに出ていけるようにするためです。
ファイル 41-2.jpg
これで、Arduino-(シリアル)-Fonera-(無線)-ルータ-(有線)-インターネット、へと接続できる環境が出来ました。
ついでにNTPの設定をしておくと、Foneraを結構正確な時計の代わりに使えると思います(サーバはntp.nict.jp)。

ただし、今後の実装に向けていくつか注意点があるのでメモしておきます。

  • Foneraのシリアル接続は基本的に115200bpsである
    stty -F /dev/tts/0 9600
    でスピードを変えられるが、リブートすると元に戻ってしまう
  • 共用レンタルサーバの場合、接続はtelnetではなくwgetで行う
    wget -q -O - "http://www.hoge.com/xxx.cgi?xx=yy
    でファイルは残らない

シリアルの速度問題はちょっとやっかいです。
こちらのアンサーによれば、SoftSerialのスピードは38400bpsが限界とのこと。
Foneraとの接続はTXとRX(ピン0と1)を使う必要がありますが、このピンはIDEからの書き込みにも使われているため、スケッチをアップロードする時にはFoneraから外す必要があります。
また、Serial.print()でデバッグ出力をPCで確認するのにも妨げになります。解決法として考えているのは、

  • ArduinoとFoneraはTX/RXで接続し、デバッグ用には別のピンで別のArduinoにSoftSerial出力する
  • デバッグ出力そのものをFoneraのtelnetを使ってPCに吐き出す
    こちらの情報が参考になりそう

といったところです。まだまだ先は長そうです。
にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino センサー