1 2 3

自転車向け 自作デジタル勾配計② ディスプレイの実装と計測テスト

このエントリーをはてなブックマークに追加
2015/10/20 10:23 am
Blog Category / 日記
 

dgl1
照度が高すぎて写真で見ても眩しい。
前回加速度センサを実装し、次はディスプレイとなるマトリクスLEDを。使用したのはAdafruit Mini 8×8 LED Matrix。自作HUDで使用したLEDに比べて一回り小さい。写真のように白色LEDは照度が高くてムスカになってしまいそうだね。照度調整必須。
失敗に気付く
前回の記事に追記したけど、机の上で加速度センサを傾けると正しく計測されるのは当然として、自転車にのせて水平方向に加速したら水平Gが加算されて正しい角度が計測できなくなるんじゃね?と気付いた。当たり前だろう、のりものは加速するものだから。加速度センサなんだから。
雲行きが怪しくなってきた。
取り敢えず棚上げしてテスト続行
dgl2
自作HUDと同じく、数値を桁ごとに分解してディスプレイに表示させるコードを書いた。照度は最低でもまだ眩しいくらいなので、3Dプリンタでケースを作った際にハーフミラーやスモークアクリルで更に照度を落としたいところ。
同時に、キャリブレーションスイッチも実装した。スイッチを押した時点でのセンサーの角度を基準とし、その後計測した角度に補正をかけるようにしたので、自転車につけた際には面倒な角度調整が不要となる。
これで当初構想した仕組みは実現できた。机上では完璧に動作しているけど、いちおう車にでも持ち込んでテストしてみよう。
車載テスト
dgl3

まぁそりゃ失敗だよな。

停止時は正確に道路勾配が計測できているが、少しでも加速、減速Gが加わると数値が激しく増加してしまう。
角度を図る部品 = スマホなんかに入ってる = 加速度センサだな。という短絡的思考から部品を選んだ自分に説教をしたいところだけど、これで加速度センサの性質を多少なりとも理解できたので結果良し。ということにしておこう。
しかしね、一定速度で巡航している時はちゃんとした数値が出ているんだ。サンプリング回数を増やして平均値を元に角度計算した効果もあり、振動に影響して数字が乱れる事は無かった。これで諦めるのは惜しい。
dgl4
というわけで、次はジャイロセンサを試してみます。

自転車向け 自作デジタル勾配計① 加速度センサーのテスト

このエントリーをはてなブックマークに追加
2015/10/19 10:22 am
Blog Category / 制作ログ
 

dg1
以前、ロードバイク用のデジタル勾配計が売って無いので欲しいな作りたいな〜と書いていたけど、構想を妄想で終わらせないために加速度センサでのテストを開始する。
新たに購入した部品は、加速度センサAdafruit MMA8451 Accelerometer Breakout、arduinoの互換機Adafruit Metro Mini 328の2つ。どちらもスイッチサイエンスで購入した。これに加え、自宅に在庫してあるAdafruit Mini 8×8 LED Matrixとタクトスイッチを使用する予定。毎度Adafruitの製品を選んでいるのは、本家WEBでのチュートリアルが充実している、ライブラリの解説が見やすく、丁寧で理解しやすい。I2C通信により配線が簡単。などの理由から。
Adafruit商品ページ
配線図
dg3
Arduinoと加速度センサの図と名前が一致していないけど気にしないでね
現状はまだマトリクスLEDやスイッチを繋げていないけど、最終的には上記のようにする予定。加速度センサの配線は5V,GND,I2cのSDA,SCLのみで単純。僕みたいなアホにとってはこの簡単さが、凄くたすかる。
電源は単3電池2本をDC-DCコンバータで5Vに昇圧して…など色々考えたけど、以前の妄想編で書いた通り単純にモバイルバッテリーを使用する。
ライブラリのインストール
dg2
上記のスクリーンショットは目的の数値をシリアルモニタに表示しているもの。
まずArduinoに加速度センサのライブラリをインストールする必要がある。Adafruitの解説ページにダウンロードリンクが掲載されているのでダウンロード。Arduino IDEメニューの[スケッチ]-[Include Library]-[Add .ZIP Library]でダウンロードしたZIPファイルを指定すればいい。
コーディング
サンプルソースを実行してみると、シリアルモニタにX,Y,Z軸の移動量、加速度、センサの傾き判定が表示された。
mma.read();
で3軸の数値を計測できる。
mma.x
で計測した値を取出す。xの部分をy、zに置き換えれば各軸に応じた数値を得られる。
サンプルコードそのままの状態ではセンサはループ毎に移動量を計測しているため、数値の変化が敏感すぎて自転車の振動を拾い、まともに計測できなくなる事が想像できる。なので、2000回センサ値を読み取って、その平均値をシリアルモニタへ出力してみると、随分と変化が滑らかになった。
そして肝心の角度取得。センサを-90度〜+90度と傾けてシリアルモニタの数値を見てみると、-2000〜+2000の間で値が変化した。計4000の範囲で数値が変化するので、計測範囲180度とかんがえると、4000 / 180 = 22.22。この数値を係数として、センサの移動量を係数で割ってあげれば角度が計算できる。
最終的には角度を道路勾配に変換したいので、角度をラジアンに変換。角度 * 3.14 / 180 でラジアンに。
三角関数を使って tan(ラジアン)*100 で道路勾配となる。たぶん。もっとスマートな計算方法にしたいところだけど、残念ながら頭の出来がわるいのでこれが限界。
次回の予定
以上、基本となるコードができたので、次はマトリクスLEDを繋げて数字を出力したいと思う。Adafruits製マトリクスLEDの扱いは、DIY HUDの制作でノウハウを得ることができているので問題無く進行できるはず。
追記
書いてから気付いた。そもそも加速度センサだと、自転車につけて加速したら水平方向の加速度が加算されて角度が測れないじゃね?おれアホやん。

Arduinoで自作HUD⑥ Arduinoケースとシールドの制作

このエントリーをはてなブックマークに追加
2015/10/19 9:30 am
Blog Category / 制作ログ
 

huds12
前回の記事で裸のArduinoとブレッドボードでのテストが邪魔臭いと書いた。Arduinoを実際に車内に設置する為のケース、本番の為の配線をほどこす必要が出てきたので制作に取り掛かった。
Arduinoケースの制作
huds3
いきなり完成。
Arduinoケースは3Dプリンタのネタ的にはスタンダードで、thingiverseなどでは多くのデータが公開されているけど、シールドを装着して更に全体を蓋で覆うような形状のデータは見つからなかったので自分で設計、出力した。
huds4
OK、カッチリと収まった。
シールドの制作
huds1
ブレッドボード上の配線をArduino用のシールドに実装。LEDディスプレイ、OBD2中心ユニットの配線、圧電ブザー、抵抗等をハンダ付け。端子を使ってスマートに処理してもよかったけど、材料を持ちあわせていなかったのでコードを直接ぶっ刺した。見た目は悪いけどケースで覆うわけだし、一度設置したら何度も触るような性質の物では無いのでこれで良しとする。
huds2
これで配線が必要なユニットが全て揃った。少しずつ制作を進めているので時間はかかってしまっているけど、脳内に描いた想像をこうして具現化すると俄然楽しくなってくるね。
Arduinoケースの完成図
huds6
蓋を被せてみたら…でけえな。天面が反ってしまったけど、車内の見えない箇所に固定するので、もうこれでいいや。機能的には問題無いし。
huds7
こちら側から配線が出る。
これで自作HUDの制作は終盤へと差し掛かった感。残る課題はコンバイナの設計・出力と、OBD2ユニットの電源を常時電源からアクセサリー電源に切り替える改良といったところ。

Arduinoで自作HUD⑤ LEDディスプレイの車内用マウンタ制作

このエントリーをはてなブックマークに追加
2015/10/18 9:30 am
Blog Category / 制作ログ
 

huds8
前回はLEDディスプレイのカバーを完成させていた。そして今回はそのLEDユニットを車内に固定する為のマウンタをCADで設計し、3Dプリンタで出力した。写真がそのマウント一式。上のアームは車内のサンバイザーに固定するためのパーツで、もう片方はLEDユニットをアームに固定するためのもの。
huds9
Tの字になった凹凸を嵌め合わせる事でスライドし、位置を調整することができる。位置決め後は写真には写っていないけど、下部にM4ボルトサイズの穴にタップを切っていて、ボルトを締めることで固定ができる。
huds10
LEDユニットには固定用の突起があり、これをマウンタの穴に合わせてM4ボルトで締め込んで固定。この箇所もタップを切っている。
huds11
本来は上下の向きが逆
OK。前後位置、角度が調整できるマウンタが完成した。これを車内に持ち込んでみよう。
車内への設置テスト
huds13
サンバイザーと天井のカバーにマウンタの爪を引っ掛けて固定。黒くてゴツくてけっこう目立つな。いかにもDIYといった雰囲気を醸し出している。この後はLEDを点灯し、ミラーやレンズ、アクリルの切れ端に投影させてコンバイナの構想を練った。
huds12
ブレッドボードと裸のArduinoでのテストは取り回しが悪いしショートさせる危険性もあるので、次はArduinoのケースを作るようにする。

  • 人気の記事
  • アーカイブ
  • カテゴリー
  • タグクラウド