低酸素トレーニング用の酸素濃度自動制御システムを作りました
はじめに
昨年の冬から、高地トレーニング用の低酸素室に使う酸素濃度自動制御システムを作っていました。
ようやく安定稼働できるようになったので、紹介したいと思います。
ことの始まり
昨年冬、平塚にあるアスリートネット湘南の石井さん(@hiraspo)から声をかけていただきました。
石井さんはスポーツジムを運営されている方で、平塚にあるそのジムには日本でも珍しい「低酸素トレーニングルーム」があります。
低酸素トレーニングとは、高地トレーニングの環境を地上で再現して行うトレーニング方法です。(低酸素トレーニングという言葉はお話を聞くまで知りませんでした。 )
高地トレーニングや低酸素環境によるトレーニングの詳細は以下のアスリートネット湘南さんのウェブサイトをご参照ください。
トレーニングルームには低酸素環境を作るための低酸素生成装置とコンプレッサがあるのですが、比較的最近できたばかりで、昨年冬の段階ではバルブを手動で操作して所望の酸素濃度を作っていたそうです。
この酸素濃度に基づいたバルブ操作を自動化したいということでした。
とても面白そうだったので二つ返事で引き受けて、この酸素濃度自動制御システムの開発を開始しました。
システム概要
システム全体像はこんな感じです。
低酸素生成装置(図中のAltitudeMax)、タンク・コンプレッサは既存のものがありましたので、制御システムの役割は低酸素ラインと通常空気ラインの入っているバルブを自動で開閉することです。
主たるデバイスは図中の「メインコントローラ」「バルブコントローラ」になります。
メインコントローラは、酸素濃度の監視・モニタの表示・ユーザとのやりとり(酸素濃度設定など)を行います。また、バルブコントローラはメインコントローラから指令を受け取り、2つのバルブの開閉を行います。
トレーニングルーム内は低酸素を保つため個室になっており、外部とは無線でやり取りする必要がありました。そのため、メインコントローラとバルブコントローラ間はBluetooth(BLE)、メインコントローラとユーザ端末間はWifi(ルータを介したLAN)で接続しています。
今回、CPUはRaspberryPi Zero(メインコントローラ)とESP32(バルブコントローラ)を使用しました。
ラズパイゼロは小さいながらもBluetooth・Wifi・HDMIがついていて、今回はさほど高度な処理は行わないため選びました。ESP32はBluetoothがついていてかつ安価なため選びました。
メインコントローラ上ではFlaskでHTTPサーバが走っており、同一LAN内にいるユーザ端末からブラウザでアクセスすることで現在の酸素濃度を見たり、設定したりすることができます。
Flaskは以前インターホン遠隔解除装置で使ったことがあるものの、CSSに至っては全く触ったことがなかったので書籍を読んで勉強しながら実装しました。
Pythonフレームワーク Flaskで学ぶWebアプリケーションのしくみとつくり方
- 作者:掌田津耶乃
- 発売日: 2019/08/10
- メディア: 単行本
システムは使いながら改良していくことが予想されたため、メインコントローラはWifi経由でシステムアップデートができるようにしています。逆にバルブコントローラ側はアップデート機能はないため、メインコントローラの指令に従い単純にバルブをON/OFFするだけの機能としました。
現在はディスプレイの画面もこんな感じになっています。
初期バージョンをトレーニングルームに導入してから2~3ヶ月程度立ちましたが、順調に稼働しているようです。
おわりに
今回、低酸素トレーニング用の酸素濃度自動制御装置を開発しました。
複数のデバイスがスマホやディスプレイや外部のバルブとつながるシステムとあり、新しくいろんなことを勉強する必要がありましたがなんとか完成にこぎつけられてよかったです。
もしご覧の方で低酸素トレーニングシステムにご興味がある方は、アスリートネット湘南さんのウェブサイトから問い合わせいただけます。
また、今回の低酸素トレーニングシステムの開発のように、West Gate Laboratoryではこうしたシステムの受託開発もやっています。
ご興味のある方はTwitter(@kmizta)または問い合わせページからご連絡ください。
それではごめんなすって。