<arduino>熱中症警報装置作ってみた

なんか最近proにしませんか広告出てくるのでちょっとしてみるか迷い中

はじめに

poolbooyer.hatenablog.jp
poolbooyer.hatenablog.jp
これの続きですが、明日上げます。
コードのブラッシュアップに時間がかかってしまいました。

ということで本編

arduino熱中症警報装置

最近バカ暑いじゃないですか。(なお,今日の仙台の最高気温は24℃の予想)
暑い中生きる中で何に気をつけなきゃいけないのかって熱中症ですよ
熱中症はホントやばいっすよ
ただただ辛いっすよ
もうなりたくないです
そこで、温度の上昇に合わせて警報をするものがあればいいんじゃないかと思いました。

"思いました"
じゃあ作りましょうってことで作りました

目次

  • 制作物の概要
  • 動作の条件
  • 制作したコード
  • 利用しての感想

制作物の概要

こんな感じの動作をします

  • センサから温度を取得
  • 取得した温度に応じてランプが点灯

今回はランプ(LED)を使って簡易表示をするようにしました。
というかこういうタイプのものに正確な数値の表示は不要じゃないかなと思っています。最近の気温が日常的に危険な温度なので数値にしても危機感が生じないのかなと考えています。
ということで今回の表示方法は信号機のような形にしました。

動作の条件

今回の危険度の判定については以下のサイトを参考に基準を設けました。
環境省熱中症予防情報サイト
ここを基準に

警戒する必要がない
緑(青)
警戒
厳重警戒
黄(点滅)
危険
超危険((オリジナル)35℃を超えたとき)
赤(点滅)

という条件で動作を分岐させました。

制作したコード

ということで今回作成したコードは以下のようになってます。

//ピンの定義
int TEMP=5;
//センサの値を格納する変数
int temp_value=0;
//気温条件の定義
int NOMAL=25;
int LEVEL1=28;
int LEVEL2=31;
int LEVEL3=35;
//繰り返しの制御を行う変数
int i=0;
//温度に応じてLEDを変化させる関数
int LED_switch(int *);
int LED_switch(int temp_value){
  //25℃以下のとき
  if(temp_value<NOMAL){
    //緑のLEDを接続したピンをHIGHに
    digitalWrite(9,HIGH);
  //警戒が必要なとき
  }else if(temp_value<LEVEL1){
    //黄のLEDを接続したピンをHIGHに
    digitalWrite(10,HIGH);
  //厳重警戒のとき
  }else if(temp_value<LEVEL2){
    //黄のLEDを点滅させる
    digitalWrite(10,HIGH);
    delay(100);
    digitalWrite(10,LOW);
  //危険なとき
  }else if(temp_value<LEVEL3){
    //赤のLEDを接続したピンをHIGHに
    digitalWrite(11,HIGH);
  //超危険なとき
  }else{
    //赤のLEDを点滅させる
    digitalWrite(11,HIGH);
    delay(50);
    digitalWrite(11,LOW);
  }
  return 0;
}
void setup() {
  //各ピンの設定
  pinMode(TEMP,INPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  //シリアル通信の準備
  Serial.begin(9600);
}

void loop() {
  //温度を取得
  temp_value=analogRead(TEMP);
  //取得した温度から125引くと実際の温度として扱うことができる
  temp_value=temp_value-125;
  //シリアルに温度を送信
  Serial.println(temp_value) ;
  //シリアル通信用待機
  delay(400);
  //1分間同じ温度で扱う
  for(i=0;i<60;i++){
    //LEDを一度すべて消す
    digitalWrite(9,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
    //LED制御部に温度を渡す
    LED_switch(temp_value);
    delay(1000);
  }
}

温度求める式のところはググってみたやつだと74℃とかになってて入ってくるデータをそのままで見て部屋の温度を測るのに使っている温度計との差を求めて使いました。

使っての感想

やっぱぱっと見でわかるの楽でした。
あくまでメイン作業が別である以上見てすぐ状態がつかめるのいいかも知んない