generated at
ScratchとM5Stackで遊ぶ
by むとうたけし(/610t/610t)


自己紹介
むとうたけし(武藤武士)
専業主夫(51歳)@奈良
所属コミュニティ
アカウント一覧


はじめに
Scratch
ビジュアルプログラミング、いいですよね?
とにかく、楽しいですよね?
センサーなんかのデバイスと一緒に使えるといいですよね?
M5Stack一家
ビジュアルプログラミング、いいですよね?
とにかく、楽しいですよね?
センサーなどのデバイスがあっていいですよね?
では、二つをつなげて遊んでみましょう!!


M5Stack一家の肖像

ハードウエアの特徴(赤字は今回使ったもの)
CPU:ESP32など
ディスプレイ:320x240TFT(Core,Core2), 80×160TFT(M5StickC), 135x240TFT(C Plus), 5x5フルカラーLED(ATOM Matrix)
バッテリー:150mAh(Core), 390mAh(Core2), 80or95mAh(C), 120mAh(C Plus)
ネットワーク:Wi-Fi(2.4G) + BLE
センサー:加速度センサー、ジャイロ、ボタンスイッチ、温度センサーなど
オーディオ:マイク, スピーカー
その他I/O:Grove A(I2C), B(A/D,GPIO), C(UART), M-BUSなど
付属物:腕時計バンドLEGOマウントキーボードなど
おすすめ: M5StickC色々付き 2816円: 品薄?(SWITCHSCIENCE,共立エレショップ)
腕時計バンド、LEGOマウント、壁掛けマウント付属

ソフトウエア開発環境
UiFLOW:ビジュアルプログラミング環境, クラウド版/デスクトップ版
Python:UiFlowからの変換可能
Arduino IDE:Arduino言語によるプログラミング


あなたは、どのScratch?

Scratch: ビジュアルプログラミング環境
教育目的などでよく利用される。
意外と変態的な言語: オブジェクト指向, 並行処理, イベント(メッセージ)ベース。
プログラムのシェア/フォーク(リミックス)のためのプラットフォームも提供。
Scratch専用SNS環境もあり。

実は、3つのバージョンがある。
Scratchのバージョン
ver実装言語拡張方法610t作onlineoffline備考
1.4Smalltalk遠隔センサーM5ScratchxoSmalltalkを直接使った魔改造も可能
2Flash(EoL)JavaScriptなどooFlashが死んで使えない
3JavaScript拡張機能M5bitLessoo

End of Life (現在使えないもの)
Scratch 2: FlashがEoLのため。
Scratch 1.4: 32bitアプリなので最近のmacOSでは死んでますorz


Scratch 1.4:遠隔センサー
Scratch 1.4:Scratch遠隔センサーを使って、TCP/IP (ポート42001)経由でデータのやり取りができる。
テキストベースのプロトコル。
メッセージのやり取り
broadcast "メッセージ"
変数のやり取り
sensor-update "変数名" "値" ...
Scratch側での準備:遠隔センサーを有効にする。
調べる->"スライダセンサーの値"を右クリック->"遠隔センサー接続を有効にする"を選ぶ。

M5Stackとの連携例
UiFLOWを使った方法 by @abee2
M5Stack -> Scratch (逆は難しい?)
ビジュアルプログラミング、夢のコラボ!!

おまけ: スマートフォンからScratch 1.4を使う。
iOS: 軽く探した範囲では見つかりませんでした。情報求む!!


おまけ:Scratch1.4でSmalltalk魔改造
Smalltalk(Squeak)を利用する手順
画面左上のSCRATCHのロゴの”R”の部分をShiftキーを押しながら左クリックすると以下のメニューが開く。
"turn fill screen off"を選ぶと白い背景が見えるので、ここを左クリックするとSmalltalkのメニューが出てくる。
後は、hackするだけ!!
Scratch1.4でSmalltalkを使う場合の参考情報


Scratch 2 (End of Life)の拡張方法
既に使えないので、ザックリと。
ScratchX: github上にある特定の書式に従ったJavaScriptで書かれた実験的な拡張機能(extension)を追加することができる。
自力でオフライン(デスクトップ)版を改造する。
micro:bit用拡張: s2m, Smi:be / スマイビー など


Scratch3の拡張機能
Scratch3に追加の機能を実現する方法。
Scratch3の公式拡張機能の一部 (ハードウエアに関するもの)
Scratch3のサーバー(https://scratch.mit.edu/)のソース(JavaScript)は公開されている。
解説: Scratch を改造しよう 3章まで無料公開
Scratch3のサーバーに拡張機能を実装すれば、My Scratchが。
拡張機能入のScratchサーバを自分で立てる。
(必要であれば)クライアント側も自分で書く。


Stretch3:拡張機能実装例
Stretch3:非公式Scratch3拡張機能が使えるサーバー
楽しい拡張機能がいっぱい!!
AI 関連
自分で学習したモデルが使えるもの
既にあるモデルを使うもの
ポーズ認識
Microbit More


Microbit More for Scratch x micro:bit
Scratch3からmicro:bitの全ての機能を使うための拡張機能。
公式micro:bit拡張機能は、ジェスチャーなど限られた機能しか使えない。
Yengawa Labさんが開発。
ソース
micro:bitファームウエア側: https://github.com/yokobond/pxt-mbit-more-v2/
Scratchサーバー拡張機能側: https://github.com/yokobond/mbit-more-v2/


M5bitLess
M5bitLess=M5Stack一家をmicro:bitのようにふるまわせてMicrobit More(↔︎Less)を使う
Microbit Moreの寄生虫
動作機種 (リンク先はSWITCHSCIENCE)
M5Stack Basic/Gray/Core2

作った背景
Scratch1.4でM5Stackが使えるM5Scratchを作っていた。
Arduino IDEでの作業がほぼ必須。
IPアドレスやWi-Fi設定の変更。
自分好みのデモへの変更。
Scratch3の拡張機能でM5Stackを使えるものが待たれていた (/CoderDojoNara/M5Scratchってなぁに?)
Scratch拡張機能側とM5Stack側を同時に作っていくと、ぜったいハマる自信がある。
Microbit Moreがあるんだから、M5Stackがmicro:bitのフリをすればいいんじゃね?

対応しているブロック(赤枠部分)


デモ
発表当日はライブでデモします。



おわりに
ScratchとM5Stackで遊ぶととても楽しい!!
Scratch 1.4遠隔センサー
x UiFLOW
x M5Scratch
Scratch3 + Microbit More
x M5bitLess
まだまだ実装できていない機能があるので、一緒に作りませんか!!


当日の情報へのリンク



参考情報
Microbit More data format: むとうが独自にソースから調査したMicrobit Moreプロトコル