2020年6月28日日曜日

ESP32でLCDディスプレイを動かす

どうも。caketetuです。
ESP32で使うディスプレイを買ってきたのでテストしてみます。
今回はライブラリのサンプルを動かしてみるだけの動画になります。
環境:Arduino IDE 1.8.9


今回テストしてみたのはこちら(Amazonのリンクに飛びます)

1.8インチディスプレイは前から持っていたものです。WiFi時計を作った時に
使用しました。こちらがちょっとイマイチだったので買い足した次第です。


まず一番大きい2.8インチのものから使っていきます。



サンプルはArduinoIDEのライブラリマネージャから
Adafruit GFX LibraryとAdafruit ILI9341をインストールします。

ここで問題があり、私の環境ではAdafruit ILI9341のバージョンを落とさなければ
コンパイルできませんでした。今は1.3.6を使用しています。

ファイル→スケッチブックの例->Adafruit ILI9341からgraphicstestを開き
ピン定義部分とクラス宣言の部分を少し変更します。

// For the Adafruit shield, these are the default.
#define TFT_DC 17
#define TFT_RST 16
#define TFT_CS 5

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

ESP32との結線は以下のようにします。

ESP32              2.8インチLCD
3.3V------------------------VCC、LED   
GND------------------------GND
GPIO5----------------------CS
RX2(GPIO 16)--------------RESET
TX2(GPIO 17)--------------DC
GPIO23---------------------MOSI
GPIO18---------------------SCK
GPIO19---------------------MISO

ソフトを確認するとわかりますが、CS、RESET、DCに関してはおそらく
どこでもよいと思われます。その他のピンも変更できそうですが、ソフトウェア
SPIになってしまうので動作速度が遅くなるのかなと。

動作の様子は一番下に。




次に一番小さなSSD1306モジュールを使ってみます。
今回はI2C接続で3つ入りのものを買いました。一個500円ぐらいなので
かなり安いと思います。


これもライブラリマネージャからライブラリをインストールします。
Adafruit SSD1306とAdafruit GFX Libraryを入れておきます。
こちらは最新版でOKでした。

ファイル→スケッチブックの例->Adafruit SSD1306からSSD1306_128_64_I2C
を開きちょっと変更します。

変更前
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)

変更後
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)


変更前
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64

変更後
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64

アドレスに関してはいくつか種類があるようなので注意です。

結線は以下のようになります。私の買ったものはプルアップが必要でした。

ESP32              0.96インチLCD
3.3V------------------------VCC
GND------------------------GND
GPIO21---------------------SDA(R10Kプルアップ)
GPIO22---------------------SCL(R10Kプルアップ)

これも最後に動作の動画を載せます。

最後はST7735Rディスプレイモジュールです。


これはずいぶん前に使っていたので導入を失念してしまいました。
あれほど証拠残しつつ作れと... とりあえず動いているプログラム晒しますので
何かの参考になれば。ライブラリはAdafruit ST7735で検索すれば出てくる
かなと思います。


表示テストの動画です。


ST7735がやけに表示が遅いのはソフトウェアSPIになってしまっているためと思われます。



今回購入した2.8インチLCDと0.96インチLCDには満足しています。
この二つを使い分けることでやりたいことをかなり広い範囲カバーできるでは
と考えています。ロボットのデバック用などとりあえず表示が欲しい場合は
小さくて配線の少ない0.96インチのものを。ディスプレイをメインに据えたものを
作りたいときは2.8インチのものを使用するといいかなと思います。

参考にさせて頂いたサイト




0 件のコメント:

コメントを投稿