ラベル ラズパイ の投稿を表示しています。 すべての投稿を表示
ラベル ラズパイ の投稿を表示しています。 すべての投稿を表示

2022年12月23日金曜日

自転車のデータ測定(Bluetooth)

 無線(BLE)の速度センサまたはケイデンスセンサをAmazonなどで、よく見かけるようになりました。サイクルコンピュータ用のセンサです。昨年は、磁石を使って測定しましたが、BLEのセンサが使えるか試してみました。

センサは、XOSSの速度・ケイデンス兼用のものです。

XOSS X1 ケイデンスセンサー スピードメーター ワイヤレス ANT + Bluetooth 4.0 

上が売り切れなので参考です。

XOSS VORTEX 自転車 スピード ケイデンス センサー  ANT+ Bluetooth4.0

マイコンは、半導体不足の影響を考えて、Arduinoにしました。SimulinkのハードウェアサポートパッケージにBLEのブロックもあり、比較的簡単に使うことができます。
Arduinoを使う理由は、いずれArduinoをスタンドアロンで動かして、データをPCまたはクラウドに送信するためです。さらに自作サイクルコンピューターとしての利用も考えています。BLEが最初からついているArduinoを使っています。

モデルはとても簡単です。まずはBLEの受信、送信のブロックを適当に配置しました。


設定は、ArduinoがCentral(Client)になります。Scanで自動的に探してくれます。
受信、送信共に同じ設定にしました。送信がないと受信が上手く行かないようです。

Scan Using Arduinoでやると最後にエラーが出たので、Host computerに変えたりしていたら、Peripheral Device にXOSSが自動的に入りました。エラーの原因及び解消の理由は良く分かりません。

見つからない場合は、PCのBluetoothで検索してみるか、MATLABのBlelistコマンドで出てくるか確認するのが良いです。MATLABを使うことで、services または characteristicsの確認なども簡単にできますし、コマンドで接続し値が取れるかの確認も先にしておくと良いと思います。


センサはケイデンスモードに設定し、クランクに固定します。監視と調整で確認します。
クランクを回すと値が変化しました。しかし、この値をどのようにケイデンスに変換するのか分かりません。そして、なぜかセンサを速度モードに設定するとデータが受信できません。一番上の変化しない2というのも何なのか・・・(もう少し調べてみます)



磁石式に比べると配線が不要なので、セッティングも簡単でした。あとは値を変換するだけです。もしかしたら、センサを速度・ケイデンス共用のものではなく別々のものにした方が良いのかもしれません。複数のセンサからデータを取得することにもチャレンジしたいと思いました。
進捗しましたら、またご報告します。

2021年12月19日日曜日

自転車のデータ測定と解析(速度、ケイデンス)

クランクの回転数(ケイデンス)とホイールの回転数との両方を、Simulinkに入力できるようにしました。PCとの接続は、Raspberry pi を使っています。Raspberry piをスタンドアロンで動かすのではなく、監視および調整で動かしています。


センサーは先日購入したリードスイッチ式のものを使っています。黒色棒状の先端付近を磁石が横切ると、リードスイッチが、OFF→ON→OFFになります。





GPIOを2つ使って、2つのセンサーのON,OFFを検出しています。


上がホイールの回転数から計算した速度(km/h)、下がケイデンス(rpm)になります。

固定ローラーで負荷をかけた状態で、自転車を漕ぎました。

真ん中で急激に速度とケイデンスとが上昇していますが、タイヤがスリップした影響です。


ケイデンスは、ホイールの回転数から速度を出すのとは違って、クランクの回転を止めると急にゼロになります。今回は、5秒間センサーの入力が無かったらケイデンスをゼロにしています。一方速度は、ペダルを止めてもホイールが惰性で回り続けるので急にゼロになることはありません(まだ上手くできていません)。

市販のメーターがどのように計算しているか気になります。フィルターで調整しているのでしょうか。

今後ですが、ペダリング時のトルクを取得するセンサーを付けたり、Simulink上に自転車や人間のモデルを組み込むことを考えています。Simulinkにしたのは、各種モデルを組み込みたかったからです。


Simulinkのモデルも参考にダウンロードできるようにしました。

モデルは、急いで作ったもので完成していません。これからブラッシュアップします。

MATLAB Driveのリンク

raspberrypi_I2C_LCD_V_C_20***.***のファイルです。


2021年12月4日土曜日

自転車のデータ測定と解析(回転検出のセンサ)

 回転を検出するためにセンサを買いました。

スピードメータ用の有線のリードスイッチです。最初からこれを買えばよかった気がします。

後輪の回転、クランクの回転を検出するため2つ必要です。

磁石を近づけた感じ問題ありませんでした。こちらの方が感度が高いかもしれません。

簡単に取り外しできるような固定方法を考え中です。




2021年10月2日土曜日

自転車のデータ測定と解析(ホイール回転検出と速度計算)

 リードスイッチの基盤を、ビニールテープで自転車に固定しました。ホイールのスポークには、リードスイッチをON/OFFするための磁石を付けました。磁石は、CC-MC100Wというスピードメーターに付属していたものです(写真右の円形の部品になります)。ホイールが回転して、リードスイッチの近くを磁石が横切るとリードスイッチがON/OFFする仕組みです。



自転車とラズパイとがやっとつながりました。


次は、速度の算出です。

タイヤの周長は、2136mm(700×28C)です。リードスイッチのON/OFF→速度の計算に少し難儀しましたが、何とか速度を算出できました。取り急ぎ作成したモデルは以下のとおりですが、かなり適当に作ってあります。



速度は、以下のようになりました。縦軸が速度(km/h)、横軸が時間(秒)です。
ホイールをフリーにしたままでクランクを回すと速度が上昇し、クランクの回転を止めると徐々に速度が落ちていきます。速度の落ち具合から、ホイールの回転のし易さも確認できると思いました。

時速40km程度を測定するためには、リードスイッチの信号が入るGPIOのサンプリングを0.001秒にする必要があります。例えば、0.01秒だとタイミングによってはONを検出できず、速度の計算に失敗してしまいました。

このようなことは、実際にやってみないと分からないことでした。本来なら、0.001秒より少なくする必要があるのですが、Simulinkのモデルのサンプリング時間を0.001秒より少なくすると、今度はエクスターナルモードだとリアルタイムで動かなくなるようでした。今回は、このままにしておきます。モデルは以前と同様にMATLABドライブで共有しておきました。ファイル名に「V」が追加されているものです。

2021年9月26日日曜日

自転車のデータ測定と解析(回転検出の準備)

自転車のホイールやクランクの回転を検出するための準備をします。

秋月電子でリードスイッチを購入しました。磁石を近づけると接点がONします。この部品は、自転車のホイールの回転数を利用する速度センサに使われているものと同じと思われます。磁石を近づけると、前述の速度センサと同じチッという音がします。

https://akizukidenshi.com/catalog/g/gP-03676/

ラズパイの汎用のIO(GPIO)の一つと3.3V、GNDを使います。

ほかの部品としては、1kΩ程度の抵抗2つが必要です。

検出用の回路は次のとおりで、磁石が近づくとリードスイッチがONになってGPIOに3.3Vが入力され、磁石を離すとリードスイッチがOFFになりGPIOはGNDが入力されます。

3.3V

sw(ON/OFF)

|ー 1kΩ ー GPIO23

1kΩ

GND

作った回路基板です。左にあるのがリードスイッチです。


モデルのブロックを追加して、GPIOの番号を設定するだけです。サンプリングも0.1のままにしています。


エクスターナルモードでリードスイッチのONとOFFとを確認してみました。1がON、0がOFFです。


次回は、自転車にセットして、速度を計算してみたいと思います。
速度は次のように計算します。売られている速度計と同じやり方です。
速度 = タイヤの外周長さ × 単位時間当たりの回転数
モデルもその時にアップロードします。


2021年9月19日日曜日

自転車のデータ測定と解析(LCD表示)

 SimulinkでLCDに文字を表示します。

モデルは、LCDの設定部分とLCDの表示部分とのサブブロック2つがあります。

MATLAB Functionでコマンドを送信する形式にしています。

詳細はモデルを参考にしてみてください。


まず、監視と調整からエクスターナルモードで動かしてみると

約20秒後にLCDの設定が終わり、その後LCDの上段左端に$が表示されます。



モデルは、MATLAB Driveでダウンロードできるようにしました。

https://drive.matlab.com/sharing/cf882d63-7932-4f34-880f-e45a383ef681


2021年9月12日日曜日

自転車のデータ測定と解析(LCD準備)

使用したLCDとI2C変換モジュールについて

LCDはアマゾンにあるものを購入しました。3.3Vのものを買うと、レベル変換を考えなくてよいので楽です。

LCDでつまずいた点ですが、LCDのコントラストが低すぎて表示できているにも関わらず、バックライトのONOFFしかできないと思って途方にくれました。I2C変換モジュールの可変抵抗を動かして調整してみてください。

LCDの電源投入時のリセット前は、8×1の■が表示されます。

HiLetgo® 2個セット DC3.3V HD44780 1602 16x2キャラクタ LCDディスプレイモジュール

HiLetgo 5個セット5V 1602LCD IIC/I2C/TWI/SPIシリアルインターフェイスモジュール


SimulinkでのI2Cの通信について

ラズパイでの解説はあまりなく、Arduinoの解説(@Monzo_N様)を参考にしました。イメージはつかみやすいです。

https://qiita.com/Monzo_N/items/cd65f1bd2cf5374c1206


キャラクタLCDについて

The Electronic Lives Manufacturing様のWEBサイト(以下)で、LCDの基本が良く分かります。

http://elm-chan.org/docs/lcd/hd44780_j.html

LCDは、初期設定をする必要があります。できなくて悩みましたが、結局LCDの基本的な理解が役に立ちました。初期設定ができれば文字の表示は簡単にできます。


SimulinkでのLCDでの表示について

ラズパイの解説は見つかりませんでした。

Cやpythonの中身を見ながら試行錯誤しました。とても参考になったサイトを載せておきます。

I2CアドレスをSimulinkブロックに設定するのですが、以下のWEBサイトに説明がありますので参考にして下さい。

ラズパイでLCD1602の制御(I2C通信、4ビット)(ソロギターのしらべ練習帳様)

Raspberry Pi Python I2C LCD1602表示テスト(JH7UBC様)


今後、作成したファイルを公開していくのですが、MATLAB Driveを使う予定です。

2021年9月3日金曜日

自転車のデータ測定と解析(準備)

 ラズパイにSimulinkモデルを書き込んで動作させるための準備を記載しておきます。

なお、今後ここに少しずつ追記していく予定です。


まず、サポートパッケージをインストールしないといけません。

ここに色々あるのですが、良く分からないと思います。

MathWorksの解説など


英語ですが、動画なので流れがなんとか分かります。

デモのLEDを点滅させるところまで何とかできました。

youtubeの解説


ここから本格的にモデルを作成していきますが、以下のページが最も参考になりました。

新潟大学 工学部電気電子工学科  村松先生が作成したページです。

EmbVision チュートリアル(6)



2021年8月31日火曜日

自転車のデータ測定と解析(はじめに)

 ラズパイ(Raspberry Pi)とSimulinkとを組み合わせて

自転車の各種データの計測を検討中です。

さらに、データ解析ができたらとも思っています。


Simulinkは、MATLABとセットで購入しました。

Homeであれば制限はありますが、かなり安く購入できます。

MATLAB Homeについて(MathWorks)

製品価格(税込)
新規ご購入製品
MATLAB¥17,050
Simulink¥4,939
総額¥21,989

現在、I2CでのLCD表示およびAD変換(電圧入力)ができることを確認済みです。

その他に、シリアル通信(232C)やSPI通信もできました。

作成したSimulinkのファイルも公開するつもりです。

次回は、LCDの表示について書く予定です。