查看: 187|回复: 0

[原创] LinkSprite IO 的LED控制

[复制链接]

3

主题

1

好友

285

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    开心
    2016-10-11 09:08
  • 签到天数: 30 天

    [LV.5]常住居民I

    爱板会员勋章

    发表于 2016-10-12 12:49:36 |显示全部楼层
    本帖最后由 kebao_1 于 2016-10-13 12:51 编辑

    LinkSprite IO目前是支持RESTful API 的,我们可以通过让LinkNode D1连接到LinkSprite IO,可以对设备实现以下控制:

    • 更新设备的状态信息到 LinkSprite IO
    • 通过 LinkSprite IO 来改变设备的状态


    今天我们来通过LinkSprite IO 控制 LinkNode D1上面的LED

    arduino IDE的环境,我建议大家用傻瓜包,比较省事:
    百度云:傻瓜包168+2.3  密码:xamt

    其中要用的的第三方wifi库:

    https://github.com/tzapu/WiFiManager

    下载zip的压缩包,并在ardhuino IDE 选择 项目=》导入库=》添加库
    将压缩包添加到arduino IDE中

    下来…………………………
    1. 注册并登录 LinkSprite IO
    • 进入 www.linksprite.io,注册一个帐号并登录。
    • 创建一个设备。
    • 进入My Profile 获取“API Key”。


    图1.6.1 获取API key
    • 点击“created DIY device”按钮,进入Create New Device,其中“Device Name”、“Group Name”可以任意,“Device Type”选02(Simple light),点击“Create”按钮,即可创建一个设备。

    图1.6.2 创建一个设备

    点击创建的设备,获取设备的“Device ID”。



    图1.6.3 获取Device ID

    2.编译运行代码
    • 将LinkNode D1与PC相连,打开Arduino IDE,新建一个文件,将其命名为 LinkspriteIO.ino
    • 修改代码中的deviceID和apikey
    • 编译代码并上传
    • 打开串口监视器,查看串口打印信息,并登录www.linksprite.io查看设备的状态信息

    点击Linksprite IO 上的“Light On”和“Light Off”按钮,看LED灯的状态是否有所改变?串口监视器又打印什么信息?

    这就是LED的 LinkSprite IO控制
    不过,在这个教程中缺少一个环节,就是wifi manager库的wifi连接,或者说是LinkNode D1开发板连接互联网

    在将程序烧入开发板上后,会出现一个叫:LinkNodeAP的wifi信号,连接上后进入浏览器10.0.1.1
    中,连接相应的wifi即可

    300px-1-112.jpg



    这里要说明一下程序的流程:

    wifimanager部分:
    1.    WiFiManager wifiManager;
    2.    wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
    3.    wifiManager.autoConnect("LinkNodeAP");
    复制代码
    开发板询问服务器部分:
    开发板程序:
    1. if (client.connect(server,80)) {  
    2.    String  postStr ="{";
    3.          postStr +="\"action\":\"query\",";
    4.          postStr +="\"apikey\":\"";
    5.          postStr += apikey;
    6.          postStr +="\",";
    7.          postStr +="\"deviceid\":\"";
    8.          postStr += deviceID;
    9.          postStr +="\",";
    10.          postStr += "\"params\":";
    11.          postStr += "[";
    12.          postStr += "\"light\"";
    13.          postStr +="]";
    14.          postStr +="}";
    15.     client.print("POST /api/http HTTP/1.1\n");
    16.     client.print("Host: ");
    17.     client.print(server);
    18.     client.print("\nContent-Type: application/json\n");
    19.     client.print("Content-Length: ");
    20.     client.print(postStr.length());
    21.     client.print("\n\n");
    22.     client.print(postStr);     
    23. }
    复制代码
    服务器提供的API:
    Request:
    <code class="json" data-origin="{    &quot;action&quot;: &quot;query&quot;,    &quot;deviceid&quot;: &quot;01ad0253f2&quot;,    &quot;apikey&quot;: &quot;123e4567-e89b-12d3-a456-426655440000&quot;,    &quot;params&quot;: [        &quot;switch&quot;    ]}" style="box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: inherit; color: inherit; background-color: transparent; border-radius: 0px; white-space: pre-wrap;">{    "action": "query",    "deviceid": "01ad0253f2",    "apikey": "123e4567-e89b-12d3-a456-426655440000",    "params": [        "switch"    ]}
    服务器的响应
    开发板程序:
    1. if (request!= NULL)
    2. {
    3.    int index1 = request.indexOf(":{");
    4.    int index2 = request.indexOf("},");
    5.    String param = request.substring(index1, index2 + 1);
    6.    Serial.print("The param is ");
    7.    Serial.println(param);
    8.    if(param.indexOf("off")>0){
    9.        digitalWrite(BUILTIN_LED, HIGH);   
    10.        Serial.println("OFF");
    11.    } else if(param.indexOf("on")>0){
    12.        digitalWrite(BUILTIN_LED, LOW);   
    13.        Serial.println("ON");
    14.    }
    复制代码
    服务器提供的API
    Response:
    <code class="json" data-origin="{    &quot;error&quot;: 0,    &quot;deviceid&quot;: &quot;01ad0253f2&quot;,    &quot;apikey&quot;: &quot;123e4567-e89b-12d3-a456-426655440000&quot;,    &quot;params&quot;: {        &quot;switch&quot;: &quot;on&quot;    }}" style="box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: inherit; color: inherit; background-color: transparent; border-radius: 0px; white-space: pre-wrap;">{    "error": 0,    "deviceid": "01ad0253f2",    "apikey": "123e4567-e89b-12d3-a456-426655440000",    "params": {        "switch": "on"    }}在控制的过程会发现LED的亮灭会有2~3秒的延时,是程序设定如此!!!!!


    总的来说,LinkSprite IO是很不错,简单,易用,但是功能很少,界面也不好看,但是我就喜欢这没花哨的,我尝试使用Blockly,但是对我来有点难度,只能慢慢来啦
    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /5 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-10 16:56 , Processed in 0.304365 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部