XBeee Wi-Fi library for arduino
Current Version https://github.com/fukuyori/XBeeWiFi-Arduino
ArduinoでXBee Wi-Fiを使う場合
- ATコマンドモードであっさり使う
- APIモードのコードをこりこり書く
- ライブラリを自作する
- 誰かが作ったライブラリを探す。ない場合は、ひたすら神頼み。
などと、それぞれの人間性や力量によって選択方法が変わってくると思いますが、ひとまずライブラリを探してみると、
xbee-arduino - Arduino library for communicating with XBees in API mode - Google Project Hosting
に、XBeeをAPIモードで動かすライブラリが存在し、なおかつ、Release 0.4 (beta)でArduino-1.0 に対応している。更に探すと、これをベースにmbed用のWi-Fiライブラリができているとのこと。
おまけに、Arduino用に逆移植も可能との記述。
逆移植、がんばってみました。が、1時間足らずで力尽きました。
あきらめ半分で、更にググってると、
Akira-Hayasaka / XBeeWiFi_Arduino
こんなところに、既に逆移植済みのライブラリがあるではないですか。
喜び勇んで、使ってみました! ・・・・エラーでました(笑
ま、そうやすやすと動くとは思いませんでしたが、おそらく問題はシリアル通信の部分がArduino-1.0用になっていないのだという気がしたので、ソースを追っかけてみたら、baudで速度指定をしている部分をコメントアウトしてしまえばなんとかなりそう。
サンプルを2つほど追加したので、それなりに遊べると思います。
https://github.com/fukuyori/XBeeWiFi-Arduino
このほかに、最初に書いた xbee-arduino のライブラリも必要です。通常のシリアル通信は、XBEEが使っているので、8番と9番のピンからソフトウェアーシリアルで通信するようにしています。
このライブラリには、名前解決のルーチンも入ってるのですが、うまく動かないとのことです。
作業は、Arduino MEGA2560をベースに、Arduino Wireless Proto ShieldにXBee Wi-Fi(S6)をつけ、470μFと0.1μFのコンデンサでリセット時の電圧低下対策してます。あと、MEGAのシリアル1を使ってライブラリのデバッグ情報が取れるようにしてます。
XBee Wi-Fi のポート53 (2013/07/27)
XBee Wi-Fi がポート53に問題を抱えていて、解決の見込みがないとのレポートを日本語・英語のページで見かけますが、ホント?特定のポートのみのバグってあり?と疑問を持ったので、追試をしてみました。DNSを発行して受け取るために、ネットワークモニタでパケットをつかまえたり、BINDを設定して、自前のDNSを作ってみたり、XBee.cpp のソースコードをいじってみたりした結果、ポート53以外を使用するDNSを使用すれば、名前解決ができることがわかりました。しかしながら、そんなサーバーはどこにも見つかりません。私のPC上以外では。(笑
とりあえず、ポート8053でBINDを動かして動作確認した。
自前でDNSサーバーを持っているか、ルーターでポート・フォワードできる環境の人はお試しを。それ以外は、ポート53の問題が解決したら役に立つでしょう。XBeeのライブラリも一部手を入れたので、一緒に入ってます。
ちなみに、この問題は、S6での問題で、S6Bでは問題ありません。おまけに、S6Bでは、電圧降下対策のコンデンサーも必要ありません。購入時には、注意しましょう。
NTPから時刻を取得 (2013/08/07)
DNSでうまくいかなかったので、今度はNTPで時刻を取得できるよう、ライブラリに追加しました。
それと、ライブラリのgetDnsResponseで、dnsAnswer→lengthがREVERSE_ENDIANされていなかったので、追加しました。
TCPパケット S6 v S6B (2013/08/25)
どうも、くだんのライブラリでAPIモードのTCPを指定した場合、S6ではパケットが出てくるが、S6Bではうんともすんとも言わない。透過モードなら、問題なさそうなんだけど、ちょっと考え中。
IDE 1.0.6 と Arduino Pro mini (2014/10/16)
ライブラリの動作確認は、Arduino Mega で行ったのですが、UNO とか、 Pro とかではうまく動きません。1つは、XBeeライブラリに変更を加えた、NTPパケット受信のバッファに使う配列が、110から600と、かなり大きくなったため。あと、XBeeの最新ライブラリの動作が少し変ってるためのような気がします。
Arduino Pro mini でデバッグして、今のところATコマンドがAPIモードで動作するとこまでいってます。あと、TCPとUDPがうまく飛んでくれればいいのだけれど、まだどっかに問題があるみたいです。
うまく動くようになったら、また github で公開します。