原创 手机app 控制 arduino(w5100)教程(step by step)

2013-3-13 11:21 2570 19 20 分类: 消费电子
   近几日在“极客工坊”上看到这个教程,来自乐为物联。一步一步教你怎么利用arduino+w5100+乐联网开放平台,轻松实现手机app对 arduino 设备的控制。分享给大家。

1 说明

案例说明:使用Arduino+W5100来实现一个乐联网的应用,即通过乐联网手机App控制连接到Arduino+W5100上的LED的开关。
硬件:Arduino UNO W5100 shield
APP:乐联网 APP open.lewei50.com/home/sitecontent/ydkhd
系统平台:乐联网开放平台

2 反向控制硬件连线
硬件连线如下图,将LED灯的两个引脚线连接到Arduino转接板上的端口6和7上面(端口是根据Arduino程序里面自己选择定义的,如果选择其它端口,则硬件连线必须一致连接到相同端口上)。

3 Arduino模板程序获得与修改
3.1 获得arduino 代码
乐联网的相关Arduino代码托管在Github上,地址https://github.com/lewei50/leweiclient, 打开链接,点击Zip下载按钮,将名称为master.zip的文件下载到本地。

下载后解压,打开你电脑里的Arduino IDE所在文件夹里的libraries文件夹,在里面新建一个leweiclient的文件夹,将master压缩包解压缩后LeweiClient-master文件夹里的文件全部拷贝到这个文件夹里。

3.2 修改usrkey
运行Arduino.exe,在顶部菜单File—Examples—Leweiclient里面能看到control和upload,打开control即是反向控制的编程代码。

在执行代码前,首先需要到乐联网(http://www.lewei50.com/)上注册用户名和密码,在主页右上角有注册按钮,点击后填写账号、密码和邮箱以后,再登录到邮箱里面激活账号即可。登录进入系统后,通过点击左边管理菜单下“我的账号”—“设置个人信息”里面可以看到你的userkey,这个userkey是每个用户唯一的。

如上图,这是第一处需要修改的地方将程序里面的define LW_USERKEY后面的数值改成你实际个人账号的userkey。

其它的变量基本不需要修改,解释如下:
LW_GATEWAY:乐联网的配置的网关标识;
MY_NAME:网关名称;
MY_NAME:网关介绍;
my_addr[50]:被控制的Arduino UNO板可以采取由无线路由器DHCP自动分配IP地址的方式来获取IP,也可以采用手动输入的静态的IP地址,如果采用静态IP地址,则这里输入http://静态IP地址/api,如图中,则表示静态的IP地址为192.168.1.221。
port:给Arduino UNO这个网络终端分配的控制端口号(跨网络控制时候有意义);

程序中上面的代码中,如果是“if 0”,则表示不采用静态IP地址的方式,如果是“if 1”,则表示采用静态IP地址,则继续执行下面代码,解释如下:
IPAddress myip:这里需要输入手动配置给Arduino UNO板的IP地址,与前面的my_addr[50]里的IP地址要保持一致;
IPAddress dnsip:这里需要输入与W5100相连接的路由器的DNS的IP地址,查询方法,登录进入路由器配置界面,查看WAN口状态(不同厂商的路由器查询方法不一致,但都能看到WAN口状态)里面的DNS服务器选项。

IPAddress dnsip:这里需要输入与W5100相连接的路由器的IP地址;
IPAddress gateway:这里需要输入与W5100相连接的路由器的DNS的IP地址
3.3 选择不同的控制方式
这里是第二处需要修改的地方,下面看后面的这几行代码,根据具体情况选择网关注册方式:
     lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)((LeWeiClient::isControlled)|(LeWeiClient::internetAvailable)));
   // lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::isControlled));
// lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::none));
   上面的代码其中LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr等变量的定义前文已有叙述。这里的三条语句分别适用于三种不同的场景:

3.3.1不设置控制的情况
如果设置网关不具备反向控制的功能的话,则运行下面语句,其它语句可以注释掉:
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::none)); 运行程序后网关配置如下:

这就表示这种配置下的网关是不可控的。
3.3.2手机与Arduino+W5100在同一网段下
如果控制的手机和Arduino+W5100的IP地址在同一网段下,则运行下面的语句,
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::isControlled));
LeWeiClient::isControlled:配置网关是可控的;
设置后运行该程序后,则在乐联网的管理菜单“我的物联网”的“我的网关列表”点击“编辑”网关后里面可以看到网关的配置情况如下图,可以看到“是否可控”选项已经勾选,但是“公网访问”没有勾选“允许”。

3.3.3手机与Arduino+W5100 跨网段
手机通过公网控制Arduino+W5100则需要运行以下语句:
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)((LeWeiClient::isControlled)|(LeWeiClient::internetAvailable)));其它语句注释,其中LeWeiClient::internetAvailable设置是否允许访问公网。运行程序后网关配置如下:

需要说明的是:如果想要实现跨网段控制,arduino+w5100接入的网络路由器要有公网地址,可以在路由器上面做到Arduino+W5100的NAT映射。(联通基本上符合条件,小区宽带的用户基本上都不符合要求)。NAT映射的设置需要在路由器配置界面里进行配置(一般在“转发规则”里的“虚拟服务器设置”),如下图:

3.4 修改实际的应用代码
这是最后一处需要修改的地方,红色部分是我写的应用代码,可以按照自己的应用编写实际的代码。
这里建立了两个执行器,名称分别为DA和DA2。描述分别为dummy2 和 dummy1。
dummy_act the_act("DA", "dummy actuator", "dummy2");
dummy_act the_act2("DA2", "dummy actuator", "dummy1");
class dummy_act: public LeWeiActuator  
{
   private:char led;   
   public:  
        dummy_act(  
                const char *id,  
                const char *type,   
                const char *name) : LeWeiActuator(id, type, name)  
    {};  
        virtual bool updateValue(char* id,int val)  
        {  
            Serial.print("dev id = ");   
            Serial.println(id);  
            if(!strcmp(id,"DA"))
            {
              Serial.println("handle da routin");  
              
              digitalWrite(ledPin_da, val);
            }
            if(!strcmp(id,"DA2"))
            {
              Serial.println("handle da2 routin");  
                  digitalWrite(ledPin_da2, val);
            }
            Serial.print("update actuator ");  
            Serial.println(val);  
            led=val;  
            return val;  
        }  
        virtual bool getValue(int *val)  
  
        {  
  
            static int i = 0;  
  
            *val = led;  
  
            return true;  
  
        }  
  };  
3.5 通过app来控制arduino
下载乐联网手机App:http://open.lewei50.com/home/sitecontent/ydkhd

同一网段:

安装后使用乐联网的账号密码登录进去,手机和Arduino+W5100在同一网段,选择反向控制,进入反向控制界面,App会自动找到API地址(如果没有手动输入也可以),点击右上角“查找可控设备”,则进入控制界面,如果你的LED灯已经在Arduino板上连线好了,就可以点击可控设备列表的相关设备进行LED亮灭控制了。   

不同网段:


3.6 通过web的控制arduino(需要跨网支持)
如果已经可以完成app跨网段的控制,可以再近一步进行这个通过web控制arduino的实验。为后面制定阶段性任务执行打基础(比如说在web上面定义一个执行计划,每天6点关灯,18点开灯)
添加两个控制设备,缩写分别为DA 和 DA2(与前面建立的两个执行器缩写名一定要一致)

如果一切正常,设备应该显示在线状态(已打开或者已关闭)


4 结束语
以上介绍了乐联网的反向控制Arduino的一个应用,希望能够让大家对乐联网的物联网应用有更进一步的了解,并能借鉴这个应用启发您的思路,一起在乐联网上实现自己的各类创意。后续,我们会推出通过数值的变化来控制设备实现不同的变化的更为复杂的控制方案,尽请期待!

感谢阅读!

更多WIZnet信息请登录:WIZnet官方主页:       http://www.iwiznet.cn/
                      WIZnet企业官方微博:   http://e.weibo.com/wiznet2012

文章评论1条评论)

登录后参与讨论

用户1647523 2015-2-12 15:16

Matrixtsl 开发了一系列电子积木板,同时提供多种单片机:PIC,AVR及ARM搭配使用。其中一款电子积木板,使用了WIZnet产品 W5100 和 WizFi610提供网络连接。 另外,电子积木可以使用IDE开发,将使用流程图的方法(Flowcode)来代替编程语言。

用户1406868 2014-7-8 01:16

不错
相关推荐阅读
用户1647523 2018-01-09 16:09
教你如何通过MCU配置S2E为TCP Client的工作模式
在上两篇文章中分别讲述了通过MCU配置S2E为UDP、TCP Server的工作模式”,相信小伙伴们已经对S2E的基本功能了解了一些,现在就让我们再接再厉、更上一层楼吧:首先我们先了解一下MCU与S2...
用户1647523 2018-01-09 15:53
教你如何通过MCU配置S2E为TCP Server的工作模式
在上一篇文章中讲了“如何通过MCU配置S2E为UDP模式”,相信小伙伴们已经了解了S2E的基本功能,在这一篇中,我们再接再厉,继续学习一下“如何通过MCU配置S2E为TCP Server的工作模式”,...
用户1647523 2018-01-09 14:44
教你如何通过MCU将S2E配置为UDP的工作模式
​​W5500S2E-S1是一款工业级串口转以太网模块,支持TCP Server、TCP Client和UDP三种工作模式,串口波特率最高可达1.152Mbps,并提供配套的上位机配置软件,也可通过网...
用户1647523 2015-12-09 13:53
第四届韩合集成电路技术交流会成功举办
2015年12月2日,第四届韩合集成电路技术交流会在WESTIN酒店深圳世界之窗店顺利举办。本届交流会与会嘉宾主要是韩合集成电路项目的主要领导、驻在深圳的9家韩合IC企业以及相关企业代表,主要围绕...
用户1647523 2015-12-09 13:46
第四届韩合集成电路技术交流会成功举办
2015年12月2日,第四届韩合集成电路技术交流会在WESTIN酒店深圳世界之窗店顺利举办。本届交流会与会嘉宾主要是韩合集成电路项目的主要领导、驻在深圳的9家韩合IC企业以及相关企业代表,主要围绕...
用户1647523 2015-10-16 14:47
WIZnet芯片在智能家居市场的应用
2014年是智能家居和可穿戴设备集中发力的一年。传统家电厂商、互联网企业和智能终端企业都虎视眈眈的盯着这个巨大的蛋糕,初创企业也借助各种众筹平台将自己的新奇创意转换为实际产品并推进市场,各种智能家...
我要评论
1
19
关闭 站长推荐上一条 /2 下一条