Skip to main content

Wifi Bee

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Wifi Bee は、ワイヤレスセンサーネットワークに便利な xBee Pro ソケット互換のスタンドアロン MCU ノードです。Microchip の IEEE 802.11 Wi-Fi トランシーバーモジュール MRF24WB0MA と 8ビット AVR MCU ATMega328P を統合しています。スマートで xBee Pro ソケット互換の外観により、製品への統合が非常に簡単です。ATMega328P は、UartSBee または Grove - XBee Carrier に接続することで、オープンソースの Arduino IDE を使用して直接プログラムできます。MCU の SPI ピンは MRF24WB0MA の対応するピンに接続され、相互に通信します。一方、他のいくつかのピン(DIO、AD、PWM など)は、2.0 mm のオスピンヘッダーの 20 ピンに引き出されています。現在のところ Wifi Bee 用の専用ファームウェアはありませんが、AsyncLabs の WiShield のファームウェアを使用することができます。購入前に使用可能かどうかを確認してください。

モデル: WLS48188P

特徴

  • xBee 互換ヘッダー

  • Arduino IDE を使用したプログラミングが可能

  • Arduino Duemilanove ブートローダーが事前にプログラム済み

  • 低消費電力および低データレート Wi-Fi をサポート

  • 802.11b 互換

  • WEP、WPA-PSK、WPA2-PSK セキュリティ

  • 電源および Wi-Fi 接続インジケーター用の LED

応用アイデア

  • ワイヤレスローカルエリアネットワーク

  • Grove - XBee Carrier を使用したワイヤレスセンサーネットワーク

  • インターネット接続

  • uIP TCP/IP スタック を使用して無限のネットワークアプリケーションを構築

  • TCP/IP スタックを学び、実験したい人に最適

回路図

PDF形式の回路図を開くにはこちらをクリック

主な仕様

項目最小標準最大
動作電圧3.0V3.3V3.6V
動作温度0°C ~ +70°C
動作周波数16MHz
MCUATmega328P

機械的寸法

Wifi Bee のサイズは 27.2mm x 35.7mm です。

ハードウェア

Wifi Bee - 部品

ピン定義と定格

ピン番号パッドタイプ説明Arduino ピン番号
3V31電源入力VCC, +3.3V-
TX2出力Uart Tx ポート1(DIO)
RX3入力Uart Rx ポート0(DIO)
PB04入力/出力ATmega328P PB08(DIO)
!RESET5入力ATmega328 リセットポート
PD76入力/出力ATmega328P PD77(DIO)
PD67入力/出力ATmega328P PD66(DIO)
PD58入力/出力ATmega328P PD55(DIO)
!DTR9入力ATmega328P のプログラミングに使用-
GND10GNDGND-
PC111入力/出力ATmega328P PC11(アナログ入力)/15(DIO)
PC012入力/出力ATmega328P PC00(アナログ入力)/14(DIO)
AD713入力ATmega328P ADC77(アナログ入力)
VREF14入力ATmega328P AREF ポート-
AD615入力ATmega328P ADC66(アナログ入力)
INT116入力/出力ATmega328P PD33(DIO)
PC317入力/出力ATmega328P PC33(アナログ入力)/17(DIO)
PC218入力/出力ATmega328P PC22(アナログ入力)/16(DIO)
SCLSCL19入力/出力ATmega328P PC55(アナログ入力)/19(DIO)
SDA20入力/出力ATmega328P PC44(アナログ入力)/18(DIO)

使用方法

ハードウェアのインストール

  • Wifi Bee を使用する最適な方法は、Grove - XBee Carrier に接続することです。Grove - XBee Carrier は、USB-UART 接続を提供し、内蔵の 3.3V LDO レギュレーターによる電源供給を可能にします。

Grove - XBee Carrier - Wifi Bee に接続され、USBで電源供給されています

プログラミング

ワイヤレスネットワークの設定

このセクションでは、Wifi Bee に適した WiFi ルーターを使用してホームネットワークを設定する方法の概要を説明します。

ワイヤレスセンサーネットワーク - Wifi Bee ノードを使用したサンプルアーキテクチャ

  1. Webブラウザを使用してWiFiルーターのWeb設定インターフェースにログインします。通常、ルーター製造元によって提供されるデフォルトのIPアドレス(例: 192.168.0.1)とログインID(admin)、パスワード(password)を使用します。

  2. 上記の場合、ルーターのIPアドレス192.168.0.1はワイヤレスネットワークのゲートウェイIPアドレスでもあります。このIPアドレスのサブネットマスクは255.255.255.0です。

  3. ワイヤレスネットワークの名前またはSSIDを設定します。このチュートリアルでは「HOMENETWORK」と設定します。この名前はチュートリアル全体で使用されます。

  4. ルーターに接続する任意のノードはDHCPを通じてIPアドレスを取得しますが、Wifi BeeはDHCPをサポートしていません。そのため、静的IPアドレスを割り当てる必要があります。多くのルーターはネットワークデバイスのMACアドレスを使用してアドレス予約を提供します。ワイヤレスルーターのLAN設定セクションで、Wifi Bee にIPアドレス192.168.0.4を予約します。

    1. 予約するIPアドレスを192.168.0.4として入力します。これはWifi Bee のIPアドレスです。
    1. Wifi Beeに表示されるMACアドレス(形式: AB:CD:EF:GH:IJ:KL)を入力します。
    1. デバイス名を「WIFIBEE」とします。この名前は任意の単語であり、重要ではありません。
  1. ネットワークのセキュリティオプションを設定します。Wifi BeeはOpen(セキュリティ無効)、WEP(Wired Equivalent Privacy)、WPA-PSK(Wi-Fi Protected Access Pre-Shared Key)、WPA2-PSK(Wi-Fi Protected Access 2 with Pre-Shared Key)をサポートしています。適切なセキュリティオプションを設定します。この設定はWifi Bee が接続を確立するために使用されます。
    1. セキュリティオプションをWPA-PSKに設定します。
    1. WPA-PSKモードではWPA-PSKセキュリティ暗号化ネットワークキーが必要です。このキーを12345678に設定します。
  1. インターネット接続など、その他の設定についてはルーターのユーザーガイドを参照してください。

アプリケーション例を実行するためのライブラリのダウンロードと設定

アプリケーション例では、AsynclabsのWiShieldライブラリを使用します。Wifi Bee専用のファームウェアはありません。このライブラリはAdam Dunkelsのuip TCP/IPスタックを使用しています。 このライブラリは元の著者によってGPL v2の下で提供されています。そのため、WiShieldを使用して構築されるアプリケーションはGPLv2互換である必要があります。

  1. WiShield からライブラリをダウンロードします。

  2. Arduinoの/libraries/WiShieldディレクトリに内容を展開します。

  3. ライブラリには多くのアプリケーション例が含まれています。必要な機能のみが構築されるように設定されています。これによりFLASHを節約できます。

  • この設定は/libraries/WiShield/apps-conf.hで行われます。

  • /libraries/WiShield/apps-conf.hファイルで構築するアプリケーションのモード(例: WEB-SERVER、WEB-CLIENT、SOCKETアプリケーションなど)をアンコメントします。

  • 例えば、Webサーバーアプリケーションを構築したい場合は、#define APP_WEBSERVERをアンコメントし、他のモードをコメントアウトします。この変更にはライブラリの再構築が必要です。そのため、Arduino IDEを閉じて再度開きます。

  1. WebServerの例を構築します。
  • /libraries/WiShield/apps-conf.hでモード設定をAPP_WEBSERVERに設定します。

  • Arduino IDEで/libraries/WiShield/examples/WebServer/WebServer.pdeスケッチを開きます。

  • local_ip[]配列を{192,168,0,4}に設定します。これは上記で設定したWifi BeeのIPアドレスです。

  • gateway_ip[]配列を{192,168,0,1}に設定します。これはネットワーク設定で設定したルーターのIPアドレスです。

  • subnet_mask[]配列を{255,255,255,0}に設定します。これはローカルワイヤレスネットワークのサブネットマスクです。

  • prog_char ssid[]{"HOMENETWORK"}に設定します。この名前はネットワーク設定時に割り当てたものです。

  • 次に、ネットワーク設定時に構成したセキュリティオプションにsecurity_typeを設定します。Wifiルーターで構成した通りに2(つまりWPA)に設定します。

  • //unsigned char security_type = 2; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

  • また、const prog_char security_passphrase[] PROGMEM = {"12345678"} を設定します。

  1. 修正されたWebServer.pdeスケッチは以下のコードのようになります。

  2. ボードタイプをArduino Duemilanoveに設定し、スケッチをコンパイルします。

  3. Wifi Beeにアップロードし、リセットボタンを押します。

  4. すべてが正常に動作すれば、Wifi BeeはHOMENETWORKに接続し、青色LED(WIFI LED)が点灯します。

  5. HOMENETWORKに接続されたPCからWebブラウザを開き、URL [http://192.168.0.4] を入力します。

  6. 以下のメッセージが表示されます: Hello World!! I am WifiBee.

/*
* Web Server: Modified WebServer.pde example.
* A simple web server example using the WiShield library and WiBee.
*/

#include <WiShield.h>

#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {192,168,0,4}; // Wifi BeeのIPアドレス
unsigned char gateway_ip[] = {192,168,0,1}; // ルーターまたはゲートウェイのIPアドレス
unsigned char subnet_mask[] = {255,255,255,0}; // ローカルワイヤレスネットワークのサブネットマスク
const prog_char ssid[] PROGMEM = {"HOMENETWORK"}; // 最大32バイト

unsigned char security_type = 2; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2パスフレーズ
const prog_char security_passphrase[] PROGMEM = {"12345678"}; // 最大64文字。ネットワーク名。

// WEP 128ビットキー
// サンプルHEXキー
prog_uchar wep_keys[] PROGMEM = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // キー0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // キー1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // キー2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // キー3
};

// ワイヤレスモードを設定
// インフラストラクチャ - APに接続
// アドホック - 他のWiFiデバイスに接続
unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
//---------------------------------------------------------------------------

void setup()
{
WiFi.init();
}

// Webサーバーが提供するWebページ
const prog_char webpage[] PROGMEM = {"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<center><h1>Hello World!! I am WifiBee.</h1></center>"};

void loop()
{
WiFi.run();
}

Webブラウザにセンサー値を送信するシンプルなWebサーバー

  • 上記で説明したネットワーク設定を使用してください。

  • プログラミングと電源供給には Grove - XBee Carrier を使用してください。

  • apps-conf.h を設定し、APP_WISERVER モードのみを使用するようにしてください。

  • 以下のスケッチを Arduino IDE を使用して Wifi Bee にコンパイルしてアップロードしてください(上記の例で説明されています)。

  • リセットボタンを押してください。Wifi Bee がWiFiネットワークに接続するのを待ちます(青色LEDが点灯します)。

  • Arduino IDEのシリアルポートターミナルを開くと(ボーレート57600)、ネットワーク通信の詳細情報が表示されます。

  • HOMENETWORKに接続されたPCからWebブラウザを開き、URL [http://192.168.0.4] を入力してください。

  • WifiBeeはセンサー値をブラウザに提供します。HTMLコードは10秒ごとに自動更新されるように記述されています。

/*
* WiServerとSeeedstudioのWifi Beeを使用してWebページを提供するシンプルなスケッチ。
* アナログセンサーがWifi BeeのA2に接続されています(Grove - XBee Carrierを使用)。この値が
* クライアント(Webブラウザ)に送信されます。HTMLページはセンサー値に基づいて準備され、
* 自動的にリフレッシュする指示も含まれています。
*/

/* この例はSimpleServer.pdeに基づいています。著作権は元の著者に帰属します */

/* この例を動作させるには、apps-conf.hファイルを以下のように変更してください。APP_WISERVERモードのみが有効です:
--------------------------------------------------------------------

//プロジェクトで使用するアプリケーションのヘッダーファイルをここに含めます。
//#define APP_WEBSERVER
//#define APP_WEBCLIENT
//#define APP_SOCKAPP
//#define APP_UDPAPP
#define APP_WISERVER
----------------------------------------------------------------------
*/

#include <WiServer.h>

#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2

// ワイヤレス設定パラメータ ----------------------------------------
unsigned char local_ip[] = {192,168,0,4}; // WifiBeeのIPアドレス
unsigned char gateway_ip[] = {192,168,0,1}; // ルーターまたはゲートウェイのIPアドレス
unsigned char subnet_mask[] = {255,255,255,0}; // ローカルネットワークのサブネットマスク
const prog_char ssid[] PROGMEM = {"HOMENETWORK"}; // 最大32バイト

unsigned char security_type = 2; // 0 - オープン; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2パスフレーズ
const prog_char security_passphrase[] PROGMEM = {"12345678"}; // 最大64文字

// WEP 128ビットキー
// サンプルHEXキー
prog_uchar wep_keys[] PROGMEM = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // キー0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // キー1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // キー2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // キー3
};

// ワイヤレスモードを設定
// インフラストラクチャ - APに接続
// アドホック - 他のWiFiデバイスに接続
unsigned char wireless_mode = WIRELESS_MODE_INFRA;
unsigned int sensorValue;
unsigned char ssid_len;
unsigned char security_passphrase_len;
// ワイヤレス設定パラメータの終了 ----------------------------------------

int counter;
// Webページを生成するページ提供関数
boolean sendMyPage(char* URL) {

// リクエストされたURLが"/"と一致するか確認
if (strcmp(URL, "/") == 0) {
// WiServerのprintおよびprintln関数を使用してページ内容を書き出す
WiServer.print("<html>");

// Webブラウザに10秒ごとにリフレッシュするよう指示
WiServer.print("<head><meta http-equiv=\"refresh\" content=\"10\"> </head>");
WiServer.println("<H1>WifiBee Connected...<H1>");
WiServer.print("<H2>Sensor Value = ");
WiServer.print(sensorValue); // A2に接続された外部センサーのRAW値をクライアントに送信
WiServer.print("</H2></html>");
return true;
}
// URLが見つからない場合
return false;
}

void setup() {

// WiServerを初期化し、sendMyPage関数を使用してページを提供
WiServer.init(sendMyPage);

// シリアル出力を有効にし、WiServerにログメッセージを生成させる(オプション)
Serial.begin(57600);
WiServer.enableVerboseMode(true);
}

void loop(){
sensorValue = analogRead(A2); // A2にGroveインターフェースを介して接続された外部センサーを読み取る
// WiServerを実行
WiServer.server_task();
delay(10);
}

Pachube.comにセンサーフィードを送信するシンプルなWebクライアント

このセクションは後で改訂されます

  • 上記で説明したネットワーク設定を使用してください。

  • プログラミングと電源供給には Grove - XBee Carrier を使用してください。

  • apps-conf.h を設定し、APP_WISERVER モードのみを使用するようにしてください。

  • 以下のスケッチを Arduino IDE を使用して Wifi Bee にコンパイルしてアップロードしてください(上記の例で説明されています)。

  • リセットボタンを押してください。Wifi Bee がWiFiネットワークに接続するのを待ちます(青色LEDが点灯します)。

  • Arduino IDEのシリアルポートターミナルを開くと(ボーレート57600)、ネットワーク通信の詳細情報が表示されます。

  • Wifi Beeは定期的にデータをPachube.comに送信します。

/*
* WiServerライブラリとSeeedstudioのWifiBeeを使用してセンサーフィードを
* pachube.comに送信するシンプルなスケッチ。
* これはSimpleClient.pdeの修正版です。著作権は元の著者に帰属します。
*/

/* この例を動作させるには、apps-conf.hファイルを以下のように変更してください。APP_WISERVERモードのみが有効です:
--------------------------------------------------------------------
//プロジェクトで使用するアプリケーションのヘッダーファイルをここに含めます。
//#define APP_WEBSERVER
//#define APP_WEBCLIENT
//#define APP_SOCKAPP
//#define APP_UDPAPP
#define APP_WISERVER
----------------------------------------------------------------------
*/


#include <WiServer.h>

#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2

// ワイヤレス設定パラメータ ----------------------------------------
unsigned char local_ip[] = {192,168,0,4}; // WifiBeeのIPアドレス
unsigned char gateway_ip[] = {192,168,0,1}; // ルーターまたはゲートウェイのIPアドレス
unsigned char subnet_mask[] = {255,255,255,0}; // ローカルネットワークのサブネットマスク
const prog_char ssid[] PROGMEM = {"HOMENETWORK"};// 最大32バイト

unsigned char security_type = 2; // 0 - オープン; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2パスフレーズ
const prog_char security_passphrase[] PROGMEM = {"12345678"}; // 最大64文字

// WEP 128ビットキー
// サンプルHEXキー
prog_uchar wep_keys[] PROGMEM =
{ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // キー0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // キー1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // キー2
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // キー3
};

// ワイヤレスモードを設定
// インフラストラクチャ - APに接続
// アドホック - 他のWiFiデバイスに接続
unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
// ワイヤレス設定パラメータの終了 ----------------------------------------


// サーバーからのデータを出力する関数
void printData(char* data, int len) {

// サーバーから返されたデータを出力
// データはnull終端されておらず、小さなパケットに分割される可能性があり、
// HTTPヘッダーを含みます。
while (len-- > 0) {
Serial.print(*(data++));
}
}

int sensorValue=0;
// フィードに送信するデータを準備
void pachubefeedData()
{
sensorValue=analogRead(A2); // A2に接続されたアナログセンサーを読み取る(Grove - XBee Carrierインターフェースを使用)
WiServer.print(sensorValue);
}



// pachube.comのIPアドレス
uint8 ip[] = {173,203,98,29};

char hostName[] = "www.pachube.com\nX-PachubeApiKey: YOUR_API_KEY_HERE\nConnection: close"; // YOUR_API_KEY_HERE をAPIキーに置き換えてください
char url[] = "/api/12345.csv?_method=put"; // 12345 をフィード番号に置き換えてください

// PachubeにデータをPOSTするリクエスト
POSTrequest postPachubeFeed(ip, 80, hostName, url, pachubefeedData);


void setup() {
// WiServerを初期化(Webページを提供する必要がないため、ページ提供関数にはNULLを渡します)
WiServer.init(NULL);

// シリアル出力を有効にし、WiServerにログメッセージを生成させる(オプション)
Serial.begin(57600);
WiServer.enableVerboseMode(true);

// サーバーからデータが返されたときにprocessData関数を呼び出す
postPachubeFeed.setReturnFunc(printData);
}


// データを取得する時間(ミリ秒単位)
long updateTime = 0;

void loop(){

// 更新を送信する時間かどうかを確認
if (millis() >= updateTime) {
postPachubeFeed.submit();
// 1分後に別の更新を送信
updateTime += 60;
}

// WiServerを実行
WiServer.server_task();

delay(10);
}

部品表 (BOM) / パーツリスト

部品数量パッケージ
C1110uC_TAN_3X3.5
C2,C321u0603
C41100n0603
J11CK_2X3_2.0CK_2X3_2.0
PWR1LED0603
R1110k0603
R2,R3,R4,R5,R754.7k0603
R611k0603
U11OPEN_BEEXBEE_EXT_SMD
U31MRF24WB0MAMRF24WB0MA
U41ATmega328P_MU1040MLF32X
WIFI1LED0603
X1116MHzXTAL_3X2

サポート

質問やより良い設計アイデアがある場合は、フォーラムまたは wish にて議論することができます。

バージョントラッカー

リビジョン説明リリース
v0.91b初回公開リリース2011年4月6日
v1.0信号線の幅を6ミルから8ミルに変更2011年12月13日

WifiBee v1.0 回路図オンラインビューア

WifiBee v0.91b 回路図オンラインビューア

リソース

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験をスムーズにするために、さまざまなサポートを提供しています。異なるニーズや好みに応じたコミュニケーションチャネルをご用意しています。

Loading Comments...