在当今的现代世界中,无论我们走到哪里,我们周围都有很多电子设备。但是,总而言之,我们一直只有一个人可以随身携带一个设备。是的,这是我们的手机。现在,移动电话已不仅仅是一种用于通讯的设备,它们是我们的相机,它们是我们的地图,它们是我们的购物卡丁车,还有什么不可以?
有了这种功能,使用遥控器控制家庭中的任何电子应用(例如电视,空调,家庭影院等)确实是一个无聊的想法。从舒适的床铺上获得空调的遥控器始终令人沮丧或沙发。因此,在这个项目中,我们将建立一个小的设置,您可以使用它通过使用蓝牙和Arduino的智能手机来控制空调。听起来很有趣吧!我们建一个
所需材料:
- Arduino Mega 2560
- TSOP(HS0038)
- 红外LED
- 任何彩色LED和1K电阻器(可选)
- HC-06
- 面包板
- 连接线
工作方法:
我们家里用来控制电视,家庭影院,空调等的所有遥控器均在IR Blasters的帮助下工作。一个 IR发射 不过是一种红外线发光二极管可能BLASTER通过重复脉冲的信号;该信号将被电子设备中的接收器读取。对于遥控器上的每个不同按钮,将发出一个唯一的信号,在接收器读取之后,该信号将用于执行特定的预定义任务。如果我们能够读取来自遥控器的信号,则可以在需要执行特定任务时使用IR LED模仿相同的信号。以前,我们已经为通用红外遥控器和自动交流温度控制制造了一个IR Blaster电路。
甲TSOP是IR接收器,可用于从遥控器传来的信号进行解码。我们将使用此TSOP解码来自遥控器的所有信息,并将其存储在Arduino上。然后,使用该信息和IR LED,我们可以在需要时从Arduino重新创建IR信号。
先决条件:
对于此Arduino蓝牙控制的AC项目,请确保您拥有Arduino Mega,而不是其他任何版本的Arduino,因为代码量很大。使用此链接安装IR Remote Library以便与TSOP和IR Blaster一起使用。
交流遥控器的工作方式:
在我们进入项目之前,请花一些时间,并注意您的交流遥控器的工作方式。 与电视,DVD红外遥控器相比,交流遥控器的工作方式略有不同。遥控器上可能只有10-12个按钮,但是它们将能够发送许多不同类型的信号。这意味着遥控器不会每次都为同一按钮发送相同的代码。例如,当您使用向下按钮降低温度以使其达到24°C(摄氏度)时,您将获得带有一组数据的信号,但是当再次按其将其设置为25°C时您将不会得到相同的信号。数据,因为温度现在是25,而不是24。类似地,25的代码也会因风扇速度,睡眠设置等的不同而有所不同。 。
另一个问题是每次按下按钮时要发送的数据量,普通遥控器可以发送24位或48位,但是 AC遥控器最多可以发送228位, 因为每个信号都包含许多信息,例如温度,风扇速度,睡眠时间,Swing风格等。这就是为什么我们需要Arduino Mega才能提供更好的存储选项的原因。
电路图和说明:
幸运的是,这款手机控制空调的硬件设置非常简单。您可以简单地使用面包板并进行如下所示的连接。
下表也可以用于验证您的连接。
序号 |
组件引脚 |
Arduino引脚 |
1个 |
TSOP – Vcc |
5伏 |
2 |
TSOP –地名 |
nd |
3 |
TSOP-信号 |
8 |
4 |
红外LED –阴极 |
nd |
5 |
红外LED –阳极 |
9 |
6 |
HC-05-Vcc |
5伏 |
7 |
HC05 –地精 |
地面 |
8 |
HC05 – Tx |
10 |
9 |
HC05 –接收 |
11 |
连接完成后,其外观应如下图所示。我用面包板整理过东西,但您也可以将公对母线直接连接所有组件
解码交流遥控信号:
控制AC的第一步是使用TSOP1738解码AC遥控器IR代码。按照电路图所示进行所有连接,并确保已安装所有提到的库。现在打开示例程序“ IRrecvDumpV2 ”,该程序可以在 文件->示例-> IRremote-> IRrecvDumpV2中找到 。
int recvPin = 8; IRrecv irrecv(recvPin);
由于我们的TSOP连接到引脚8,因此将行号9更改为int recPin = 8,如上所示。然后将程序上传到您的Arduino Mega并打开串行监视器。
将遥控器指向TSOP,然后按任意按钮,对于每个按钮,按其各自的信号将由TSOP1738读取,由Arduino解码并显示在串行监视器中。对于遥控器上的温度变化,您将获得不同的数据。保存此数据,因为我们将在主程序中使用它。您的串行监视器将如下所示,我还显示了保存复制数据的Word文件。
屏幕截图显示了用于将AC遥控器的温度设置为26°C的代码。根据您的遥控器,您将获得不同的代码集。类似地,复制所有不同温度水平的代码。您可以在本教程末尾提供的Arduino代码中查看所有空调遥控器IR代码。
Arduino主要程序:
在完整的主Arduino的程序可以在这个页面的底部,但你不能使用相同的程序。您必须更改我们刚刚从示例草图获得的信号代码值。在Arduino IDE上打开主程序,然后向下滚动到下面显示的该区域,在该区域中必须用为远程获取的值替换数组值。
请注意,我使用了10个阵列,其中两个用于打开和关闭AC,其余8个用于设置不同的温度。例如,Temp23用于在AC上设置23 * C,因此请使用该阵列中的相应代码。完成后,您只需将代码上传到Arduino。
我们需要为此项目导入两个库。一个是我们刚刚添加到Arduino的 IRremote 库,另一个是内置的软件串行库,可帮助我们使用蓝牙模块。
#包括
接下来,我们在针脚10和11上初始化蓝牙模块,然后使用一个名为irsend的对象访问该库的所有IR功能。
SoftwareSerial BT_module(10,11); // RX,TX IRsend irsend;
接下来是非常重要的代码行。这是控制AC的信息所在。下面显示的是我的交流遥控器,您应该已经在上一步中获得了它。
接下来,在 void setup 函数中,我们初始化两个串行通信。一种是9600波特率的蓝牙,另一种是57600波特率的串行监视器。
void setup(){BT_module.begin(9600); // BT适用于9600 Serial.begin(57600); // Serial Monitor工作儿子57600}
在我们的 无效循环 (无限循环)中,我们检查蓝牙模块是否接收到任何东西。如果收到任何信息,则将该信息存储在变量 BluetoothData中 。
while(BT_module.available())//如果数据即将到来{BluetoothData = BT_module.read(); //读取并保存它Serial.println(BluetoothData); //将其打印在串行上以进行测试}
蓝牙接收到的信息将基于我们将在下一步中安装的Android应用上按下的按钮。收到信息后,我们只需要触发相应的IR代码,如下所示
如果(BluetoothData =='2'){irsend.sendRaw(Temp23,sizeof(Temp23)/ sizeof(Temp23),khz); delay(2000); //发送信号以设置温度23C}
在这里,如果收到代码“ 2”,我们必须将AC的温度设置为23°C。同样,我们具有从0到9的代码来执行AC的所有基本控制功能。您可以在本页尾参考完整的arduino代码。
安装Android应用程序:
智能手机控制的空调的最后一步是安装Android应用程序。此项目的Android应用程序是使用Processing Android Mode创建的。处理是为嵌入式项目创建.EXE文件或APK文件的绝佳工具。与Arduino一样,它是一个开源平台,因此完全免费下载使用。
如果您不想深入了解它,只需在zip文件中从此处下载APK文件,然后直接将其安装在手机上即可。打开应用程序,您将获得如下图所示的屏幕,然后您可以继续进行下一步,并喜欢使用该项目。但是,如果您想调整应用程序的程序以使其适合您的需要,那么您可以继续阅读。
可以从此处下载用于处理代码的完整程序文件。此Zip将具有应用程序使用的代码和图像源。打开代码后,您可以调整以下几行以使其适应您的需要。
如前所述,处理类似于Arduino。因此它也具有 void设置 和 void循环 (此处为draw)功能。在 void setup 功能内,我们将指示手机的蓝牙连接到Arduino的蓝牙。我的设备名称是“ HC-05”,因此我的代码行是
bt.start(); //开始监听BT连接bt.getPairedDeviceNames(); bt.connectToDeviceByName(“ HC-05”); //连接到我们的HC-06蓝牙模块
接下来,在 load_buttons() 函数中,您可以绘制任意数量的按钮。我已经绘制了10个按钮,如应用程序所示。接下来是 read_buttons() 函数,该函数用于检测您触摸的是哪个按钮。每个按钮都有特定的颜色,因此当用户触摸屏幕时,我们会检查他触摸过的颜色并确定他触摸过的按钮。甲示例代码创建一个按钮并选择它基于颜色显示在下面
填充(255,145,3); rect(宽度/ 2-宽度/ 4,高度/ 2,宽度/ 4,高度/ 12); 填充(255); text(“ 25C”,width / 2-width / 4,height / 2); //如果是(color_val ==-13589993){button data = {'0'}; bt.broadcast(data);}
行“字节数据= {'0'};” 是一条非常重要的路线。在这里,我们决定必须通过蓝牙将哪些代码发送到Arduino。在这里,如果按下此按钮,字符“ 0”将从蓝牙发送到Arduino。同样,我们可以为不同的按钮发送不同的字符。然后可以在Arduino端对这些字符进行比较,并可以采取相应的措施。
继续研究代码,如果您有任何疑问,请通过注释部分与我联系,并会尽我所能帮助您。
手机控制的交流电的工作:
准备好硬件,Arduino代码和android应用程序后,就可以享受输出了。将Arduino代码上传到您的硬件,并将其面对您的AC。现在打开手机上的android应用程序,如果一切正常,您应该看到“ Connected to:device_name(某些代码) ”,如下所示
现在,只要按一下Android应用程序上的任何按钮,它就会触发AC上的相应操作,就好像您使用的是遥控器一样。您可以通过修改代码添加所需的任意数量的按钮,甚至还可以根据您的室温或状态自动执行AC。检查完整的Arduino代码和下面的视频。
希望您喜欢这个项目并理解其中的概念。与往常一样,如果您在进行这项工作时遇到任何问题,则可以使用论坛向您发布问题并解决它们。
可以从此处下载用于安装Android应用程序的APK文件。