文档章节

Ruff

knightuniverse
 knightuniverse
发布于 2016/11/12 12:42
字数 1432
阅读 22
收藏 1

Ruff

Created 星期一 24 十月 2016

如果问起十月份我最开心的事情,大概有两件。一件事去江西武功山,徒步征服了海拔1900米的大山;另一件事就是上周末去厦门Google AdWords体验中心参加了首季的AHA分享

活动有三个主节目,分别是《新硬件工坊》,《敏捷游戏坊--Pizza。Game》以及《敏捷变革--天下事有难易乎?》。这三个主节目是同时进行的,你只能报名参加其中的一个。

大学的时候我学习过微机原理,但是我几乎从来没有一次真正的将写好的汇编代码在机器上执行,一直有个遗憾在心里。而且,其实我对硬件还是很有兴趣,特别是智能硬件和物联网(IOT)。因此这次果断参加了《新硬件工坊》。

原来的讲师是黄凯明老师,但是不巧的是,因为台风的缘故,没法从深圳赶来。因此为我们做分享的是杨杰老师。杨老师是Ruff SDK负责人。拥有超过10年的linux软件开发经验(涉及芯片SOC,网络,和安全软件),2015年加入Ruff。杨老师之前在Nvidia担任senior system engineer,参于了多款Tegra SOC的bring up,(T114,T148,T124)。Nvidia之前,在IBM负责virtual switch。核心模块FE(forward engine)。他是也是Linux开源社区的积极参与者,向Linux kernel贡献了Atheros ethernel L1E和L1C的驱动。

Ruff Develop Kit

此次分享活动,我们是在Ruff开发套件上做的。一副Ruff开发套件包含的东西还是挺多的,一块开发板,十个外设(按钮,蜂鸣器,LCD显示器等)。

Ruff Dev Kit

开发环境

Ruff有自己的SDK,安装过程十分简单。另外,值得一提的是,Ruff选择的编程语言是JavaScript。其他的硬件例如树莓派,大部分那都是用C语言进行开发,比起Ruff来说,学习曲线相对要陡峭一些。

而且Ruff SDK似乎是基于NodeJS的,或者说是兼容NodeJS的。基于Ruff SDK的编程体验十分类似NodeJS编程。

Getting Start

SDK安装好了以后,就可以开始编写代码了。Ruff SDK有自己的包管理工具——rap。初始化一个新的Ruff App的话,执行

rap init

即可。

Standard Directory Layout

| Folder       | Description                                                            |
|:-------------|:-----------------------------------------------------------------------|
| .rap         | 包管理工具rap的隐藏目录,当你运行rap layout --visual的时候,会下载一些硬件的图片资源在这个文件夹内;应该还有其他作用; |
| ruff_modules | Ruff 设备驱动模块                                                            |
| src          | Ruff App 源代码                                                           |
| test         | Ruff App 测试代码                                                          |
| app.json     | Ruff App 硬件信息                                                          |
| package.json | Ruff App 软件信息,包依赖                                                      |

app.json

先看看app.json都有那些内容:

{
    "devices": [
        {
            "id": "button",
            "model": "CK002",
            "driver": "button-gpio",
            "inputs": {
                "gpio": {
                    "type": "gpio",
                    "args": {
                        "direction": "in",
                        "edge": "both"
                    }
                }
            }
        }
	]
}

是的,app.json就一个对象。这个文件记录着Ruff App的硬件布局。实际上,当你通过

rap device add <device_id>

来添加硬件的时候,包管理工具rap会在app.json写入对应的硬件的信息,更新package.json,往package.json添加硬件驱动依赖信息,最后下载硬件驱动模块到ruff_modules这个文件夹里。那么引用硬件驱动提供的JavaScript对象也很容易

$('#<device_id>').doSomeThing();

package.json

有在NodeJS做过编程大概都知道这个package.json的作用。Ruff的话,添加了一个ruff属性,紧接着上面的例子,我们看看package.json会是什么样的:

{
    "name": "ruff-starter",
    "version": "0.1.0",
    "description": "this is a starter project",
    "author": "milo.hou",
    "main": "src/index.js",
    "ruff": {
        "boards": {
            "ruff-mbd-v1": "^4.1.2",
            "*": "*"
        },
        "dependencies": {
            "button-gpio": "^2.0.4"
        }
    }
}

因为我们添加了一个button外设,因此我们必定依赖于这个button的驱动。

src

如果你使用 rap init

初始化一个Ruff App的话,默认在src文件夹下,是会有一个index.js文件的。当然你是可以重命名成其他的文件名,记得修改package.json里的main配置。

这个index.js文件是包含一些示例代码的:

'use strict';

$.ready(function (error) {
    if (error) {
        console.log(error);
        return;
    }

    $('#led-r').turnOn();
});

$.end(function () {
    $('#led-r').turnOff();
});

具体做开发的话就和编写NodeJS差不多。你可以编写若干个模块,然后require进来。

App部署

部署出乎意料的简单。硬件开发版默认提供一个WIFI热点,只要链接到这个WIFI热点,在命令行下输入

rap deploy -s

即可部署并且在开发板上立刻启动应用程序。

实际上你大概也猜到了,要启动开发板上部署的App,只要输入

rap start

反过来,要停止App的运行,你只要运行

rap stop

就好了。

调试

调试我想应该是比较困难的一个环节。首先,你要检查你硬件的连接是否正确。硬件的布局和连线,可以通过 rap layout

或者 rap layout --visual

提供的可视化信息来查看。

但这远远是不够的。有可能是你的代码出现异常了。通常我们需要写log来进行调试。这个时候,你可以运行 rap log

连接到开发板上,获取日志信息。

一点感想

整体来说,Ruff上手非常容易,开发,调试和部署也非常简单。我在想Ruff的应用场景应该会相当多的吧,比如用来快速做一个硬件产品的原型等。

也许远不止如此,比如跨界和农业结合,用硬件产品去收集一系列数据:土壤湿度,光照等,反过来使用计算机去自动灌溉以及控制光照;或者用收集一系列环境数据,分析对比看看环境是否变得更好了。

应该挺好玩的。

© 著作权归作者所有

共有 人打赏支持
knightuniverse
粉丝 2
博文 39
码字总数 46366
作品 0
厦门
程序员
私信 提问
「镁客·请讲」Ruff荆天为:以解决痛点为基点,用实践推动物联网的发展

当下,物联网作为最热门的创业领域之一,一直被行业关注,但是其本身也存在着不小的底层问题。 说到当今火热的物联网领域,就不得不提到这样一个痛点,也可以说是一道鸿沟,就是搞硬件的不懂...

行者武松
2018/03/06
0
0
Ruff:利用区块链技术构建的物联网公链|SSR评级

前言: Ruff Chain是一个结合物联网和区块链的架构,包含了分布式操作系统和开放式主链,目标是解决不同领域的物联网系统之间的可信操作和繁重操作问题,从而创建一个开放的Ruff链生态系统。...

SSRating
2018/09/20
0
0
《近匠》专访 Ruff CTO 郑晔:技术老兵教你如何上手物联网应用开发

万物互联时代,很多人仍然会有这样一个疑问:“为何物联网概念与技术提出并发展了多年,却感觉离我们仍很遥远?”。解惑这个问题之前,我们不妨先探讨智能手机为何会成为人们生活不可或缺的一...

tangxiaoyin
2017/06/20
0
0
「飞猪说行情」7月26日行情分析

今天BTC有冲高回落的趋势,不过就算是币价回调,这几天的成交量起来了,大的趋势还是向上,甚至看情况近期BTC有望冲击9000点。 IOST今天涨的比较猛,飞猪6月初的时候说过IOST和RUFF类似,都是...

飞不起来的猪简称飞猪
2018/07/26
0
0
Ruff技术白皮书

前言: 几年前我设计Ruff的时候,最核心的假设就是物联网是去中心化的,会是mesh网络,自组网,而控制芯片的内存会类似摩尔定律那样越来越大,直到单片机达到512kb RAM, linux版本大到以G为...

虚拟机
2018/01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
7
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
7
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
8
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
6
0
解决SVN:E210007无法协商认证机制

svn:E210007 svn: Cannot negotiate authentication mechanism 执行下面代码即可 sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap...

临江仙卜算子
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部