本帖最后由 lqh 于 2016-3-19 16:58 编辑
问题提出:家里的红外遥控板多。有电视机的,有机顶盒的,还有空调的.........。每个遥控板上的按键也多,但常用的没有几个。如电视机,就是一个电源开关和信号源选择.........。遥控板不好找,找到了不好用——是我们经常遇到的问题,能不能在随身携带的手机上定制一个遥控面板,把家用电器常用的功能都集成上去,一个手机搞定,岂不方便自在!
解决方案:硬件,Arduino+w5100+无线路由器+红外发射二极管。1、Arduino与w5100联接很方便,不在叙述。2、将w5100的网络接口通过网线联接到无线路由器上(本人用的Tenda)。3、将红外发射二极管的正极接到Arduino的数字3脚,负极接地,硬件联接完成。软件,将Arduino设置为网络服务器,网络终端(手机或电脑)在浏览网页时,采用Get的方法向Arduino传输数据,Arduino根据接收到的数据的不同,调用IRremote库向外发射红外信号,以达到控制电器的目的。具体程序如下:
/*
功能:运用联接WIFI网的手机,以浏览网页的方式发射红外信号,用以控制带红外遥控的电器;
用法:首先将手机联接到WIFI,在浏览器地址中输入http://192.168.0.17/?0
注意:本例无线WIFI采用的是Tenda150M的无线路由器,电视机是PHILIPS,机顶盒是ZTE。
*/
#include <SPI.h>
#include <Ethernet.h>
#include <IRremote.h>
byte mac[] = { 0xBB, 0xBD, 0xBE, 0xBF, 0xBE, 0xBD};
IPAddress ip(192, 168, 0, 17);//与无线路由器的地址处在同一网段上
EthernetServer server(80);
IRsend irsend;//红外发射初始化,发射管接Arduino数字3脚
char c;
void setup() {
Ethernet.begin(mac,ip);
server.begin();
delay(1000);
}
void loop() {
EthernetClient client = server.available();
if (client.connected()) {
while (client.available()) {
c=client.read();
if(c=='?'){
c=client.read();
switch(c){
case '1':
irsend.sendRC6(0x1000C, 20);//TV 电源
break;
case '2':
irsend.sendRC6(0x10038, 20);//TV 信号源
break;
case '3':
irsend.sendRC6(0x10058, 20);//TV 输入选择
break;
case 'A':
irsend.sendRC6(0x1005C, 20);//TV 确定
break;
case '4':
irsend.sendNEC(0xFFE21D, 32);//向上键
break;
case '5':
irsend.sendNEC(0xFFD22D, 32);//向下键
break;
case '6':
irsend.sendNEC(0xFF926D, 32);//确定键
break;
case '7':
irsend.sendNEC(0xFF12ED, 32);//向左键
break;
case '8':
irsend.sendNEC(0xFF52AD, 32);//向右键
break;
case '9':
irsend.sendNEC(0xFF32CD, 32);//返回键
break;
case '0'://程序入口处
break;
}
client.println("<html>");
client.println("<head>");
client.println("<title>IR control</title>");
client.println("</head>");
client.println("<body style=\"zoom:300%\">");//放大有利于在手机屏幕上操作
client.print("<table border=\"0\" width=\"AUTO\" align=\"center\"><tr height=\"50\"><td align=\"center\"></td><td align=\"center\"><a href=\"/?4\">TOP</a></td><td align=\"center\"></td></tr>");
client.print("<tr height=\"50\"><td align=\"center\"><a href=\"/?7\">LEFT</a></td><td align=\"center\"><a href=\"/?6\">OK</a></td><td align=\"center\"><a href=\"/?8\">RIGHT</a></td></tr>");
client.print("<tr height=\"50\"><td align=\"center\"></td><td align=\"center\"><a href=\"/?5\">DOWN</a></td><td align=\"center\"></td></tr>");
client.print("<tr height=\"50\"><td align=\"center\"><a href=\"/?9\">RETURN</a></td><td align=\"center\"></td><td align=\"center\"><a href=\"/?1\">TV   POWER</a></td></tr>");
client.print("<tr height=\"50\"><td align=\"center\"></td><td align=\"center\"><a href=\"/?A\">TV   OK</a></td><td align=\"center\"></td></tr>");
client.print("<tr height=\"50\"><td align=\"center\"><a href=\"/?2\">TV   Source</a></td><td align=\"center\"></td><td align=\"center\"><a href=\"/?3\">TV   UP</a></td></tr></table>");
client.println("</body>");
client.println("</html>");
delay(10);
client.stop();
}
}
}
}
|