JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

ESP32 NOKIA5110表示テスト

2020-01-07 12:27:13 | ESP32

 NOKIA5110LCDは、NOKIA携帯5110に使われていたモノクロ・グラフィック液晶モジュールで、現在もAmazonなどで入手可能です。

 解像度は、48×84ドットでVcc=2.7V~3.3Vですので、ESP32に直結できます。コントローラチップは、モトローラのPCD8544です。

 ArduinoやSTM32では、LCD5110_Basicというライブラリ(Rinky-Drink Electronicsというサイトからダウンロードできます)を使いましたが、ESP32では、コンパイル時にエラーがでてしまい、利用できません。(Arduino IDEを使っています)

 そこで、GitHubからAdafruit PCD8544 Nokia 5110 LCD LibraryAdafruit GFX Libraryをダウンロードして、Arduino IDEのライブラリーにインストールして利用しました。

ESP32-DevKitCとNOKIA5110の接続は、次の通りです。

GPIO14(HSPI SCK)------CLK

GPIO13(HSPI MOSI)-----DIN

GPIO27-------------------D/C

GPIO15(HSPI SS)--------CE(CS)

GPIO26-------------------RST

3V3-----------------------Vcc

GND----------------------LIGHT,GND(5110のLIGHTは、GNDに接続するものとVccに接続するものがあるので要確認)

 

回路図です。

 ライブラリーのサンプルプログラムをコンパイル・書き込むと表示デモが表示されました。

 写真のイメージが表示された後、グラフィック表示やテキスト表示のサンプルが次々に表示されました。

 勉強のために、いつものように「Hello world!」を表示させてみます。

 NOKIA5110のCE(CS)をGNDに接続すると配線が1本少なくなります。回路図です。

 この回路でテストします。

 サンプルのスケッチを見ながら、必要な部分を抜き出したスケッチです。

 これで、このライブラリの基本的な使い方が分かります。

 setContrast()の数値は、50くらいが適当でした。

 最初のdiplay.display();で花のイメージが表示されます。続いて、TextSize(1)で黒文字で「Hello world!」が表示されました。

 

 表示の仕組みですが、display.println("Hello world!");でバッファにイメージが作られ、次の行のdisplay.display();でNOKIA5110にデータが送られて表示されます。

 テキスト表示、グラフィック表示についてもう少し調べて、次回掲載します。

 

 


ESP32 LCD1602/2004の表示テスト

2019-12-28 08:13:47 | ESP32

 これまで、ESP32を使ってI2Cシリアルインターフェース付きのLCD1602の表示テストとI2C LCD AQM0802Aの表示テストを行いました。

 そういえば、従来のLCD1602/2004の表示テストを行っていませんでした。たぶん、LiquidCrystalライブラリが使えるはず。

 しかし、ネットを検索してもあまりヒットしません。あまり当たり前だからかもしれません。こちらのサイトを参考にしてテストをしました。

 ESP32とLCD1602の接続回路図です。

 LCDのRWは、GNDに接続して、配線を1本省略しています。バックライト用のA(アノード)には、輝度調整のために100Ωを介して5Vに接続しています。

 スケッチです。

 手持ちにLCD1602がなかったので、LCD2004(バックライト付き)を使いました。

 ブレッドボードです。

!

 Arduinoと同じスケッチで、「Hello World!」が無事表示されました。


ESP32 AQM0802A表示テスト

2019-12-27 09:31:13 | ESP32

 I2C LCDのAQM0802Aの表示テストをします。

 AQM0802Aは、抵抗・コンデンサーが組み込まれたモジュールタイプを使います。

 ESP32との接続は、次の回路図のようにします。

 I2C address scannerでAQM0802Aのアドレスを確認すると

 確かに0x3Eです。

 AQM0802Aは、コントロールにST7032が使われています。そこでこれを使うためのライブラリーが必要です。

 オレ工房さんのArduino用のST7032ライブラリーが使えます。GitHubのこちらから「Clone or download」をクリックして、Arduino_ST7032_master.zipをダウンロードして、Arduino IDEに組み込みます。

 このライブラリーの古いタイプの場合、エラーがでることがあります。Qiitaサイトのこちらに修正の仕方が出ています。現在ダウンロードできるライブラリーでは、既に修正されていますので、エラーは出ません。

 スケッチです。

 LCD関係の関数は、ArduinoのLiquidCrystal()関数に準じています。

 コントラスト調整の数値は、30前後で、デバイスに合わせて調整します。

 このスケッチでは、1行目に「hello !」が表示され、2行目に1秒ごとに数字がカウントアップして表示されます。

 ブレッドボードです。

 

 ESP32をArduino IDEでプログラミングする場合、Arduinoのライブラリが使用できるは、たいへん助かります。

 他にもテストしてみます。


ESP32 I2C LCD1602表示テスト

2019-12-26 14:13:21 | ESP32

 PICやマイコンでの定番の表示器I2C LCD1602(I2Cシリアルインターフェース付き)の表示テストをします。

 ネット上でESP32との接続方法とスケッチを探すといくつかのサイトが見つかりました。例えば、こちらのサイト

 参考にしながら、というか、スケッチをコピペして、まずI2C LCD1602のI2CアドレスをI2C address scannerで調ます。

 ESP32 DevKitCとI2C LCD1602の接続は下の回路図のようにします。

 ESP32のI2Cピンは、GPIO222がSCL、GPIO21がSDAですので、I2C LCD1602のSCL1とSDAをそれぞれ接続し、GNDとVcc=5Vも接続します。

 0x27であることが確認できました。サイトの記事と同じなので、ディスプレイテストのスケッチもそのまま使えます。

 スケッチをArduino IDEにコピペして、スケッチをESP32に書き込むと、問題なく「Hello World!」が表示されました。

 


ESP32 入力ピンのPULL UP PULL DOWNテスト

2019-12-25 08:08:51 | ESP32

 ESP32の入力ピンのPULL UP PULL DOWNのテストをします。

 まず、ESP32 DevKitのピン配列は次のようになっています。

 

(この画像の原典は、分からないのですが、見やすいので使わせていただきます)

 デフォルトでPULL UP、PULL DOWNされているピンは、pu、pdで表示されています。

 Arduinoでは、pinMode(ピン番号,INPUT_PULLUP);でINPUTピンをPULL UPすることができます。(ESP32ではPULL_DOWNも指定することができることを確認しました。)

 ESP32では、次のようにPULL UP,PULL DOWN,両方,PULLなしを設定することができます。

 gpio_set_pull_mode(GPIO_NUM,PULL_MODE);

 GPIO_NUM:GPIO_NUM_0~GPIO_NUM_39

 PULL_MODE:GPIO_PULLUP_ONLY プルアップ

        GPIO_PULLDOWN_ONLY プルダウン

        GPIO_PULLUP_PULLDOWN プルアップ、プルダウン両方

        GPIO_FLOATING プルアップ、プルダウンなし

 ESP32のデータシートでは、プルアップ抵抗、プルダウン抵抗とも45kΩとなっています。

 各モードを設定したときのピンの電圧を調べてみます。

 スケッチです。GPIO25を0.5秒ごとにプルアップ、プルダウン、両方、なし設定を繰り返します。

 GPIO25の電圧をPicoScopeで見てみると

PULLUP_ONLYで3.3V、PULLDOWN_ONLYで0V、PULLUP_PULLDOWNで約1.6V、FLOATINGで0Vです。