鳥なき里のマイコン屋(156) Wio TerminalでもGo! TinyGoで5機種目

Joseph Halfmoon

マイコン上でのGo言語(TinyGo)の動作確認、Wio Terminalにて5機種目であります。米MicroChip社のATSAMD51P20搭載、Arm Cortex-M4Fコアであります。既に確認済のSeeeduino XiaoのATSAMD21マイコンの上位機種です。例によって吉例Lチカ行ってみます。

スマホ、パソコンから組み込み用のMCUまで、Go言語のカバー範囲は大変広くて万々歳であります。今回の吉例Lチカ実施は、Seeed Wio Terminalです。小型ディスプレイとスイッチ、コネクタなど装備したオールインワン型のシャーシに入ったマイコンボードです。TinyGoのWio Terminalに関するドキュメントが以下に。

TINYGO > Seeed Wio Terminal

この機種はオンボードにLEDの搭載があります。Xiaoとまったく同じGoのコードでLED端子を点滅させることも可能です。ただし、オンボードLEDはシャーシの中に入ってしまっているので、シャーシの穴から点滅を確認する他なく、大変見ずらいです。そこで今回は外部にLEDをとりつけて確認することにしました。

ただし、端子名はちょっと込み入ったネーミングです。Wio Terminalの日本語解説ページへのリンクを貼っておきます。

Wio Terminalをはじめよう

この機種の拡張端子は、背面に出ています。背面の信号を表に出すのに手元の装置では手製の「拡張ボード」を取り出して信号にアクセスしやすいようにしてあります。こんな感じ。

DUT

 

その背面端子のピン配列は、Raspberry Pi 4/3/2/無印B+以降がそなえるラズパイ40ピン拡張端子と互換(というより物理的に差し込める)配列になっています。そのためラズパイ搭載のSoCであるBCM2xxx シリーズの該当端子名がドキュメント上の拡張端子の名前として書いてあったりもします。たとえばBCM22という具合です。上記の写真で汚い字で22と書いてある端子がラズパイ式の番号です(SoCの端子名ではBCM22ですが、ラズパイ関係の資料ではGPIO22と書かれることも多いと思います。)

しかしてその実体は、ATSAMD51P20マイコンのPB09端子です。BCM2xxxとは無関係。さらに加えてWio Terminalは、Arduino互換環境での開発もサポートしているので、Arduino式の端子名で呼ばれたりもします。PB09はArduino式のD1端子でもあり、A1端子でもあります(ご本家ArduinoではD1とA1は物理的に別端子。Wio Terminalでは1本の端子がどちらとしても使える設定。)しかしTinyGoでは何とでもなります。

TinyGoでは、BCMxx式、ATSAMD51P20式、Arduino式の名称全部サポート

みたいです。つまり今回は以下のどの端子名でも同じです。

BCM22、D1、A1、PB09

実験用のソースコード

実験に用いたソースコードはXiaoの時と同じ(もっと言えば他の機種とも共通)です。端子名のみLEDでなくD1としています。LEDとすると見ずらいオンボードLEDが点滅します。なお、点滅のデューティ比と周期は点灯期間が長めにしてあります。

package main

import (
    "machine"
    "time"
)

func main() {
    led := machine.D1
    led.Configure(machine.PinConfig{Mode: machine.PinOutput})
    for {
        led.Low()
        time.Sleep(time.Millisecond * 500)

        led.High()
        time.Sleep(time.Millisecond * 5000)
    }
}
Flash書き込みと動作検証

開発用の母艦には Windows10 PCを使用しました。PCには複数USBシリアルデバイスが接続されているのですが、手元の装置ではWio Terminalを接続したときに、特にポート指定をしなくても書き込み可能でした。装置の状態によってはポート指定したり、Wio Terminalの電源スイッチを素早く2回カチャカチャするブートモード選択をしないとならないのかもしれません。

tinygo flash -target=wioterminal wio_blink.go

ちょっと時間がかかりましたが書き込みOK。冒頭のアイキャッチ画像のようにD1端子接続のLEDが点滅しました。

ちょっとLチカばかり続いたので、そろそろGoを使ってペリフェラルの森に分け入っていきたいです。

鳥なき里のマイコン屋(155) RISC-VでもGo!TinyGoで4機種目 MaixBit へ戻る

鳥なき里のマイコン屋(157) M5StackでもGo!TinyGoで6機種目 へ進む