v0.2.2
シリアル通信ができるようになりました。 GPS や各種センサーなど、
シリアルで喋る機器を Scratch から読み書きできます。
| 使い方 | 中身 | |
|---|---|---|
| Xcratch 版 | 下の URL を「拡張機能を追加 → Extension Loader」に入れる | インストール不要。Chrome か Edge が要る |
| デスクトップ版 | 同梱のインストーラを入れる | Scratch Desktop に組み込んだもの |
https://tarosay.github.io/scratch3-uiapduino/uiapduino.mjs
⚠ 基板の書き込み直しが必要です
同梱の Scratch-UIAPduino-3.29.1-sketch.zip を書き込んでください(プロトコル 6 → 7)。
v0.2.1 のままの基板は繋がりません。 Xcratch 版は URL が同じなので、
これまでの作品を開いても新しい版が読み込まれます。書き込み直すまでは、
ブロックの場所に理由が出ます。
⚠ 基板のスケッチが合わないので つながりません
新しいスケッチの(ScratchUiapduino.ino)を書き込んでください。
新しいプロトコルバージョン: 7
https://github.com/tarosay/scratch3-uiapduino/releases/latest
書き込み直して繋がると、ブロックが元に戻ります。
同梱物
| ファイル | 内容 |
|---|---|
Scratch-UIAPduino-3.29.1-Setup.exe |
インストーラ |
Scratch-UIAPduino-3.29.1-portable.zip |
インストール不要版 |
Scratch-UIAPduino-3.29.1-sketch.zip |
UIAPduino に書き込むスケッチ |
アプリとスケッチは必ずこのリリースの組み合わせで使ってください。
Xcratch 版を使う場合も、sketch.zip はここから取ってください。
UIAPduino に書き込む
1. Arduino IDE にボードを入れる(初回だけ)
ファイル → 環境設定 → 追加のボードマネージャのURL に次を追加します。
https://github.com/tarosay/board_manager_files/raw/main/package_uiap_hid_index.json
「ボードマネージャ」で UIAPduino を検索してインストールし、
ツール → ボード → UIAP_HID → HID ProMicro CH32V003 を選びます。
すでに入れている方も、ボードマネージャで更新してください。
今回のスケッチは 1.2.10 で確認しています。
基板はお店やネットショップで購入してください。
配布しているのは Arduino IDE の Core(ボード定義)で、基板そのものではありません。
2. 基板を書き込みモードにする
基板のボタンを押しながら USB ケーブルを接続し、すぐにボタンを離します。
3. 書き込む
Scratch-UIAPduino-3.29.1-sketch.zip を解凍し、ScratchUiapduino.ino を
Arduino IDE で開いて「書き込み」を実行します。Tools の設定は同梱の
sketch.yaml に入っているので、Arduino IDE 2.x なら自動で選ばれます。
書き込み器(WCH-LinkE など)は要りません。 USB ケーブル 1 本で書けます。
v0.2.1 からの変更
シリアル通信のブロック(新規)
シリアル通信 ボーレート [9600▼] で開始する
シリアル通信 1行書き出す [Hello]
シリアル通信 数値を文字で書き出す [0]
シリアル通信 名前と数値を書き出す [x] = [0]
シリアル通信 文字列を書き出す [Hello]
シリアル通信 複数の数値をカンマくぎりで書き出す [リスト▼]
シリアル通信 1行読み取る
シリアル通信 つぎのいずれかの文字の手前まで読み取る [改行コード▼]
シリアル通信 文字列を読み取る
シリアル通信 つぎのいずれかの文字を受信したとき [改行コード▼]
シリアル通信 [改行コード▼] を受信した
最初に「ボーレートで開始する」を実行してください。 これを置かないと、
読み取りのブロックは何も返しません。
つぎのいずれかの文字を受信したとき はハットブロックです。受信を待つ間、
USB の通信は発生しません。基板から届いた時点で動き出します。
1行読み取る と 文字列を読み取る は、チェックを入れるとステージに表示できます。
表示しているだけでは中身は消えません。 ブロックで読んだときだけ取り出されます。
⚠ シリアルを開くと 4 つのピン名が使えなくなります
Tx と Rx は D15 / D16 に固定です。この 2 本は A5 / A6 と同じ物理ピンなので、
ボーレートで開始する を実行した後は、次の 4 つがピン操作のブロックから外れます。
| 送信 (Tx) | D15 = A5 |
| 受信 (Rx) | D16 = A6 |
シリアル通信を使わない作品では、4 つともこれまでどおり使えます。
配線は 基板の D15 → 相手の RX / 基板の D16 → 相手の TX / GND → GND です。
UIAPduino は 5V 駆動なので、5V の機器はそのまま繋がります。
⚠ 速度の上限を先に知っておいてください
USB-HID を通すため、シリアルの速度がそのまま出るわけではありません。
| 実測 | |
|---|---|
| キーボードとして打ち込む速さ | 約 25 文字/秒 |
| Scratch へ読み出す速さ | 約 330 バイト/秒 |
たとえば GPS を 9600 baud で繋いで、受け取った文をキーボードでエディタに
打たせる場合、2 文を打つ間に次の 7 秒ぶんを取りこぼします。
連続で全部を記録する用途には足りません。必要な文だけを選ぶ、
間引く、といった作り方をしてください。
⚠ 記号は日本語キーボードの PC だと変わることがあります
受け取った文字をキーボードのブロックで打たせる場合の話です。基板は US 配列の
キーコードを送るので、日本語配列の PC では一部の記号が別の文字になります。
たとえば * は ( になります。
英数字・カンマ・ピリオド・ハイフンは変わりません。 数値や座標はそのまま打てます。
これは PC 側のキーボード配列で決まるため、基板では直せません。
記号を正確に残したい場合は、キーボードで打つのではなく Scratch のリストに
入れてください。
ボードの固定先を 1.2.10 にしました
sketch.yaml が指定するボードパッケージの版を 1.2.9 から 1.2.10 に上げました。
基板に焼かれる中身は変わりません(両方でビルドして .hex がバイト単位で
一致することを確認しています)。
制限
- Windows のみです。macOS / Linux 版はありません
- Xcratch 版は Chrome か Edge が要ります。 Firefox と Safari には WebHID がありません
- シリアルの Tx / Rx は D15 / D16 の固定で、変更できません
- シリアルを開くと A5 / A6 のアナログ入力も使えなくなります(同じ物理ピンのため)
- 受信バッファは 256 バイトです。あふれた分は捨てられます
- Xcratch 版では、押しっぱなしのまま USB を抜いたときの後始末ができません。
ページから OS の状態は戻せないためです(実機では問題になりませんでした) - USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、
「つなぐ」ブロックをもう一度実行してください
動作確認環境
Windows 11 / Node.js v16.20.0 / Electron 15.3.1 / Chrome・Edge(Xcratch 版)
ボードパッケージ UIAP_HID:ch32v 1.2.10。
スケッチの Flash 使用量は 11148 / 16384 バイト (68%)、RAM は 532 / 2048 (25%) です。
インストーラは 32bit ですが 64bit Windows でも動作します。
ライセンス
このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。