ホンダ・フリードのナビ下にあるスペースに収まるいい感じの空気質測定器(温湿度+大気圧+CO2計)を作る

電子工作記録
この記事は約6分で読めます。

背景

ホンダ・フリードのナビ下にあるスペース、サイズが絶妙で使いにくいんですよね。
スマホを入れようにも所持している motorola g100 はサイズがでかいので収まりません。

なんとか有効活用できないかと考えていたところ、車内気温を知りたいと思ったところにAliExpressでめちゃ安のOLEDと出会ったので色々センサ乗っけて色々表示できるやつを作ってやろうと思いました。

概要

空気質測定器 is 何?
適切な名称がわからなかったのでそれっぽく名付けてみましたがどうでしょう?

測定する項目は、「気温」「湿度」「大気圧」「二酸化炭素濃度」
温湿度は言わずもがな。
二酸化炭素濃度は内気循環でエアコン運転した場合の換気目安にする目的です。
大気圧は特に用途はありませんが、山等で標高の変化に合わせて値が変わるのがちょっとおもしろいかな程度です。

センサは「ENV_III」と「MH-Z19C」を使います。秋月で購入。
ENV_III は QMP6988 と SHT31 を内包していてコレ一つで「気温」「湿度」「大気圧」が計測できます。

ENV_III の接続用にコネクタも購入しておきます。

OLEDはAliExpressで購入。当時の価格は1個あたり送料込で \211
4つまとめて購入すると送料が膨れ上がるので、3個と1個で分けて注文しました。
(その代わりに到着がとてつもなく遅くなる)

制作中に2つ壊してしまったので追加で購入。こちらは1個あたり送料込で \225
急いでいたのと予備も兼ねて6個注文しました。
上とは液晶の付いている位置や基板サイズが絶妙に違いますが、制御は同じです。

マイコンですが、以前まとめて購入した STM32F103 は、I2Cが1本しかないので STM32F411 を買いました。
送料込で \514
わりかし安い方ですが1個だけ購入。

一通り部材が揃ったので制作に入ります。

制作

STM32F411 は I2Cが3本ありますがOLEDはアドレス設定ができませんので、そのままではI2Cが足りません。
MH-Z19C(CO2センサ)はUARTですが、
QMP6988(気圧センサ)はアドレスが 0x70、SHT31(温湿度センサ)は 0x44、OLEDは 0x78 x 4つ
ということで、普通に繋ぐと最低でもI2Cが4本必要になります。

そこで、FETを使って信号線を電気的に切断し、2本のI2CでOLED 4つを制御します。
使用したFETは、Panjit製 SS138 50V300mA。秋月で25個入で \100
以下のような回路で信号線を分岐します。

I2C分離回路

GPIOA15がHの時はI2C1がOLED1へ、I2C3がOLED2へ、
GPIOB15がHの時はI2C1がOLED3へ、I2C3がOLED4へ、信号が有効になります。

趣味の工作なので動けりゃいいんだよくらいのノリでかなり適当な回路で、
また、初期化時は全部同じコマンドを投げるので両方のGPIOをHにしていまとめて送っていますが、確証はとっていないのでお仕事ではやめたほうが良いと思いますのでご注意ください。

パネル部は3Dプリンタで制作します。
プリントと合わせ込みを4回ほど繰り返して最終的にいい感じに収まるものができました。

下写真は試作品の運用テスト。
下2つのOLEDは逆差しで半導体の香ばしい煙を出してしまったので追加注文中。
とりあえず測定4項目を4つのOLEDに納めるような表示にしています。

↑CO2の4桁目は考慮忘れていたのでバグってます。。。

仮運用してみて判明した問題点がありました。

まず、想定以上にスペースが狭い。
上写真からも分かるように基板類が収まらず閉じきれていません。

そしてこのスペース、ナビの発熱の影響で長時間つけていると結構暖かくなります。
温湿度センサの通気孔は前に出してありますが、センサの筐体も温められて実際より高い温度が表示されてしまいます。

OLEDも最初は基板のピンソケットへの差し込み方式でしたが、いざ組み込もうとしたら基板が大きくてスペースに収まりませんでした。スペース削減のため、配線に変更します。
またストレートピンでは嵩張るのでL字ピンヘッダに付け替えてスペースを稼ぎます。

ピンヘッダのプラスチックを外して
ピンを外してハンダを除去してから
L字ピンヘッダを付ける

配線するとこんな感じになります。
OLEDの基板の色が違うのは後で発注した別のOLEDです。前述の通りスペックや制御は同じなので混ぜて使います。

稼働テスト。
OLED 4つ用に合わせてフォントや表示位置も変更しています。
スペースの発熱対策としては、温度センサを外に出しました。ちょっと格好悪いですが仕方ない。

回路部分はこんな感じです。
基板を作り直さないレベルで限界まで小さくしたので所々ジャンプワイヤを飛ばしています。

ソースコード

ソースコードを公開しています。
ライセンスはMITとしていますのでいかようにもお使いください。

開発環境は、STM32CubeIDE 1.10.1 です。
OLEDのことを便宜上LCDと書いてます。

設置

かなりギリギリですがなんとか収まりました。
電源は運転席下のヒューズボックスから這わせて取っています。
ナビのパネル外す機会があればそのときに裏から取るようにしようかと思います。

青色がいい具合にイキってる感出て良いですね~

総費用

ピンや配線類は計算が面倒なので省いています。

使用した部品
合計すると \5082 でした。センサが高い

品目価格
STM32F401\514
ENV Ⅲ\1150
MH-Z19C\2480
Groveコネクタ\15
OLED Disp\211 x 2
OLED Disp\225 x 2
3Dプリンタフィラメント(28g)\51

制作過程で犠牲になった部品達

品目価格
OLED Disp\211 x 2
Groveコネクタ\15
3Dプリンタフィラメント(28g)\51 x 3
タイトルとURLをコピーしました