之前宿舍搬到韩国楼,有单独热水供应还不会被查进出,确实像学长说的那样舒坦。不过房间有空调却没风扇,回到宿舍室温 30 多度,被副热带高气压压得无法学习。而离开宿舍后会断电,所以空调自带的定时系统无法利用。于是想用 Arduino 做一个能按时开空调的装置,希望能一回宿舍就享受到 25 度的气温。

接线

  用到的元件有:

  • Arduino UNO R3
  • 2.2kΩ 电阻
  • P2N2222AG 三极管
  • 1N4001 二极管
  • HJR-4102E-L-05V 继电器
  • 杜邦线若干
  • DS3231 时钟模块
  • 充电宝
  • 牛奶盒

除了最后三项,其他都来自从学校借来的 ARDX 套件。

上方黄线接到遥控器温度减键两边

上方黄线接到遥控器温度减键两边

花式飞线

花式飞线

  值得注意的是这里的二极管。这里与继电器并联的二极管称为续流二极管。当电路中的电流增大时,二极管与电流反向,几乎不影响电路。而当电流突然减小时,因为继电器的线圈具有一定电感,会产生感应电动势阻碍电流变化,这个感应电动势甚至可能击穿三极管。这时,续流二极管与线圈构成回路,通过做功消耗掉线圈储存的能量,就保护了其他元件。

程序

  程序如下,DS3231 的库来自 Rinky-Dink Electronics

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <DS3231.h>
DS3231 rtc(SDA, SCL);
Time t;
void setup()
{
    pinMode(2,OUTPUT);
    rtc.begin();
    //rtc.setTime(18, 18, 0);
    //rtc.setDate(15, 9, 2017);
}
void loop()
{
    t=rtc.getTime();
    int time=t.hour*100+t.min;
    if(time==1205||time==1645||time==2230)
    {
        digitalWrite(2,HIGH);
        delay(1000);
        digitalWrite(2,LOW);
        delay(4000);
    }
    delay(1000);
}
2020-09-10 重构博客时吐槽 当年我居然大括号换行,还参数表/二元运算符不加空格,丢人

实测

  每天 12:05、16:45、22:30,装置自动打开空调,我差不多再过 10min 回到宿舍,希望届时气温能低一点。另外 DS3231 自带纽扣电池,停止外部供电不会重置时间,充电宝没电的话取下充电即可,不会影响程序。由于学校禁止在宿舍进行「危险的电学实验」,牛奶盒就派上用场了。

这只是一盒牛奶

这只是一盒牛奶

希望不要引来宿管或拆弹小组。

  最后实测回到宿舍的时候室温只能降到 27°C 左右,但终归比 30°C 凉爽,也算是达到了目标,可以沉迷学习了。