画像処理とか機械学習とか

画像処理や機械学習関連の事について気まぐれで書いていきます。歩行者検出関係が多いと思います。ハリネズミもたまに出現します。

ハリネズミ管理のためのArduinoを使った温度管理システムVer1.0

前回、ハリネズミを見守るためのRaspberry pi 3を用いたネットワークカメラの構築を行いました。こんな感じでiPhoneからも見れます。

f:id:hiro2o2:20160323213535p:plain


今回は、家で眠っていたArduinoを掘り出してきて、ちょっと賢い温度計を作ります。

  • 必要な物

Arduino uno
温度センサ(LM35)
LED(赤と青二つ)
抵抗
ワイヤ
フレットボード
USBケーブルなど

以下のセットで全て手に入ります。

 

家で眠っていて何か使えないかという事が一点と、LM35という温度センサーをraspberry piで使用するためにはAD変換しないと使用できないのがもう一点。
Arduinoはディジタルもアナログもいける子なのでこいつを使います。

 

f:id:hiro2o2:20160323213704j:plain

 配線はこんな感じで行いました。
LM35の温度センサの配線はこんな感じです。

f:id:hiro2o2:20160323213807j:plain

LEDは青と赤を使用し、一定間隔毎に計測した温度を元に、温度が20度より高く30度より低い時はちょうど良い温度なので青色のLEDを点灯させ、それ以外の時は寒すぎるか暑すぎるときなので、赤色のLEDを点灯させます。

ArduinoC言語で書いたソースで制御できるので、手軽に使用できます。
今回のソースコードは以下のようになります。

float a_in;          // アナログ入力値(0〜203)
float temp_c = 0;  // 摂氏値( ℃ )
int red_led = 2;
int blue_led = 3;
void setup(){
  Serial.begin(9600);  // シリアル通信速度
  pinMode ( red_led, OUTPUT);
  pinMode ( blue_led, OUTPUT);
}

void loop(){
  // アナログピンから計測値を取得(0〜203)
  a_in = analogRead(0);
  // 入力値を摂氏に換算
  temp_c = ((5 * a_in) / 1024) * 100;
  // 出力
  Serial.print( temp_c );
  Serial.println('C');

  if(temp_c > 20 && temp_c < 30){
     // 青色LEDを点灯 ( HIGHは電圧レベル )
    digitalWrite( blue_led, HIGH );
    digitalWrite( red_led, LOW );
  }else{
    // 赤色LEDを点灯 ( HIGHは電圧レベル )
    digitalWrite( red_led, HIGH );
    digitalWrite( blue_led, LOW );
  }
 
  // 10s待機
  delay(10000);
}

 

  • 全体図

ArduinoはRaspberry piから給電を行い、動作させます。
後々、部品や環境が整ったらシリアル通信をさせて何かリッチな表示をさせたいと思います。

f:id:hiro2o2:20160323214559j:plain