M5Scratch for DojoCon Japan 2020
https://gyazo.com/40d5e93fe01a61260924513c4085c1b0
はじめに
M5StickC/M5Stack Gray/ATOM Matrix(M5S*)とScratch 1.4とのやり取りを実現 (M5S*+Scratch=M5Scratch)
Scratchで、IMU(加速度、ジャイロ、地磁気)やボタンスイッチを使って遊びたいよね?
Scratchから、M5S*に命令したいよね?
むとうたけしって?
むとうたけし(武藤武士) 50歳 専業主夫@奈良
M5Stackなどのガジェットで遊んだり、
https://gyazo.com/d92a9c39b457e47d559deca41176840b
Scratchってなぁに?
https://gyazo.com/b7a86c844cc5f87f51061fb0ea30a465
Scratch: みんな大好きブロックベースのプログラミング環境
Dojoで使っている人も多いよね?
プログラミング教育で利用
ブロックベース: ブロックを積んでプログラミング
意外と変態的; オブジェクト指向, 並列処理, イベント(メッセージ)ベース
プログラムのシェア/フォーク(リミックス)のためのプラットフォームやSNS
Scratch Remote Sensor Protocol
テキストベースのプロトコル
メッセージのやり取り: broadcast "メッセージ"
変数のやり取り: sensor-update "変数" "値" ...
https://gyazo.com/dbe77008ce27cc6616058aed1e1e01be
Scratch側での準備: Scratch Remote Sensor Protocolを有効にする
調べる->"スライダセンサーの値"を右クリック->"遠隔センサー接続を有効にする"を選ぶ
https://gyazo.com/7515f6592eaba8833caf92b6b8ba3cbc
M5StickC/M5Stack Gray/ATOM Matrixってなぁに?
ちっちゃくて、かわいくて、
ディスプレイが最初から付いていたり、
無線のWiFiやBluetoothが使えたり、
加速度やジャイロが取れるIMUがあったり、
ボタンスイッチもあったり、
温度計もあったり、
バッテリーがあったり、
拡張モジュールやGROVEで色々拡張できたり、
(Facesのみ) キーボードやゲームパッド、電卓キーがあったり、
https://gyazo.com/5239aa12cfab7a553231ce5ce94154d0
ソフトウエア開発環境
Aruduino IDE: C言語みたいな記述でプログラミング
https://gyazo.com/9741ce6147d44b2fa6f1e90409a2cee1
UiFlow: ブロックベースでプログラミングできる開発環境
https://gyazo.com/ec1a10175a324a9c7aa77807e545589f
table:主な機種の仕様
M5StickC M5Stack Gray (Faces) ATOM Matrix WioTerminal 備考
価格(円) 1980 4290 (7040) 1397 3784 2020/11/17 switch science調べ
ディスプレイ 80x160 TFT 320x240 TFT 5x5 Martix LED 320x240
IMU 6軸 9軸 6軸 6軸
ボタンスイッチ 2 3 1 3+5方向スイッチ
LED 赤色LED 無し (5x5 Matrix LED) LED, 赤外線
バッテリー 80mAh 150mAh 無し 無し
無線 WiFi/Bluetooth WiFi/Bluetooth WiFi/Bluetooth WiFi/Bluetooh
大きさ 48 × 24 × 14mm 54 × 54 × 17 mm 24 x 24 x 14 mm 72 × 57 × 12 mm
音声 スピーカ スピーカ 無し マイク、スピーカー
付属品(ケーブル除く) 腕時計,LEGOマウントなど キーボードなど(Faces) 無し 無し
今回使った機能は、以下の通り
カラーディスプレイ(ATOM Matrixを除く)
加速度+ジャイロ+(Grayのみ地磁気)を取れるIMU
温度計
ボタンスイッチ
Faces(Gray): 3
M5StickC: 2
ATOM Matrix: 1
機種限定機能
Faces(Gray): キーボード、ゲームキー、電卓キー
M5StickC: LED
ATOM Matrix:Matrix LED
M5Scratch
M5Scratch = M5S*(M5Stack/M5StickC/ATOM Matrix) + Scratch
Arduino IDEで作った、M5S*とScratchとのやり取りを行うプログラム
Scratch側には、改造は不要(Scratch Remote Sensor Protocolを有効にするだけ)
https://gyazo.com/9741ce6147d44b2fa6f1e90409a2cee1
M5S*からScratchへ
https://gyazo.com/d82ef86ac02c78b40359b55c56afc25b
Scratch側で、受け取るデータやイベントを実装
sensor_update: "'ax'センサーの値"など
broadcast: "'BtnA'を受け取った時"など
データやイベントを送る部分は、Arduino IDEで実装
sensor_update
IMU(加速度(ax,ay,az)+ジャイロ(gx,gy,gz)+(Grayのみ)地磁気(mx,my,mz))
IMUの値を使った、なんちゃって方位(heading)やpitch, roll, yawなど
温度センサー(temp)
broadcast
ボタン(BtnA,BtnB,BtnC)、キーボード(Key_*)
ScratchからM5S*へ
https://gyazo.com/aa0275f36c90597d0752f850be7a00d2
M5ScratchのArduino IDEで、受け取るデータやイベントを実装
データやイベントを送る部分は、Scratchで実装
sensor-update
色データ(r,g,b): 円の色を指定
座標(x,y): 猫の座標
角度t: 猫の向いている方向
ズームz: 猫の大きさの倍率
LED点滅(l): LEDを点灯/消灯(1/0)
文字列(s): 文字列sを画面に表示
broadcast
broadcast内容を画面に表示
デモ
https://www.youtube.com/watch?v=QAu8Kxau_Yw
デモのコードは、以下の通り。
https://gyazo.com/7641b3bb5740ef235fa1967747194df7
おわりに
M5S*とScratchを使って遊んでみました
まだまだデモに付け加える要素はあるとおもます。
M5S*で音を出す
(Facesの場合)キーボードやゲームパッドなどを使って、ScratchCat操縦する
M5Scratchで、M5S*とScratchで遊ぶと、とっても楽しい!!
みなさんもいっしょに遊んでみませんか?