2021年07月30日 更新

RaspberryPiでBlueJelly

ラズパイをセントラルにしてBLE機器との通信を行う方法です。

ペリフェラルとしてmicro:bitを使いました。アプリはBlueJellyのサンプルコードにあるnotify_uart.htmlを使っています。micro:bitを傾けるとラズパイのディスプレイ上に表示されている数値がリアルタイムで変化します。

目次

[TOC]

Raspberry Piの準備

使用したラズパイはRaspberry Pi 4 Bですが、Bluetoothが搭載されているラズパイであればどれでも大丈夫だと思います。特にBluetooth自体の設定は不要です。

Web Bluetoothの有効化

Web Bluetoothを使えるようにします。
Raspberry Pi OSにデフォルトでインストールされているChromiumを起動します。ラズパイアイコンの横にある青い地球儀のアイコンです。

アドレスバーに以下を打ち込みます。

chrome://flags


Search flagsと書かれている検索ボックスに以下を打ち込みます。

Experimental Web Platform features


右側のプルダウンメニューをDisabledからEnabledに変えます。
少し動きが鈍い場合は、スペースキー > Eキー > Enterキー とキーボードを使うと上手くいく場合があります。


Relaunchというボタンをクリックするとchromiumが自動で再起動されます。
これでWeb Bluetooth設定OK!

micro:bitの準備

今回は以下のページのブロックを書き込みました。
https://monomonotech.jp/kurage/webbluetooth/microbit_ble_block.html

BlueJellyサンプルの実行

BlueJellyをgit cloneして実行しました。
LXTerminalを立ち上げて以下のコマンドを打ち込んでください。

git clone https://github.com/electricbaka/bluejelly.git

piディレクトリにbluejellyフォルダが出来ているので、その中にあるnotify_uart.htmlを起動して実行します。ペア設定ボタンが押せるようになるまでと、押した後に接続されるまで時間がかかりましたが、その後はうまく通信できました。


他のサンプルも問題なく動きました。
この画像はadvance_slick.htmlの例です。micro:bitを傾けることでスライドが動きます。

:::warning BLE通信がうまくいかない場合は、micro:bitの電源をOFF/ONしたり、chromiumを更新したりしてみて下さい。 :::

以上、RaspberryPiでBlueJelly でした。