編集履歴一覧に戻る
610tのアイコン画像

610t が 2025年01月04日23時18分23秒 に編集

コメント無し

本文の変更

このプロジェクトは、[2024年 SPRESENSE™ 活用コンテスト](https://elchika.com/promotion/spresense2024/)に応募するために作成しました。 # はじめに SpreM5ScratchSense(スーパーエムファイブスクラッチセンス)は、SPRESENSEからM5Stackを介することで、Scratchとやり取りをできるようにしたシステムです。 現状では、SPRESENSEからはGPSのデータをScratchに送ることができ、ScratchからSPRESENSEの4つのLEDのオンオフが可能になっています。 # 登場人物 今回、利用したのは、以下のような技術/デバイスです。 ## ハードウエア ### SPRESENSE [SPRESENSE](https://developer.sony.com/ja/spresense)は、Sonyの開発した高性能のマイコンボードです。 メインボード単体で、GPS情報が取得できたり、高性能の音の入出力、AI機能など色々なことができるようになっています。 マルチコアも利用可能で、全部で6つのコアを利用して、高い性能が求められる構成を取ることが可能です。 今回は、GPSによる情報と、LEDの点滅をScratchとやり取りする構成を取りました。 これで、Scratchから位置情報を使ったり、ScratchからSPRESENSEのLEDを点滅できるようになりました。 ### M5Stack ![M5Stackファミリー](https://camo.elchika.com/244251a02a782ba8383ec6c0a3a8dbea66713531/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f37313739343530302d363132302d343562622d386130622d326634323763323762643734/) [M5Stack](https://m5stack.com/)は、オールインワンの使いやすいマイコンです。 今回利用したCore2で、システムで利用した機能には、以下のようなものがあります。 - ディスプレイ(320x240) - 加速度センサー(IMU) - LED - スピーカー ## Scratch [Scratch](https://scratch.mit.edu/)は、MITのメディアラボで開発されているブロックプログラミング環境です。 子供たちなどのプログラミング初心者が、簡単にプログラミングできるようになっています。 ![Scratch](https://camo.elchika.com/1b995c878e98511c0057e9684a0a5e3d156ef9d2/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f35326233356130622d323136342d343965392d386438302d303865316364383964346531/) Scratchの中でも、[Stretch3(ストレッチスリー)](https://stretch3.github.io/)というサーバーは公式の拡張機能として提供されていない拡張機能が提供されており、楽しく利用することができます。 ### Microbit More [Microbit More](https://microbit-more.github.io/)は、Scratchからmicro:bitの全ての機能を利用できるようにした拡張機能です。 Stretch3サーバーや[xcratch](https://xcratch.github.io/index-ja.html)サーバーで利用することができます。 #### M5bitLess ![M5bitLessシステム図](https://camo.elchika.com/834cdb60d4ec181736f7a522ec9ffd3014588d69/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f38633538323464302d306232612d343933302d616635362d383565663765313638356334/) M5bitLess([github](https://github.com/610t/M5bit-less), [M5bitLess: M5Stack x Scratch3 = So Fun!!(ProtoPedia)](https://protopedia.net/prototype/2395))は、M5StackとScratchを使うためのArduinoプログラムです。 M5bitLessで、M5Stackはmicro:bitのように振る舞うことで、Scratchからはmicro:bitとして見えるようになっています。 そのため、Microbit More拡張機能の機能が利用できるようになります。 M5bitLessでは、例えば以下のような機能が利用可能です。 - 5x5 Matrix LED表示エミュレーション - 文字列表示 - 加速度センサー - LED明滅 - トーン音 - などなど ### Geo Scratch [Geo Scratch](https://github.com/geolonia/x-geo-scratch)は、Scratchで地図情報を扱うことができる拡張機能です。 GPSの緯度および経度データを指定することで、その場所の地図を表示することなどが可能です。 更に、県名などの地名情報なども取得可能なため、多彩なアプリケーションを構築することが可能です。 これをGPS情報と組み合わせることで、Scratch上で様々な地図アプリケーションが実現可能です。 # システム構成 ![システム構成](https://camo.elchika.com/de91ed51b52faff51b192137b93873e16b1ce388/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f36383162373637662d646230382d346662652d383139612d393331386463646337373366/) このシステムでは、SPRESENSEはM5Stack Core2とシリアル経由で接続され、GPSやLEDのオンオフ状態をやり取りします。 M5Stack Core2とScratchは、Microbit Moreを使ってBluetooth経由で情報のやり取りを行います。 SPRESENSEから得たGPSやLEDの情報は、M5Stack Core2経由でScratchに送られます。

-

利用モジュは以下のとおりです。

+

## ハードウエア構成 利用したハドウエアは以下のとおりです。

|名称|SKU|用途| |---|---|--| |[SPRESENSEメインボード](https://developer.sony.com/ja/spresense/products/spresense-main-board)|CXD5602PWBMAIN1|GPSデータ取得| |[SPRESENSE用 BLEベースボード](https://www.switch-science.com/products/6334)|SSCI-063340|Bluetooth Low Energy対応| |[M5Stack Core2](https://www.switch-science.com/products/9349)|M5STACK-K010-V11|Scratchとのやりとり(M5bitLess)| |[M5Stack Module Plus](https://www.switch-science.com/products/5206)|M5STACK-PLUSEM|SPRESENSEとCore2の接続| |[GROVE - 4ピン - ジャンパオスケーブル](https://www.switch-science.com/products/6245)|SEEED-110990210|SPRESENSEとM5Stackの接続|

+

## データのやり取りについて データは、Microbit Moreのラベルとデータ([M5bitLess label & data extension](https://protopedia.net/prototype/3224)(ProtoPedia))という機能を用いて実現しています。ラベルとデータでは、任意の文字列(ラベル)に対して、任意の値(データ)を送ることができる仕組みです。

+

ScratchからSPRESENSEには、`LED0`-`LED3`に`on`や`off`を設定することで、SPRESENSEのLEDの点滅が可能になっています。 SPRESENSEからScratchには、以下のようなデータが送られます。 - `Date`: 日時 - `Time`: 時間 - `Fix`: GPSのデータ取得状態 - `alt`: 高度 - `numSat`: 確認できている衛星の数 - `numStacC`: 測位に使っている衛星の数 - `HDOP`: HDOP - `Lon`: 経度 - `Lat`: 緯度

# ソースコード https://github.com/610t/SpreM5ScratchSense/ でソースコードを公開しています。 構成は、以下のようになっています。 - `SpreM5ScratchSense/examples/M5Stack/M5Stack.ino`: M5Stack用のプログラムです。 - `SpreM5ScratchSense/examples/SPRESENSE/SPRESENSE.ino`: SPRESENSE用のプログラムです。 - `SpreM5ScratchSense/examples/Scratch/GPS.sb3`: ScratchでGPSデータを扱う例です。 `M5Stack.ino`は、[M5bitLess](https://github.com/610t/M5bit-less)用のコードを今回のプロジェクト用に改造しています。 改造点は、以下の通りです。 - LEDのon/off命令をSPRESENSEに送る。 - SPRESENSEからのGPS関連データをScratchで操作できるようにする。 `SPRESENSE.ino`のコードは、SPRESENSE上でGPSデータを取得してScratchに送ることと、Scratchから指定されたLEDの情報に応じてLEDの点滅を操作することが実現されています。

-

## データのやり取りについて データは、Microbit Moreのラベルとデータ([M5bitLess label & data extension](https://protopedia.net/prototype/3224)(ProtoPedia))という機能を用いて実現しています。ラベルとデータでは、任意の文字列(ラベル)に対して、任意の値(データ)を送ることができる仕組みです。 ScratchからSPRESENSEには、`LED0`-`LED3`に`on`や`off`を設定することで、SPRESENSEのLEDの点滅が可能になっています。 SPRESENSEからScratchには、以下のようなデータが送られます。 - `Date`: 日時 - `Time`: 時間 - `Fix`: GPSのデータ取得状態 - `alt`: 高度 - `numSat`: 確認できている衛星の数 - `numStacC`: 測位に使っている衛星の数 - `HDOP`: HDOP - `Lon`: 経度 - `Lat`: 緯度

# デモ ここでは、システムを外に持ち出して歩いてみて、Scratch上にGPSのトラッキング情報を表示してみます。 動作の様子は以下の通りです。 ![デモの動作イメージ](https://camo.elchika.com/a91a4bd01bd24f8171e1d366b1dd8de53222ebb4/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f37343936343330312d373838322d346463322d396238312d653963343963663937316432/) [Geo Scratch](https://github.com/geolonia/x-geo-scratch)を使うことで、現在位置の地図情報だけでなく、県名や市名が表示できるようになっています。 LEDはScratchからランダムに点滅させています。 # TODO これからやりたいことを書いてみたいと思います。 ## Bluetooth UART接続による有線シリアル接続の排除 現状、SPRESENSEとM5Stackは有線によるシリアルで接続されています。 この構成では、SPRESENSEとM5Stackは近くにある必要があり、システム構成の自由度が低くなっています。 SPRESENSE Bluetooth UARTボード([SPRESENSE用 BLEベースボード](https://www.switch-science.com/products/6334))が手元にあるため、これを利用して、SPRESENSEとM5Stackを接続します。こうすることで、SPRESENSEとCore2を離して配置することが可能となるため、配置の自由度が大きくなると考えています。 ## SPRESENSEから直接Scratchと通信を行う SPRESENSE用 BLEベースボードは、BLEモジュールISP1507を使っているということで、ファームウエアを更新することで、UART以外にも利用できるようです。これを使うと、M5Stackを介さずに、直接SPRESENSEからScratchに接続できるようになります。 M5Stackに元から付いている加速度センサーなどの情報は利用できなくなりますが、SPRESENSE拡張ボードの多彩な機能がよりダイレクトに利用できることが期待されます。ちなみに、もうすぐSPRESENSE用のIMU拡張ボードも提供開始されるということなので、とても期待しています。 # おわりに SPRESENSEのGPS機能やLED機能をScratchから利用可能にすることができました。 これで、Scratch上でGPSトラッカーを作ったり、地図情報([GEO Scratch](https://github.com/geolonia/x-geo-scratch))と組み合わせて様々なアプリケーションを作成できるようになりました。 何を作るかは、あなたの好奇心次第。 **Enjoy your SPRESENSE life with Scratch and M5Stack!!**