JH7UBCブログ

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

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です。

 


ESP32 シリアル通信テスト

2019-12-23 14:24:52 | ESP32

 

 ESP32は、シリアル通信ポートを3個持っています。UART0,UART1,UART2です。

 各ポートのピン割り当ては、

--------------------------------------------------

 UART0

 RXD0 --- GPIO3

 TXD0 --- GPIO1

--------------------------------------------------

 UART1(デフォルトでは使用不可)

 RXD1 --- GPIO9

 TXD1 --- GPIO10

--------------------------------------------------

 UART2

 RXD2 --- GPIO16

 TXD2 --- GPIO17

-------------------------------------------------

 となっています。(UART1の使用法は、Qiitaのサイトをご覧ください。)

  Arduino IDEは、シリアルモニタを持っていますので、まずそれからテストします。

 シリアルモニタで使用されるポートは、UART0です。

 次のようなスケッチで、エコーバックテストをしました。

シリアルモニタから送信した文字が表示されます。

 通信速度を上げてテストをしてみると、500000bpsまで通信できました。

 UART0のRXD0(GPIO3)をPicoScopeで見てみると(500000bpsの時)

 という感じです。アイドリング時は、HIGHレベルで、スタートでLOWに下がります。

 

 次に、UART2を使ってパソコンと通信してみます。

 接続回路図です。GPIO16(U2RXD)とGPIO17(U2TXD)とUSBシリアル変換モジュールFT234を回路図のように接続します。

 パソコン側の通信ソフトは、定番のTeraTermで通信速度は115200bpsとします。

 ブレッドボードです。

 スケッチです。UART2の時は、Serial2とします。

 

TeraTermの画面です。キーボードから入力した文字がESP32に送られて、同じ文字が送り返されます。