- 概要
- 「WiFiモジュールESP-WROOM-02内蔵コントローラマイコンESP-8266」(以下,ESP-8266という)をプログラムしNode.js,Johnny-fiveとWiFi連携させてIoTを実現する方法をレポートします。
- 本レポートを試行するには,Node.js が稼働する環境があり,Johnny-five + Arduino UNO等 で「Lチカ」を行った経験があることを前提とします。
- Ogaki Mini Maker Faire 2016 プレゼン・スライドの23〜27ページにJohnny-fiveとESP-8266のWiFi接続の説明があります。
- ESP-8266単独でLチカ
Aruino IDEからスケッチを書き込んで動かします。- ハードウェアの準備
ここではスイッチサイエンスの ESPr Developer を使用します。
バラの部品(ESP-WROOM-02, USBシリアル変換)で開発ハードウェアを構成することも可能です。
- Arduino IDE のセットアップ
“ESP-WROOM-02開発ボードをArduino IDEで開発する方法“を参照してArduino IDEをセットアップします。 - Lチカ確認
次のように配線して,下の”Blink”スケッチを書き込みます。LEDが1秒間隔でON-OFFするはずです。
// Blink ESP-8266 void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
- ハードウェアの準備
- Node.js+Johnny-fiveとESP-8266をシリアル接続してLチカ
- 実験回路には前述1-3のLチカ動作確認回路をそのまま使います。
- ESP-8266に”StandardFirmata”スケッチを書き込みます。
- Johnny-fiveのexsample ”Hello World!”に沿って”Lチカ”を行います。
次のプログラム(blink.js)を記述し実行します。var five = require("johnny-five"); var board = new five.Board(); board.on("ready", function() { // Create a standard `led` component instance var led = new five.Led(13); // "blink" the led in 500ms // on-off phase periods led.blink(500); });
0.5秒間隔でLEDがON-OFFするはずです。
- Node.js+Johnny-fiveとESP-8266をWiFi接続してLチカ
- 実験回路には前述1-3のLチカ動作確認回路をそのまま使います。
- 次のようなネットワーク構成を想定します。
- WiFi
SSID: xyz
WPA-Password: 0123456789 - ESP-8266に割り当てるIPアドレス等
IP address: 192.168.10.73
subnetmask: 255.255.255.0
gateway: なし
port: 3030
- WiFi
- Johnny-fiveとESP-8266のWiFi接続には,
ESP-8266側ではStandardFirmataWiFiスケッチを使います。
Johnny-five側ではetherport-clientモジュールを用います。
- EAP-8266側の準備
Arduino IDE でStandardFirmataWiFiを呼出します。
wifiConfig.hにSSID,IPアドレスなどを記述してStandardFirmataWiFiをESP-8266に書き込みます。
wifiConfig.hの変更箇所は下のとおりです。char ssid[] = "xyz"; #define STATIC_IP_ADDRESS 192,168,10,73 #define SUBNET_MASK 255,255,255,0 #define GATEWAY_IP_ADDRESS 0,0,0,0 #define SERVER_PORT 3030 char wpa_passphrase[] = "0123456789";
事例の wifiConfig.h 全文
- Node.js環境にetherport-clientモジュールをインストールします。
$ npm install etherport-client - プログラム(blink_wifi.js)を記述し実行します。
var EtherPortClient = require("etherport-client").EtherPortClient; var Firmata = require("firmata"); var five = require("johnny-five"); var board = new five.Board({ io: new Firmata(new EtherPortClient({ host: '192.168.10.73', port: 3030 })), timeout: 1e5 }); board.on("ready", function() { console.log("ready"); var led = new five.Led(13); led.blink(2000); });
2秒間隔でLEDがON-OFFするはずです。
- IoT-Boilerplateの利用
/IoT-Boilerplate をこのWiFi接続下で利用すればESP-8266での”IoT-Lチカ”を実現できます。
- 参考:プレゼン資料
Ogaki Mini Maker Faire 2016 で発表したNode.js + Johnny-five と ESP-8266 をWiFi接続し8x16LEDマトリクスをダイナミック点灯制御するTwitter連携メッセージボードのTips。
Ogaki Mini Maker Faire 2016 プレゼン・スライド
upload 2016.12.03 by Kimio Kosaka