Translate

2015年5月14日木曜日

Arduino UNOにWiFiシールド(WLS06201P)をつないで動作確認する



Arduino UNOにつないだセンサ情報をネットワーク経由で結果を取得するには、WiFi接続しないとなあ..とおもい、以下のWiFiシールドをあまり考えずにAmazonでポチった。

Seeed Wiki:WLS06201P WiFi Shield v1.2





あとで調べると純正のArduino WiFiシールドがあって、

Arduino WiFiShield



私の買ったWiFiシールドはサードパーティ製だった。


しかも..箱を開けると、なんとキット製品だった..





しょうがないので、はんだごてを買ってきてハンダ付けをする..

添付の小袋に、ジャンパピンが2個はいっていたので、もしやとおもいメーカのWikiを調べてみると、WIFI_TXとWIFI_RXをArduinoのデジタルピンへ割り付けないといけないことがかかれていた。


なので、Wiki上にある回線図どおりに WIFI_TXはD2へ、WIFI_RXはD3へ割り付けるジャンパピンを差し込む。





同梱のカバーは、なにがあるかわからないので、とりあえずつけないでおく。

そして、Arduino UNO上ににマウントする。シールド側のピン数のほうがArduinoより少ないが、位置は基板側のラベルに合わせてマウントする。

そしてUSBとPCを接続。

Wikiにかかれていたとおり、次にPCから https://github.com/Seeed-Studio/WiFi_Shield に行き、右下のDownload Zipボタンを押してライブラリをダウンロードする。

展開して、WiFi_Shield-masterフォルダをWiFi_Shieldに改名する。

そしてこのフォルダをArduino IDEディレクトリのlibrariesディレクトリへ移動する。

Arduino IDEを起動させる。

ボードをArduino UNO、ポートを適当に変更する。

ねんのため、BlinkサンプルでLチカ確認。

次に、ライブラリについているサンプルコードwifly_httpで疎通を試す。

ファイル>スケッチの例>WiFi_Shield>Examples>wifly_httpを選択。

Sketchファイルを以下のように変更する。

//#define SSID      "Your-SSID"
//#define KEY       "passphrase"
#define SSID      "<WiFiルータのSSID>"
#define KEY       "<WiFiルータのパスフレーズ>"

本当はTX/RXの割付先の番号を変更する必要があるのだが、Wikiどおりにジャンパピンをさしたのでヘンコウしなくて済んだ。
AUTHもデフォルトのWIFLY_AUTH_WPA2_PSKのままでOKだった。

コンパイルだけ実行してOKを確認し、マイコンボードに書き込む。

シリアルコンソールを開き、動作を確認する。

すぐにはつながらないので、つながるまで待つ。このあたりはWiFiルータとの距離とか環境によって違うと思うが、ArduinoはPCなんかよりも断然スペックが低いのだから処理速度も当然遅い。後で手動でscanを実行してみたが、アクセスポイントのとりこぼしがおおかった。毎回結果が違っていたり、そのへんはプログラム側で対応してあげないとダメだ。

使ったWiFiルータは自宅でホコリをかぶっていたこれだ。プロクシ設定などなしでインターネットに繋がる設定(デフォルト状態)で動かした。





#CloudStackを試しに入れるとき使ったルータだ..

ちなみに私の環境で実行した結果は、以下のとおり。

------- WIFLY HTTP --------
Try to join <SSID>
Failed to join <SSID>
Wait 1 second and try again...
Try to join <SSID>
Failed to join <SSID>
Wait 1 second and try again...
Try to join <SSID>
Failed to join <SSID>
Wait 1 second and try again...
Try to join <SSID>
Failed to join <SSID>
Wait 1 second and try again...
Try to join <SSID>
Failed to join <SSID>
Wait 1 second and try again...
Try to join <SSID>
Failed to join <SSID>
Wait 1 second and try again...
Try to join <SSID>
Failed to join <SSID>
Wait 1 second and try again...
Try to join <SSID>
Succeed to join <SSID>

Try to get url - http://httpbin.org/get?hello=world
------------------------------
Failed to connect.


Try to post data to url - http://httpbin.org/post
-------------------------------
Failed to connect.
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 14 May 2015 08:08:50 GMT
Content-Type: application/json
Content-Length: 272
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

{
  "args": {},
  "data": "Hello world!",
  "files": {},
  "form": {},
  "headers": {
    "Content-Length": "12",
    "Content-Type": "text/plain",
    "Host": "httpbin.org"
  },
  "json": null,
  "origin": "219.117.226.193",
  "url": "http://httpbin.org/post"
}
*CLOS*

Enter command mode. Send "exit"(with \r) to exit command mode

RESTデータがとれておれば成功だ。

上記のシリアルデータログは、一番早くつながった時のもの。もっととてつもなくかかることもあるのだ。

ちなみにscan結果は、以下のとおり。

SCAN:Found 1
Num            SSID   Ch  RSSI   Sec    MAC Address    Suites
 1                  <SSID> 06 -58 WPA2PSK 10:6f:3f:xx:xx:xx AESM-AES  WPSPB 3104
END:
この結果もほんとうにころころかわる。PCがどれだけ優れたWiFi機能を搭載しているのか身にしみてよくわかった。



なおIDEにデフォルトでWiFiサンプルがはいっているが、おそらくこれがArduino純正用なのだとおもう(試してない)。

Groveコネクタがデジタル、アナログ1つづつついているので、これで済ませられるのであれば、BASEシールドはいらなさそうだ。

0 件のコメント:

ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

 Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...