マイコンあそび。

Coolな透過OLEDデバイスを作成しよう! TTGO TTV レビュー

2021年3月20日  2021年3月21日 

透過OLED(Transparent OLED) に大きなエモーショナルを感じているうちに、いつのまに手元にあったりする。ガジェット好きならよくあるあるな話なのだと思います。

中国深センの M5Stack の強力なライバル(?)  LILYGO(Shenzhen Xin Yuan Electronic Technology) プロダクトの作品。

中国の春節を挟んだたため一ヶ月越しの到着〜。

リモコンまで付いていて、まさに TV ですw

標準では透過OLEDがくっついているわけですが、LilyGOでは他のオプションパーツを載せ替えて遊べるようにするコンセプトもあるらしい。

※写真は LilyGO の Twitter より 


さっそく分解

底のゴム足のうち2つを外すとネジがあるので、それを回せば臓物が見えるようになる。

まさかの LiPo が入っていて、 SoC にテープでくっついていた。そいつを剥がそうとしたら、結線の部分から外れてしまった(T-T)。


直ではんだ付けしているのね…。こういう所はハウジングコネクタにして欲しいところ。

LILYGOは、こういう所の作りが M5Stack よりイマイチ雑な感じですね…。

どうせ USB-POWER で動かすだろうし、RTC用には別のちっちゃなバッテリーがくっついているのでLiPoは外れてしまって良かったのかもしれません。。。LiPo が SoCにくっついてると熱くなって燃えるのが怖いですしね(^_^;


鎮座されている SoC は LILYGO が誇る 独自 ESP32 モジュール T-Micro32 である。 Ali ではこれ単体でも売っていたりする


TTGO T-Micro32 について

くわしくは こちら(github)

ESP32-PICO-D4 のチップに 4MB の SPI-Flash を積んでいる。

80-240MHz 動作で SRAM 520kB というESP32 シリーズではお馴染みのスペックだ。

ピンマップ:




ほとんど WROOM なんちゃら と同じようなピンマップですね…

それなら、普通にWROOM を載っけてくれれば良かった。 いろいろとコストやら大人の事情があるのでしょうね。

当然 <技適> アレ </技適> はありません。

良い子のみんなは、実験等の特例制度 に申請してから電源を入れましょう〜。

接続デバイス

こんな感じ。

・ Transparent screen(透過OLED)

おそらく、この透過OLEDが最も LilyGO TTV の中で高価なパーツだと思われます(^^;。コントローラは SSD1309 と同等らしく、SPI通信で一般的な 128x64 OLED と同じように制御できるでしょう。 U8g2_Arduino ライブラリなどから使おう。 

※画像は GIMP などで XBM形式(C言語のソースコード形式で表される)に変換して、サクッと表示してやりましょう!

・ RTC

PCF8563 という、お馴染みのやっすいチップを使ってる。 I2C で叩ける。 address は 0x51h らしい。 ESP32は、いい加減RTCくらい内蔵したらいいのに

・ タッチセンサー

TTP223 という静電容量式センサーを使っている。こいつも Ali などでモジュールが安く売られている。

・ IR

通常の IR。付属のリモコンなどと通信できる。サクっと実装したいのであれば IRRemote Arduino ライブラリを使いましょう。

・ その他

回路図を見ると TP4054 という 充電管理用IC を使っている。中華な充電器などではおなじみのチップらしい。そして、USB-Serial用に CP2104 を使用。…これも、もうお馴染みですね。

開発

Arduino-IDE で通常の ESP32 Dev Module ボードを選択すれば速攻で USB からスケッチを転送して使える。素晴らしいですね。

基本的には github の examples 通りにやれば、それほど難しくない。

下記の設定(utlities.h)ファイルを流用させていただくのがたいへん便利である。

#define OLED_MISO 32
#define OLED_MOSI 23
#define OLED_SCLK 18
#define OLED_CS 5
#define OLED_DC 19
#define OLED_RST 4
#define OLED_PWR 33
#define PWR_ON 2
#define TOUCH_PWR 32
#define TOUCH_PIN 15
#define RTC_SDA 26
#define RTC_SCL 25
#define ADC_PIN 34
#define IR_RECV 13

そして、セットアップの流儀はこんな感じ

U8G2_SSD1309_128X64_NONAME2_F_4W_SW_SPI u8g2(U8G2_R0,
/* clock=*/ OLED_SCLK,
/* data=*/ OLED_MOSI,
/* cs=*/ OLED_CS,
/* dc=*/ OLED_DC,
/* reset=*/ OLED_RST);

void setup(void)
{
Serial.begin(115200);

/*Turn on power control*/
pinMode(PWR_ON, OUTPUT);
digitalWrite(PWR_ON, HIGH);

/*Power on the display*/
pinMode(OLED_PWR, OUTPUT);
digitalWrite(OLED_PWR, HIGH);

/*Set touch Pin as input*/
pinMode(TOUCH_PIN, INPUT);

u8g2.begin();


u8g2  ライブラリのインスタンスを作成してから、I/Oの初期化をしている。

あとは透過OLEDをいろいろ叩いてあそぶことにしましょう!


ー記事をシェアするー
B!
タグ

コメント

Translate

テキスト大文字のデフォルトサイズ変更

人気の投稿