SeeedJP UG Online のLTで発表したWio Terminalの資料です。
Wio TerminalのなんやかんやSUGOi 2020/09/22Kenta IDA (@ciniml)
View Slide
自己紹介•井田 健太 (@ciniml)•仕事:組み込みソフト開発•使用言語:C++, SystemVerilog, Go, Python2020/9/22Wio Terminalのなんやかんや 2
Wio Terminal2020/9/22Wio Terminalのなんやかんや•最近流行の筐体入りマイコン・モジュール• Wi-Fi 2.4GHz + 5GHz• Bluetooth5• 液晶 (320x240)• ボタン• スピーカー• etc…•いろいろ付いてて楽しい3
なんやかんや2020/9/22Wio Terminalのなんやかんや•ハードウェア構成•拡張基板をつくってみた•デバッガのつなぎ方•QSPIフラッシュの使い方4
ハードウェア構成2020/9/22Wio Terminalのなんやかんや 5
ハードウェア構成2020/9/22Wio Terminalのなんやかんや•MCUが2つある• ATSAMD51P19A• RTL8720DN6
ハードウェア構成2020/9/22Wio Terminalのなんやかんや•ATSAMD51P19A• Microchip製• Cortex-M4F 120[MHz]• 512[kiB] Flash• 192[kiB] RAM7
ハードウェア構成2020/9/22Wio Terminalのなんやかんや•RTL8720DN• Realtek製• Cortex-M0 20[MHz]• Cortex-M4F 200[MHz]• 64+512[kiB] RAM• Wi-Fi + Bluetooth•ATSAMD51より強い8
ハードウェア構成2020/9/22Wio Terminalのなんやかんや•周辺回路• ほとんどATSAMD51側に接続されている• LCD• ボタン• ブザー, マイク, LED• 加速度センサー9
メインMCU2020/9/22Wio Terminalのなんやかんや•開発者が使うのは(主に)ATSAMD51• Arduinoで触れるのはこっち• RTL8720DNも触れなくはない• SDKは公開されている• UART経由で書き込みも可10
無線通信2020/9/22Wio Terminalのなんやかんや•Wi-FiとBluetoothはRTL8720DN側•ATSAMD51とはSPI+GPIOで接続• ATSAMD51がSPIマスター• RTL8720DNのリセット(CHIP_EN)• RTL8720DNからの割り込み(IRQ0)11
無線通信2020/9/22Wio Terminalのなんやかんや•RTL8720DN側にネットワーク・スタック• TCP/IP, TLS• Bluetooth Stack12
無線通信2020/9/22Wio Terminalのなんやかんや•ATSAMD側はRTL8720DNにATコマンドを送って制御•制御用にESP32用のライブラリをいろいろ魔改造してぶち込んである• 結構カオス13
拡張基板をつくってみた2020/9/22Wio Terminalのなんやかんや 14
Wio Terminalの拡張コネクタ2020/9/22Wio Terminalのなんやかんや•本体裏に40pinコネクタがある• 配列はRaspberry Pi 互換• ただしRPiに直結は不可• 筐体が干渉する• 3.3Vがデフォルトで出力方向15
Wio Terminalの拡張コネクタ2020/9/22Wio Terminalのなんやかんや•拡張基板のサイズ• Wio Terminalの基板外形から作成• 外形• 穴位置• ピンヘッダ位置16
Wio Terminalの拡張コネクタ2020/9/22Wio Terminalのなんやかんや•単3・4電池拡張基板• つくってみた。• Fusion PCBで5枚17
Wio Terminalの拡張コネクタ2020/9/22Wio Terminalのなんやかんや•単3・4電池拡張基板• つないでみた。• けっこうでかい…•測定アプリ(無線なし)で7時間くらい• 単3(eneloop)x218
感想2020/9/22Wio Terminalのなんやかんや•ピン数が多いので柔軟な設計が可能• RPi互換ヘッダ• (M5Stackはピンが少なくて難しい)•高いピンヘッダが欲しい• 日本では入手性に難あり• Battery Chassisの部品ほしい…19
デバッガのつなぎ方2020/9/22Wio Terminalのなんやかんや 20
Wio Terminalのデバッグ事情2020/9/22Wio Terminalのなんやかんや•ATSAMD51のSWDが接続可能• 出荷時書き込み用パッド• デバッグ用コネクタ (v1.2以降)•RTL8720DNのSWDは未接続• 頑張って引き出せなくもないが結構難しい21
Wio Terminalのデバッグ事情2020/9/22Wio Terminalのなんやかんや•デバッグ用コネクタ• 7月頃入荷分くらいから• 0.5[mm]x10ピン FFCコネクタ• FFC+FFC変換基板でデバッガに接続• どちらもAmazonやaitendoで買える22
Wio Terminalのデバッグ事情2020/9/22Wio Terminalのなんやかんや•SWDを使用可能なデバッガで接続• OpenOCD• J-Link•普通にデバッグ可能• 便利!23
QSPIフラッシュの使い方2020/9/22Wio Terminalのなんやかんや 24
QSPIフラッシュ2020/9/22Wio Terminalのなんやかんや•4[MiB]のフラッシュ•ATSAMD51に接続25
アクセス方法2020/9/22Wio Terminalのなんやかんや•ATSAMD51のブートローダー• QSPIフラッシュの読み書き機能無し•Arduino内蔵ライブラリ• QSPIフラッシュの読み書き機能なし→実装するしかない26
QSPIフラッシュに置けるもの2020/9/22Wio Terminalのなんやかんや•データ•プログラム• ATSAMD51はQSPIフラッシュ上のプログラムを直接実行できる27
ExtFlashLoader2020/9/22Wio Terminalのなんやかんや•つくってみた•Wio Terminal用のQSPIフラッシュ・ドライバ• ArduinoのプログラムからQSPIの読み書き•https://github.com/ciniml/ExtFlashLoader28
ExtFlashLoader2020/9/22Wio Terminalのなんやかんや•サンプル• DownloadFromSerial• USBシリアル経由でPCからQSPIフラッシュにデータを書き込む• LaunchExtFlash• QSPIフラッシュ上のプログラムを実行する• WriteSampleMenu• サンプルのメニューアプリをQSPIフラッシュに書き込む29
メニューアプリ2020/9/22Wio Terminalのなんやかんや•QSPIフラッシュ上で動作•TFカード上のバイナリをATSAMD51内蔵フラッシュに書き込み• メニューアプリはQSPI上なので内蔵フラッシュを書き換えられる30内蔵フラッシュ QSPIフラッシュアプリAメニューアプリTFカードアプリBアプリCアプリD
メニューアプリ2020/9/22Wio Terminalのなんやかんや 31•メニューからアプリを選択• アプリ書き込み• アプリ起動•メニューを起動• ボタンを押しながらリセット
メニューアプリ2020/9/22Wio Terminalのなんやかんや 32•M5Stackにもこういうのありますね•とりあえずWio Terminalでも技術的に可能ということは示せた
その他2020/9/22Wio Terminalのなんやかんや 33
他作ったもの2020/9/22Wio Terminalのなんやかんや 34•タイマー割り込みライブラリ• https://github.com/ciniml/SAMD51_Timer•バックライト制御ライブラリ• https://github.com/ciniml/WioTerminal_BackLight•GROVEポートからUART出すコードサンプル• https://gist.github.com/ciniml/bd2bb4dea22a55c067ca6790ad0c3eae
宣伝2020/9/22Wio Terminalのなんやかんや•技術書典9でWioTerminal本出してます• 今回唯一のWioTerminal本らしい• BOOTHでも頒布中•内容は今日話したことの詳細35
おしまい2020/9/22Wio Terminalのなんやかんや 36