2018年11月19日

ESP32 LCD ボード

前記事で espzero と HAT ? アドオンボード2種を設計したが、改修して R1.3 になっている。それは、少しの間寝かせておいて、追加のボードを設計してみた。これは、そのうちのひとつ。

espzero_lcd-1.3a-top.png

左から espzero (v1.3a)、電源ボード、espzero_lcd 。サイズは、97mm x 65mm 。

espzero_lcd-1.3a.png

LCD ボードは、1.8 インチ 14 ピンの ST7735S LCD を採用。幅が 34mm あるので、espzero の左右 2.5mm づつ大きくして 65mm x 35mm とした。裏面のピンヘッダ(ソケット)は、表面実装タイプにして、表面がフラットになるようにした。

LCD は割と入手性が良いようだ。aidento にも aliexpress にもある。 ST7735(S) が検索のキーワード。あと、ピンソケットの方を使うと思うが、double row SMT(SMD) に加えて female で検索。


回路の説明1 LED バックライト。

LED は、3.0V なので、PWM 前提で、MOSFET で直接ドライブ。バッテリー駆動を考えると 電源が 3.1V とかまで低下する場合があり、電流制限抵抗を入れたくないのである。BSS138 は割と ON 抵抗が大きいので、3.3V で ON しっぱなしでも、すぐに LED が壊れてしまうことはないと思う。

回路の説明2 内蔵DAC / PWM

LCD だけではアレなので、ボタンとサウンド出力をつけた。ただし、おまけなのでモノラル。前のDACアンプでは、オペアンプが入っていたが、必要なくなったのでなしにした。ゲイン制御もなし。内蔵DAC自体に 4 段階のゲイン制御が付いている。

回路の説明3 PDM オプション。

モノラルなら、DAC を PDM出力に切り替えるだけで、鳴らすことが出来る。オプションというのは、ラッチを使って忠実に方形波をだそうという試みである。電源ノイズも載せたくないので電源も専用レギュレータ。聞き比べるとどれぐらい違うのか?試してみたい。

3 ピン余計に使うので、GPIO を他の用途に使いたい場合に 内蔵 DAC だけ使うことにしても良い。付けてしまった後で、無効に出来るようにも配慮した。

ラッチには 74LVC1G374 を使う。入手性が悪いのが難点だが、あえて採用。3ステート出力が利点で、普通のラッチにすると、また面倒なことになる。レギュレータは MIC5205 としたが TAR5SB33 でも良い。

    多分・・正規のPDM ならば、WS のポジティブエッジで L 信号がラッチされる。もし I2S_TX_WS_OUT_DELAY が PDM でも機能するならば、タイミングをずらして R 信号をラッチすることが可能かも知れない。 74LVC1G373 はエッジトリガではない。CLK(LE) が H の間は 入力信号を出力。L になったときの状態を保持という動作になる。モノラル出力にして CLK(LE) が H の間はデータが変化しないような設定が出来れば、74LVC1G373が使えるかも知れない。もしそうならば、CLK(LE) を H に固定して、PWM の場合も 信号の整形が出来るというメリットもあるので、74LVC1G373 の方が良いかも知れない。

回路の説明4 ピン割り当て

できるだけ Raspi で使えるように配慮した。・・・が、同じというわけにはいかない。第一に SD/SDIO のピンは使いたくないのである。SainSmart 1.8" TFT LCD display というのがメジャーらしいのだが、重要そうなピン
 GPIO 11(SCLK)
 GPIO 10(MOSI)
 GPIO 8(CE0)
だけは同じにしている。あと espzero では、内蔵DAC を Raspi の PWM 可能なピンに割り当てているので、ひとつはサウンド、ひとつは LED バックライトに使う。

    Raspi クラスの CPU なら、PDM 相当の計算など楽勝だろうが、GPIO をソフトで正確に ON/OFF するのは無理がある。PWM でお茶を濁す。

シリアルと I2C と SD/SDIO は空けておきたいと考えると、ピン割り当てはかなり厳しい。10 ピンも使わないのだから当然ではあるが・・・

暫定わりあては、

    #19 IO18/MOSI LCD SDA
    #23 IO17/SCK LCD SCK
    #24 IO16 LCD CS
    #29 IO32 LCD A0
    #40 IO27 LCD RESET
    #33 IO26/DAC2 LED PWM

    #35 IO0 BTN LEFT
    #32 I34 BTN CENTER
    #31 I35 BTN RIGHT

    #12 IO19 BTL SHUDOWN
    #36 IO25/DAC1 SOUND OUT
    #21 IO5/MISO PDM EN
    #26 IO33 PDM CLK
    #7 IO21 PDM DATA

とした。

まぁこんなものを作ってどうするのか?という気もする。M5stick の劣化版みたいではないか。・・・とは思うのであるが、espzero に接続できるのが嬉しいのである。



電源ボード
espzero_pwr-1.3a.png

電源ボードというか台である。機能的には、前の記事の右上につけた DCジャックボードと大差ない。DCジャックボードは簡易的なもので、一時的に使うイメージで設計したのだが、上に取り付けるので、LCD ボードでは使えない。

LCD だから、水平ではなく、垂直にして使うのだろう。・・・となると台のようなものがあったら良いのではないか・・という発想。台には、DC ジャックと passive POE の RJ45 コネクタを付ける。あるいは、USB シリアルボードを取り付けて、そこから給電までしてしまうことも考慮。

電源 IC には、MP2307 を採用。23V までの高電圧が使える。・・・というか MINI 360 DC/DC コンバータモジュールと同じ回路。回路を組むのが面倒なら モジュールを付けても良い。ただ、直接組むと 電源OFF スイッチが使えるようになる。また、熱的に有利で安定して動かせる(かも)。

それは良いとして、問題は取り付け方法。普通に espzero をピンヘッダ、LCD をピンソケット (あるいは逆)ということにすれば、3枚目は付けられない。

pinhdr+soket.jpg
幸いなことに、ピンヘッダと ピンソケットが一体になったコネクタがある。これを espzero に使って電源ノードの方をライトアングルのピンヘッダにすれば、垂直に取り付けられる。少々なら角度を付けることも可能だろう。

ただ、これちょっとでかい。ソケット部が 11mm あるうえに、ピンヘッダ部が基板から 10.6mm 高になる。(通常のピンソケットは 8.5mm、ピンヘッダも 8.5mm 高で ピンだけだと 6mm )

ライトアングルのロングタイプ・ピンヘッダがあった。通常はピン部分の長さは 6mm だが、12mm のものがある。これを一部だけ取り付ける。

long-pinhdr.png

計算するとこんな位置関係になる。電源ボードに直付けしたくないなら、秋月の低メス(3.6mm 高)を使うことも出来る。

ESP32 リセット回路

自動書き込みの回路は、通常 DTR と RTS の2本の制御線を使用する。arduino のように 1 本だけで制御できないのだろうか?

オープンドレインの正論理バッファが2つあればいけそうに思うのだが、どうだろう?DTR を L にすれば、 ID0 を L にして EN をトグルする動作で良いと思うのだが。

    ...と考えて、回路を付加している。

    ESP32-writerD.png

    多分ダイオード使って、EN , IO0 用を分ければ良いと思うのだが、74LVC125 を使った回路も考えてみた。
    ちょっと工夫すると、74LVC125 で反転・非反転 push-pull・オープンドレインの組み合わせを2回路作れるのでストックしようかと。

    ・・・Low-level input voltage of EN to reset the module : 0.6V という記載を見つけた。ダイオードの Vf がそれぐらいなのでダメかも。74LVC125 のほうを推奨しておこう。

      実は、RSコンポーネンツ で送料無料キャンペーンをやっている。NCS2211 は欲しい。他に何かないかと考えてこれにした。74LVC1G374 は売ってなかった。373 はあったのだが、それではダメ。ちゃんと考えれば使えるのかも知れないが。

    LVC125_x4.jpg

    CJMCU CP2102 という安い USB シリアルがあるのだが、これを裏面に張り付けて、ファームウェア・アップデートが出来るようには一応考慮した。電源もそこから取ってしまう・・・というのも出来る。そうなると、まさにコネクタを背面に回す台。画僧は(ダメかも)ダイオード版で、付けるパーツも少ない。

      デバッグ用に一時的に使うのであれば、表面にピンヘッダを立てて、ライトアングルのピンソケットで垂直に取り付けるというのも良いかも知れない。

    CJMCU-CP2102-u.jpg.png


espzero は、次版のコピーである。次版の発注はこれを先にしようと思う。

 ・espzero-lcd-v1.3a-out.zip (ガーバーファイル)
 ・espzero-v1.3b.zip (EAGLE ソース)
 ・espzero-v1.3a-out.zip (AMP,ANALYZER R1.3 暫定ガーバー)

結局は、書いた後すぐ発注してしまうのだった。AMP,ANALYZER の方は、まだ未発注。ファイルを一旦 FIX するので載せておく。

ついでだが、EAGLE ソースの方には、espzero_phy というのがある。これは、passive POE 対応の イーサネットボード。電源ノードの原型でもある。精査が終わっていないし、当面作る気がないのでソースだけ。さらに phy2 というボードもある。2つの espzero の イーサネットを直結したもの。PHY を2つ使っているのである。こちらはさらに何に使うかイメージすら持っていない。作ることが出来るので作ってみただけ。



付録:espzero ピンアサイン (と Rpi zero)
espzero_pinx.png

Rpi zero とできるだけ互換にしようとした。左の緑と右の深緑(SD/SDIO)は、配慮した信号線。




メモ:
 ・ https://github.com/MhageGH/esp32_ST7735_Movie

変換しないといけないが、動画再生は一応可能なのか。




1.8 インチの LCD は、128 x 160 の解像度で、ESP32 でも余裕でフレームバッファを持てる。8bpp で 20KB とか楽勝である。サイズ的にも 幅 34mm しかなく、espzero にはちょうど良い。だがしかし、ちょっと寂しいかなと。

2.2 インチだと ILI9341 採用の SPI LCD がある。こちらは、240x320 で メモリが 4 倍必要。無駄にドットが小さいという気もするのだが、これも検討したい。

入手性が良さそうなのは、18 ピンのタイプ。サイズは、43mm x 60mm 。これより大きくなると、基板作るのが厳しく・・・というわけでもないが、段々お手軽な感じではなくなってくる。

これについて、キーボードと合わせたものを考えていて、続きは、キーボードの記事へ。


posted by すz at 20:21| Comment(0) | TrackBack(0) | espzero
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/184997660
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック