微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 跟着官方学Atom(五)APP无线控制

跟着官方学Atom(五)APP无线控制

时间:10-02 整理:3721RD 点击:

        通过前面4篇对Atom的体验,现在基本上对Atom有了一个全面的认识,而Atom最大的优点就是在线编程,在线上传,丰富的传感器器库,远程云服务等。接下来,通过一个简单的示例,真正实现Atom的无线控制。本示例参考智能灯实例来玩成。


一 添加设备

1 首先登录IntoRobot的官网http://www.intorobot.com/

2 添加设备,在设备展示中,增加新的设备,如下图所示

                              


2 配置,查看设备配置信息,如下图所示



3 APP绑定,通过上面的步骤,就在云端生成了一个新的设备,这时在手机APP端可以查看到,如下图所示,点击右上角,进行绑定,这一步非常重要,不然程序烧录时,不会成功的。



二 代码实现

1 选择在线编程,新增加一个工程,注意此时要选择刚才绑定的设备




2 完善代码,新建工程后,出现如下界面,


3 在代码区,将如下代码复制到代码区

  1. //智能灯控件topic定义
  2. #define LED_CMD_SWITCH    "channel/smartLight_0/cmd/switch"   //开关命令
  3. #define LED_DATA_STATUS   "channel/smartLight_0/data/status"  //开关状态

  4. #define LEDPIN    D13    //定义灯泡控制引脚

  5. void LEDSwitchCb(uint8_t *payload, uint32_t len)
  6. {
  7.     if(payload[0] == '1')
  8.    {
  9.   digitalWrite(LEDPIN, HIGH);   // 打开灯泡
  10.   IntoRobot.publish(LED_DATA_STATUS,"1");
  11.     }
  12.     else
  13.     {
  14.   digitalWrite(LEDPIN, LOW);    //关闭灯泡
  15.   IntoRobot.publish(LED_DATA_STATUS,"0");
  16.     }
  17. }

  18. void setup() {
  19.   // put your setup code here, to run once:
  20.     //初始化
  21.     pinMode(LEDPIN, OUTPUT);
  22.     //接收灯开关命令
  23.     IntoRobot.subscribe(LED_CMD_SWITCH, NULL, LEDSwitchCb);
  24. }

  25. void loop() {
  26.   // put your main code here, to run repeatedly:

  27. }

复制代码


代码简述

    在设备信息中,通过宏定义,定义了led的控制命令路径和数据状态路径,宏名字可以自由取,但路径是固定的

然后定义了控制引脚,在Atom中,引出了32个数字引脚,任意取一个,在此取引脚为13,然后定义了一个回调函数,用来判断APP端传输过来的数据,以便对led作出对应的响应,即数字引脚13输出高电平或低电平在setup函数中,重点调用了IntoRobot.subscribe函数,此函数的详细信息可参见以下链接。个人觉得,在部分的功能,应该是IntoRobot平台使用了MQTT协议,即调用了MQTT协议中的发布与订阅功能。

    有关代码的参考示例,有3个地方:

1 http://wiki.intorobot.com/

2 http://docs.intorobot.com/zh/firmware/

3http://www.intorobot.com/main.html#program/pub/LCD显示模块


三 APP控制

1 在手机端,打开intorobot APP端,注意设备后面右上角的绿色连接标识,表示当前被绑定的设备,即可以操作的设备,点击进入




2 控制led点亮

1)云端控制




2)手机端控制



3)Atom端响应



3 控制led熄灭

1)云端控制




2)手机端控制




3)Atom端响应






PS:

1 设备配置不稳定,正常情况下,很快就可以联网、配置、编译、烧录成功,但有时出现很多问题,可能IntoRobot在调试服务器吧,毕竟每一步操作,都需要连接IntoRobot的云端或服务端

2 如果出现如下错误,说明程序和APP端绑定的设备不匹配




写的很详细,赞

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top