How to make

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

  • 概要
    「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接続の説明があります。
  1. ESP-8266をAruino IDEからプログラムして使用する。
    1. ハードウェアの準備
      ここではスイッチサイエンスの ESPr Developer を使用します。
      NodeMCUボードとESP-WROOM-02で開発ボードを製作できます。
      バラの部品(ESP-WROOM-02, USBシリアル変換)で開発ハードウェアを構成することも可能です。
    2. Arduino IDE のセットアップ
      ESP-WROOM-02開発ボードをArduino IDEで開発する方法“を参照してArduino IDEをセットアップします。
    3. Lチカで動作確認
      次のように配線して,”Blink”スケッチを書き込みます。LEDが1秒間隔でON-OFFするはずです。

      esp-l
  2. 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するはずです。

  3. 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. ESP-8266へwifiConfig.hにSSID,IPアドレスなどを記述してStandardFirmataWiFiを書き込みます。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モジュールをインストールします。
    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するはずです。

    7. IoT-Boilerplateの利用

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

  • プレゼン資料
    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.