极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16946|回复: 9

根据温度自动开关空调,已成功。【付代码下载】

[复制链接]
发表于 2015-5-7 00:31:55 | 显示全部楼层 |阅读模式
本帖最后由 废墟 于 2015-5-7 23:44 编辑

家有龙猫,那玩意儿太怕热,夏天就要来了,以前都是上班的时候就要把空调打开,琢磨着太费电,于是有了这个小玩意儿。

uno只有一个5v输出口,所以我把温度传感器的供电放在3.3V上,经过测试没有问题,可以正常使用。

需要:
arduino uno
温度传感器DS18B20模块
红外发射模块
9V电池

代码如下,参考了很多人的帖子,不一一致谢。


  1. #include <avr/sleep.h>
  2. #include <avr/wdt.h>
  3. #include <IRremote.h>
  4. #include <OneWire.h>
  5. #include <DallasTemperature.h>
  6. #define ONE_WIRE_BUS 2

  7. volatile byte count = 0;
  8. volatile byte stat = 0;

  9. unsigned int raw_AC_open[74] = {8950, 4350, 700, 1600, 700, 500, 650, 550, 650, 1600, 700, 500, 650, 550, 650, 500, 650, 550, 650, 500, 650, 1600, 700, 500, 700, 1550, 700, 500, 700, 500, 650, 500, 700, 500, 650, 550, 650, 500, 650, 500, 700, 500, 700, 450, 700, 500, 700, 500, 650, 500, 700, 500, 650, 550, 650, 450, 700, 550, 650, 1550, 700, 550, 650, 1550, 700, 500, 700, 500, 700, 1550, 700, 500, 700};

  10. unsigned int raw_AC_close[74] = {9000, 4350, 700, 1600, 650, 500, 700, 500, 650, 500, 700, 500, 700, 450, 700, 550, 650, 500, 650, 500, 700, 1600, 700, 450, 700, 1600, 700, 450, 700, 500, 700, 450, 700, 500, 700, 450, 750, 500, 650, 500, 700, 450, 700, 500, 700, 500, 650, 500, 700, 500, 650, 500, 700, 500, 650, 550, 650, 450, 750, 1550, 700, 500, 700, 1550, 700, 500, 700, 450, 700, 1600, 700, 450, 700};

  11. OneWire oneWire(ONE_WIRE_BUS);
  12. DallasTemperature sensors(&oneWire);

  13. IRsend  irsend;

  14. float maxTemperature = 32.00;
  15. float minTemperature = 27.00;

  16. void setup() {
  17.         sensors.begin();
  18.         Setup_watchdog(9);
  19.         ACSR |= _BV(ACD); //OFF ACD
  20.         ADCSRA = 0; //OFF ADC
  21.         Sleep_avr();//Sleep_Mode
  22. }

  23. void Setup_watchdog(byte time) {
  24.         byte w_time;
  25.         if (time > 9 ) time = 9;
  26.         w_time = time & 7;
  27.         if (time > 7) w_time |= (1 << 5);
  28.         w_time |= (1 << WDCE);

  29.         MCUSR &= ~(1 << WDRF);
  30.         // start timed sequence
  31.         WDTCSR |= (1 << WDCE) | (1 << WDE);
  32.         // set new watchdog timeout value
  33.         WDTCSR = w_time;
  34.         WDTCSR |= _BV(WDIE);
  35. }

  36. ISR(WDT_vect) {
  37.         ++count;
  38. }

  39. void Sleep_avr() {
  40.         set_sleep_mode(SLEEP_MODE_PWR_DOWN  ); // sleep mode is set here
  41.         sleep_enable();
  42.         sleep_mode();                        // System sleeps here
  43. }

  44. void loop()
  45. {
  46.         if (count >= 8) {
  47.                 count = 0;
  48. //-------------------------------
  49.                 digitalWrite(13, HIGH);
  50.                 delay(100);
  51.                 sensors.requestTemperatures();
  52.                 if (sensors.getTempCByIndex(0) > maxTemperature) {
  53.                         irsend.sendRaw(raw_AC_open, 74, 40);
  54.                         stat = 1;
  55.                 } else if (sensors.getTempCByIndex(0) < minTemperature && stat == 1) {
  56.                         irsend.sendRaw(raw_AC_close, 74, 40);
  57.                         stat = 0;
  58.                 }
  59.                 digitalWrite(13, LOW);
  60. //--------------------------------
  61.                 Sleep_avr();
  62.         }
  63.         else {
  64.                 Sleep_avr();  //Continue Sleep
  65.         }


  66. }
复制代码
回复

使用道具 举报

发表于 2015-5-7 09:44:24 | 显示全部楼层
有爱心的达人啊,非常实用的应用。激发了一个想法,要是客厅没人多长时间,就把空调和电视、机顶盒这些东西关掉来省电。
回复 支持 反对

使用道具 举报

发表于 2015-5-7 11:40:50 | 显示全部楼层
顶~~! 参考着做一个玩玩
回复 支持 反对

使用道具 举报

发表于 2015-5-7 21:22:52 | 显示全部楼层
谢谢分享学习一下
回复 支持 反对

使用道具 举报

发表于 2015-5-7 21:23:35 | 显示全部楼层
温度传感器的供电放在3.3V上,我也试过
回复 支持 反对

使用道具 举报

发表于 2015-5-7 22:56:41 | 显示全部楼层
楼主可以用半导体制冷片给龙猫单独做小空调哇,节约电还方便
回复 支持 反对

使用道具 举报

发表于 2015-5-7 23:10:34 来自手机 | 显示全部楼层
楼主,能不能把你可以用的IRremote库和那几个不是自带的库打包发上来的啊?你的空调是通过什么方式获得raw数组的? 我今天试了一个下午都没办法开得空调
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-7 23:24:19 | 显示全部楼层
可恨的大菠萝 发表于 2015-5-7 22:56
楼主可以用半导体制冷片给龙猫单独做小空调哇,节约电还方便

那个工作量太大了。。还是算了吧。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-7 23:25:28 | 显示全部楼层
yuanrongfa 发表于 2015-5-7 23:10
楼主,能不能把你可以用的IRremote库和那几个不是自带的库打包发上来的啊?你的空调是通过什么方式获得raw数 ...


这是全部打包代码,至于发送的开启和关闭空调代码你需要自己根据空调来弄,帖子也很多,我就不重复了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-5-8 12:54:17 | 显示全部楼层
楼主可以买个小冷风机,我家仓鼠就是这样过的。一个月才2度电。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 01:57 , Processed in 0.142809 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表