电路图和说明: 幸运的是,这个自动空调温度控制项目的硬件设置非常简单。您可以简单地使用面包板并按下图所示进行连接。
下表也可以用来验证你的连接。 序号 | 组件引脚
| Arduino引脚 | 1 | OLED - Vcc | 5V | 2 | OLED - Gnd | GND | 3 | OLED-SCK,D0,SCL,CLK | 4 | 4 | OLED-SDA,D1,MOSI,数据 | 3 | 5 | OLED-RES,RST,RESET | 7 | 6 | OLED-DC,A0 | 5 | 7 | OLED-CS,片选 | 6 | 8 | DHT11 - Vcc | 5V | 9 | DHT11 - Gnd | GND | 10 | DHT11 - 信号 | 13 | 11 | TSOP - Vcc | 5V | 12 | TSOP - Gnd | GND | 13 | 红外LED - 阳极 | 9 | 14 | 红外线 - 阴极 | GND |
一旦连接完成后,应该看起来如下所示。我用面包板来连接,但是你也可以直接使用导线来连接所有的部件。
解码您的空调遥控器信号: 控制空调的第一步是使用TSOP1738来解码空调遥控器的IR代码。按照电路图所示完成所有连接,并确保已经安装了所有提到的库。现在打开示例程序“IRrecvDumpV2”,它可以在File -> Examples -> IRremote - > IRrecvDumpV2中找到。将程序上传到Arduino Mega开发板并打开串行监视器。
将您的遥控器指向TSOP并按任意按钮,对于您按下每个按钮的相应信号,将由TSOP1738读取,由Arduino解码并显示在串行监视器中。对于您的遥控器上的每个温度变化,您将得到一组不同的数据。保存这个数据,我们将在我们的主程序中使用它。你的串口监视器看起来像这样,我也显示了保存复制的数据的Word文件。
屏幕截图显示了我的空调遥控器的温度设置为26°C的代码。根据您的遥控器,您将得到一组不同的代码。同样复制所有不同温度级别的代码。您可以检查本教程结尾给出的Arduino代码中的所有空调遥控IR代码。
主要的Arduino程序: 完整的主要Arduino程序可以在这个页面的底部找到,但是你不能使用相同的程序。您必须更改刚刚从上面的示例框架中获取的信号代码值。在你的Arduino IDE上打开主程序,并向下滚动到下面显示的区域,你必须用你的遥控器获得的数值替换数组值。
请注意,我已经使用了10个数组,其中两个用于打开和关闭AC,而其余8个用于设置不同的温度。例如,Temp23用于设置AC上的23°C,因此请使用该阵列中的相应代码。一旦完成,您只需将代码上传到您的Arduino,并将其放置在您的空调对面,享受Cool Breeze。
代码的说明如下,首先我们必须使用DHT1温度传感器来读取温度和湿度并将其显示在OLED上。这由以下代码完成。 - DHT.read11(DHT11_PIN); //Read the Temp and Humidity
- Measured_temp = DHT.temperature + temp_error;
- Measured_Humi = DHT.humidity;
- // text display tests
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.print("Temperature: "); display.print(Measured_temp);display.println("C");
- display.setCursor(0,10);
- display.print("Humidity: "); display.print(Measured_Humi);display.println("%");
复制代码
一旦我们知道房间的温度,我们只需要将其与期望的值进行比较。这个所需的值是一个常数值,在我的程序中设置为27°C(摄氏度)。所以基于这个比较,我们将设置相应的交流温度,如下所示: - if (Measured_temp == Desired_temperature+3) //If AC is ON and measured temp is very high than desired
- {
- irsend.sendRaw(Temp24, sizeof(Temp24) / sizeof(Temp24[0]), khz); delay(2000);//Send signal to set 24*C
- AC_Temp = 24;
- }
复制代码
测量温度为30°C(因为所需温度为27°C),交流电会被设置为24°C。同样,我们可以创建许多If循环来根据测量的温度设置不同的温度级别,如下所示。 - if (Measured_temp == Desired_temperature-1) //If AC is ON and measured temp is low than desired value
- {
- irsend.sendRaw(Temp28, sizeof(Temp28) / sizeof(Temp28[0]), khz); delay(2000);//Send signal to set 28*C
- AC_Temp = 28;
- }
- if (Measured_temp == Desired_temperature-2 ) //If AC is ON and measured temp is very low than desired value
- {
- irsend.sendRaw(Temp29, sizeof(Temp29) / sizeof(Temp29[0]), khz); delay(2000);//Send signal to set 29*C
- AC_Temp = 29;
- }
- if (Measured_temp == Desired_temperature-3 ) //If AC is ON and measured temp is very very low desired value
- {
- irsend.sendRaw(Temp30, sizeof(Temp30) / sizeof(Temp30[0]), khz); delay(2000);//Send signal to set 30*C
- AC_Temp = 30;
- }
复制代码
自动空调温度控制系统的工作过程: 当您的代码和硬件准备就绪时,将代码上传到您的电路板,您应该注意OLED显示类似的东西。
现在把电路放在空调的对面,你注意到空调的温度是根据房间的温度来控制的。 您可以尝试提高DHT11传感器附近的温度,以检查空调温度是否被控制。
您可以调整程序以执行任何所需的操作; 您所需要的只是您从示例框架中获得的代码。 希望你了解这个自动温度控制器项目,并喜欢制作非常相似的东西。 我知道这里有很多地方比较难懂,但不要担心。只需使用论坛来描述你的问题,这里的人肯定会乐于帮助您解决问题。
本文使用的完整代码:
main.c
(15.25 KB, 下载次数: 181)
|