Category Archives: ESP8266 IoT Study Kit 2

Wemos (d4) WiFi sniffing

最近力を入れる所は、WiFi sniffingという技術。

Amazon bottonをIoT bottonに改造するのカギは、このWiFi sniffing技術。Amazon bottonから出るWiFi信号をキャッチし、botton押されたとわかった。

推進するIoT-Cloud-Mobile Kitもそれに対応すべく、しばらくsniffingとPOSTの共存、メモリの制限などと格闘して、何度も諦めかけて、遂に安定して動作するようになった。

(IoT-Cloud-Mobile Kit)ブレッドボード

Wemosが周りのMAC addressとRSSIは取得でき、TinyWebDB-APIでクラウドに蓄積できた。

ただブレッドボードは長時間運用はやはり不安定、下記の開発ボードも試作した。

(IoT-Cloud-Mobile Kit)開発ボード(5×7)

さらに小型化して、OLEDも省略して(コンセントが保留して接続は可能)、基盤に状態を表示するRGBのLEDを増設。

(IoT-Cloud-Mobile Kit)開発ボード(3×7)

透明ケースに入れて、試験する様子。

(IoT-Cloud-Mobile Kit)開発ボード(3×7 inside case)

蓄積されたMAC addressとRSSIは、出席確認などに活用でき、室内位置情報(Indoor Positioning)のシステムも作りたいね。

Wemos (c8) Weather Station

IoT-Cloud-Mobile Kitに、Weather Station機能を導入する。

オリジナルのコード ThingPulse Weather Station は、温度センサーは  DHT11 を利用する、IoT-Cloud-Mobile KitはBMP280内蔵のため、修正後のコードは TokyoEC Weather Station を参照する。

I2CのOLED端子配列

I2CのOLED端子配列2種類があり:

  1. VCC,GND,SCL,SDA (Wemos, BMP180, BMP280バス直結可能)
  2. GND,VCC,SCL,SDA (NodeMcu直結可能)

1番目は、Wemos直結に適するので、試してみる。

接線 (Wiring) Wemos –> OLED

  1. Wemos 5V —> OLED Vcc
  2. Wemos GND –> OLED GND
  3. Wemos D4 —-> OLED SCL
  4. Wemos D3 —-> OLED SDA

また下記のセッティングは、自分の環境に合わせて設定。

* Begin Settings
const char* WIFI_SSID = "xxxx"; // your ssid
const char* WIFI_PWD = "xxxx"; // your password
const int I2C_DISPLAY_ADDRESS = 0x3c; // OLED I2C address
const int SDA_PIN = 13; // I2C OLED SDA
const int SDC_PIN = 14; // I2C OLED SCL
const float UTC_OFFSET = 9; // JST = +9
const String WUNDERGRROUND_API_KEY = "xxxxx"; // WUNDERGROUND API KEY
const String WUNDERGROUND_COUNTRY = "JP"; // japan
const String WUNDERGROUND_CITY = "Tokyo"; // tokyo
const String THINGSPEAK_CHANNEL_ID = "xxxxx"; // ThingSpeak CHANNEL
const String THINGSPEAK_API_READ_KEY = "xxxxx"; // ThingSpaek API KEY

ESP8266 IoT Study Kit動作確認

ESP8266 IoT Study Kitでも動くようになった。ただし、I2CのSDA、SCLは、実際の結線に合わせて修正すること。

拡大する

Piggyback (おんぶ)動作確認

それから、Piggyback (おんぶ) する形で、OLED接続する方法も上手くいく。

OLEDだけ繋ぐなら、こちら方法はコンパクトでいいでしょう。ピン・ソケット使わない、OLEDとWemos直結すればもっと薄くコンパクトな実装になる。

ESP-WROOM-02 バッテリー付き動作

ESP-WROOM-02に、Weather Station機能を試した。( esp-wroom-02-2-weather-station/ )

内容は、こちら( Wemos (c11) Weather Station )と殆ど同じ、デジタルクロックを追加した。

WeMos (9) I2C OLED SSD1306 (ThingPulse)

WeMos (7) I2C OLED (Adafruit) では、Adafruitのライブラリを利用した実装でした。便利ですが、I2Cの場合、SDA、SCLはD1、D2固定になるらしい。(変更する方法がわからん)

それから探して、ThingPulseのライブラリは、SDA、SCLは自由に設定してできるので、これを試す。

Sketch -> Include Library -> Manage Libraries

上記順で、ssd1306を検索し、下記のライブラリをインストールしてください。

早速サンプルを実行する。スケッチ例から、Driver for the SSD1306 and SH1106 based 128×64 pixel OLED display を探し、

SSD1306SimpleDemoを動かしてみる。

SDA、SCLはGPIOの接続により、初期化コマンドの引数は変わりる。初期では、// D3 -> SDA、// D5 -> SCLになっている。

// Initialize the OLED display using brzo_i2c
// D3 -> SDA
// D5 -> SCL
// SSD1306Brzo display(0x3c, D3, D5);
// or
// SH1106Brzo display(0x3c, D3, D5);

// Initialize the OLED display using Wire library
SSD1306Wire display(0x3c, D3, D5);
// SH1106 display(0x3c, D3, D5);

実際のGPIO番号に合わせて修正して、ボードに書き込み、問題なく動くでしょう。