阿里云安全(en)

远程AIoT教育科研平台LinkLab(en)

2019-11-22 00:00:00 mimukeji

远程AIoT教育科研平台LinkLab

当前,物联网应用开发过程普遍存在缺少硬件上手难、技术繁杂开发难、场景复杂部署难等痛点。本文介绍远程AIoT教育科研平台LinkLab,初步探讨物联网开发、教学和实训等方面的集成解决方案。平台由阿里巴巴-浙江大学前沿技术联合研究中心(AZFT)杭州开物教育科技有限公司联合研发。

1. LinkLab简介

传统的物联网程序开发需要用户自己选购开发板、传感器等硬件设备并完成设备组装,还要进行驱动程序以及一些链接库的源代码编写,给用户带来麻烦的同时也提高了物联网开发的门槛。那么,能不能让用户在自己家里,只用打开浏览器即可进行物联网远程实验呢?为了解决这些问题,我们开发了LinkLab远程物联网实验系统。那么,LinkLab的优势有哪些?可以主要归纳为三点:

  1. 远程开发。用户无需采购和组装物联网设备,登录平台就可以直接编写自己的代码。平台后台部署了大量物联网设备供用户远程使用。
  2. 快速开发。系统支持包括AliOS Things在内的多个物联网操作系统,这些系统提供了丰富的系统调用和驱动支持。用户可以将注意力集中于应用逻辑上,加快了开发速度。
  3. 在线教学。LinkLab系统提供了丰富的在线教学功能。学员可以在系统上学习物联网相关课程、观看教学视频以及锻炼物联网编程能力。

LinkLab是一个提供线上课程学习、视频播放、实验题做题、场景编程和考试认证的物联网实验平台,包括远程设备和相应的系统软件。其中系统软件部分一共包含以下几个模块:判题系统,负责对用户做题的输出进行判断;设备中心,负责设备管理和烧写;在线编译器,负责用户代码的编译;WebIDE负责代码编辑工作。用户可以用于学习AIoT知识,锻炼编程能力,并且可以根据自己的想法自由进行实验。
AliOS-Things可以结合阿里云物联网平台使用。阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。
本文接下来使用ESP32开发板,使用AliOS-Things的mqtt相关接口,实现数据上云的全链路实验。我们使用WebIDE和阿里云互联网平台完成实验,共分为四步:

  1. 在阿里云物联网平台创建物模型;
  2. 在代码编辑器中编写AliOS-Things应用代码;
  3. 连接远程设备;
  4. 提交代码并等待系统判题结果。

下面通过一个简单的传感数据上云的例子介绍如何使用LinkLab。

2. WebIDE的使用

  1. 登陆LinkLab平台后,在主页可以看到实验列表。
    1.png
  2. 选择实验并点击对应的“开启”按钮,进入WebIDE界面。
  3. 点击左上角的实验名称按钮,打开题目描述信息和代码编辑器。下面对WebIDE页面布局做简单介绍:
  • 红色框内为实验题列表(以“串口打印”实验为例)。
  • 黄色框内为当前实验题题目描述信息。
  • 蓝色框内为实验操作(包括“连接”、“提交”,其中“连接”按钮用来连接远程物联网设备,“提交”按钮用于当代码编写完成时提交运行)。
  • 绿色框内是代码编辑器。
  • 灰色框内是Shell,负责显示系统日志和用户程序输出信息(用户输出为绿色)。
    2.png

接下来在绿色的代码编辑器使用AliOS Things,编写C代码,实现简单的数据读取和上传至物联网平台功能。

3. 阿里云物联网平台配置

在编写代码之前,需要先在阿里云物联网平台中创建产品与设备,并定义产品的物模型,具体可参考阿里云的文档:创建产品与设备为产品定义物模型

  1. 创建产品。新建设备模型,名称任意,分类为“自定义品类”,联网方式为“WiFi”,数据格式为“ICA 标准数据格式(Alink JSON)”。
  2. 在所创建产品的“功能定义”中为设备模型添加“自定义功能”。我们新增四个属性,分别是“温度(CurrentTemperature)”、“湿度(CurrentHumidity)”、“光照度(mlux)”和“判题密钥(key)”。
  3. 新增测试设备。设备三元组信息位于设备详情中,可以直接复制。
    4.png

4. 代码编写

接下来在WebIDE中编写代码。先填写PRODUCT_KEY,PRODUCT_SECRET,DEVICE_NAME与DEVICE_SECRET,这些信息可以在阿里云控制台中找到。程序的大体框架已经给出,只需要填写循环内部的逻辑。
首先要根据题目的要求,确定循环的次数与每一次循环后的等待时间。然后,按照阿里云文档中关于Alink协议上报设备属性的说明,准备好上报设备属性CurrentTemperature和CurrentHumidity的MQTT消息,存入变量msg_pub中(可以考虑使用sprintf)。然后在循环中,使用IOT_MQTT_Publish方法,将消息发送到阿里云物联网平台。AliOS MQTT的相关函数可参考AliOS源代码中对应函数的注释的说明

while (cnt < 5) {
    cnt++;
    int ts = time(0);
    msg_len = snprintf(msg_pub, sizeof(msg_pub), "{"
                            ""id": "123","
                            ""version": "1.0","
                            ""params": {"
                            ""CurrentTemperature": {"
                            ""value": 20.0,"
                            ""time": %d"
                            "},"
                            ""CurrentHumidity": {"
                            ""value": 25.0,"
                            ""time": %d"
                            "}"
                            "},"
                            ""method": "thing.event.property.post""
                            "}", ts, ts);

    topic_msg.payload = (void *)msg_pub;
    topic_msg.payload_len = msg_len;


    rc = IOT_MQTT_Publish(pclient, TOPIC_PROPERTY_POST, &topic_msg);
    
    EXAMPLE_TRACE("packet-id=%lu, publish topic msg=%s", (uint32_t)rc, msg_pub);
    IOT_MQTT_Yield(pclient, 200);

    aos_msleep(1000);
}

保存以上代码。然后点击“连接”按钮,连接远程设备,如果连接成功会在 Shell出现以下提示,可以进行下一步的操作。
5.png
如果在Shell出现连接失败的提示,需要继续等待,直至连接成功。连接设备成功后,可以点击“提交”按钮提交代码,系统将自动完成代码的在线编译和远程烧写等工作,程序的执行结果将显示在Shell中。如果编译出错的话,Shell将给出相应的提示:
6.png
判题系统会根据用户程序输出的数据的正确性、输出的次数和时间间隔设定若干得分点,用户可以在最后面看到通过的得分点和具体的得分。
7.png

以下是该实验可能部分错误类型列表。

错误 原因
次数错误 打印次数与要求不匹配
时间间隔错误 打印时间间隔与要求不匹配
消息内容错误 打印内容错误

5. 实验结果

程序显示在Shell中的执行结果,如果程序的输出和期望输出一致,系统会提示“ACCEPT”,否则提示为“WRONG ANSWER”,具体参考以上截图。

程序运行成功后,我们可以登录到阿里云物联网平台,在设备运行状态下查看上传的设备数据。
9.png

6. 总结和展望

本文介绍了如何使用LinkLab物联网实验平台和AliOS Things将传感器数据上传到阿里云物联网平台。由于篇幅有限,LinkLab的更多教育教学功能没能得到充分的展现,未来免费版本、英文版本、考试认证、批量组织实验和自主节点选择等功能将陆续上线,敬请期待!

(en)

阿里云优惠新机+优惠券

本文转载自网络,如有侵权,请联系我们删除。

Home

About

product

success

news

form

bbs

contact

工单(en)

阿里云报价咨询(en)