Slide 1

Slide 1 text

Wio Terminalのなんやかんや SUGOi 2020/09/22 Kenta IDA (@ciniml)

Slide 2

Slide 2 text

自己紹介 •井田 健太 (@ciniml) •仕事:組み込みソフト開発 •使用言語:C++, SystemVerilog, Go, Python 2020/9/22 Wio Terminalのなんやかんや 2

Slide 3

Slide 3 text

Wio Terminal 2020/9/22 Wio Terminalのなんやかんや •最近流行の筐体入りマイコン・モジュール • Wi-Fi 2.4GHz + 5GHz • Bluetooth5 • 液晶 (320x240) • ボタン • スピーカー • etc… •いろいろ付いてて楽しい 3

Slide 4

Slide 4 text

なんやかんや 2020/9/22 Wio Terminalのなんやかんや •ハードウェア構成 •拡張基板をつくってみた •デバッガのつなぎ方 •QSPIフラッシュの使い方 4

Slide 5

Slide 5 text

ハードウェア構成 2020/9/22 Wio Terminalのなんやかんや 5

Slide 6

Slide 6 text

ハードウェア構成 2020/9/22 Wio Terminalのなんやかんや •MCUが2つある • ATSAMD51P19A • RTL8720DN 6

Slide 7

Slide 7 text

ハードウェア構成 2020/9/22 Wio Terminalのなんやかんや •ATSAMD51P19A • Microchip製 • Cortex-M4F 120[MHz] • 512[kiB] Flash • 192[kiB] RAM 7

Slide 8

Slide 8 text

ハードウェア構成 2020/9/22 Wio Terminalのなんやかんや •RTL8720DN • Realtek製 • Cortex-M0 20[MHz] • Cortex-M4F 200[MHz] • 64+512[kiB] RAM • Wi-Fi + Bluetooth •ATSAMD51より強い 8

Slide 9

Slide 9 text

ハードウェア構成 2020/9/22 Wio Terminalのなんやかんや •周辺回路 • ほとんどATSAMD51側 に接続されている • LCD • ボタン • ブザー, マイク, LED • 加速度センサー 9

Slide 10

Slide 10 text

メインMCU 2020/9/22 Wio Terminalのなんやかんや •開発者が使うのは (主に)ATSAMD51 • Arduinoで触れるのはこっち • RTL8720DNも 触れなくはない • SDKは公開されている • UART経由で書き込みも可 10

Slide 11

Slide 11 text

無線通信 2020/9/22 Wio Terminalのなんやかんや •Wi-FiとBluetoothはRTL8720DN側 •ATSAMD51とはSPI+GPIOで接続 • ATSAMD51がSPIマスター • RTL8720DNのリセット(CHIP_EN) • RTL8720DNからの割り込み(IRQ0) 11

Slide 12

Slide 12 text

無線通信 2020/9/22 Wio Terminalのなんやかんや •RTL8720DN側に ネットワーク・スタック • TCP/IP, TLS • Bluetooth Stack 12

Slide 13

Slide 13 text

無線通信 2020/9/22 Wio Terminalのなんやかんや •ATSAMD側はRTL8720DNに ATコマンドを送って制御 •制御用にESP32用のライブラリを いろいろ魔改造してぶち込んである • 結構カオス 13

Slide 14

Slide 14 text

拡張基板をつくってみた 2020/9/22 Wio Terminalのなんやかんや 14

Slide 15

Slide 15 text

Wio Terminalの拡張コネクタ 2020/9/22 Wio Terminalのなんやかんや •本体裏に40pinコネクタがある • 配列はRaspberry Pi 互換 • ただしRPiに直結は不可 • 筐体が干渉する • 3.3Vがデフォルトで出力方向 15

Slide 16

Slide 16 text

Wio Terminalの拡張コネクタ 2020/9/22 Wio Terminalのなんやかんや •拡張基板のサイズ • Wio Terminalの基板外形から作成 • 外形 • 穴位置 • ピンヘッダ位置 16

Slide 17

Slide 17 text

Wio Terminalの拡張コネクタ 2020/9/22 Wio Terminalのなんやかんや •単3・4電池拡張基板 • つくってみた。 • Fusion PCBで5枚 17

Slide 18

Slide 18 text

Wio Terminalの拡張コネクタ 2020/9/22 Wio Terminalのなんやかんや •単3・4電池拡張基板 • つないでみた。 • けっこうでかい… •測定アプリ(無線なし)で7時間くらい • 単3(eneloop)x2 18

Slide 19

Slide 19 text

感想 2020/9/22 Wio Terminalのなんやかんや •ピン数が多いので柔軟な設計が可能 • RPi互換ヘッダ • (M5Stackはピンが少なくて難しい) •高いピンヘッダが欲しい • 日本では入手性に難あり • Battery Chassisの部品ほしい… 19

Slide 20

Slide 20 text

デバッガのつなぎ方 2020/9/22 Wio Terminalのなんやかんや 20

Slide 21

Slide 21 text

Wio Terminalのデバッグ事情 2020/9/22 Wio Terminalのなんやかんや •ATSAMD51のSWDが接続可能 • 出荷時書き込み用パッド • デバッグ用コネクタ (v1.2以降) •RTL8720DNのSWDは未接続 • 頑張って引き出せなくもないが 結構難しい 21

Slide 22

Slide 22 text

Wio Terminalのデバッグ事情 2020/9/22 Wio Terminalのなんやかんや •デバッグ用コネクタ • 7月頃入荷分くらいから • 0.5[mm]x10ピン FFCコネクタ • FFC+FFC変換基板でデバッガに接続 • どちらもAmazonやaitendoで買える 22

Slide 23

Slide 23 text

Wio Terminalのデバッグ事情 2020/9/22 Wio Terminalのなんやかんや •SWDを使用可能なデバッガで接続 • OpenOCD • J-Link •普通に デバッグ可能 • 便利! 23

Slide 24

Slide 24 text

QSPIフラッシュの使い方 2020/9/22 Wio Terminalのなんやかんや 24

Slide 25

Slide 25 text

QSPIフラッシュ 2020/9/22 Wio Terminalのなんやかんや •4[MiB]のフラッシュ •ATSAMD51に接続 25

Slide 26

Slide 26 text

アクセス方法 2020/9/22 Wio Terminalのなんやかんや •ATSAMD51のブートローダー • QSPIフラッシュの読み書き機能無し •Arduino内蔵ライブラリ • QSPIフラッシュの読み書き機能なし →実装するしかない 26

Slide 27

Slide 27 text

QSPIフラッシュに置けるもの 2020/9/22 Wio Terminalのなんやかんや •データ •プログラム • ATSAMD51は QSPIフラッシュ上のプログラムを直接実行できる 27

Slide 28

Slide 28 text

ExtFlashLoader 2020/9/22 Wio Terminalのなんやかんや •つくってみた •Wio Terminal用のQSPIフラッシュ・ドライバ • ArduinoのプログラムからQSPIの読み書き •https://github.com/ciniml/ExtFlashLoader 28

Slide 29

Slide 29 text

ExtFlashLoader 2020/9/22 Wio Terminalのなんやかんや •サンプル • DownloadFromSerial • USBシリアル経由でPCからQSPIフラッシュにデータを書き込む • LaunchExtFlash • QSPIフラッシュ上のプログラムを実行する • WriteSampleMenu • サンプルのメニューアプリをQSPIフラッシュに書き込む 29

Slide 30

Slide 30 text

メニューアプリ 2020/9/22 Wio Terminalのなんやかんや •QSPIフラッシュ上で動作 •TFカード上のバイナリを ATSAMD51内蔵フラッシュに書き込み • メニューアプリはQSPI上なので 内蔵フラッシュを書き換えられる 30 内蔵フラッシュ QSPIフラッシュ アプリA メニュー アプリ TFカード アプリB アプリC アプリD

Slide 31

Slide 31 text

メニューアプリ 2020/9/22 Wio Terminalのなんやかんや 31 •メニューから アプリを選択 • アプリ書き込み • アプリ起動 •メニューを起動 • ボタンを押しながら リセット

Slide 32

Slide 32 text

メニューアプリ 2020/9/22 Wio Terminalのなんやかんや 32 •M5Stackにもこういうのありますね •とりあえずWio Terminalでも 技術的に可能ということは示せた

Slide 33

Slide 33 text

その他 2020/9/22 Wio Terminalのなんやかんや 33

Slide 34

Slide 34 text

他作ったもの 2020/9/22 Wio Terminalのなんやかんや 34 •タイマー割り込みライブラリ • https://github.com/ciniml/SAMD51_Timer •バックライト制御ライブラリ • https://github.com/ciniml/WioTerminal_BackLight •GROVEポートからUART出すコードサンプル • https://gist.github.com/ciniml/bd2bb4dea22a55c067ca6790ad0c 3eae

Slide 35

Slide 35 text

宣伝 2020/9/22 Wio Terminalのなんやかんや •技術書典9でWioTerminal本出してます • 今回唯一のWioTerminal本らしい • BOOTHでも頒布中 •内容は今日話したことの詳細 35

Slide 36

Slide 36 text

おしまい 2020/9/22 Wio Terminalのなんやかんや 36