ESP32マイコン内蔵のプログラム可能なスマートバンド「LilyGO T-Wristband」を手に入れた。
本体と、バンド部分と、充電用の短いUSBケーブルと、プログラム書き込み用I/Fボードがセットになっている。
充電用USBケーブルは、2つの電極が接触して充電するような形になっている。
充電したら、表示が出た。自動で起動したようだ。
デモ画面が表示されている。
内蔵のIMUのセンサーの表示とかも出る。
操作は、右側のくぼみの部分をタッチするとタッチセンサーが反応するようだ。
CPUは、ESP32-PICOというESPマイコンだ。
ケースを開けると、基板が取り出せる。基板に書き込みI/Fを繋ぐとこができる。
ちなみにケースの裏側には脈拍センサー用っぽい穴があいているのだが、センサーは無いので穴には意味が無い。Aliexpressで売っている激安のスマートバンドと筐体が同じっぽいので流用なのだろうか。
T-Wristbandの開発に必要な情報はGitHubにある。
→ GitHub – Xinyuan-LilyGO/LilyGO-T-Wristband
このプログラムをArduino IDEでビルドするにはいくつかライブラリをインストールする必要がある。
TFT-eSPIとPCF8563_Libraryだけみたいに上記のGitHubには書いてあったが、他にもWiFiManagerとかも必要だ。
残念ながらうまくビルドができなかった。
WiFiManagerのバージョンが違うのかもしれない。あと、WiFiについてはWiFi.hが重複しているというエラーも出たりしたが、これについてはESP32のほうのヘッダ-ファイルを絶対パスでして指定してincludeしてエラー回避した。
どのみち技適の問題で電波を出せないから、この機能を使っている部分はコメントアウトしてしまうつもりだったが、ビルドできなかったのはちょっと残念だ。
気を取り直して、簡単なソフトを動かしてみる。LEDのOn/Offの「Lチカ」は普通にできた。
次に、液晶の表示だけの簡単なHello Worldのコードを書いて動かしてみた。
上記のTFT-eSPIというライブラリを使う。
このライブラリは、Arduino IDEから入れると古いものしか入らないので、T-Wristbandのパネルに対応していない。
なので、直接ダウンロードしてインストールした。
→ https://github.com/Bodmer/TFT_eSPI
そして、ライブラリのUser_Setup_Select.hというヘッダファイルを変更して、
#include <User_Setups/Setup26_TTGO_T_Wristband.h.h>
という部分が使われるようにコメントアウトの//を消して、この行が使われるようにする。
そして、その上のほうの#ifndef USER_SETUP_LOADEDをコメントアウトし、対になる#endifもコメントアウトする。
ターゲットボードはESP32-PICO Dev Boardみたいなのを選んだ。
tft.init();で初期化し、tft.print();で文字を描画できる。
しかし、どうもうまくいかない。
まず、initをしても画面の表示内容はクリアされないので、tft.fillScreen(TFT_BLACK);として画面をクリアしようとするのだが、正常に動作しなかった。
画面全体ではなく一部しか塗られない。そして、色は黒ではなく白で塗られた。色が反転している。
文字を表示する位置は、tft.setCursor (10, 10);などとして指定するのだが、これもちょっと場所が変だ。右上が(0,0)で、tft.print()で文字が左右反転で左方向に描画されてしまう。座標も左右反転しているようだ。
向きとかを合わせたくて、tft.setRotation();というのを使ってみたが、左右反転については設定を変えられないようだ。とりあえず簡単な直しかたは分からないので、ここで作業は中断した。
こんな感じになった。
ケースを付けると、表示はこのように見える。
技適の問題があるので、ESP32マイコンのWiFiやBluetoothの機能は使わずに、RTCだけを使って腕時計として機能するものを作りたいと思う。
ニキシー菅風の表示とか試してみたい。
—
追記
TFTライブラリのUser_Setup_Select.hの修正箇所が足りないらしい。コメント欄で指摘があったので、見直したら気が付いた。
「// Default setup is root library folder」という行もコメントアウトする必要があったということだ。
ヘッダファイルを直したら、ちゃんと動くようになったようだ。
結果、コードは以下のようにしてちゃんと動いた。
#include <TFT_eSPI.h> // Graphics and font library for ST7735 driver chip
#include <SPI.h>
TFT_eSPI tft = TFT_eSPI(); // Invoke library, pins defined in User_Setup.h
void setup() {
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setCursor(30,30);
tft.print("Hello World.");
}
void loop() {
}
ただ、WiFiManagerについてはビルドができていない。
内部でESP8266WiFi.hというファイルを必要とするようなのだが、ESP8266のターゲットボード設定をしてESP8266WiFi.hを含む一式全部をインストールしたのに、ESP32マイコンをターゲットに指定するとESP8266WiFi.hをincludeができないという状態になってしまう。
#include
の行をコメントアウトを忘れているような症状かな
コメントありがとうございます。
コードについて<>で囲まれた部分はHTMLタグと誤判別されて書き込みできてなかったようです。
コメントアウト忘れの行があるという意図は伝わりました。