TTGo T-Display ディスプレーつきESP32開発ボード

今年はコロナ禍「新しい普通」(日本では「新しい日常」の方が用語として定着したと思うが)を受け入れざるを得なかった。その「新しい日常」の一環として,家庭菜園に力を入れることにした

その助けになるよう,Bluetooth Low-Energy (BLE)対応プラントモニタXiaomi Mi/HHCC Flora Monitor/Flower Care Monitorを導入した。さらに,それを使ってゆくゆくは野菜栽培の自動化をしようと考えた。その実現の一部分として,BLE/LANブリッジを実現するためにESP32について調べる過程でLILYGO TTGO T-Display ESP32 WiFi and Bluetooth Module Development Board For Arduino 1.14 Inch LCDを知った。AliExpressでこれを857円で購入した自分用関連写真のアルバム)。ESP32はwifiとBLEの双方をサポートしているので,これらが必要なプロジェクトでよく使用されている。

Mi Floraのセンサ類はそのまま,中核をESP32にしたようなTTGO T-Higrowという製品もある。一石二鳥のように思えたが,水の対処を自分でしなくてはならないのが難点。屋外使用の場合はもちろん,屋内使用でも植物のモニタに使うものなので,水がかかってしまうことは想定しなければならない。簡便な解決策はなさそうで,やはりある程度は水対策のされたMi Floraに軍配が上がる。

T-Displayについては,公式サイトのページにある図はV1.0となっているが,そのページに掲載されたリンクの指すGitHub – Xinyuan-LilyGO/TTGO-T-Displayの図はV1.1となっている。

ESP32を採用した開発ボードは多数あるが,特にこれを採用したのは, “Getting started with ESP32 development using the TTGO T-DISPLAY – YouTube” で勧められていたから。自分はこの分野は全くの素人だが,ディスプレイが最初から付属しているのは確かに便利だろう,と考えた。

たまたま同時期同じく1.14インチディスプレー搭載に加えて,各種センサー・スピーカ搭載,ケース入りのM5StickC Plusが発売された(AliExpressの公式ストアで送料込みで1,800円ほどスイッチサイエンスで2,200円+送料)のでこれも検討していたんだがすぐ在庫切れに。スイッチサイエンスでは再入荷は10月中旬としているので、そのときになったら再度検討してみよう。運用上はケース入りのメリットは大きい。T-Displayのケースどうしよう…。

(下に続く)

ファームウェアとしては “ESP32デバイス向けESPHome” にあるようESPHomeを検討していた(とりあえずは考えていないがJavaScriptによるプログラミング可能にするファームウェアもある)。その後,TasmotaとESPHomeとの違いを再度しっかり調べてみた

T-Displayの購入を検討した時点では,ESPHomeのサポートに関して決定的情報がなかったが,今は “ST7789V TFT LCD — ESPHome” に完全な設定ファイルがある。 買ってから長らく放っていたが,都合いいことに9/13に公開されたバージョン1.15.0でカラーLCDディスプレーがサポートされたということだから,結果的にそれがよかったのかもしれない。

さらに,Xiaomi Mijia BLE Sensorsの一部としてMi Floraがサポートされている上, BLE対応スマート温度・湿度計LYWSD03MMCも。つまりESPHomeが現時点で自分が必要とする機能を全て提供していることになる。

以下,何日か使ってみた範囲での諸感想。

のっけから,PCとの接続に使ったUSBケーブルが充電専用,という大ポカをしでかしてしまった。そこそこ時間を無駄にした。

それに気づくまで,Windows 10 PC側に必要なドライバがないからか,と考えた。製造元のスペックシートによると,USB-to-TTLはSilicon LabsのCP2104 Classic USB to UART Bridgeによって実現されているとのことなので, “USB to UART Bridge VCP Drivers – Silicon Labs” からWindows 10用ドライバーをダウンロードしてインストールしてみた。

mDNSサービスがうまく使えてない。ただ,これはどの次元での問題なのかわかっていない。Windows 10では最近はデフォルトで使えるはずだが,実際には問題があることがあるとのこと。

ただ,以下のようなメッセージを吐いているのでやはりT-Display側の問題か。

[02:21:03][E][ESPmDNS.cpp:65] begin(): Failed starting MDNS
[02:21:03][E][ESPmDNS.cpp:148] addService(): Failed adding service http.tcp.
[02:21:03]
[02:21:03][E][ESPmDNS.cpp:167] addServiceTxt(): Failed setting service TXT

T-DisplayにMi Floraをモニタさせるのは比較的容易。Mi FloraのMACアドレスを知る必要があり,現時点で3台あるためそこはちょっと面倒。いろいろ方法はあろうが,T-Displayでいずれにせよ使うesp32_ble_trackerコンポーネントを使用すれば,シリアルにT-Displayが見つけるBLEデバイスについての情報が随時表示される。ただ,3台分見つかったものの,どのMACアドレスがどのMi Floraに対応しているかはまだわかってない。

BLE対応スマート温度・湿度計LYWSD03MMCを接続させるのは実ははるかに大変だということがわかったので,とりあえずあと回し。

ST7789V TFT LCD — ESPHome” にある設定ファイルを若干手直しし,連携するHome Assitantから時刻を取得する設定になっていたのを,自力でNTPで取得するように変え,TTFフォントを用意しそれに合った設定に直すと無事ミニNTP時計として動作する(写真)。

将来的に日本語での表示も視野に入れて, “M+ FONTS” のmplus-1c-medium.ttfを使用してみた。一般的にフォントデータを組み込み型機器に持たせる際には,データサイズを極力小さくする必要があるのだが,ESPHomeのフォント管理では,指定したグリフのみを取り出ししてそのデータだけファームウェアに組み込むという処理を自動でやってくれる。そこまでやってくれるとは恐れ入った。デフォルトのグリフとしてはいわゆるASCII文字のみがデフォルトで指定されているので,もし将来的に日本語文字を表示したい場合はその指定を適宜変える必要があるだろう(fontセクションのglyphs変数で)。

ここまではいいのだが,BLE機能を追加するとメモリを圧迫するのか,メモリ管理に何か問題があるのか動作が不安定になり,最悪ブートループを起こす。どうもwifi機能が不安定になるようで,以下のログにあるように極めて頻繁に再起動を繰り返しながらそれでもなんとか散発的にwifiに繋がることもあれば,wifiにはスキャンが全くできなくなり繋がらなくなる(BLE機能は維持されていても)ということもあった。

[02:21:27][W][wifi_esp32:386]: Event: Disconnected ssid='XXXXXXX' bssid=XX:XX:XX:XX:XX:XX reason='Beacon Timeout'
[02:21:27][W][wifi:100]: WiFi Connection lost... Reconnecting...
[02:21:27][W][wifi:522]: Restarting WiFi adapter...
[02:21:28][I][wifi:194]: WiFi Connecting to 'XXXXXXX'...
[02:21:28][D][esp-idf:000]: E (27084) phy_init: failed to allocate memory for RF calibration data
[02:21:28]
[02:21:28]abort() was called at PC 0x400e05d5 on core 0
[02:21:28]
[02:21:28]Backtrace: 0x400923bc:0x3fff7200 0x400925ed:0x3fff7220 0x400e05d5:0x3fff7240 0x400fe9e0:0x3fff7270 0x400feae3:0x3fff72a0 0x400fee02:0x3fff72d0 0x400fb0c6:0x3fff7300 0x4009550b:0x3fff7320 0x4008eb05:0x3fff7360
WARNING Found stack trace! Trying to decode it
[02:21:28]
[02:21:28]Rebooting...

polclota/esp32lywsd03mmcというLYWSD03MMCとの連携専用のESP32用ファームウェア(Basic Arduino C ESP32 code for Mijia LYWSD03MMC cheap BLE temperature and humidity sensors to MQTT. Self device configuration for Home assitant so that you don’t need to configure them manually)のドキュメントには以下のように書いてある:

IMPORTANT!

Some USB cables as well as some usb power supplies do not provide enough power for BT and Wifi to work together so devices tent  (sic) to reboot. Should this occur loop count resets too so only first device (LYWSD03MMCのこと) is checked on and on. In some cases they even fail and reboot before first Wifi connection try.

Bluetoothとwifi機能を同時に使うと電力を消費するので,ケーブルを含め電源が十分電力を供給できるようになってないとリブートしてしまう,としている。要検討。

BLE機能は今の目的には必須機能なのでこれは外せない。いたしかたなく,フォント関係を含めディスプレー関係の機能をすっぽり抜くと,wifi, BLEとも安定して機能する。せっかくディスプレーつきのをわざわざ選んだのに残念だがいたし方ない。ディスプレーはフォントが使えなくても意味があるが,フォント機能抜きでディスプレー機能だけを残してもやはり同様の問題が発生した。

次のステップは,得られたセンサー値を “MQTTブローカ” で調べたBeebotteに投げるようにすること。

なお,T-Displayのディスプレーの解像度については製造元のスペックシートに記述がないが,Amazon.com: LILYGO TTGO T-Display-GD32 GD32VF103CBT6 Main Chip ST7789 1.14 Inch IPS 240×135 Resolution Minimalist Development Board: Computers & Accessoriesによれば240×135

また, “Frequently Asked Questions — ESPHome” で以下のようにあるように,設定ファイルは分割・パラメータ化ができる。

ESPHome supports (most of) Home Assistant’s YAML configuration directives like !include and !secret. So you can store all your secret WiFi passwords and so on in a file called secrets.yaml within the directory where the configuration file is.

For even more configuration templating, take a look at Substitutions.

!secretの使用法についてはあまり詳しくないが,その元になったという”Storing secrets – Home Assistant” 参照。


以下T-DisplayがESPHomeで正式サポートされる前に集めていたリソース:

TTGo T-Display ディスプレーつきESP32開発ボード」への5件のフィードバック

  1. ピンバック: ESP32搭載TTGo T-Displayからセンサー値をMQTTブローカに投げる | あくまで暫定措置としてのブログ
  2. ピンバック: Amazfit Band 5 | あくまで暫定措置としてのブログ
  3. ピンバック: AndroidTV準拠ストリーミング・メディア・プレーヤAmigo 7xJP | あくまで暫定措置としてのブログ
  4. ピンバック: Accessing Xiaomi BLE Sensors from Node-RED | あくまで暫定措置としてのブログ
  5. ピンバック: 新LAN構成 | あくまで暫定措置としてのブログ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください