ESP32 18650 OLED を使ってみました
サンプルプログラム動作
https://www.youtube.com/watch?v=k0TJZrCiD5k
販売ページにはピン配置図程度しか、使用にあたっての情報が載っていなかったので少し試行錯誤が必要でした。
最終的にオンボードのOLED ディスプレーを使えるようになりましたので、判った情報を共有したいと思います。
使用にあたって重要な情報は3つ
1.I2C のピンアサイン
ピンアサインは販売ページに図があったので、I2Cで必要なSCL(OLED_SCL)、SDA(OLED_SDA)は簡単に判りました。
プログラムの記述的には、
#define SCL 4
#define SDA 5
など定義して、
Wire.begin(SDA, SCL);
の一文を、そうですねvoid setup() の直下にでも挿入すると良いです。
(注:サンプルプログラムではOLED_RESETが4 と定義されていて、SCL とバッティングするので -1 に変更しておきます)
2.OLED ディスプレーのライブラリ
こちらはググってみておそらく、SSD1306 らしいと。
Adafruit_SSD1306 を使う事にしました。
サンプルプログラムの sd1306_128x62_i2c をベースにする事にしました。
3.OLED ディスプレーのI2C アドレス
I2Cアドレス(SCREEN_ADDRESS)は0x3C でした。
アドレスを特定するにあたって下記ページのアドレススキャンの為のプログラムが役立ちました。
https://randomnerdtutorials.com/esp32-i2c-communication-arduino-ide/
以上が確認できたので、Adafruit_SSD1306 のExamplesにある ssd1306_128x62_i2c のコードを少し編集し、オンボードのOLEDディスプレーに表示させる事が出来ました。
このデバイス少々使い勝手に癖があるので、注意点を幾つか...
- 書き込みに失敗する
ESP32 製品によってはよく知られた問題ですが、普通に書き込みに失敗します。
書き込みを成功させるには、書き込み時にタイミング良く'boot' ボタンを押す必要があります。(boot ボタンはOLED ディスレーの側にあります)
製品によってはコンデンサをピン間に挿入する事で改善出来ますので、このデバイスも同様かと思います。(注:未確認)
- バッテリー挿入方向が...
判ってみれば基板上に +と- の表記がありましたが...
バッテリーホルダーに記述がある方が判りやすいと思いました。
このバッテリーホルダーが対称的(+側とー側が同じ金具)なので、余計にそういった配慮が欲しいですね。
と、色々あっても... メリットも多くて
- バッテリーで動作させられるのは便利
一応17時間程度は稼働させられるようです。(販売ページ情報から)
スリープモード等を活用すれば、月単位位まで伸ばせればより便利に使えるかも... (希望的観測)
- オンボードにディスプレーがあるのは便利でスペース効率が良いですね
- バッテリーも単三電池より大型のリチウム電池で充電可能なのも、持続時間的に頼もしいです
- ESP32 自体のメリットですが、Wifi がこのままで使えるのは色々と便利です
- AliExpress で千円以下(送料別)で購入出来ました
ESP32、OLED ディスプレー、バッテリーホルダーの各パーツを考慮すると非常に安価でした
- 技的マーク付き ^^