How to make

Johnny-fiveとESP-8266をWiFi接続してIoT

  1. 概要
    1. 「WiFiモジュールESP-WROOM-02内蔵コントローラマイコンESP-8266」(以下,ESP-8266という)をプログラムしNode.js,Johnny-fiveとWiFi連携させてIoTを実現する方法をレポートします。
    2. 本レポートを試行するには,Node.js が稼働する環境があり,Johnny-five + Arduino UNO等 で「Lチカ」を行った経験があることを前提とします。
    3. Ogaki Mini Maker Faire 2016 プレゼン・スライドの23〜27ページにJohnny-fiveとESP-8266のWiFi接続の説明があります。
  2. ESP-8266単独でLチカ
    Aruino IDEからスケッチを書き込んで動かします。

    1. ハードウェアの準備
      ここではスイッチサイエンスの ESPr Developer を使用します。
      バラの部品(ESP-WROOM-02, USBシリアル変換)で開発ハードウェアを構成することも可能です。
    2. Arduino IDE のセットアップ
      ESP-WROOM-02開発ボードをArduino IDEで開発する方法“を参照してArduino IDEをセットアップします。
    3. Lチカ確認
      次のように配線して,下の”Blink”スケッチを書き込みます。LEDが1秒間隔でON-OFFするはずです。

      esp-l

      // Blink ESP-8266
      
      void setup() {
        pinMode(13, OUTPUT);
      }
      
      void loop() {
        digitalWrite(13, HIGH);
        delay(1000); 
        digitalWrite(13, LOW);
        delay(1000);
      }
  3. Node.js+Johnny-fiveとESP-8266をシリアル接続してLチカ
    1. 実験回路には前述1-3のLチカ動作確認回路をそのまま使います。
    2. ESP-8266に”StandardFirmata”スケッチを書き込みます。
    3. 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するはずです。

  4. Node.js+Johnny-fiveとESP-8266をWiFi接続してLチカ
    1. 実験回路には前述1-3のLチカ動作確認回路をそのまま使います。
    2.  次のようなネットワーク構成を想定します。
      1. WiFi
        SSID: xyz
        WPA-Password: 0123456789
      2. ESP-8266に割り当てるIPアドレス等
        IP address: 192.168.10.73
        subnetmask: 255.255.255.0
        gateway: なし
        port: 3030
    3. Johnny-fiveとESP-8266のWiFi接続には,
      ESP-8266側ではStandardFirmataWiFiスケッチを使います。
      Johnny-five側ではetherport-clientモジュールを用います。
    4. 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 全文

    5. Node.js環境にetherport-clientモジュールをインストールします。
      $ npm install etherport-client
    6. プログラム(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するはずです。

  5. IoT-Boilerplateの利用

    kosamari/IoT-Boilerplate をこのWiFi接続下で利用すればESP-8266での”IoT-Lチカ”を実現できます。

  6. 参考:プレゼン資料
    Ogaki Mini Maker Faire 2016 で発表したNode.js + Johnny-five と ESP-8266 をWiFi接続し8x16LEDマトリクスをダイナミック点灯制御するTwitter連携メッセージボードのTips。

ommfj5-001

Ogaki Mini Maker Faire 2016 プレゼン・スライド

upload 2016.12.03 by Kimio Kosaka

Copyright © kosakalab All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.