自家用車のタコメーターを自作した話

# タコメーター自作

自作のタコメーターを製作したので久しぶりに投稿します。

1. 開発経緯
2. ソフトウェア
3. ハードウェアの選定
4. １号機
5. ２号機
6. 最後に

## 1.開発経緯
![husler.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/b13ae5bc-2f88-479e-acb8-b05d9b3b98ea.png)

私の自家用車はMR41Sハスラーで、メータは１世代昔風の液晶パネルと速度計しか搭載していません。エンジン回転数はメータのスイッチで各種パネルの中から選択できるようになっており、液晶パネル内に表示されます。各種パネルの中にはハイブリットトルク伝達パネルや運転スコアなどあります。エンジン回転数は横スクロールの表示でスポーツカーのようなかっこいい円形のモニターが欲しいなって思ったことがきっかけです。

## 2. ソフトウェア

開発環境
- Arduino IDE 2.3.2
各種ライブラリ、ボードマネージャー
- esp32 2.0.14
- ELMduino 3.3.0
- その他
外部ライブラリ
- [TFT_eSPI](https://github.com/Bodmer/TFT_eSPI)（一号機)
- [LovyanGFX](https://github.com/lovyan03/LovyanGFX)（二号機）

ELMduinoと、esp32はbluetoothで接続する場合は、esp32のバージョンは3以上だと動作しません。
これを解決するのに1か月くらいかかりました。

## 3. ハードウェアの選定

- [esp32](https://akizukidenshi.com/catalog/goods/search.aspx?search=x&keyword=esp32&search=search)
より小型化するためにESP32-C3を使用しようとしましたが、bluetoothを用いることができないためESP32-WROOM-32を使用しました。
この影響でM5等、ESP32-C3を使用しているデバイスは対応できません。
（BLE等でELMduinoを実行することはできません)


- [obd2 (bluetooth対応) ](https://www.amazon.co.jp/OBD2%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%84%E3%83%BC%E3%83%AB-BLUETOOTH-%E8%87%AA%E5%8B%95%E8%BB%8A%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%8A%E3%83%BC-bluetooth%E4%BB%95%E6%A7%98-%EF%BC%8AiPhone%E3%81%AF%E5%AF%BE%E5%BF%9C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93/dp/B07RNHZS44/ref=asc_df_B07RNHZS44?mcid=de5d1acd5d173ed080b5371cf7f1c0f4&tag=jpgo-22&linkCode=df0&hvadid=707464437295&hvpos=&hvnetw=g&hvrand=7138877923069270737&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9176272&hvtargid=pla-757346642119&psc=1&gad_source=1)
デバイス等によっては車を破壊する危険があるらしいです。
自己責任で！この[アプリ](https://play.google.com/store/apps/details?id=org.prowl.torque&hl=ja&pli=1)やスマートフォンのbluetooth等でOBD2デバイスのシリアル番号を把握することができます。

- [GC9A01](https://www.amazon.co.jp/Rakstore-%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4-240x240-GC9A01-%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9/dp/B09W9FYMF7)ハスラーのディスプレイが円形のため綺麗かなと思い購入しました。AliExpressでも安く購入できますが、あまりお勧めできません。
![gc9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/6fd7666f-94db-4e1a-b20d-bbca192083b9.png)

## 4. １号機

### 基盤作成
基盤作成はkicadにて行いました。![kiban01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/81d6255d-ce05-455e-a61c-53977bf71751.png)
各種パーツは秋月電子とマルツで安いものを比べた上で購入しました。
基盤はJLPCBにて依頼。

### ボディ
fusion360にて作成。![meter1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/b886f229-92dc-4339-b8ea-63d78cddb6aa.png)

3dプリントサービスは、JL3DPに依頼しました。

### 完成版

![meter1_完成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/a1858776-9015-443c-821a-e72e51cdc644.png)
![meter1_drive.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/245f7e84-224a-4b5c-b830-a7c97ba1f14c.png)

### 良かった点
- PCB基盤を組み立てることができたこと
- 実際にメータを作り、回転数が表示させるようになったこと

### 反省点
- 汎用基盤としなかったこと。基盤が他用途に使うことができない。

- GC9A01の更新速度が遅い。チラつく。TFT_eSPIのspriteが使用できなかった（おおよそ3~6fps程度)

- フレキシブルケーブルコネクタ、チップ抵抗のはんだ付けが難しい。パッドの大きさを広く、SMDなど大きいものを購入しておく、など組み上げる際の工夫点はいっぱいあった。最終的にフレキシブルケーブルを使わずに配線をビアへ直接つけることで対応した。

- メータのアクリルパネルからポロポロ落ちてしまう。固定方法が甘かった。両面テープは落ちる。

- ESP32-C3での動作を試していなかった。基盤を小さくすることで頭がいっぱいであったためにESP32-WROOM-32との違いの確認をおろそかにしてしまった。￥2000程度のロス。またブレッドボードで上にて、本番端末に等しいハードウェアの実装をする必要があると思います。
![c3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/cb6c2254-3dfc-44f1-99ec-5f05e7250427.png)
![kiban01_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/7a858912-71d0-478d-9a54-8719c369016f.png)
## 5. 2号機

lovyangfxに出会ってしまったことと、１号機は欠点が多かったことで作り直したいと思っていたため、２号機の製作を決意。

### 基盤作成
２号機も基盤作成手段は同じです。


![m2_kiban.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/520013fe-d9ca-4d5f-ab81-5c44770ae8ac.png)


ただ今回は他の用途にも使用できるように汎用基盤としました。
またメータ以外にも連動させるため、基盤同士を並列で接続できるようにしました。


![m2_kiban2_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/3af34de6-5fb9-4f92-8148-1eb7be9005cb.png)


### ボディ
こちらもfusion360にて作成。ただし固定できるようにハスラーのメータのスイッチの間に配置して自重で立つような工夫を凝らしました。

![m2_body1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/25887ef3-fc37-4a3f-b039-d271ba1c1d3d.png)


また基盤設置用のボディをメータ下に設けました。

![m2_body2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/3f669408-1652-42cc-be85-fc7008648e90.png)

## 完成

PCBは、JLPCB。3dプリントサービスは、JL3DPに依頼しました。

![m2_body3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/376139fb-f62f-4691-90cf-24bf7611b1b5.png)

![m2_body4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481626/040b8282-7b2b-436b-a60f-3a5e74764c2e.png)


### 良かった点
- 作りたかったものを実現できた。

### 反省点
- 寸法間違い多かった。左側のサブディスプレイの取付穴の寸法が違う、基盤ボディ用のコネクタ高さの違い等。２か所ほどやすりで削ったことは内緒。
- 配線を通す隙間があるが組付ける際に固定できるような工夫が必要だった。配線が挟んでしまう。
- 表示させるメータのデザイン不足
- esp32にスケッチを書き込むコネクタの行が左右対称になってしまっていたために配線を別途用意しなければならなくなった。
- ちょっと配線が目立つかな....

## 最後に

反省点は事前に確認をしておけば防げたミスかなと。
仕事ではさすがに何度も確認しますが、趣味でもやはり手痛い..pcbや3dデータができても仕様にあっているか寸法や線番号など日を開けて確認する必要あるなと思いました。

またらびやんさん作のLovyanGFXがGC9A01で90fps出力できたことが凄かったです。感動しました。らびやんさんやPowerBroker2氏には最高のライブラリを作成してくれたことに感謝です。

Arduinoのスケッチや3D,PCBデータは要望あれば貼りますの気軽にお問い合わせください！