目標 === プロジェクト1: Web-Bluetoothを用いたMicro:bitとPCの通信 # 第1週目 ・HackMDのログイン ・ゼミBの計画を立てる # 第2週 1.  マイクロビットの接続 2.  マイクロビットを実際に動かしてみる ![](https://hackmd.io/_uploads/r1Ig6nix6.png) 4. アプリを使ってBluetoothをつないでマイクロビットを動かしてみる ![](https://hackmd.io/_uploads/rkddFnsea.jpg) # 第3週 パソコン工房(https://www.pc-koubou.jp/magazine/12416#section01) 1. micro:bit側で加速度センサーの値をBluetooth通信で送信できるように準備する 2. パソコン側からmicro:bitとBluetooth接続する 3. 接続ができたら、micro:bit側に接続完了表示をして、ゲーム開始 4. 加速度センサーの値をパソコン側で受け取って、自機の動きに反映 5. 障害物に当たってしまったら、ゲームを止めてBluetooth接続を切る マイクロソフトの子供向きプログラミング環境(https://makecode.microbit.org/#) マイクロビットの設定を行う。 ![](https://hackmd.io/_uploads/ry3lFxSbT.png) WebBluetoothAPI設定を行う ![](https://hackmd.io/_uploads/HyytYxB-T.png) ![](https://hackmd.io/_uploads/ryPtFeHb6.png) ![](https://hackmd.io/_uploads/ryQl5xB-T.png) 本来なら上図のようになる。しかし私の場合はBluetoothが出てこない。なぜ出てこないはわからない。 # 第4週  第4週目標:Bluetoothの接続を確認できるようにする。 **前回の問題点** 1. JavaScriptの2行目に問題がある // 加速度サービスUUID 'const ACCELEROMETER_SERVICE_UUID = 'e95d0753-251d-470a-a062-fa1922dfa9a8';` 3. プログラムが長く複雑なため簡略化する。 しかし上記1のUUIDが何かがわからないため調べる。 UUID(Universally Unique Identifier)は、一意の識別子を生成するための標準的な形式です。UUIDは、情報技術において広く使用されており、特にデータベース、ネットワーク通信、ソフトウェア開発などの領域で一意の識別が必要な場面でよく利用されます。 以下はUUIDの特徴です: 1. 一意性: UUIDは理論的に世界中で一意であることが保証されています。UUIDを生成するアルゴリズムは、ランダムな要素と時間ベースの情報を組み合わせて生成されるため、重複する可能性は極めて低いです。 2. 形式: 一般的に、UUIDは128ビットの16進数(32文字)で表されます。形式は次のようになります:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。これは、8-4-4-12の5つのグループに分けられた32文字の文字列です。 3. バージョン: UUIDにはさまざまなバージョンがあり、バージョン1およびバージョン4が最も一般的です。バージョン1のUUIDは、主にMACアドレスとタイムスタンプを基に生成され、バージョン4のUUIDはランダムなデータを基に生成されます。 4. 用途: UUIDは、データベースエントリ、ファイルの一意な識別、セッション識別、オブジェクト識別、ソフトウェアコンポーネントの識別など、さまざまな用途に使用されます。一意性が保証されるため、情報の一意な識別に役立ちます。 UUIDとは(https://e-words.jp/w/UUID.html) # 第5週 目標 * プログラムが長く複雑なため簡略化する。  そのために必要な部分だけ残し実行してみた。しかし反応はなし。64行目に飛んでエラーになった。 ![スクリーンショット 2023-11-16 092708](https://hackmd.io/_uploads/r1C1EkQNa.png) 来週はもっと初歩的な接続部分だけ実行できるようにしたい。 # 第6週 * micro:bitを接続できるようにする。 佐々木くんのコードを引用して再度接続を試みた。 以下のコードはそのまま引用。 ![ソースプログラム](https://hackmd.io/_uploads/r11MdM7Na.png) ![ペアリング済み](https://hackmd.io/_uploads/H1j8DMXEp.png) 課題 しかし、表示がmicro:bitの表示が"WAIT"にならない。 # 第7週 * micro:bitの表示がおかしい原因を調べる。 ![setuzoku](https://hackmd.io/_uploads/ByEDFN74T.png) waitと出るはずがよくわからない ![IMG_5921](https://hackmd.io/_uploads/SkxXzr7Ep.jpg) ![おためし](https://hackmd.io/_uploads/H1Ex54XNp.png) # 第8週 前回の続き 前回はmicro bitの画像がうまく映らない件はBluetoothのブロックを3つ以上だと前回見たいになることがわかった。 ![スクリーンショット 2023-12-14 121355](https://hackmd.io/_uploads/HJbyNldU6.png) ![a](https://hackmd.io/_uploads/BkVq4eOLT.png) ![b](https://hackmd.io/_uploads/Hy84Ll_8a.png) ![c](https://hackmd.io/_uploads/SkoVLx_8p.png) ```HTML= <!DOCTYPE html> <head> <title>接続テスト</title> </head> <body> <button type="button" onclick="OnbuttonClick()">test</button> <!--ボタンを設置する、タイプはボタン、クリックされたとき"OnbuttonClick()"を実行する--> <script> function OnbuttonClick(){ navigator.bluetooth.requestDevice({ //Bluetoothデバイスを探す filters: [{ //デバイスの名前は? namePrefix: 'BBC micro:bit' }] }) .then(device => { console.log(device.name); //コンソール(F12)にデバイスの名前を出力 return device.gatt.connect(); }) } </script> </body> </html> ``` 第6週目と今回使ったプログラム。同じプログラムだが実行不可。 # 第9週 前回の反省点 問題を解決する方法を考える 問題を分けて解決する 今回の問題点 micro bit micro bit開発環境 microbitとBluetoothで接続するために以下のテストコードを作成する micro bit のBluetoothがつながらなく。 スマホのmicro bitつながらなくmicrobit に問題があり? しかしwebBluetoothと接続はできている。![スクリーンショット 2023-12-21 120159](https://hackmd.io/_uploads/ByuaQNZPp.png) ![スクリーンショット 2023-12-21 120117](https://hackmd.io/_uploads/Byd6XEWw6.png) ``` <!DOCTYPE html> <head> <title>テスト</title> </head> <body> <button type="button" onclick="connect()">test</button> <!--ボタンを設置する、タイプはボタン、クリックされたとき"OnbuttonClick()"を実行する--> <button type="button" onclick="Disconnect()">DisConnect</button> <script> let ConnectionDevice; //接続している機械を判別するための変数 function connect(){ navigator.bluetooth.requestDevice({ //Bluetoothデバイスを探す filters: [{ //デバイスの名前は? namePrefix: 'BBC micro:bit' }] }) //接続受け入れ(自分が受け入れた、相手機伝わっていない) .then(device => { ConnectionDevice = device; //現在接続している機械を記憶 console.log(device.name + "接続完了"); //接続ログ return device.gatt.connect(); //gatt(1v1で接続するための返答)で相手に伝える }) } //---------------- function Disconnect() { ConnectionDevice.gatt.disconnect(); //切断 ConnectionDevice = null; //現在接続している機械の名前を廃棄 console.log('切断完了'); //切断ログ } </script> </body> </html> ``` 佐々木くんのコードを引用して再度接続を試みた。 以下のコードはそのまま引用。 ``` Uncaught (in promise) DOMException: Connection Error: Connection attempt failed. ``` https://stackoverflow.com/questions/56405266/how-to-fix-domexception-error-in-web-bluetooth-api