sakuragawa が 2026年01月22日11時01分13秒 に編集
コメント無し
本文の変更
# はじめに こちらの開発物は下記の2名の方々と協力し、共同で制作したものになります!! rsny wagrics 〜〜チルダはコメントとして書いてます。elchikaでの名前これであってる?〜〜 ## そもそもサイクルコンピュータって? サイクルコンピュータとは、サイクリングをより楽しく、快適にするアイテムで、走行中に速度を表示したり、時間を計測したり出来ます!! 要するに
**機能がいっぱい付いたスピードメータ**
**機能がいっぱい付いたスピードメーター**
です お高いやつだと、ナビ機能なども付いていたりして便利です ## 問題提起 そんな自転車を楽しむ人々にとって、いろんなメリットのあるサイクルコンピュータですが、それには課題点もあります。 それは **充電がめんどくさい** ということです。 自転車に乗るたびにいちいち取り外して、充電して、次乗るときにまた持って取り付けて、、、、 なんてやってるうちに面倒になって、せっかく買ったのに使わなくなり、埃を被ってしまいます(※体験談) フル充電でも、何度か長距離で乗っていると、途中で切れてしまうこともあるため、自転車につけっぱなしという訳にもいきません どうにかしてこの問題を解決する方法はないでしょうか ## というわけで 前述した問題を解決するため、我々が開発したのが **自転車で発電した電力でそのまま動く、spresense製のサイクルコンピュータ** です!! spresenseには、 - 低消費電力 - 標準でマルチgnss機能内蔵 という特徴を備えているため、とてもサイクルコンピュータ向きであるうえ, 自転車に発電機を取り付ければ、そのまま電力供給が可能であるという点において、サイクルコンピュータと発電機の相性が非常にマッチしていると考え、開発に至りました!!! # 結果 最初に結果を示します 技術的な詳細などは、後述します。 @[youtube](https://www.youtube.com/watch?v=HrkXN2bcofI) カメラがちょっとぶれていますが、~~ちょっとじゃない~~ 走行中の速度が表示されているのが確認できるかと思います。 また、走行中もずっと発電機の電力だけで動作しています!!! ~~ちゃんとした動画取りたい~~ # 部品 開発に必要な部品は以下となります | 部品名 | 備考 | |:---:|:---| | [spresenseメインボード](https://akizukidenshi.com/catalog/g/g114584/) | サイクルコンピュータ本体の中核となります。 | | [spresense 拡張ボード](https://akizukidenshi.com/catalog/g/g114585/) | 3.3vの出力を出すために採用です | | [Arduino用 ユニバーサルプロトシールド](https://akizukidenshi.com/catalog/g/g107555/) | 基盤の実装に使いました! | | [自転車 (パンゲア ロビンソン)](https://www.amazon.co.jp/PANGAEA-ROBINSON-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E6%8A%98%E3%82%8A%E3%81%9F%E3%81%9F%E3%81%BF%E8%87%AA%E8%BB%A2%E8%BB%8A-%E3%82%B7%E3%83%9E%E3%83%8E6%E6%AE%B5%E5%A4%89%E9%80%9F%E6%A9%9F%E6%90%AD%E8%BC%89-%E3%83%90%E3%82%B9%E3%82%B1%E3%83%83%E3%83%88%E6%A8%99%E6%BA%96%E8%A3%85%E5%82%99/dp/B071F791N8) | 部室内で放置されていたものを使用 | | [自転車チェーン発電機](https://www.amazon.co.jp/dp/B0BVKF6FQ6?ref=ppx_yo2ov_dt_b_fed_asin_title) | デフォルトでusb(直流)が付いていたため、こちらを選択しました | | 5V一定にするための定圧回路 | 発電機から出力された電圧を一定にさせるために必要な回路です。こちらも開発したものになります | # 製作品概要 ## サイクルコンピュータ本体 以下が、制作したサイクルコンピュータ本体の画像になります。  基盤上での部品配置は、次のようになっております!! | 各部品 | 役割 | |:---:|:---| | [Oledディスプレイ](https://akizukidenshi.com/catalog/g/g112031/) | 画面の出力装置 / 小さめですが、3.3vで動作するため、消費電力を抑えたいという観点からこちらの表示装置を採用 | | 左のボタン | 機能切り替えボタン。タクトスイッチです | | 右のボタン | タイマー機能の使用の際に使う、スタート・ストップボタン / その他 | | 右上の赤色LED | 電源ランプ | | 右下のケーブル | 供給されてる電圧の確認用ケーブル | 本体の配線図、および回路図を以下に示します。シールド上に回路を収めるため、シンプルでコンパクトな構造となっております!! 〜〜配線図はる〜〜 〜〜回路図はる〜〜 ## 全体像 自転車に取り付けた際の全体像は以下になります!!  ### 発電機の固定 発電機は、テープを用いて、走行中に動かないように固定しています。 本来であれば発電機に付属の説明書通りに取り付けを行うだけで良いのですが、 使用した自転車が折り畳み式なので小さく、取り付けのスペースが狭いという問題から、位置によっては走行中にペダルと干渉してしまいます:sweat_drops: 見た目を損なってしまうというデメリットがあるため、発電機の固定方法に関しては今後の課題といたします  ### 定圧回路の固定 定圧回路は、保護のために加工したプラスチックケース内に入れ、シートチューブ下部に固定しています。  ### ケーブルの固定 また、発電機から定圧回路、本体に至るまでの電源ケーブルは、 走行の阻害とならないように、自転車のボディの要所で、結束バンドを用いて固定致しました!! 〜〜ケーブル固定の様子の写真を貼る〜〜 ### 本体の固定 サイクルコンピュータ本体は、 - バイク用のスマホホルダー - 卓上スマホスタンド を組み合わせて、走行中に振動が加わっても外れないよう固定しています!!  ## 定圧回路 ### 概要 定圧回路の画像を以下に示します 〜〜定圧回路の画像をはる(写真撮れたら)〜〜 ### 回路図 回路図は以下となります。 〜〜基本は下で説明、ココにも何か説明があれば記載〜〜  ### 原理 〜〜〜〜この辺に回路の技術的な詳細を記載〜〜〜〜〜〜 # 動作の流れ 動作の流れは以下となっています。 1. 自転車を漕ぐと発電機により電圧が生じます。 2. しかし使用した発電機は、標準で6Vを出力するものなので、spresenseの定格電圧である5Vを超えてしまっています。 3. そこで、定圧回路を媒介させることで、5V一定に変換します 4. そして、5Vの安定電圧がspresense、つまりサイクルコンピュータ本体へと供給されます!!  # 機能紹介 サイクルコンピュータに必要な基本的な機能は取り揃えていると思います!! こちらのサイクルコンピュータは、 **3つのモード** があって、左のボタンでモードを切り替えて使用することができます。  例えば、モード1では、1つの画面に速度とタイマーの2つの数字が表示されていて、 2つの機能を1つの画面に集約することで、 **画面の切り替え回数を抑える** ことができます!! ## 画面の見方 表示部分の見方を説明します。 表示部分は下図のようになっております!!!  | 番号 | 説明 | |:---:|:---| | ① | Gnssの状態を示します。「WAIT」となってる時は、Gnssの取得を待っている状態で、取得できたら、「3D」の表示へと変化します:bangbang: | | ② | 上側の数字(機能1)が何を表示しているかを示します。「SPD」が速度、「AVG」が平均速度、「MAX」が最大速度を示します | | ③ | 下側の数字(機能2)が何を表示しているのかをを示します。「Time」がタイマー、「Odo」が総走行距離、「Clock」が現在時刻を表示します | | ④ | 各モードに対応した機能の1つ目が表示されます。画像では、現在の速度が表示されています。 | | ⑤ | 各モードに対応した機能の2つ目が表示されます。画像では、タイマー(ストップウォッチ)が表示されています。 | 続いて、機能の詳細について述べます!! ## モード1:速度&タイマー機能 モード1は速度&タイマー機能になります! 起動時はこの画面が表示されます。 上側に現在の速度、下側にタイマー(ストップウォッチ)が表示されています!!  ### 速度機能 速度機能は、Gnssのvelocityメソッドを用いて取得することで実装しています!!標準では、m/sになっているので、定数をかけて、km/hに変換しています!! ```arduino:速度取得プログラム 速度部分のプログラムをココに記載じゃ〜 ``` ### タイマー機能 タイマー機能は以下のようなプログラムで実装しています!! ```arduino:タイマー(ストップウォッチ)プログラム タイマー部分のプログラムをココに記載じゃ〜 ``` タイマーは起動時から自動で1秒ずつカウントアップされていきます。 左のボタンでストップ・再スタートすることができ、2つのボタンを同時押しすることで、タイマーをリセットすることが出来ます!! 〜〜その様子を動画で出すよ〜〜 ## モード2:平均速度&総走行距離の機能 モード2は平均速度&総走行距離表示の機能になります! 上側に現在の平均速度、下側に総走行距離が表示されています!!  右上の「Odo」というのは、「Odometer(累計距離計測器)」のことです ### 平均速度 平均速度は〜〜どうやって計算してるんだっけ。わかったら書きます!!〜〜 実装部分のプログラムを以下に示します!! ```arduino:平均速度計算プログラム 平均速度のプログラムをココに記載じゃ〜 ``` タイマー機能の際と同様に、2つのボタンを同時押しすることで、平均速度をリセットできます!! ### 総走行距離 〜〜計算方法を書くよ〜〜 実装部分のプログラムを以下に示します!! ```arduino:総走行距離計算プログラム 総走行距離のプログラムをココに記載じゃ〜 ``` 2つのボタンを同時押しすれば、平均速度と一緒にリセットされます。 〜〜余裕があればリセット動作書くよ〜〜 ## モード3:最大速度&現在時刻の機能 モード3は最大速度&現在時刻の表示機能になります 上側に現在の最大速度、下側に現在時刻が表示されています!!  ### 最大速度 〜〜最大速度の実装方法を書くよ〜〜 ```arduino:最大速度計算プログラム 最大速度計算のプログラムをココに記載じゃ〜 ``` 2つのボタンを同時に押せば、最大速度をリセットできます!! ### 現在時刻 現在時刻は、Gnssから直接取得しています!! 速度(座標)よりも取得にかかる時間が短いので、 左上の表示が「WAIT」の状態だったとしても、時刻だけはちょっと早めに取れます!! ```arduino:時刻取得プログラム 時刻取得のプログラムをココに記載じゃ〜 ``` ## その他の機能 その他の機能を紹介します!! ### 全リセット機能 2つのボタンを同時に押して、そのまま長押しすると、画面が一瞬暗転して、再描画された後、 **全ての計測(タイマー、平均速度、総走行距離、最大速度)がリセット** されます!! 〜〜その動画を載せたい〜〜 実装部分は以下となります!! ```arduino:全リセットプログラム 全リセット部分のプログラムをココに記載じゃ〜 ``` ### データ保存機能 計測した値(タイマー、平均速度、総走行距離、最大速度)は、一定間隔でフラッシュメモリに書き込まれるので、電源が落ちてもそれらの値は保持されます!! ですので、リセットしない限りは、これまでの累計を記録しながらサイクリングを楽しむことができます!! 〜〜その様子を動画で載せたい〜〜 実装部分は以下となります!! ```arduino:データ保存プログラム データ保存部分のプログラムをココに記載じゃ〜 さすがに多いか!?? ``` ### 電圧の低下の通知機能(今回は未実装となってしまいました:bow:) 起動に必要な電力が足りなくなってきた場合、右上の電源ランプを点滅させます。 本体の右下にあるケーブルで、電圧の低下を検知できるのですが、 プログラム側では、時間的な関係から未実装となってしまっているので、今後の課題とします。 # Q. 結局、発電機だけでずっと動くの?? ## A. 長時間停止しない限り、おそらく半永久的に動きます!! まず、自転車が停止した状態では、サイクルコンピュータの電源は入っていません。 その状態から、自転車のペダルを回転させると、電圧が生じて、spresenseメインボード、つまりサイクルコンピュータ本体が起動します。 この際、すぐにペダルを止めた場合は、電源もすぐに消えてしまいます(すぐ、といっても数十秒はもちます)。 しかし、**しばらくペダルを回し続けた後に、ペダルの回転を止めた場合には、その分起動し続ける時間も長くなっております。** 〜〜この辺に具体的な検証時間を記載、何秒回して何秒起動し続けたかをグラフで表示〜〜 ですので、通常のサイクリングとして走っていた場合には、多少信号待ちが生じたとしても、電源が切れることは無いかと思われます!! ## 低消費電力にする工夫 今回開発したサイクルコンピュータは、出来るだけ低消費電力になるような様々な工夫を施しております ~~工夫を書く~~ ## Let's riding!! 〜〜余裕があれば実際に1時間ほど乗り続けて検証〜〜 また、開発にあたり何度も試走しておりましたが、これまでに走行途中で本体の電源が落ちるということはなかったため、長時間停止しない限りは、電源が落ちることは無いと考えて良いかと思います!! # 今後の課題 今後の課題としては - 電圧の検知がプログラム上ではまだ未実装 - サイクルコンピュータ本体にケースが無く、基盤がちょっと剥き出し - 明るい場所だと右上の赤色LEDが点いているか、いないかわかりづらい などがありますので、改善していきたいと思います。 また、プログラム次第で今後も機能は追加できるので、普通のサイクルコンピュータにはない面白い機能とか追加できたら楽しそうだなーと思います!!! # ソースコード サイクルコンピュータ本体の全ソースコードです!! ```arduino:ほげhoge.ino 全てのソースコード載せるよ ファイル数多いけど頑張って載せよう ``` # おわりに 我々は、大学のコンピュータサークルに所属しており、 みんなで何か作ろう、となった際にこちらのコンテストを見かけたのが、開発のきっかけでした。 とりあえずやってみようの精神で開発を始めましたが、紆余曲折ありつつも形にすることができて嬉しく思います!! 数ヶ月かけて、皆で協力して1つの物を作り上げるというのは、非常にいい経験になりましたし、得られたものが多くあって、大変ながらもやって良かったと思いました!!