2011-01-24

やっとインターネット接続できたぁ 無線で arduinoで

だめだったぁ STM32とW5100使ってインターネットつなげんかったぁ(泣
初心者がどんだけ勉強しても焼け石に水や
もう金で解決や

ということでarduinoを使ったところ、あっさりインターネット接続ができました。

うちにはwimax回線しかなく、有線でのネット接続環境が無かったため、
arduinoを無線化してネットに接続させました。

マイコンを無線でインターネットに接続したい方に、
この方法はオススメです。

《イメージ図》
インターネット     ----無線----    URoad7000   ----無線----    MZK-MF300N   ----有線----   arduino
                                    wimax無線LANルータ              無線コンバータ


《使用した機器》



・URoad7000はwimax回線を無線LANに変換できる機器です。
光の回線を家の中に無線LANで飛ばしているのと、ほぼ同じだと考えてください。
・MZK-MF300NはPLANEX社製の小型の無線コンバータ機器です。
有線でしか使えないインターネット機器を簡単に無線化できます。
(蛇足ですがこのMZK-MF300Nはアクセスポイントモードも使用できる優れものです。)


《使用方法》

①arduino uno と Ethernetシールド を接続

②MZK-MF300Nをコンバータモードで設定。
パソコンにつないで無線LANルータと通信ができるように、
WEPなどのパスワードを登録します。

③Ethernetシールドと MZK-MF300N を LANケーブル(ストレートでOK)で接続

④無線LANルータ(wimax Uroad-7000)にログインし、
固定IPの設定でEthernetシールドのMACアドレスに任意の固定IPを割り振ります。
(EthernetシールドのMACアドレスは基板の裏面に貼ってあります。
本当であれば動的IPでやりたかったのですが、arduino IDE ver022現在、
動的IPの導入は、むずくなってました。前は簡単にできたのに•••)

⑤arduino unoに arduino IDEにもともと入っているsampleコードを書き込みます。
File - Examples - Ethernet - webclient
(google.comでarduinoという語句を検索し、その結果を表示するというものです。)

これでインターネットにつながるはずでしたが、つながらずハマリました。

そこでデフォルトゲートウェイとサブネットマスクの設定を追加すると、
無事インターネットに接続ができました。(下記コード 赤文字のところ)


《ソースコード》

/*
  Web client

 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield. 

 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13

 created 18 Dec 2009
 by David A. Mellis

 */


#include <SPI.h>
#include <Ethernet.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX };//④で入力したarduinoイーサネットシールドのMACアドレスに書き換える。
byte ip[] = { 192,168,XXX,XXX };//④で入力した固定IPを入力
byte gtw[] = { 192,168,XXX,XXX };//無線LANルータに設定されているローカルIP(デフォルトゲートウェイ)を入力
byte sbm[] = { 255,255,XXX,XXX };//無線LANルータに設定されているローカルサブネットマスクを入力
//byte server[] = { 72,14,203,104 }; // Google.co.jp
byte server[] = { 173,194,33,104 }; // Google.com


// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);


void setup() {
  //delay(15000);//@@@
  // start the Ethernet connection:
  //Ethernet.begin(mac, ip);
  Ethernet.begin(mac, ip,gtw,sbm);
  // start the serial library:
  Serial.begin(9600);
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");
  //delay(10000);//@@@
  // if you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}


void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }


  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();


    // do nothing forevermore:
    for(;;)
      ;
  }
}

5 件のコメント:

nisi さんのコメント...

同じように接続したのですがつながりません
スマホではだめなのでしょうか?disconnectingが表示されSTOPします。

管理人 さんのコメント...

>nisiさん

スマホということは、スマホのデザリング
機能を使用しているということでしょうか?

もし差し支えなければ、詳細をお聞かせ願います。

nisi さんのコメント...

アドバイスありがとうございます。
初心者で申し訳ありません。
安易にarduinoとスマホとの通信をしたく考えておりました。
今は、デザリング機能を使用していません。
ただ、接続ができればよいのですが方法がわかりません。
よろしく、お願いします。

管理人 さんのコメント...

ちょっとスマホとの接続はしたことが無いので、
わからないです。

Andoroid側のアプリ開発も必要ですね。

健闘をお祈りします。

nisi さんのコメント...

ありがとうございました。
頑張ってみます。