OLED(I2C)を使う。OLED(I2C)を使う。OLEDを同時に使用しました。SSD1306はI2C接続のものとSPI接続のものがありますが、ESP8266のSPIは使ったことがないので、とりあえずI2C接続のものを使用しました。I2Cは信号線をプルアップして使うので、I2CとSPIで信号線を共有するのは難しそうです。ESP8266はIOで使えるピンが少ないので、SPIとI2Cを同時使用するにはちゃんと検証する必要がありそうです。ESP8266のI2Cの使い方もよくわかっていないので、ライブラリ等ありものを使わせていただいてとりあえず動作させるのを優先しました。運用時(USB-UART変換モジュールなし)I2Cの信号線はBME280モジュールでもSSD1306モジュールでもオンボードでプルアップされているので、理屈としてはそれぞれの抵抗を並列した値になります。SCLとSDAがあるので無視できない消費量ですね。Library」を使用していましたが、問題がありました。I2CのピンがデフォルトでハードウェアI2Cのものを使うようになっていて、自由にピンを割り当てられるソフトウェアI2Cを使うのが少しめんどうです。Testato」をインストールして使うようになってます。他にI2CのピンをアサインできるBME280のライブラリを探してみると「Arduino-ESP8266-BME280」がありました。(Ambientさんでした)exampleもAmbientに送るようになっているのでそのまま使わせていただくことにしました。SSD1306のライブラリはu8g2を使いました。128X32をu8g2で使ってみる。Buffer」BME280、SSD1306のどちらのライブラリもArduinoのI2C制御クラスのWireオブジェクトをクラス内で初期化(begin())していて同時に使用するのは怖いんですが、ArduinoのI2C制御クラスのWireはSingletonになっているとおもうので(←確証なしです)、SCLとSDAに使うPINを合わせておけばだいじょうぶかな~と半分やけくそで使いました。結果としては動作しているように見えます。WiFiでAmbientにデータを送信するようにして、DeepSleepをかけました。{...}としてバイパスするようにしています。ESP.getResetReason()で、整数値ではなくString型でResetの理由も取得できます。Sleep中もOLEDに電源を供給しておけば表示され続けますが、Sleepからの復帰時にOLEDが初期化されるので一瞬OLEDの表示が消えます。電池ももったいないし、OLEDは動作確認用として、長期運用する場合は外しておくつもりです。B35(DC/mV)で測定(1mV→10mA換算)。mVWakeUp時に70mA~125mA程度、Sleep時に0mA程度OLED、LEDがあると常時6mA程度消費します。ch2:SCLIC2クロックは多少揺れがあり、100kHzより少し遅いぐらいです。OLED表示(u8g2)と波形出力のテストNucleoF446RE(mbed-cli)でu8g2を使う。NucleoF446REでmbed-cliを使う。OLED(I2C)を使う。