見出し画像

回路図から読む WioTerminal のひみつ

アイキャッチ画像は公式サイトより。

なんとなく怪しげなタイトルになってしまいました…(^^;

はじめに

2020年4月に Seeed Studio から発売されたLCD+ケース付きマイコンボードWioTerminal 。安価で買えて、手軽にARMマイコンのIoTデバイス開発が体験できるやん!というわけで、たいへんな人気を呼んでいるわけです。

…筆者は(この記事を書いている時点では)手元に届くまでもうしばらくかかるということのようですので(´Д⊂。他の方々がじゃんじゃんとHackレビューを挙げている間に細々とこいつの回路図を見ながらの解析記事でも書こうと思ったのでした…。

ご存知の通り オープンソースハード の世界というのは、公開されている回路図を見てるだけでも妄想が膨らんだり…ニヤニヤできたり…して、ちょっとしたエンターテインメントですね…結構時間を忘れるものなんです!

まず、Wio Terminal の回路図は こちら よりご覧ください〜。

概観

なんとなく 某M5製品 っぽいブロック図のようなものを作ってみた。

画像12

それでは、少しずつ各パーツを紹介していきましょう〜。

※なお、正確にはIMUではないらしいw

画像12

SoC:Microchip ATSAMD51P19

まずは心臓部。基本スペック

ARM® Cortex®-M4F 120MHz(MAX 200MHz)
512kB ROM/4MB External-ROM(QSPI)
192kB RAM

正直言うと Espressif ESP32 といったマイコンを使ってきた方からすると、メモリが少なくてスペックダウンを感じるかも。

このマイコンについて、さらに詳しいことは こちら のデータシートを参照しましょう。実に 128pin(Max I/O は 99本) の大所帯のマイコンで、回路図を見ると、こっから足がゲジゲジのようにワシャワシャと生えているのです!

一応、デバッグ用のポート(SWD)が用意されているらしく、ケースを開いて基板上にあるコネクタから信号を引っ張りましょう〜

画像6

ワイヤレス通信:Realtek RTL8720DN

WiFi 2.4/5.0GHz および BLE 5.0 に対応。 データシートは こちら

このカニさんチップも 実はARMプロセッサのデュアルコア(!) なんですね…漫才コンビ的に書くとこんな感じ

ハイパフォーマンス担当:Cortex-M4(KM4) 200MHz/SRAM 512kB
省電力担当:Cortex-M0(KM0) 20MHz/SRAM 64kB

スペックだけ見れば、このチップだけのマイコンボードも作れたのかもしれません…(実際に こんなのも あります)…っていうか、これこそESP32と張り合えるSoCかも(^^;。回路図を見る限りでは、おそらく外付けROMやアンテナもくっつけて WioTerminal 用にモジュール化されたものでしょう。既にFreeRTOSをぶん回すファームが書かれていて、通信に専念するデバイスになっているようです。

画像7

【SPI】 CS:PC25 /CLK:PB25/MOSI:PB24/MISO:PC24 
【UART(ログ用)】 TX:PC23/RX:PC22
【ブート用】 PU:PA18

つまり、メインSoC(ATSAMD51)からはSPI通信でATコマンドを叩けば無線通信ができるという仕組みになっているのでしょうね。もちろんArduinoからだとWiFiクラスあたりにWrappingされてATコマンドも意識せずにI/Oストリームのような感じで送受信されるのでしょうけど。

RealTek AT コマンドのマニュアルはこちら

※なお上図で、CLKとMOSIだけ、なぜ2箇所に繋がれているのか…ずっと悩んでてTwitterで聞いてみたら、22,23番のところ(R10,65)DNPって書いてあるよ! って…見落としてたorz たしかに↓の写真を見ると、オープンになっている(FCC IDという文字の上あたり)のがわかりますね

もし、こいつのファームを書き換えたい場合は UARTから書き換えるようです。回路図にもROM焼き&ログ吐き用と思える端子が書かれています。PCとはFT232あたりのシリアル変換器を使ってつなぐのでしょうな。

画像8

なお、公式が紹介しているファームの書き換え方法については こちら。これならUSB-シリアル変換器を持っていなくても大丈夫ですね。

なお、デバッグ大好きなお兄さんたちは

…だそうですw

LCD

LCDコントローラ:ILI9341
解像度320x240 2.4インチ IPS

毎度おなじみのILI9341さんです。回路図は至って普通のSPI制御。XL,XR,YU,YDという信号もSoCに繋がっていて、何だろう? と思ったのですが「将来のタッチパネル対応用」…だそうです。トホホ…。

画像2

【SPI】 CS:PB21/DC:PC06/SCK:PB20/MOSI:PB19/MISO:PB18
【バックライト】 BL:PC05 
【リセット信号】 LCD_RESET:PC07
【タッチパネル(Unused)】 XL:PC10/XR:PC12/YU:PC11/YD:PC13

ストレージ

TF(SD)カードスロットは普通に SPI、外付けフラッシュロム(4MB)は QSPI 接続になっています。最近のマイコンはQSPIでくっつけられたフラッシュロムも普通にマッピング(0x400_0000〜)されて扱えるから便利ですよね…

TF(SD)カード
 CS:PC16/SCK:PC17/MOSI:PC16/MISO:PC18/DET:PD21
外付けフラッシュ(QSPI)
 CS:PB11/SCK:PB10/IO0-3:PA8-11

オーディオ

オーディオ(笑)ですね…。

デジタルデバイスてんこ盛りのWioTerminalの中で、マイクは「アナログ回路設計の教科書」のようにくっついています。SoCのADC(PC30)にくっついてます。

画像7

圧電ブザーもまさに教科書どおりの設計です。 PD11 に接続されています。

画像8

各種デバイス

・LED
PA15 と接続されています。まずは<L-Chika>ここを叩くプログラム</L-Chika>を書くことが目標(あるいは終着点)になるかもしれませんw

・3軸加速度センサー
I2C(SCL:PA12/SDA:PA13)にくっついてる。アドレスは 0x19 。使われているデバイスは「LIS3DHTR」で、データシートは こちら から。

・IRトランスミッター
PB31 と接続されています。何か面白い使い方を思いついたら是非(無責任)

・光センサー
普通のフォトダイオードが PD01 に接続されています。明るさをアナログ値で読むことができるのでしょう。

・プッシュボタン
3個 PC26-28

・5wayスイッチ
ADC(アナログ値)で読んでいるわけではない(^^; 潤沢に5つのGPIO(PD8-10,12,20)が割り当ててあり、押された方向のピンがグランドに落ちる仕組です。

画像7

インターフェイス

・GROVE端子

画像8

J4側のR33,34をショートさせると、デバッグ用ポート(SWD)になるようだ。

給電に関しては↓だそうです。

・40ピンソケット
売りの ラズパイ互換 というやつ。もしかしたらSPIがLCDと直結されていて、ラズパイから直でコントロールできるかな?と思っていたけど、甘かった(´・ω・`)

画像9

・FPC(10pin)
SPIおよびPWM的というかアナログな入出力が目立ちますね…40ピンソケットだけでは足りない、何かをくっつけたい用だと思いますが…活用される方がいらっしゃるかしら…(^^;

画像10

電源

地味ながら、なんだかんだで鬼門になりやすい部分ですw

USB 5V→3.3Vにはスイッチングレギュレーターの MP2161GJ というのを使っています。2Aくらい流せるようなので、ACアダプタとの相性がありそうですね(^^;

RTL8720用には AP2112K-3.3TRG1 というLDOが使われて、やはり5Vから3.3Vにドロップさせて、600mAの出力が担保されています。やっぱり無線を使うと一気に消費電流が増えますね…(SoCの性能を考えると健闘しているのかもしれませんw)

まとめ

RTL8720DN 単体で遊べるマイコンボードも欲しい!!!!

…ですよね!?(Amebaシリーズ とかいうガチ勢向けがあるらしいけれど…。もちろんホビー用途のLCDとケース付のやつをw)

この記事が気に入ったらサポートをしてみませんか?