0.96インチ単色OLED(128×64,SSD1306,I2C)が載っているESP32マイコンボードで表示を試してみた

0.96インチ単色OLED(128×64,SSD1306,I2C)が載っているESP32マイコンボードで表示を試してみた。

ESP32マイコンはArduino IDEで開発ができて、Arduino用のライブラリがほとんどを使うことができるので、ソフト的にはArduino Uno互換機でOLEDモジュールを動かした時と一緒だ。

ただし、I2CのSDA,SCLのピンが標準的な割り当ての場所と違うピンに配線されていた。

このマイコンボード(Wemos Lolin ESP32 OLED Module)の場合には、pin4とpin5にOLEDのI2Cの配線が結線されていた。

ピンを変更できるSSD1306用のライブラリと、変更ができないライブラリとがあるので注意が必要だ。

ライブラリ本体のソースコードを変更せずに、ピンの変更ができたライブラリでexampleの3つを動作確認できた。

簡単に変更できたのは次の2つだ。
・ACROBOTIC_SSD1306.h
・HelloOLED
これらのライブラリはI2C用のWireライブラリの初期化を外でやるようになっているので、
Wire.begin();
という部分で、使用するピンを明示的に指定して次のようにすればよい。
Wire.begin(5,4);

あるいは、
・SSD1306SimpleDemo
の場合には、初期化の処理で次のようにピンを指定すればよい。
SSD1306Wire display(0x3c, 5, 4); // ADDRESS, SDA, SCL – SDA and SCL usually populate automatically based on your board’s pins_arduino.h

無事、表示させることができた。


TTGO T-cameraも同様で、ピンの指定を変更すればよい。
ただし、こちらは参考用のソースコードがあるので、そもそも自前で作らなくても、WiFiとカメラとOLEDの処理が書かれており、そのまま使うだけだ。


あと、Lora用のESP32マイコンボードというのも買ってみている。

このボードの場合、OLED用のI2CのSDA,SCLを変更するだけでは駄目だった。

OLEDのリセット信号がESP32マイコンのGPIOに結線されている。
なので、自前でリセットの処理をしなくてはならない。

・HelloOLED
を弄ってみた。

まず、I2Cのピンを変更した。
Wire.begin(4,15); //SDA,SCL

そして、RESETについて自前でGPIOを叩くようにしてみた。
pinMode(16, OUTPUT);
digitalWrite(16, LOW);
delay(100);
digitalWrite(16, HIGH);
delay(100);
結果、無事にOLEDに表示ができるようになった。

ちなみにLoraの機能については試していない。(Lora用のICを叩くコードを動かしていない。)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.