TinyLink: A Holistic System for Rapid Development of IoT Applications Gaoyang Guan, Wei Dong, Yi Gao, Kaibo Fu, Zhihao Cheng College of Computer Science, Zhejiang University Mobi’Com 2017
Background The market of IoT is larger and larger Rapid development is essential for IoT 随着现在物联网产业规模越来越大, 我们知道,物联网开发经常涉及硬件与软件的各个方面。这使得物联网应用开发是非常耗时的 快速的物联网应用开发是越来越有必要
Traditional Bottom-up development First, know all aspects of an IoT system including the requirements of target application. Second, building an appropriate hardware platform and constructing the software libraries. Finally, write the application code. The development of IoT are time-comsuming 我们先来看看传统的,自底向上的开发过程 从系统架构到客户需求
Our solutions In this paper, we advocate a top-down approach: an application developer can first write the application code as if there exists a virtual platform which possesses all hardware components in the Market. 一系列硬件库
Challenges how to select the most appropriate hardware components in order to satisfy application requirements? how to embrace a diverse set of commercially available hardware components in a compatible manner? How to express application logic in a hardware-independent manner and translate it into the executable code for the corresponding hardware configuration? 1如何判断众多硬件应该选择哪些?如果都可以,哪些花费比较小 2如何连接这些众多复杂的设备 3如何建立一套硬件无关的语言并将其转化为可执行代码?
Catalog 1 Workflow example Architecture 2 3 Evaluation Conclusion 4
TinyLink In order to address the challenges, we present TinyLink, a holistic system for rapid development of Iot applications.
Example: monitoring the moisture and ambient light of a house plant
Step 1: write application code Setup() Loop() Upload() TL_开头的是api ,自动识别 硬件
Step 2 & 3: upload and get the outputs the hardware configuration which includes the selected hardware components the hardware-dependent code
Step 4&5: assemble the platforms and burn
Catalog 1 Workflow example Architecture 2 3 Evaluation Conclusion 4
TinyLink system architecture Hardware Generation system Software Generation system
Hardware database
Definition: Valid hardware configuration (1) the two interfaces must be in the same form (i.e., physical pin or port) (2) the two interfaces must be type compatible (i.e. UART) (3) the interfaces must be power compatible
Constraints 加上之前对有效硬件定义
Problem Formulation M是主板 S是shield(扩展板) P是外围设备 ci 是硬件数据库中的cost di =1 为第i个component 选取,di=0为不选取 M是主板 S是扩展版 P是外围设备
User Constraints Fui 表示第i个component是否需要功能u
Port Constraints 这3个方程分别表示port,pin, MCU引脚 已有的大于需求的
对比CodeFirst
Software Generation system Hardware Configuration Header File API Design Widely-used APIs MQTT Debug IBM Bluemix and China Mobile IoT Open Platform 4种板子 Arduino LinkIT one 树莓派2 BeagleBone Black
Software Generation system Library most commonly used libraries reuse existing libraries and add glue code Crowdsourcing Cross compiler 软件库是为了实现上述api选取
Catalog 1 Workflow example Architecture 2 3 Evaluation Conclusion 4
Evaluation Setup database
前期准备 一共在4种开发板上进行测试 Arduino UNO, LinkIt One, Raspberry Pi 2, BeagleBone Black 进行六种常见的代码编写 LED亮灯,获取wifi,文件读写,温度传感器读取,湿度传感器读取,亮度传感器读取 进行了3个实际案例的研究 一个室内植物的亮度与湿度测量节点,一个空气质量检测节点,一个声控LED灯亮灭。
Result Using TinyLink compare with using original APIs ,the code becomes shorter. Using TinyLink compare with using CodeFirst, reading data from a temperature sensor, TinyLink costs 15 lines while the CodeFirst costs 27lines
Result More solution and less money cost
Overhead Execution overhead compared with original API Program space overhead 额外增加了一些时间花费 Uno 3kb,存储区 32kb RP2 30kb,存储区16mb 21B, 2KB One 21KB for2MB Memory space overhead
Case study Houseplant Base shield 被选择是因为它提供引脚和端口,而UNO没有那么多
Case study Air quality node
Case study Voice controlled LED Lamp
Catalog 1 Workflow example Architecture 2 3 Evaluation Conclusion 4
Discussion Optimization Criteria, why not energy consuming ? Hardware-dependent, code-dependent Code migration Extensibility More hardware component and extend TinyLink optimization 扩展性,开发者可以轻松实现别的开发板和MCU,只要扩展这个硬件库和软件库了 移植,显然这种硬件独立的设计可以有效移植到不同平台上。
个人总结 工业界和学术界对物联网应用快速开发越来越关注,前人的工作 有做搭建硬件平台,使得开发者只用专注应用开发的。还有就是做 这个帮助硬件选择的,减轻硬件工作量的。和本文类似的codefirst 是一个简单的,只针对一种开发板的应用快速开发系统。本文提出 的TinyLink系统整理并改进了前人的工作,更富挑战性和实用性。 但是整个系统还有一些局限性,如硬件约束,API,软件库等,无法 全部覆盖,有待改进。 tinyOS,开发者都必须有相当高的专业知识
Thank you! Q & A