macsbug

0.95″ 96×64 SPI Color OLED in ESP32

with one comment

9.5″ 96×64 SPI SSD1331 Color OLED を ESP32 で使用しました。      2017.06.14

Color OLED の価格は 800円です。
総費用は 1996円:Color OLED + WEMOS LOLIN32 。
又は   2176円:Color OLED + Pocket32。( 画像 )
配線7本 と スケッチを1行変更 のみで 23個のサンプルが 直ぐ動作します。

同時に表示:左:0.96″ I2C mono OLED。   右:0.95″ SPI Color OLED


 

Color OLED 仕様:
_ 0.95″ Inch SPI OLED SSD1331 65K Full Color Display Module:800円。
_ Resolution:96×64、Color:65K、Drive:SSD1331、外形:27.3 x 30.7 mm
_ 端子仕様:
_  [GND]:GND。[VCC]:2.8 – 5.6V ( U2 LDO 662K 3.3V)。[SCL] : Clock。
_  [SDA]:MOSI。[RES]:Reset。[DC]:data/command。[CS]:chip-select


 

max mc costa の sumotoy氏による SSD_13XX のサンプルです。


 

s21olid3d SSD_13XX の
examples順に
並べてあります

 

準備:費用総計:1996円 又は 2176円。 価格は 円レート等で変わります。

No  Nomen  Link  Price  Memo
1  Pocket32 (Travis Lin Storeのコピー)  Aliexpress:Lily GO 1136円  輸送 9日
1  Pocket32 ( $15 + ship $5 ):本家  tindle:Travis Lin Store 2315円  輸送 15日
1  WEMOS LOLIN32 V1.0.0($8.66)  Aliexpress:WEMOS CC   956円  輸送 9日
2  9.5″ 96×64 SPI Color OLED Module  ebay:chivazhu  800円  輸送 7日
2  9.5″ 96×64 SPI Color OLED Module  ebay:erizh-51  800円  輸送 7日
2  9.5″ 96×64 SPI Color OLED Module  アマゾン:HiLetgo 1050円  高い
3 シングルピンソケット(低メス)1×20P  秋月電子通商:C-03138    60円  2個
3 ピンソケット(メス) 1x10P  秋月電子通商:C-03786    60円  2個
3 0.3mm ユニバーサル基板(72x47mm)  秋月電子通商:P-09725  120円  1個
4  SPI Library:sumotoy / SSD_13XX  SSD_13XX   –  1行変更

.
本家 Travis Lin Store の Pocket 32 — ESP32 + 18650


 

配線:ESP32 と SPI OLED に7本の配線をします。
_  VSPI は #include <SPI.h> を使用し以下の図面の配線になります。

1.  VSPI 配線の定義:デフォルトの場合。
_  SPI.begin();   (未記入でも動作します)
_  GPIO は SCK( GPIO 18 ), MOSI ( GPIO 23 ) を使用し固定です。(変更可)

2. OLED の配線:CS, DC, RS(RES) :空いているGPIO を使用します。
_  SSD_13XX tft = SSD_13XX(15, 16, 4); // CS, DC, RS(RES)
_  カッコ内の変数は CS, DC, RS(RES) を示します。
_  詳細は sumotoy / SSD_13XX に書かれています。

3.  VSPI 配線の定義:MOSI と SCK を 他の GPIO で使用する場合。
_  例:SPI.begin(14, 12, 13);  // sck, miso, mosi, ss  // miso(12) は未使用。
_  SCK( GPIO 14 ), MOSI ( GPIO 13 ) で 任意のGPIO を使用できます。
_  注:全ての端子を確認した訳でなく 出来ない端子もあるかと思います。


 

スケッチ:1行変更します。
_ ライブラリー SSD_13XX にある  exsample の変更内容。
_ SSD_13XX tft = SSD_13XX(__CS_TFT, __DC_TFT); を
_ SSD_13XX tft = SSD_13XX(15, 16, 4); に変更します。
_ カッコ内は CS = GPIO 15。DC = GPIO 16。RS = GPIO 4 としました。
_ この3つは 他の GPIO でも動作可能です。
_ SSD1331 OLED の名前は tft のままとします。

#include <SPI.h>
#include <SSD_13XX.h>
// MOSI=23, SCK=18,     CS, DC, RS
SSD_13XX tft = SSD_13XX(15, 16,  4);

 


 

ESP32 SPI と SPI Color OLED のピンアサイン:

_ SPI : Serial Peripheral Interface
_ MISO : Master In, Slave Out – Sending data to the master from the slave
_ MOSI : Master Out, Slave In – Sending data to the slave from the master
_ SCK (SCLK) : Serial Clock – Synchronizes data from the master/slave relationship
_ SS (CSN (Chip Select NOT), NSS) : Slave Select – SS low means slave is the active slave.
_ VSPI : 通常 5,18,19,23 を使用しますが 任意のピンも使用できます。
_ HSPI : 通常 12,13,14,15 を使用しますが 任意のピンも使用できます。


 

WeMos d1 mini Pro (ESP8266) と 0.95″ SPI Color OLED の実例:
macsbug:0.95″ 96×64 Color OLED in ESP8266


 

複数のディスプレーと複数のライブラリー:
_ 冒頭にある I2C mono OLED と SPI Color OLED は 2つのライブラリーを
_ 使用しています。 sqix78の「esp8266-oled-ssd1306-master」と 今回の
_ 「ssd_13XX」ライブラリーです。スケッチを記述するとエラーがでます。
_ 原因は ライブラリーで定義している BLACK と WHITE の文字が競合して
_ いる為です。対策は sqix78 の OLEDDisplay.cpp とOLEDDisplay.h にある
_ BLACK と WHITE を BLACK1 と WHITE1 に変更し 動く様になります。
_ ただし この方法はライブラリーの管理が面倒になりますね。


 

感想:
1. VSPI, HSPI の信号の違いと 確認方法を理解できていません。
_  ESP32 の SPI は VSPI, HSPI, FSPI と多彩になりました。
_  今回の動作は VSPI (デフォルトの使用) と判断しています。
_  VSPI, HSPI は Display Driver との関係があり合致しないと動きません。
_  どういうわけか解りませんが HSPI の命令は動きませんでした。
_   SPIClass SPI(SPI);, SPIClass SPI(VSPI); は 反応しますが
_   SPIClass SPI(HSPI); は 反応しませんでした。
_  使用ピンを任意で変えられる事も含み、現在 VSPI か HSPI で動いているかの
_  確認の方法が解りません。
2. 価格:0.95 inch 96×64 Color OLED は ebay で 約 800円 です。
_  他の販売:
_  日本アマゾンの HiLetgo は 1050円で高く。他に2千円台の高い物もあります。
_  SSの1.5インチ 16ビット色のOLEDディスプレイは 5755円と超高く論外です。
_  ebayに 1.8″ Serial:UART/I2C/SPI True Color OLED 160×128 Display Module
_  160×128 は 3187円($28.99) と高く論外です。
3. 表示速度:ESP32 の VSPI機能 と相まって 速度は速いです。
4. 画像データー:ファイルや SD から読み込む方法がありライブラリーの中に
_   構成されていますので読むと参考になるかと思います。画像データの作り
_   方は CD-Image-Converter で作る様ですが詳細は調べていません。
_   フォントも LCD_Font_Converter があるようです。
5. SSD1331 ライブラリー:mgo-tec氏は SSD1331 ライブラリーを作成しました。
_  mgo-tec電子工作:「有機EL(OLED)SSD1331 ライブラリを作成しました(ESP32用)
_  オシロも使用し多大な努力と完成度、丁寧な解説を何度も読み返し感謝致します。
6. 他の SSD1331 のライブラリー:幾つか試しましが動きませんでした。
7. ドライバーとピクセル:SSD1331 は 96×64、SSD1351 は 128×128 (高価)です。
8. ライブラリー;max mc costa の sumotoy氏に感謝致します。TFTにも感謝。
_  ESP8266のフォルダーだけでなく他のスケッチも動きました。
_  1つだけ「image_eyeAnimation」はエラーで動きませんでした。
9. 電源:このOLEDは 電源に シビアーなモジュールです。容量の少ない
_     外部電源や不安定な電源を使用すると表示が乱れる時があります。
_  注意:電源を入れたまま OLED を抜き差ししない事。動かなくなります。
_     ただし、何度か電源を入れ直すとなんとか戻ります。


 

OLEDについて:
_ OLED(有機発光ダイオード)は、バックライトを必要としません。
_ 高輝度で軽量で薄く、広視野角、低動作電圧と低消費電力です。
_ 図の破線部は TFT の場合に必要な構成で OLED では不要になりました。


Written by macsbug

6月 14, 2017 @ 8:22 pm

カテゴリー: ESP32

1件のフィードバック

Subscribe to comments with RSS.


コメントを残す