ScratchとM5Stackで遊ぶ
https://gyazo.com/ab6eaf1a7b9e8e4274e6de82f723f909
2021/10/28 ビジュアルプログラミングIoTLT vol.9
by むとうたけし(/610t/610t)
自己紹介
https://gyazo.com/409401d94dbb4075ecd26d0b1e85e018
全部の情報:
むとうたけし(武藤武士)
専業主夫(51歳)@奈良
所属コミュニティ
M5Stack User Group Japan
CoderDojo奈良
関西*BSD ユーザ会
アカウント一覧
twitter: @610t http://twitter.com/610t
Github: 610t https://github.com/610t
YouTube:https://www.youtube.com/channel/UCdf9QaIb7T1qmzJjl3C-iiA
はじめに
Scratch
ビジュアルプログラミング、いいですよね?
とにかく、楽しいですよね?
センサーなんかのデバイスと一緒に使えるといいですよね?
M5Stack一家
ビジュアルプログラミング、いいですよね?
とにかく、楽しいですよね?
センサーなどのデバイスがあっていいですよね?
では、二つをつなげて遊んでみましょう!!
M5Stack一家の肖像
https://gyazo.com/0371c74f4489b6454fbc0141ae5c36eb
ハードウエアの特徴(赤字は今回使ったもの)
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マウント、壁掛けマウント付属
https://gyazo.com/ec17cef78c4287b98b372b2844daf0e1
ソフトウエア開発環境
UiFLOW:ビジュアルプログラミング環境, クラウド版/デスクトップ版
Python:UiFlowからの変換可能
https://gyazo.com/a24f609eebf22bf101ce5fd713c8a0b5
Arduino IDE:Arduino言語によるプログラミング
https://gyazo.com/9741ce6147d44b2fa6f1e90409a2cee1
あなたは、どのScratch?
https://gyazo.com/6bfac9414a50aad4016dd02c42289099
Scratch: ビジュアルプログラミング環境
教育目的などでよく利用される。
Lifelong Kindergarten Scratch
意外と変態的な言語: オブジェクト指向, 並行処理, イベント(メッセージ)ベース。
プログラムのシェア/フォーク(リミックス)のためのプラットフォームも提供。
Scratch専用SNS環境もあり。
実は、3つのバージョンがある。
table:Scratchのバージョン
ver 実装言語 拡張方法 610t作 online offline 備考
1.4 Smalltalk 遠隔センサー M5Scratch x o Smalltalkを直接使った魔改造も可能
2 Flash(EoL) JavaScriptなど o o Flashが死んで使えない
3 JavaScript 拡張機能 M5bitLess o o
End of Life (現在使えないもの)
Scratch 2: FlashがEoLのため。
Scratch 1.4: 32bitアプリなので最近のmacOSでは死んでますorz
https://gyazo.com/18bdd10a8d63ac6c72fce701dc36ddf7
Scratch 1.4:遠隔センサー
Scratch 1.4:Scratch遠隔センサーを使って、TCP/IP (ポート42001)経由でデータのやり取りができる。
テキストベースのプロトコル。
メッセージのやり取り
broadcast "メッセージ"
変数のやり取り
sensor-update "変数名" "値" ...
https://gyazo.com/dbe77008ce27cc6616058aed1e1e01be
Scratch側での準備:遠隔センサーを有効にする。
調べる->"スライダセンサーの値"を右クリック->"遠隔センサー接続を有効にする"を選ぶ。
https://gyazo.com/7515f6592eaba8833caf92b6b8ba3cbc
M5Stackとの連携例
UiFLOWを使った方法 by @abee2
M5Stack -> Scratch (逆は難しい?)
https://twitter.com/abee2/status/1440678598004801552
https://www.facebook.com/1496693889/videos/997063404470793/
ビジュアルプログラミング、夢のコラボ!!
https://gyazo.com/7f7fd7b9abeaf4b764b368aee2a3d3d1
M5Scratch by @610t: /CoderDojoNara/M5Scratchってなぁに?@DojoCon 2020 プログラミングコンテスト動画
https://gyazo.com/45cae94aac2def5896b2362dfa84c489
https://www.youtube.com/watch?v=tUXKSZtTxOE&t=48s
おまけ: スマートフォンからScratch 1.4を使う。
Android: Physical Sensors for Scratch, Scratch Sensor
iOS: 軽く探した範囲では見つかりませんでした。情報求む!!
https://gyazo.com/5e3648777b3d8a1e0455336c5960630c
おまけ:Scratch1.4でSmalltalk魔改造
Smalltalk(Squeak)を利用する手順
画面左上のSCRATCHのロゴの”R”の部分をShiftキーを押しながら左クリックすると以下のメニューが開く。
https://gyazo.com/513f410475770777183afa1596685299
"turn fill screen off"を選ぶと白い背景が見えるので、ここを左クリックするとSmalltalkのメニューが出てくる。
https://gyazo.com/68139b3ce1d58a66f31556d8584c9363
後は、hackするだけ!!
https://gyazo.com/6f48f680cbaa737bfbd11657ecafd356
Scratch1.4でSmalltalkを使う場合の参考情報
SmalltalkからScratchをいじる(1) スプライトの大量生成
Scratch 1.4 modクリエイターの部屋
abee's scratch mods
Scratch 2 (End of Life)の拡張方法
既に使えないので、ザックリと。
ScratchX: github上にある特定の書式に従ったJavaScriptで書かれた実験的な拡張機能(extension)を追加することができる。
ScratchXの謎にせまる
https://gyazo.com/09081796b6f296ae468257c82083fe53
自力でオフライン(デスクトップ)版を改造する。
micro:bit用拡張: s2m, Smi:be / スマイビー など
Scratch3の拡張機能
Scratch3に追加の機能を実現する方法。
Scratch3の公式拡張機能の一部 (ハードウエアに関するもの)
https://gyazo.com/cffcd74efaeae6aa7cce24ded85d6eda
Scratch3のサーバー()のソース(JavaScript)は公開されている。
ソース: https://github.com/LLK/scratch-gui
解説: Scratch を改造しよう 3章まで無料公開
Scratch3のサーバーに拡張機能を実装すれば、My Scratchが。
拡張機能入のScratchサーバを自分で立てる。
(必要であれば)クライアント側も自分で書く。
Stretch3:拡張機能実装例
Stretch3:非公式Scratch3拡張機能が使えるサーバー
https://stretch3.github.io/
楽しい拡張機能がいっぱい!!
AI 関連
自分で学習したモデルが使えるもの
既にあるモデルを使うもの
ポーズ認識
Microbit More
https://gyazo.com/14e6eb682f3c4bd7b62bb1179634e4af
Microbit More for Scratch x micro:bit
https://gyazo.com/3071757b69f52ccb4f16357d7a02c61e
Microbit More
Stretch3や https://microbit-more.github.io/editor/ などで使える。
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
https://gyazo.com/63c4ed0a62a5a77efe1263f67eac8756
M5bitLess=M5Stack一家をmicro:bitのようにふるまわせてMicrobit More(↔︎Less)を使う
Microbit Moreの寄生虫
ソース: https://github.com/610t/M5bit-less
動作機種 (リンク先はSWITCHSCIENCE)
M5Stack Basic/Gray/Core2
M5StickC/C Plus
ATOM Matrix/Lite
Wio Terminal
作った背景
Scratch1.4でM5Stackが使えるM5Scratchを作っていた。
Arduino IDEでの作業がほぼ必須。
IPアドレスやWi-Fi設定の変更。
自分好みのデモへの変更。
Scratch3の拡張機能でM5Stackを使えるものが待たれていた (/CoderDojoNara/M5Scratchってなぁに?)
Scratch拡張機能側とM5Stack側を同時に作っていくと、ぜったいハマる自信がある。
Microbit Moreがあるんだから、M5Stackがmicro:bitのフリをすればいいんじゃね?
対応しているブロック(赤枠部分)
https://gyazo.com/520645ef40c290104f19f539a1701f2c
デモ
発表当日はライブでデモします。
https://youtu.be/iFvyk9Q_aNg
おわりに
ScratchとM5Stackで遊ぶととても楽しい!!
Scratch 1.4遠隔センサー
x UiFLOW
x M5Scratch
Scratch3 + Microbit More
x M5bitLess
まだまだ実装できていない機能があるので、一緒に作りませんか!!
当日の情報へのリンク
イベントページ: ビジュアルプログラミングIoTLT vol.9(資料)
Togetter: ビジュアルプログラミングIoTLT vol.9
YouTube: むとう発表開始時間 49:14-
https://www.youtube.com/watch?v=_6NbsS_av-4&t=2957s
参考情報
https://github.com/610t/M5bit-less
M5bit Less: M5Stack x Scratch3 = So Fun!! (M5Stack Japan Creativity Contest 2021)
Microbit More data format: むとうが独自にソースから調査したMicrobit Moreプロトコル
#IoTLT
#MicrobitMore #Scratch
#M5Stack #M5StickC
#M5bitLess #M5Scratch