赞
踩
Ruff 官网 : https://ruff.io
Ruff 是一个 JavaScript 运行时,专为硬件开发而设计。Ruff 对硬件进行了抽象,使用了基于事件驱动、异步 I/O 的模型,使硬件开发变得轻量而且高效。
先总结:简单容易上手,懂硬件的人应该能瞬间就玩 high 了,普通玩家几乎不需要什么额外知识。
几乎从没接触过硬件开发,要说唯一体验应该还是在大学的时候,忘了是 Linux 还是嵌入式附带的实验课程,开发过程可以说毫无体验可言,从头到尾按着教案一路懵逼,中间莫名其妙的跪了好多次,Hello World 都出不来,结束了都不知道自己干了点儿啥。
后来在论坛里有看到过树莓派等开发版,能安装 Linux、Android 等操作系统,便捷了许多,但想玩点儿外设之类的还是绕不过硬件、接线、驱动等等底层复杂的东西,加之不少人都说买了吃灰,我也就没入坑。前两天看到 Ruff,官网逛了逛感觉有点儿意思,微博上随手转发了个活动,晚上就抽中了…
周五 Ruff 套件到货了,就要开启硬件开发之旅了,想想还有点小激动…
拆箱感觉东西还挺多的,主板 + 10个外设模块,但说明书就一张纸,清单和针脚示意图,想象中的接电、开关机、注意事项等都没有,有点无从下手,还好网站上的起步走教程比较详细,估计是因为产品还在不断完善中,所以才没配备详细的纸质说明吧。
整个 Hello World 过程还是比较流畅的,只有配置 wifi 的时候卡壳了,倒腾半天无果,插了网线,第二天通过 rap wifi --lan [ip] 将 Wifi 给整通了。
拿到手的板子不是最新系统,升级系统几分钟就好了,顺便说下系统包只有5M。
rap system upgrade --hostname 192.168.1.30 ~/Downloads/ruffos-1.2.0.bin
入门后可以跟着官方的几个 demo 写写
https://github.com/RuffApps/Apps
玩具车 :https://github.com/RuffApps/Apps/tree/master/ruff-car
home web frameworkd:https://github.com/vilic/ruff-home
可玩性还是非常高的。
应用相关
rap deploy -s 开发并启动应用rap startrap stoprap log 应用日志输出rap console 应用启动后的交互环境设备相关
rap device [add|remove|list 添加、删除、查看设备rap layout --visual 添加设备后根据 layout 来插线论坛里有个 RuffHelper 的可视化工具,不习惯命令行的朋友可以试试。
开发过程使用到的额外知识确实不多,非常容易上手,尤其是 layout –visual 后插线也方便许多,但还是不太智能,没有计算已插好的硬件,不太懂接线的东西,没敢在图上自己布线,通常我都拔了重插了。。。
名字的统一
温湿度传感器 Temperature Humidity Sensor, 设备号是 DHT11 ,印刷是 DH11
大按键模块 Push Button Module, 设备号是 CK002, 印刷是 CK-002
外设支持的还比较少
因为要加班,不能老熬夜了,本来还想多写点儿过程中的东西,但要加班啊,要赶进度啊,要生活啊~等等再玩吧,先放放。
传了个简单的项目,算是把附带的几个外设过了下吧
https://github.com/kassadin/RuffLabs
代码非常简单:
https://github.com/kassadin/RuffLabs/blob/master/allinone/src/index.js
- 'use strict';
-
- var led;
- var lcd;
- var btnr;
- var btnb;
- var dht; // 温湿度
- var light;
- var buzzer;
- var ir;
- var lcdStatus = 1; // lcd on
-
- $.ready(function (error) {
- if (error) {
- console.log(error);
- return;
- }
-
- $('#led-g').turnOn();
-
- dht = $('#dht');
- led = $('#myled');
- lcd = $('#mylcd');
- light = $('#light-sensor');
- buzzer = $('#buzzer');
- ir = $('#ir');
-
- welcome();
-
- // btnr get dht info
- btnr = $('#btn-r');
- btnr.on('push', function () {
- console.log('Button red pushed.');
- lcd.clear();
-
- dht.getTemperature(function (error, temperature) {
- printToLcd('TEMP', error, temperature, 0);
- });
-
- dht.getRelativeHumidity(function (error, humidity) {
- printToLcd('HUMI', error, humidity, 1);
- });
- buzzer.turnOn();
- });
-
- btnr.on('release', function () {
- console.log('Button red released.');
- buzzer.turnOff();
- });
-
- // btn-b
- btnb = $('#btn-b');
- btnb.on('push', function () {
- console.log('Button blue pushed.');
- lcd.clear();
- light.getIlluminance(function (error, value) {
- printToLcd('Light', error, value, 0);
- });
- });
-
- btnb.on('release', function () {
- console.log('Button blue released.');
- });
-
-
- ir.on('data', function(data) {
- console.log('received data', data);
- if(data){
- if(lcdStatus === 1){
- lcd._p3.write(0);
- lcd.turnOff();
- lcdStatus = 0;
- closeLed();
- }else{
- lcd._p3.write(1);
- lcd.turnOn();
- lcdStatus = 1;
- welcome();
-
- }
- }
- });
-
- });
-
- $.end(function () {
- $('#led-g').turnOff();
- });
-
-
- function welcome(){
- lcd.clear();
- lcd.print('Hello,Ruff!');
- lcd.setCursor(0,1);
- lcd.print('kassadin.vip');
- openLed();
- }
-
- function printToLcd(label,error,value,line){
- lcd.setCursor(0,line);
- var content;
- if (error) {
- console.error(error);
- content = label + ':ERR';
- }else{
- console.log(label, value);
- content = label + ':' + value;
- }
-
- lcd.print(content);
- }
-
- // https://github.com/RuffApps/Apps/blob/master/colorful-light/src/index.js
- var lightTimer;
- function openLed(){
- led.turnOn();
- var r, g, b;
- lightTimer = setInterval(function () {
- //产生0-255的随机颜色值
- r = Math.random() * 255;
- g = Math.random() * 255;
- b = Math.random() * 255;
-
- led.setRGB(r, g, b);
- sleep(1000);
- }, 2000);
- }
-
- //睡眠函数
- function sleep(milliseconds) {
- var start = new Date().getTime();
- for (var i = 0; i < 1e7; i++) {
- if ((new Date().getTime() - start) > milliseconds) {
- break;
- }
- }
- }
-
- function closeLed(){
- if(lightTimer){
- clearInterval(lightTimer);
- }
- led.turnOff();
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。