CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 40591|回复: 40

Cubieboard智能家居让手机语音遥控电视+机顶盒完(花了>1500)

[复制链接]
发表于 2013-8-14 11:43:23 | 显示全部楼层 |阅读模式
本帖最后由 tll 于 2014-2-10 19:44 编辑

cubieboard做智能家居需要无线与电脑、Mac笔记本、Arduino、TP-LINK 703N交互,花的钱数大于1500,那是因为自己没经验啊……现在在这里给大家经验,大家就不用花那么多钱了。
本帖已经进入投票了,大家可以去投本帖哦!
想做智能家居,以下是我使用的方法:
iPhone手机的Siri
              |wifi
          Cubieboard
              |网线
         TP-Link 8xxN(我的主路由,不能刷openwrt)
              |网线
          TP-Link 703N(刷了openwrt的迷你路由)
              |通过USB转串口
           Arduino
              |红外发射
         电视  机顶盒
=============================
我本来有个703N,用这个测试成功,后来坏了,后来买了个水星改的703N,配置比703N还好
开始~
材料:
红外发射LED(这个没分型号,一般是5MM 3MM的)   红外接收管(这个有分型号,我买的是能用的,大家自己上网查查吧)
Arduino(我在智能家居上用的是mega,实际上mega太大了,放在机顶盒那边好像要掉下去一样,大家还是买我的葫芦duino吧,算是帮助我继续开发)
两个路由,一个型号随便,一个要能刷openwrt的,推荐大家买703N,便宜,再不然就是DIR-505,内存和flash比703N大,比703N贵几十块,别说刷dd-wrt,那个rootfs无法写入,重启东西没了
一台iOS device,需要有siri
电视、机顶盒遥控器(采集编码用)
电视、机顶盒(。。。)
Cubieboard(建议买cb1,cb2的话我弄siriproxy老不成功)
还有电源适配器若干,电线若干……

先弄Arduino红外,看:
http://diy.elecfans.com/P/166/752
里面引号改改即可,采集好编码以后呢,往arduino里面放这个程序(编码换成你的):
  1. #include <IRremote.h>                  // 引用 IRRemote 函式库        
  2. IRsend irsend;                          // 定义 IRsend 物件来发射红外线讯号                       
  3. void setup()
  4. {
  5.   Serial.begin(9600);
  6. }
  7.                            
  8. void loop(){
  9. char rd = char(Serial.read());
  10. if (rd == '1'){
  11. irsend.sendNEC(0xAF5E817, 32);
  12. Serial.println("TV open!");
  13. //Open TV
  14. }
  15. if (rd == '2'){
  16. irsend.sendNEC(0x12EEA857, 32);
  17. Serial.println("Up!");
  18. //Up BTN
  19. }
  20. if (rd == '3'){
  21. irsend.sendNEC(0x12EE6897, 32);
  22. Serial.println("Down!");
  23. //Down BTN
  24. }
  25. if (rd == '4'){
  26. irsend.sendNEC(0x12EE48B7, 32);
  27. Serial.println("OK!");
  28. //OK BTN
  29. }
  30. if (rd == '5'){
  31. irsend.sendNEC(0x12EE28D7, 32);
  32. Serial.println("Left!");
  33. //Left BTN
  34. }
  35. if (rd == '6'){
  36. irsend.sendNEC(0x12EEE817, 32);
  37. Serial.println("Right!");
  38. //Right BTN
  39. }
  40. if (rd == '7'){
  41. irsend.sendNEC(0x12EEC03F, 32);
  42. Serial.println("Mute!");
  43. //mute BTN
  44. }
  45. if (rd == 'a'){
  46. irsend.sendNEC(0x12EE708F, 32);
  47. Serial.println("0");
  48. //mute BTN
  49. }
  50. if (rd == 'b'){
  51. irsend.sendNEC(0x12EE807F, 32);
  52. Serial.println("1");
  53. //mute BTN
  54. }
  55. if (rd == 'c'){
  56. irsend.sendNEC(0x12EE40BF, 32);
  57. Serial.println("2");
  58. //mute BTN
  59. }
  60. if (rd == 'd'){
  61. irsend.sendNEC(0x12EE609F, 32);
  62. Serial.println("3");
  63. //mute BTN
  64. }
  65. if (rd == 'e'){
  66. irsend.sendNEC(0x12EE20DF, 32);
  67. Serial.println("4");
  68. //mute BTN
  69. }
  70. if (rd == 'f'){
  71. irsend.sendNEC(0x12EEA05F, 32);
  72. Serial.println("5");
  73. //mute BTN
  74. }
  75. if (rd == 'g'){
  76. irsend.sendNEC(0x12EEE01F, 32);
  77. Serial.println("6");
  78. //mute BTN
  79. }
  80. if (rd == 'h'){
  81. irsend.sendNEC(0x12EE10EF, 32);
  82. Serial.println("7");
  83. //mute BTN
  84. }
  85. if (rd == 'i'){
  86. irsend.sendNEC(0x12EE50AF, 32);
  87. Serial.println("8");
  88. //mute BTN
  89. }
  90. if (rd == 'j'){
  91. irsend.sendNEC(0x12EED02F, 32);
  92. Serial.println("9");
  93. //mute BTN
  94. }
  95. }
复制代码
烧录好以后接上发射LED,然后打开串口工具,输入1 2 3这些数字和字母看看能不能用
如果可以,继续~
然后开703N,直接连接电脑,刷openwrt就不用我说了吧,很简单的
刷好以后,telnet一下路由器,连上网,ip改成192.168.1.4,安装usb驱动和usb的pl2303和cp2102驱动
好了~接下来要建http通信了
哦,对了可以顺便先把cubie的ip设为192.168.1.105,也是固定,我是在路由器里面加了mac地址与ip的绑定,你也可以这样防止冲突
记得修改root密码……修改完后telnet将爆掉,请用ssh
执行:
  1. mkdir /var/www/control/cgi-bin -p
  2. opkg install nano
复制代码
安装个nano,我喜欢的编辑器
在cgi-bin里面新建send.cgi,写上:
  1. #!/bin/sh
  2. echo "Content-Type:text/html"
  3. echo ""
  4. eval `/www/control/cgi-bin/proccgi.sh $*`
  5. echo $FORM_text
  6. echo "$FORM_text" >> /dev/ttyUSB0
复制代码
新建proccgi.sh(这个是我从网上cp的),大家搜索这个sh即可,时间不够就不放地址了
好了后把葫芦板接上703N(转换器用的是pl2303芯片【旧】或cp2102芯片【新】),先说一下,arduino mega是FTDI的串口芯片,直接驱动的话在/dev里叫ttyATH0,而我引出了tx rx vCC gnd到ttl转usb板(pl2303芯片的)
然后在rc.local里加:
  1. uhttpd -p192.168.1.4:81 -h /www/control
复制代码
Then,reboot your device.
接着呢,访问http://192.168.1.4:81/cgi-bin/send.cgi?text=1
如果电视开了,那么你成功了一半
别忘了刷新一下把电视关掉……
至此703N设置完成
接下来玩siriproxy,看我帖子
http://cn.cubieboard.org/forum.php?mod=viewthread&tid=860&extra=
然后以后再写
==以下是老信息==
8 21,又把siriproxy弄好了

加入新浪微博控制器,红外成功

已经花超过1500元了,弄这个真的很花钱啊!!!

然后成功把siri控制电视弄好了,晚上给视频

==========今天无聊焊703N的电路板,把703N给焊坏了…………………………下面作废======================
今天先把703N和arduino的通信弄好了(703N是usb供电,可以用移动电源)
================================Arduino与703N通信=================================
Arduino程序(注释不要管,乱写的):
  1. char a[100];
  2. boolean ac = false;
  3. int led= 13;
  4. // the setup routine runs once when you press reset:
  5. void setup() {
  6.   // initialize serial communication at 9600 bits per second:
  7.   Serial.begin(9600);

  8. }

  9. // the loop routine runs over and over again forever:
  10. void loop() {
  11.   /*while(Serial.available()>0)
  12.   {
  13.     digitalWrite(led, HIGH);
  14.     delay(500);
  15.     digitalWrite(led, LOW);
  16.     delay(500);
  17.     /sprintf(a,"%s%c",a,Serial.read());
  18.     ac = true;/
  19.   }*/
  20.   // print out the value you read:
  21.   /*if(ac&&a!=""){
  22.   Serial.println(a);
  23.   ac = false;
  24.   }*/
  25.   Serial.println("Hello
  26. ");
  27.   delay(1000);
  28. }
复制代码
倒数第三句是发送hello<br />到串口,<br />是html里的换行标签
在703N上:
为了让703N也能移动,特地把703N调成无线接收, 收我tp-link 8xxN的wifi,记得要把以太网IP调成192.168.0.1,否则会冲突,把wifi的ip调成192.168.1.4而不是动态以便使用,另外请记得把防火墙里的入站设置给设为接受
如果没安装pl2303驱动要先安装,
  1. opkg install kmod-usb-serial-pl2303
复制代码
and:
  1. uhttpd -f -h /web -r OpenWrt -x /cgi-bin -p 81
复制代码
/web/cgi-bin/check.cgi
  1. #!/bin/sh
  2. echo "Content-type: text/html"
  3. echo ""
  4. echo ""
  5. echo "data from arduino:
  6. "
  7. cat /tmp/tty
  8. echo ""
  9. echo ""
复制代码
/web/cgi-bin/clear.cgi
  1. #!/bin/sh
  2. echo "Content-type: text/html"
  3. echo ""
  4. rm -rf /tmp/tty
  5. cat /dev/ttyUSB0 > /tmp/tty &
  6. echo ""
复制代码
然后访问
http://192.168.1.4:81/cgi-bin/init.cgi
是空的
关闭窗口,访问
http://192.168.1.4:81/cgi-bin/check.cgi
得到:
  1. data from arduino:
  2. Hello
  3. Hello
  4. Hello
  5. Hello
  6. Hello
  7. Hello
  8. Hello
  9. Hello
  10. Hello
  11. Hello
  12. Hello
  13. Hello
  14. Hello
  15. Hello
  16. Hello
  17. Hello
  18. Hello
  19. Hello
  20. Hello
复制代码
每秒arduino给703N发送一次数据,刷新就能看见
======================================================================

评分

参与人数 1威望 +1 金钱 +1 贡献 +1 收起 理由
hades + 1 + 1 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-8-14 12:05:06 | 显示全部楼层
表示排版太乱了  看着有些糊涂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 12:31:16 | 显示全部楼层
ashwing 发表于 2013-8-14 12:05
表示排版太乱了  看着有些糊涂

还没整好嘛
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 12:36:04 | 显示全部楼层
ashwing 发表于 2013-8-14 12:05
表示排版太乱了  看着有些糊涂

这样好点了不
回复 支持 反对

使用道具 举报

发表于 2013-8-14 15:22:20 | 显示全部楼层
拓扑结构感觉有点复杂,应该还有更简单的结构

(PS: 与我想像中的不太一样)
回复 支持 反对

使用道具 举报

发表于 2013-8-14 16:56:40 | 显示全部楼层
赞一个!期待楼主慢慢能把这个东西填充完整,智能家居是一个很大的东西,要做好每一个模块都需要花很多的时间,现在这个东西蛮热门的,就是国内没几个做的好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 19:16:38 | 显示全部楼层
blessed 发表于 2013-8-14 16:56
赞一个!期待楼主慢慢能把这个东西填充完整,智能家居是一个很大的东西,要做好每一个模块都需要花很多的时 ...

对,wifi与arduino通信弄好了,虽然有点麻烦,不过用路由通信便宜,703N只要100多,arduino的wifi模块要至少200,而且703N是11n的
回复 支持 反对

使用道具 举报

发表于 2013-8-14 20:25:58 | 显示全部楼层
tll 发表于 2013-8-14 19:16
对,wifi与arduino通信弄好了,虽然有点麻烦,不过用路由通信便宜,703N只要100多,arduino的wifi模块要 ...

智能家居可扩展性太强了,控制家电只能算是一些基本的功能,额..........
想科幻点的加个指纹识别,再科幻点,加个语音识别,再科幻点,加个人脸识别...................
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 08:43:43 | 显示全部楼层
blessed 发表于 2013-8-14 20:25
智能家居可扩展性太强了,控制家电只能算是一些基本的功能,额..........
想科幻点的加个指纹识别,再科 ...

这些太科幻了……而且要是出错了咋办
回复 支持 反对

使用道具 举报

发表于 2013-8-15 11:00:43 | 显示全部楼层
出错 就自动启动激光枪 把你突突了
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-26 13:27 , Processed in 0.029320 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部