610t が 2024年12月12日08時11分49秒 に編集
コメント無し
メイン画像の変更
本文の変更
このプロジェクトは、[2024年 SPRESENSE™ 活用コンテスト](https://elchika.com/promotion/spresense2024/)に応募するために作成しました。 # はじめに みなさん、SPRESENSEしてますか? Scratchも楽しいですよ!! では、組み合わせて使ってみましょう!! # 登場人物 今回、利用したのは、以下のような技術/デバイスです。 ## 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/0a822e290155910d940375be0bcb8beb78bf5209/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f37346562376635612d353463392d343063352d396131332d303063366431343038343835/)
![M5bitLessシステム図](https://camo.elchika.com/920228899f9973d3da14bcdd09727dc12f2e8a9b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f38646439656534322d646333352d346535652d616365332d373934313933313433343137/)
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明滅 - トーン音 - などなど ## 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 - スピーカー # システム構成
![システム構成](https://camo.elchika.com/50e0d2e28b4263c8134d944a5fde1ce6e959ff52/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f37326265323234352d366230612d343038662d613838312d613665336635353762656638/)
![システム構成](https://camo.elchika.com/868031fcbb802119050819b46e645cf0bf9fa99b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32633361343463322d626630612d343637382d626265332d3736393635396530393637322f32306361633864342d303436352d343536652d393039352d363562633865356234373138/)
このシステムでは、SPRESENSEはM5Stack Core2とシリアル経由で接続され、GPSやLEDのオンオフ状態をやり取りします。 M5Stack Core2とScratchは、Microbit Moreを使ってBluetooth経由で情報のやり取りを行います。 SPRESENSEから得たGPSやLEDの情報は、M5Stack Core2経由でScratchに送られます。 利用モジュールは以下のとおりです。 |名称|用途| |---|---| |[SPRESENSEメインボード](https://developer.sony.com/ja/spresense#spresense-key-features)|メイン処理用(GPS情報取得、LED点滅)| |[SPRESENSE用 BLEベースボード](https://www.switch-science.com/products/6334)|Bluetooth Low Energy対応| |[M5Stack Core2](https://www.switch-science.com/products/9349)|Scratchとの通信用| |[M5Stack用6軸IMUユニット](https://www.switch-science.com/products/6623)|加速度取得用| # ソースコード https://github.com/610t/ScratchSENSE でソースコードを公開しています。 構成は、以下のようになっています。 - `ScratchSENSE/M5Stack/`:M5Stack用のプログラムです。 - `ScratchSENSE/SPRESENSE/`:SPRESENSE用のプログラムです。 `ScratchSENSE/M5Stack`は、M5bitLess用のコードを今回のプロジェクト用に改造しています。 `ScratchSENSE/SPRESENSE/`のコードは、SPRESENSE上でGPSデータを取得してScratchに送ることと、Scratchから指定されたLEDの情報に応じてLEDの点滅を操作することが実現されています。 これらは、Microbit Moreのラベルとデータ([M5bitLess label & data extension](https://protopedia.net/prototype/3224)(ProtoPedia))という機能を用いて実現しています。ラベルとデータでは、任意の文字列(ラベル)に対して、任意の値(データ)を送ることができる仕組みです。 # デモ ここでは、システムを外に持ち出して歩いてみて、Scratch上にGPSのトラッキング情報を表示してみます。 システム構成は以下の通りです。 ![デモ用システム構成]() Scratchのコードは、以下の通りです。 ![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))と組み合わせて様々なアプリケーションを作成できるようになりました。 何を作るかは、あなたの好奇心次第。 **Let's enjoy your SPRESENSE life with Scratch!!**