聞こえない人でもBPMランニングがしたい!

# 導入
　本作品は、聞こえないランナーのためのペーサーです。
Micro:bitが2つのLEDを交互に定期的に点滅するという単純なシステムですが、聞こえないランナーには少しは効果がある(と信じたい)考えますので、本記事に報告します。

# プロジェクトの背景
　わたしはランニングが趣味です。走るとき、イヤホンをつけて颯爽と走り抜けるランナーをときどき見かけます。スマホやウォークマンから流れる曲のリズムに合わせて、テンポよく一定のペースで走る練習です。これをBPMランニングといいます。聞こえない私は、音楽を聴くことができません。当然、BPMランニングをやりたくでもできません。そこで、リズムを可視化したランニングのペーサーを作ってみました。

　ペーサーの設計においては、以下のwebを参考にしました。

https://www.sony.jp/msc/owner/recommend/season/running_wm_lp/contents02.html

　本作品は、160 BPMと165 BPMのペースにしています。つまり、1分間に左右で合計160歩と165歩で走ることができます。

# システム図(回路図)
　手のひらよりも小さいMicro:bitは、安く高性能な教育用コンピュータです。また、携帯性も十分にありますので、本作品に採用しました。また、LEDを発光させる駆動回路は、LEDと直列に電流を制御する抵抗を接続した至極単純な構成にしています。回路図を以下に示します。

<img alt="回路.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3024567/371ff943-6f32-b833-cd83-be2493112e8e.png" width=45%>

　上記の回路は、平ラグ板に実装しました。平ラグ板は、ダブルクリップに取付けしやすそうだからです。回路の完成を下の画像に示します。半透明の塊はランニングの振動に耐えるために補助したグルースティックです(付け過ぎると反省)。ピンクの半透明のプラ板が少し出ていますが、ダブルクリップのハンドルと平ラグ板の端子とのショート防止に挟んでいます。

<img alt="20231210_122316_(1)[1].jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3024567/315429f9-5eaa-0a4c-b22e-f239c76e5376.jpeg" width=50%>

# 必要な部品
　使用した電子部品を以下の表に示します。なお、ワイヤーは除いています。

| 部品名 | 個数 |
| ---- | ---- |
| Micro:bit | 1 |
| 乾電池ボックス | 1 |
| 330 Ω 抵抗 | 2 |
| 赤LED | 2 |
| 平ラグ板 | 2 |
| ダブルクリップ | 2 |

# プログラム
### 開発環境
　本作品のプログラムは、以下の開発環境で作成しました。
- Mu (Python エディタ)

https://codewith.mu/en/

### 外部仕様 
　以下のタイミング図に示すように、BPMに合わせて、2つのLED(LED1とLED2)が交互に点滅します。

<img alt="タイミング図.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3024567/8ba61f71-5d7b-e3c4-37dd-b9d13d98e638.png" width=110%>

### ソース
　プログラムのソースを以下に示します。

```` python
from microbit import *

# 端子出力をクリア
pin0.write_digital(0)
pin1.write_digital(0)

# ボタンABの押し状態
button_a_pressed = False
button_b_pressed = False

# LEDの点滅時間
led_time_msec = 0

# ボタンABの押し判定
while True:
    if button_a.is_pressed():
        # ボタンA -> 160 BPM
        button_a_pressed = True
        break
    if button_b.is_pressed():
        # ボタンB -> 165 BPM
        button_b_pressed = True
        break

# ボタンABの押し判定の結果をディスプレイに表示するともに
# LEDの点滅時間を設定
# ボタンA -> 160 BPM 375 ms
# ボタンB -> 165 BPM 364 ms
if button_a_pressed == True:
    display.scroll('A')
    led_time_msec = 375
elif button_b_pressed == True:
    display.scroll('B')
    led_time_msec = 364
else:
    reset()

# LEDの点滅
while True:
    pin0.write_digital(1)
    pin1.write_digital(0)
    sleep(led_time_msec)
    pin0.write_digital(0)
    pin1.write_digital(1)
    sleep(led_time_msec)
````
# 操作手順
　Micro:bitをランニングキャップの後ろのベルトに付けて、LED駆動回路のあるダブルクリップをつばに挟みます。

 <img alt="GridArt_20231218_172217547[1].jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3024567/fc843d7d-6aa4-4fad-55d1-16ed92e2f1ec.jpeg" width=50%>
 
　そして、以下の手順で操作します。

1. 電源をONにする
1. Micro:bitのボードのボタンA(160 BPM)またはボタンB(165 BPM)を押して、LEDを点滅させる
1. 途中でBPMを変更する場合は、Micro:bitのリセットボタンを押して、2.を繰り返す

# 動作結果
　本作品を実際にランニングで使用できませんでした。実は、脛骨疲労骨折で2か月間(2023年12月～2023年1月)のランニングを禁止されています。したがって、骨盤に連動させた腕ぶりで本作品の効果を確認してみました。
　前を向いたまま、目の端でとらえたLEDの点滅に合わせて、腕を振ることができました。
　本当は10 kmほど走って、ペース(分/km)を測定したかったのですが、残念です。

# 課題と改良点
　本作品を社会に商品としてリリースできるのか、といえば以下の課題があります。
- スマホまたはウォークマンの利便さに勝つことができない
(聞こえない人に特化され商品になり、聞こえる人には需要があまりない)
- 視界が狭くなるので、ランニングキャップのつばの裏にペタッと貼り付けるほどの小型化
- LEDは1つでも十分に使える可能性あり
(LEDが点灯しているときは右足を出し、消灯しているときは左足を出す感じ)

　この課題は、2つの改善案があります。
　ひとつは、1つのLEDで十分に使える場合、需要が十分にある夜間安全グッズの夜間ランニングライト(夜間散歩ライト)にBPMの設定機能を拡張することです。
　もうひとつは、スマートグラスを使うことです。近い将来、極薄、超軽量のスポーツ用スマートグラスが販売されたとき、本作品のようにBPMを可視化するGUIをディスプレイに表示することができれば、聞こえないランナーの練習の質が向上すると期待できます。

# まとめ
　聞こえない人は、音楽の曲を聴いてBPMランニングができず、ランニングの練習の質が向上できない課題がありました。そこで、Micro:bitと簡単なLED回路、簡単なソフトで、ペーサーを作りました。
　その結果、腕ぶりで確認しただけになりますが、一定したペースで走れそうとわかりました(信じています)。しかし、聞こえない人だけに特化されやすいなどの理由で商品化はとても難しいと考えます。
 　需要が十分にある夜間安全グッズやスポーツ用スマートグラスに、本作品のシステムを流用すれば、聞こえないランナーの練習の質が向上でき、楽しいランニングができそうです。