仕事に最適な車環境を実現するため、モニタリングを実施したい。というわけで、車内環境センサーを開発した

発端

自家用車をオフィスとして活用すると決めた際、真っ先に気になったのが、高低温・高湿のような車内環境の悪化にどれだけ耐えられるのだろうか、ということだった。

春や秋などの過ごしやすい季節はまだしも、高温多湿な夏場、低温となる冬場などに対策無しで挑むと、下手をすれば死ぬことになりかねない

また、そもそもの発端である「タバコを吸いながら仕事をしたい!」という要件について、それがどれだけ車内の空気を悪化させるのかについても調査を行う必要がある。

できれば、環境センサーのモニタリング結果に応じ自動的に排気ファンが回ったり除湿器が動いたり、女の子の声で「空気が汚れていますよ。タバコの吸いすぎには注意してくださいね!」とか言われたい。

というわけで、車内の環境を調査するためのセンサーを開発することにした。

車内環境センサー・プロトタイプの開発

要件

  1. 今後のシステム拡張を鑑み、出来合いのものではなく、独自センサーを開発しておく
  2. まずは最低限の要件として温度・湿度・煙の状態をモニターする
  3. データロギング、トリガーの設定などは、現段階では行わない
  4. モニター結果は随時ディスプレイで確認可能とする

プロトタイプ

オフィスに転がっているArduino互換機・センサー・LCDディスプレイを使用することとした。こういう「とりあえずやってみよう」みたいなことを実行する際には、Arduinoは非常に取り回しが良い。
使用した部品は以下の通り。

  • Arduino micro互換機
  • 温湿度計センサー DTH11
  • ガスセンサー MQ-2
  • LCDディスプレイ 1602A
  • LCDディスプレイI2C接続用基板 LCM1602IIC

ソースコード

Arduinoのライブラリからサンプルコードを探し、それを適当に切り貼りして作成した。一応動くが、あまり参考にしないでいただきたい。追加開発の際に見直す予定だ。

//DHT11 温湿度センサモジュールを使い温度、湿度を測定
//MQ2 煙センサーを使い煙の量を測定
//1602A LCDディスプレイに結果を表示

//宣言 DHT11部
#include “DHT.h” //ライブラリインクルード

#define DHT_Pin 8 //DHT11のDATAピンを定義
#define DHT_Type DHT11 //センサの型番定義 DHT11

DHT dht(DHT_Pin, DHT_Type); //センサ初期化
//宣言 MQ2部
#define Analog_Pin 2 //MQ2のAnalogピンを定義

//宣言 1602A部
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);

/* 計測値設定 */
float humidity = 0.0f; //湿度
float tempC = 0.0f; //摂氏温度
float discomfortIndex = 0.0f; //不快指数
// 計測値 煙センサー
int smokeV; //煙センサーのアナログアウト値

void setup() {
Serial.begin(9600); //シリアル通信のデータ転送レートを9600bpsで指定。bpsはビット/秒。
dht.begin(); //温湿度センサー開始
// LCD開始
lcd.init();
lcd.backlight();
}

void loop() {
delay(1000); //1秒待つ データの読み出し周期1秒以上必要。
humidity = dht.readHumidity(); //湿度の読み出し
tempC = dht.readTemperature(); //温度の読み出し 摂氏

delay(1000); //1秒待つ

smokeV = analogRead(Analog_Pin); //煙センサーの読み出し

/* 読み取れたかどうかのチェック */
if (isnan(humidity) || isnan(tempC)) {
Serial.println(“Read failure!”);
return;
}

/* 不快指数計算 */
discomfortIndex = 0.81f * tempC + 0.01f * humidity * (0.99f * tempC – 14.3f) + 46.3f;

/* 以下読み取り値の表示 */
Serial.print(“HU: “);
Serial.println(humidity,1);
Serial.print(“TE: “);
Serial.println(tempC,1);
Serial.print(“DI: “);
Serial.println(discomfortIndex,1);
Serial.print(“SM: “);
Serial.println(smokeV,1);

/* LCD表示 */
String sx = zeroPad(3,smokeV
);
lcd.setCursor(0, 0);
lcd.print(“HUM”);
lcd.println(humidity,1);
lcd.setCursor(7,0);
lcd.print(” “);
lcd.setCursor(8,0);
lcd.print(“TEM”);
lcd.println(tempC,1);
lcd.setCursor(15,0);
lcd.println(” “);
lcd.setCursor(0, 1);
lcd.print(“DIS”);
lcd.println(discomfortIndex,1);
lcd.setCursor(7,1);
lcd.print(” “);
lcd.setCursor(8, 1);
lcd.print(“SMO “);
lcd.println(sx);
lcd.setCursor(15,1);
lcd.println(” “);
}

String zeroPad(int numLength, int num) {
/* numをnumLength桁になるようにゼロ埋めしたString型の変数で返す関数
*/
byte minus = 0;
if (num < 0) {
num = abs(num);
minus = 1;
}

String NUM = String(num);
String ZERO = “0”;

if (num == 0) {
for (int i = 2; i <= numLength; i++) {
ZERO.concat(NUM);
NUM = ZERO;
ZERO = “0”;
}
} else {
for (int i = 1; i <= numLength – minus; i++) {
if (0 < num && num < pow(10, i – 1)) {
ZERO.concat(NUM);
NUM = ZERO;
ZERO = “0”;
}
}
}

if (minus == 1) {
String MINUS = “-“;
MINUS.concat(NUM);
NUM = MINUS;
num = -num;
}
return (NUM);
}

雨野 鯰蔵こつこつ総合研究所 主任研究員

投稿者プロフィール

1971年アメリカ合衆国生まれ、千葉県育ち。
魚類、ヘビ類、カエル類、昆虫、巻貝、水生植物、藻類などを食べ、鳥類を食べることもある。
2005年4月、特定外来種として認定を受ける。

この著者の最新の記事

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

ピックアップ記事

  1. 2020-11-8

    車でテレワークするなら、WiMAXとクレードルを導入しよう

    私が、車でのテレワークを開始して9ヶ月が経つ。 テレワークの通信環境としては、WiMAXをメインに…
  2. 2020-11-8

    車でテレワークするならテザリングとWiMAXの組み合わせがベスト

    はじめに 車を移動オフィスとして使用しはじめてから、早くも9ヶ月が経過した。最近では自宅付近で働く…
  3. 2020-9-10

    車内で一日中パソコン仕事ができる電源が欲しい。ポータブル電源の選定と実装を行った結果

    移動オフィスにはポータブル電源が必須 車で移動をしながら仕事をしようと考えた時、真っ先思いつくのが…
  4. 2020-5-18

    仕事に最適な車環境を実現するため、モニタリングを実施したい。というわけで、車内環境センサーを開発した

    発端 自家用車をオフィスとして活用すると決めた際、真っ先に気になったのが、高低温・高湿のような車内…
  5. 2020-5-17

    「移動オフィス実証実験」研究計画書

    I.研究動機・背景 1.健康増進法の一部を改正する法律の施行 …
ページ上部へ戻る