一般用什么APP来通过壁挂炉wifi控制apprduino

安卓手机用wifi控制arduino智能家居开发板的方法
查看: 11077|
评论: |原作者: 开源智能家居|来自:
摘要: DomoticHome智能家居控制软件下载:
要用安卓手机控制arduino智能家居开发板,首先要买一张Ethernet Shield(arduino的网络扩展板)。当然,你如果仅仅满足于用蓝牙控制,那采用的技术方案就完全不同
& &DomoticHome控制软件下载:
& &要用安卓手机控制arduino智能家居开发板,首先要买一张Ethernet Shield(arduino的网络扩展板)。当然,你如果仅仅满足于用蓝牙控制,那采用的技术方案就完全不同了。本文讨论的是android通过wifi,控制arduino。
其实,类似的实验我在去年暑假就做过了。那时手机还用t3333,wm的系统,我参照范例,让arduinoHTML代码,实现用网页控制led灯,也挺好,学生很感兴趣。现在换了谷歌第三代手机,android4.0的,当然要试试如何用手机app来控制arduino了。
准备工作:
1、手机要安装 DomoticHome .
2、给Ethernet Shield接上网线,分配ip,写代码。
3、给arduino插上LED灯,我插上的是13口。
我使用arduino1.0,原来的代码是用0022写的,不能运行了。参照1.0的范例,修改几个关键字。如Server server(80)要改为 EthernetServer server(80)等等。下载,运行正常,ping也正常。
接下来打开手机,运行DomoticHome,在Settings里设置好Arduino的IP地址,端口号80,点Sync,出现了如下信息。
点击light,看到了“开锁”和“锁定”的提示了。
但是,不管我点击什么,总是无法正常实现关闭或打开LED的功能。打开串口调试,没有找到问题所在。用浏览器访问,看输出的json代码也正常。
原因在哪里呢?折腾了好久后,终于想起应该去找找Ethernet Shield的原理图,是不是有某些端口被占用了。而后,在某个英文网站上找到了原理图,仔细对照后,才明白能使用的端口有:0-7的数字口和0-5的模拟口。这么重要的信息,为什么从来没有人提醒呢?看来arduino的中文资源还是太少。
顺手把代码修改一下,让参数设置更加方便,直接填写一次ip和端口就可以了。希望对arduino的爱好者有点用。
以下为代码:
// ARDUINO 1.0
// Edit by xiezuoru
//通过domotichome控制arduino,注意:只能使用0-7的数字口和0-5的模拟口。
#include &SPI.h&
#include &Ethernet.h&
#define action_none -1
#define action_out_all 0
#define action_on_light 1
#define action_off_light 2
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 10, 1, 2, 149 };
byte gateway[] = { 10, 1, 2, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server = EthernetServer(80);
// arduino out
int pinOutPlight = 7;
String readString = String(30); //string for fetching data from address
// incoming GET command
String r_pinOnLight = "GET /?out=" + String(pinOutPlight) +"&status=1";
String r_pinOffLight = "GET /?out=" + String(pinOutPlight) +"&status=0";
String r_out_all = "GET /?out=all";
// current action
int current_
void setup(){
&&//start Ethernet
&&Ethernet.begin(mac, ip, gateway, subnet);
&&delay(1000);
&&pinMode(pinOutPlight, OUTPUT);
&&digitalWrite(pinOutPlight, LOW);
&&//enable serial datada print
&&Serial.begin(9600);
&&current_action = -1;
&&//ipstr=String(ip[1]);
&&ipstr=String(ip[0]) + "." + String(ip[1]) + "." + String(ip[2]) + "." + String(ip[3]);
void loop(){
&&current_action = -1;
&&// Create a client connection
&&EthernetClient client = server.available();
if (client) {
while (client.connected()) {
&&if (client.available()) {
& &char c = client.read();
& &//read char by char HTTP request
& &if (readString.length() & 30)
&&//store characters to string
&&readString = readString +
& &//output chars to serial port
& &//Serial.print(c);
& &//if HTTP request has ended
& &if (c == '\n') {
Serial.print(readString);
// ****************************************************
&&if(readString.startsWith(r_pinOnLight))
&&Serial.print("\n ON UP \n");
&&current_action = action_on_
&&else if(readString.startsWith(r_pinOffLight))
& &Serial.print("\n OFF UP \n");
& &current_action = action_off_
&&else if(readString.startsWith(r_out_all))
&&Serial.print("\n ALL\n");
&&current_action = action_out_
&&Serial.print("\n None \n");
&&current_action = action_
// ****************************************************
&&// now output HTML data starting with standart header
&&client.println("HTTP/1.1 200 OK");
&&client.println("Content-Type: text/html");
&&client.println();
char buf[12];
switch(current_action)
case action_out_all:
&&client.print("{\"ip\" :");
&&client.print(ipstr);
&&client.print("\", \"devices\" : [{ \"type\" : \"light\", \"name\" : \"LED\", \"out\" : \"");
&&client.print(pinOutPlight);
&&client.print("\"}");
&&client.print("]}");
case action_on_light:
& &digitalWrite(pinOutPlight, HIGH);
& &client.print("{\"status\" : \"1\" , \"out\" : \"");
& &client.print(pinOutPlight);
& &client.print("\"}");
case action_off_light:
& &digitalWrite(pinOutPlight, LOW);
& &client.print("{\"status\" : \"0\" , \"out\" : \"");
& &client.print(pinOutPlight);
& &client.print("\"}");
& &current_action = action_
// ****************************************************
&&//clearing string for next read
&&readString="";
&&//stopping client
&&client.stop();
刚表态过的朋友 ()
上一篇:下一篇:
Powered by【求教】谁能告诉我arduino yun的定位到底是什么东西?_arduino吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:47,471贴子:
【求教】谁能告诉我arduino yun的定位到底是什么东西?收藏
LZ是个新人,对于arduino yun的定位不是很清楚,一直不知道这他喵的到底是干什么用的这个东西主要是WIFI无线物联网,既然是WIFI就一定是
终端路由器----
终端这样的模型,既一个路由器带着下边的终端。具体来说比如温度感应器、光照感应器、灯牌、摄像头等远端设备通过无线模块具备联网能力,一起接入到一个无线网下,形成这样一个物联网但是arduino yun是把自己定位在什么位置和功能上呢?是路由器吗?因为我看有内置OpenWrt?。但是细一想远端的设备该怎么接入无线网呢?绝对不可能只是传感器和无线模块一连接就可以了,肯定还需要arduino这样的控制板,但是这样的话远端和近端都需要arduino又感觉不太对,难道我组个智能家居系统需要买十几个arduino控制板吗?又或者arduino yun就是这样一个集成无线模块的arduino控制板?但是这样的话又何必内置OpenWrt成一个路由器呢?你能想象一屋子十几个路由器组成一个联网吗?总之我搞不清arduino yun到底是作为中枢路由器还是作为远端的一个带无线联网功能的控制板?
覆盖全国38个城市的服务网点,维修透明看得见!
你可以把Yun看成是一个Arduino板子和一个类似树莓派的linux板子的集成,arduino部分只提供串口,不管联网的事,Linux部分负责连接Ethernet和wifi,yun的独特之处在于一个可以通过arduino直接控制Linux部分的程序的库。至于你要把yun当成路由器或者服务器客户端,取决于你在Linux(用的是OpenWrt )上运行的软件。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 arduino 手机wifi控制 的文章

 

随机推荐