20自転車のパワーをRaspberryPiで可視化するNode.jsRaspberryPiWS2812自転車はじめに近年、自転車(ロードバイク)では、ペダルを踏んだ力を「パワー」として数値化(単位はワット:W)できる「パワーメーター」が普及しつつあります。$\small{出典:4iii-innovations}$筆者のパワーメーターは上記の画像の様にクランクに接着されていて、ペダルを踏んだ際のクランクの歪み度合いを、パワーに変換しています。そんなパワーメーターを利用したバーチャルサイクリングアプリ「Zwift」が、自転車乗りの世界で人気沸騰中です。今回はZwiftの紹介とRaspberryPiを利用し、出力したパワーをLEDの色で可視化する方法を紹介します。Online)ゲーム形式のサイクリング・ランニングトレーニングプログラム。世界中の参加者が仮想世界の中でトレーニングしたり、競争したりすることができる。(Wikipediaより)上記画像の様に、自転車をローラーという器具に固定し、パワーメーターの情報を元にZwiftのアバターをバーチャル世界で走らせます。高性能なローラーだとパワーの検出、仮想世界の斜度に応じた負荷の変化、路面の凸凹を再現などもでき、より実走に近い感覚でサイクリングができます。天候や時間に左右されることなく、世界中の人とレースを楽しみながら、トレーニングもできてしまう夢のようなアプリです。やりたいこと今回やりたいのはRaspberryPiを利用し、自分が出力しているパワー(以下、"パワー値")をLEDの色で可視化することです。Zwiftで世界中の猛者と戦う中、必死に漕いでいると意識が朦朧としてきます。そんな状況ではワット数を気にしている余裕がありません。そこでパワー値を色で表現すればわかりやすいのではないか、というのが今回の動機です。用意するものRaspberryPiWS2812Ant受信ドングルジャンパピン(メス-メス)ハンダゴテ、ハンダ実装(ハードウェア)RaspberryPiとWS2812の配線は下記の通りです。パワーメーターとの通信はANT+で行います。データの受信にはAnt受信ドングルを用います。実装(ソフトウェア)以下に、ソフトウェアの実装手順と実行コマンドを示します。RaspberryPiにログインし、インストールを行っていきましょう。USBライブラリのインストールAnt受信ドングルを接続し、接続情報を取得、IDをメモしておきます。結果は下記以外のUSB機器の情報も表示されます。Innovations」がAnt受信ドングルの情報です。USBライブラリのインストールを行います。libudev-dev設定ファイルを作成します。IDが異なっていた場合は修正して下さい。Node.js、各種ライブラリのインストールNode.jsに加えて、下記のライブラリもインストールします。--saveソースインストールが終わったところで、ようやく実装です!GitHubにあるサンプルコードを元に実装していきます。WS2812のサンプルコードはモジュールのLED数とGPIOのピン位置が異なるため変更します。以下が、実装後、Zwiftプレイ中のLEDの様子を撮影した動画です!パワーメーターの値に応じてLEDを変化させるスクリプト(Node.js)を書いてみました。RaspberryPiとAnt+ドングルを使用してパワーメーターの値を検出しています。分かりにくいですが、画面左上(スマホの左)のLEDの色がパワー値に応じて変化しました!※RaspberryPiの数値はリアルタイムで検出しているのに対し、Zwiftは3秒平均のパワーを表示させているためZwiftのパワー値は遅れて表示されています。まとめNode.jsのライブラリを使用することで、簡単にパワー値の検出・LEDの点灯を実装することができました。これで日々のトレーニングに生かせそうです。LEDの色を変化させる事のない様に漕げば、パワーにムラの出ないペダリングも習得できそうです。今後は、ディスプレイを接続して心拍など様々な情報も出力してみたいと思います。本拠を置くITコンサルティング会社です。技術的な知見に基づいて技術案件から上流案件まで幅広くご支援しています。upLoginユーザーは見つかりませんでした。