忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

arduinoでエアコンを動かす

回の記事でリモコンの信号が受信できた。今回はエアコンのリモコン信号を取り込んで
室温の上昇をきっかけに自動起動できるようにしてみた。


赤外線LEDL12170を13ピン 
温度センサー LM35DZのアナログ信号をA0ピンに接続

スケッチはこちら
#define PIN_IR      13
#define DEBOUNCEDELAY 500
float a_in;          
float temp_c = 0;
short ARRAY_HIGHLOW[] = {4440,4444,512,1660,496,560,520,1652,440,1712,520,560,516,572,492,1656,516,568,512,576,500,1644,520,568,456,632,496,1656,512,1652,500,568,512,1652,512,1660,500,568,520,1644,440,1712,520,1648,484,1688,496,1660,516,1644,444,648,492,1656,512,572,492,568,528,560,480,608,492,568,516,568,508,1660,500,1652,524,564,436,648,492,568,520,568,492,568,520,564,520,560,440,648,500,1644,516,1660,496,1656,524,1648,492,1652,524,1676,492,5252,4452,4432,488,1688,492,564,528,1648,436,1708,524,564,484,600,492,1656,524,560,488,600,492,1652,528,560,480,608,512,1632,512,1660,492,568,528,1644,512,1660,492,568,528,1644,480,1672,520,1644,508,1668,492,1660,512,1660,476,588,540,1628,512,572,488,572,528,560,504,584,484,576,544,536,512,1660,492,1660,520,568,476,580,528,560,512,568,492,576,524,564,516,564,476,588,520,1648,512,1660,496,1656,516,1648,500,1660,540,1652,492,
};
void setup()
{  Serial.begin(9600);
  
  pinMode(PIN_IR, OUTPUT);
}
void loop()
{ a_in = analogRead(0);
  
  temp_c = ((5 * a_in) / 1024) * 100;
  
  Serial.println( temp_c );
  
  delay(1000);
  static int s_iButtonState_prev = LOW;
  static unsigned long s_ulTime_prev = 0;
  int iButtonState = digitalRead(PIN_PUSHBUTTON);
  
  if( temp_c>23 )
  { 
    unsigned long ulTime = millis();
    if( DEBOUNCEDELAY < (ulTime - s_ulTime_prev) )
    { 
      sendSignal();
    }
    s_ulTime_prev = ulTime;
  }
  s_iButtonState_prev = iButtonState;
}
void sendSignal()
{
  int iTimeLength;
  unsigned long ulTimeStart;
  
  int iCountHighLow = sizeof( ARRAY_HIGHLOW ) / sizeof( ARRAY_HIGHLOW[0] );
  for( int iIndexHighLow = 0; iIndexHighLow < iCountHighLow; iIndexHighLow++ )
  {
    iTimeLength = ARRAY_HIGHLOW[iIndexHighLow];
    ulTimeStart = micros();
    do
    {
      digitalWrite( PIN_IR, 1 - (iIndexHighLow % 2) );  
      delayMicroseconds(8); 
      digitalWrite( PIN_IR, 0 );
      delayMicroseconds(7);
    } while( iTimeLength > micros() - ulTimeStart );
  }
}
室温が23度以上になると赤外線LEDが働きエアコンを始動させる。
動作確認はガラケーで確認


これでリモコンいらず・・。
と思いきやONはできるがOFFは信号が違うらしく停止はできなかった。
ボタンは同じなんだけど。


出力が高いLEDを使おうとするとラズパイの3.3V出力では少々きつい。このあたりの動きはarduinoの得意とする分野かもしれない。しかしながらなぜか9Vバッテリー電源では動作しなかった。 設備との相性で今後もarduinoとラズパイを使い分けていきたい。







拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30